반응형

전체 글 790

ARM TrustZone-M 완벽 해설: Cortex-M33 SAU/IDAU 메모리 격리와 Non-Secure Callable(NSC) 게이트웨이 구현

임베디드 MCU 보안 도메인 격리와 ARMv8-M TrustZone의 필요성전통적인 ARM Cortex-M 마이크로컨트롤러(Cortex-M0/M3/M4/M7) 환경에서는 메모리 보호 장치(MPU, Memory Protection Unit)를 통해 특권 모드(Privileged)와 비특권 모드(Unprivileged) 간의 접근을 통제해 왔습니다. 그러나 MPU 기반 격리는 단일 실행 도메인 내에서 운영체제(RTOS) 태스크 간의 메모리 침범을 방지하는 수준에 불과합니다. 만약 네트워크 통신 스택(BLE, Wi-Fi, TCP/IP)이나 서드파티 라이브러리의 버퍼 오버플로우 취약점으로 인해 특권 모드가 장악되면, 디바이스 내부에 보관된 암호화 루트 키, 보안 인증서, 결제 및 펌웨어 보호 로직 전체가 즉시 ..

SoC eFuse와 OTP 메모리 완벽 해설: 공개키 해시 프로비저닝, JTAG 영구 잠금 및 안티 퓨즈(Anti-fuse) 원리

임베디드 칩셋 보안과 비가역 하드웨어 메모리(eFuse/OTP)의 필요성임베디드 디바이스가 공장에서 출하된 이후 외부 해커의 물리적 분석 공격(Hardware Hacking)에 노출될 때, 공격자가 가장 먼저 시도하는 기법은 디버그 인터페이스(JTAG, SWD, UART)를 통한 플래시/RAM 메모리 덤프와 펌웨어 리버스 엔지니어링입니다. 또한 시큐어 부트(Secure Boot)가 소프트웨어적으로만 구현되어 있다면, 공격자는 플래시 메모리에 저장된 공개키를 자신의 공개키로 덮어쓰거나 부트로더 코드를 조작하여 위조된 펌웨어를 손쉽게 구동할 수 있습니다.소프트웨어 방식의 키 저장은 플래시 소거(Erase)나 재기록(Write) 공격에 취약하므로, 반도체 제조사는 전원이 꺼져도 값이 유지되고 한 번 기록되면 ..

Security & Saftey 2026.10.16

시큐어 부트(Secure Boot)의 원리와 하드웨어 신뢰 루트(Root of Trust): 비대칭 암호화 서명 검증과 신뢰 체인 구축 실무

임베디드 펌웨어 보안 위협과 시큐어 부트(Secure Boot)의 필요성스마트 홈, 자율주행, 원격 의료 및 산업용 제어 시스템에 탑재되는 임베디드 IoT 디바이스는 물리적으로 공격자의 손에 노출되기 쉽습니다. 공격자는 플래시 메모리 칩을 직접 탈거하여 악성 펌웨어를 라이팅하거나, 디버그 포트(JTAG/SWD)를 통해 임의의 실행 코드를 주입하거나, 소프트웨어 업데이트 인터페이스를 가로채어 백도어가 심어진 펌웨어로 변조할 수 있습니다. 펌웨어 변조 공격은 기기의 지적 재산권(IP) 탈취뿐만 아니라, 시스템 제어권 상실, 개인정보 유출, 원격 봇넷 감염 및 물리적 파괴로 이어질 수 있습니다. 이러한 위험에 대응하기 위해 EU Cyber Resilience Act(CRA)와 미국 NIST SP 800-193..

Security & Saftey 2026.10.15

임베디드 리눅스 전원 관리(PM) 완벽 가이드: CPUFreq DVFS, OPP 테이블, Devfreq 및 Suspend-to-RAM(Deep Sleep) 최적화

배터리 기반 휴대용 임베디드 시스템과 리눅스 전원 관리(PM)의 필요성스마트 물류 트래커, 핸드헬드 의료기기, 웨어러블, 스마트 홈 센서 허브와 같은 배터리 구동 임베디드 리눅스 디바이스는 제한된 배터리 용량(1000mAh~5000mAh) 환경에서 수일에서 수개월 이상 단독 동작할 수 있어야 합니다.고성능 멀티코어 SoC(ARM Cortex-A53/A55)는 최고 클록(1.5GHz~2.0GHz)으로 연속 동작할 경우 수 와트(W) 이상의 전력을 소모하여 배터리가 수 시간 내에 고갈됩니다. 반면 기기가 대부분의 유휴(Idle) 상태를 보낼 때 클록 주파수와 공급 전압을 동적으로 낮추는 동적 전압 및 주파수 스케일링 (DVFS, Dynamic Voltage and Frequency Scaling)을 적용하고..

PREEMPT_RT 실시간 리눅스 커널 완벽 해설: Threaded IRQ, rt_mutex 우선순위 상속 및 cyclictest 10us 레이턴시 튜닝

산업용 제어 시스템과 실시간(Real-Time) 리눅스의 필요성로봇 제어기(Robotics), 스마트 팩토리 PLC, 자율주행 모션 제어, 오디오 DSP와 같은 미션 크리티컬 산업용 임베디드 시스템은 수백 마이크로초($\mu\text{s}$)에서 수 밀리초($\text{ms}$) 주기의 제어 루프를 한 번의 타이밍 누락(Deadline Miss) 없이 결정론적(Deterministic)으로 실행해야 합니다.그러나 표준 범용 리눅스 커널(Standard Linux Kernel)은 전체 시스템의 '평균 처리량(Throughput)'을 극대화하도록 설계되었습니다. 표준 커널에서는 스핀락(Spinlock) 임계 구역 보호, 인터럽트 비활성화(Interrupt Disabling), 가상 메모리 페이징(Paging..

리눅스 DRM/KMS 그래픽 서브시스템 완벽 해설: CRTC, Plane, Encoder, Connector 4대 객체와 Wayland/Weston 디스플레이 파이프라인

임베디드 그래픽 서브시스템의 진화와 DRM/KMS의 필요성차량용 디지털 콕핏(Digital Cockpit), 산업용 터치 HMI(Human-Machine Interface), 스마트 가전 디스플레이는 고해상도 그래픽 UI 렌더링과 함께 60fps 이상의 부드러운 화면 전환을 요구합니다. 과거 20여 년간 리눅스 임베디드 시스템에서 사용되었던 레거시 프레임버퍼(fbdev, /dev/fb0)는 단순한 2D 비디오 메모리 매핑에 불과했습니다.fbdev는 하드웨어 3D 가속(OpenGL ES/Vulkan), 멀티 레이어 하드웨어 오버레이(Video Plane과 UI Plane의 하드웨어 합성), VSYNC 수직 동기화, 그리고 동적 디스플레이 연결(Hot-plug)을 지원하지 못하는 구조적 한계를 가지고 있었습..

리눅스 V4L2(Video4Linux2) 아키텍처 완벽 해설: MIPI-CSI2 카메라 파이프라인, v4l2_subdev 및 Media Controller API 실무

임베디드 리눅스 비전 파이프라인과 V4L2의 필요성자율주행 ADAS, 지능형 CCTV, 드론, 스마트 팩토리 머신 비전 시스템은 복수의 고해상도 이미지 센서(Sony IMX, OnSemi 등)로부터 초당 수십 프레임의 고화질 비디오 스트림을 실시간으로 획득해야 합니다. 임베디드 SoC(NXP i.MX8, TI TDA4, Rockchip RK3588, Raspberry Pi CM4)의 카메라 파이프라인은 USB 웹캠과 같은 단순한 일체형 구조가 아닙니다.임베디드 비전 하드웨어는 (1) I2C 제어로 노출/게인을 조절하는 카메라 센서(Image Sensor), (2) 차동 고속 직렬 신호를 수신하는 MIPI-CSI2 D-PHY / CSI Receiver, (3) 디모자이킹, 화이트 밸런스, 노이즈 캔슬링을 ..

리눅스 IIO(Industrial I/O) 서브시스템 완벽 해설: 센서 드라이버 작성, struct iio_chan_spec 및 Triggered Buffer 구현

임베디드 리눅스 센서 인터페이스의 표준화와 IIO 서브시스템의 필요성임베디드 리눅스 시스템(스마트 팩토리, 자율주행, IoT 엣지 디바이스, 의료기기)은 아날로그-디지털 컨버터(ADC), 디지털-아날로그 컨버터(DAC), 3축 가속도계, 자이로스코프, 기압 센서, 온도 센서 등 수많은 센서를 사용합니다. 과거 리눅스 커널에서는 이러한 센서들을 hwmon(Hardware Monitoring), input(키보드/마우스용 입력 서브시스템), 또는 독자적인 캐릭터 디바이스 드라이버로 제각각 구현했습니다.그러나 hwmon은 주로 PC 메인보드의 CPU 온도 및 팬 속도 감시용으로 설계되어 수 kHz 이상의 고속 연속 샘플링이 불가능했고, input 서브시스템은 마우스나 조이스틱 형태의 이벤트 변환 오버헤드가 발..

리눅스 커널 Pinctrl 및 GPIO 서브시스템 완벽 해설: 디스크립터 기반 gpiod API와 libgpiod v2 제어 실무

임베디드 리눅스 GPIO 제어의 패러다임 전환과 Pinctrl의 필요성마이크로컨트롤러 및 고성능 SoC에서 GPIO(General-Purpose Input/Output)는 단순한 LED 점멸부터 센서 인터럽트, 리셋 라인, 전원 제어에 이르기까지 가장 널리 사용되는 기본 하드웨어 인터페이스입니다. 그러나 현대의 고집적 SoC(ARM Cortex-A)는 수백 개의 물리 핀이 제한된 패키지 풋프린트 내에서 UART, I2C, SPI, SDIO, PWM, GPIO 등 다양한 하드웨어 기능으로 다중화(Pin Multiplexing)되는 복잡한 Pinctrl (Pin Control) 서브시스템 구조를 가집니다.과거 리눅스 커널은 정수형 핀 번호를 기반으로 하는 레거시 GPIO API(gpio_request(), ..

Linux Device Tree Bindings 완벽 가이드: YAML Schema(dtschema) 작성법과 dt_binding_check / dtbs_check 검증 실무

디바이스 트리 바인딩의 표준화와 YAML Schema(dtschema)의 도입 배경과거 리눅스 커널의 디바이스 트리 바인딩(Device Tree Bindings) 문서는 Documentation/devicetree/bindings/ 경로 아래에 순수 텍스트 파일(.txt) 형태로 자유롭게 작성되었습니다. 그러나 비정형 텍스트 기반의 문서는 기계적인 자동 검증이 불가능하여, 하드웨어 제조사마다 속성 이름(clock-frequency, clocks-names 등의 오타), 데이터 타입(uint32, string, phandle), 필수 속성 누락 등 수많은 문법적 오류가 방치된 채 커널 소스에 병합되는 심각한 품질 저하를 초래했습니다.이 문제를 근본적으로 해결하기 위해 리눅스 커널 커뮤니티는 커널 5.x 버..

반응형