반응형

전체 글 799

베어메탈 Rust 계층 구조: PAC(Peripheral Access Crate)와 embedded-hal 1.0 완벽 분석

임베디드 C 레지스터 조작의 위험성과 Rust 계층 구조의 필요성전통적인 임베디드 C 언어에서 마이크로컨트롤러(MCU)의 물리 하드웨어 레지스터를 제어하는 방식은 수십 년간 매크로와 원시 포인터 역참조에 의존해 왔습니다./* Typical C Macro for Hardware Register Access */#define RCC_AHB1ENR (*(volatile uint32_t *)(0x40023800 + 0x30))#define GPIOA_MODER (*(volatile uint32_t *)(0x40020000 + 0x00))/* Bitwise manipulation in C */RCC_AHB1ENR |= (1 이러한 C 언어 방식은 3가지 치명적인 엔지니어링 문제를 내포합니다.타입 안전성 부..

베어메탈 Rust 계층 구조: PAC(Peripheral Access Crate)와 embedded-hal 1.0 완벽 분석

임베디드 C 레지스터 조작의 위험성과 Rust 계층 구조의 필요성전통적인 임베디드 C 언어에서 마이크로컨트롤러(MCU)의 물리 하드웨어 레지스터를 제어하는 방식은 수십 년간 매크로와 원시 포인터 역참조에 의존해 왔습니다./* Typical C Macro for Hardware Register Access */#define RCC_AHB1ENR (*(volatile uint32_t *)(0x40023800 + 0x30))#define GPIOA_MODER (*(volatile uint32_t *)(0x40020000 + 0x00))/* Bitwise manipulation in C */RCC_AHB1ENR |= (1 이러한 C 언어 방식은 3가지 치명적인 엔지니어링 문제를 내포합니다.타입 안전성 부..

no_std 환경 설정과 ARM Cortex-M 크로스 컴파일 파이프라인: cortex-m-rt, probe-rs 및 defmt 완벽 가이드

베어메탈 마이크로컨트롤러와 Rust no_std 생태계의 등장 배경Rust의 표준 라이브러리(std)는 운영체제(OS)의 시스템 콜(POSIX, Windows API 등)이 제공하는 가상 메모리 할당(malloc), 멀티스레딩 스케줄러, 파일 시스템 I/O, 네트워크 소켓을 기반으로 동작합니다. 그러나 전형적인 마이크로컨트롤러(MCU)인 ARM Cortex-M 시리즈는 운영체제가 존재하지 않는 베어메탈(Bare-Metal) 환경이거나, 힙 메모리와 파일 시스템이 극도로 제한된 환경에서 동작합니다.따라서 임베디드 시스템에 Rust를 적용하기 위해서는 OS 의존성을 완전히 제거하고, 순수 CPU 명령어와 정적 메모리만을 제어할 수 있는 베어메탈 모드인 #![no_std] 환경을 구성해야 합니다.전통적인 C ..

왜 임베디드에 Rust인가? C 언어의 치명적 결함을 컴파일 타임에 잡는 원리와 소유권(Ownership)

임베디드 C/C++ 메모리 결함의 현실과 Rust의 필요성지난 40여 년간 C와 C++는 마이크로컨트롤러(MCU) 및 임베디드 시스템 펌웨어 개발의 절대적인 표준 언어였습니다. 하드웨어 메모리 맵 레지스터에 대한 직접적인 포인터 역참조, 극단적으로 작은 런타임 오버헤드, 결정론적인 실행 제어는 C 언어가 독점적 지위를 유지할 수 있었던 핵심 이유입니다.그러나 C 언어는 개발자에게 무제한의 메모리 제어 권한을 부여하는 대신, 메모리 안정성에 대한 책임을 전적으로 인간의 주의력에 전가합니다. 마이크로소프트 보안 응답 센터(MSRC), 구글 크로미움 프로젝트, 미국 CISA의 장기 조사 보고서에 따르면, 소프트웨어에서 보고되는 전체 치명적 보안 취약점(CVE)의 약 70%가 메모리 안전성(Memory Safe..

임베디드 C 코딩 규칙: MISRA-C:2012 핵심 가이드와 Cppcheck 정적 분석 도구 CI/CD 자동화

C 언어의 미정의 동작(Undefined Behavior)과 MISRA-C의 필요성C 언어는 하드웨어 레지스터에 직접 접근할 수 있는 강력한 포인터 제어 기능과 뛰어난 런타임 성능 덕분에 반세기가 넘도록 임베디드 시스템의 절대적인 표준 언어로 자리 잡고 있습니다. 그러나 ISO C 표준은 컴파일러 제조사에게 최적화의 자유를 부여하기 위해 수많은 문법적 모호성을 허용하고 있습니다.C 표준에 정의된 대표적인 비결정론적 동작은 세 가지 범주로 분류됩니다.미정의 동작 (Undefined Behavior, UB): 표준이 아무런 요구사항을 부과하지 않아 프로그램이 즉시 크래시되거나, 레지스터가 오염되거나, 완전히 예측할 수 없는 방식으로 동작함 (예: 부호 있는 정수 오버플로우, 널 포인터 역참조).미지정 동작 ..

Security & Saftey 2026.10.22

기능안전(Functional Safety) 기초: ISO 26262 ASIL 및 IEC 61508 듀얼 코어 락스텝(Lockstep) 안전 아키텍처

임베디드 품질(Quality)과 기능안전(Safety)의 본질적 차이일반적인 임베디드 소프트웨어 개발에서 "품질(Quality)"이란 시스템이 명세서(Specification)에 정의된 기능을 버그 없이 올바르게 수행하는 것을 의미합니다. 그러나 자동차(ISO 26262), 산업 제어(IEC 61508), 항공 우주, 의료 기기 분야에서 다루는 "기능안전(Functional Safety)"은 차원이 다른 엔지니어링 접근을 요구합니다. 기능안전은 시스템에 버그가 없음을 보장하는 것이 아니라, 반도체 하드웨어의 무작위 고장(Random Hardware Failure)이나 예기치 못한 소프트웨어 결함이 발생하더라도, 시스템이 인명 피해를 유발하지 않고 통제 가능한 안전 상태(Safe State)로 전이하도록 ..

Security & Saftey 2026.10.21

플래시 암호화(Flash Encryption)와 온더플라이(On-the-fly) 복호화: AES-XTS 하드웨어 엔진과 스니핑 방어

외장 플래시 메모리 물리 스니핑 위협과 플래시 암호화의 필요성현대 임베디드 시스템과 IoT 엣지 기기는 대용량 펌웨어, GUI 에셋, AI 딥러닝 모델 가중치(Weights)를 저장하기 위해 외장 QSPI(Quad SPI) 또는 OSPI(Octal SPI) NOR 플래시 메모리를 광범위하게 채택합니다. 마이크로컨트롤러(MCU)는 메모리 맵 매핑(XIP, eXecute-In-Place) 기능을 통해 외장 플래시의 코드를 내부 RAM으로 복사하지 않고 버스에서 직접 실행합니다.그러나 외장 플래시 칩은 PCB 상에 노출된 패턴 핀(CS, SCK, IO0~IO3/IO7)을 통해 MCU와 통신합니다. 공격자가 저가의 로직 아날라이저나 오실로스코프 프로브를 플래시 핀에 직접 접촉(Sniffing)하면, 시스템 부팅..

Security & Saftey 2026.10.20

외장 하드웨어 보안 칩 (Secure Element / TPM 2.0) 연동: ATECC608B ECDSA 하드웨어 서명과 Anti-tamper 실무

SoC 내부 키 저장소의 한계와 외장 하드웨어 보안 칩(Secure Element)의 필요성앞서 다룬 SoC 내부 eFuse와 ARM TrustZone-M 하드웨어 격리는 소프트웨어 취약점을 악용한 원격 네트워크 공격에 대해 강력한 방어선을 제공합니다. 그러나 해커가 디바이스를 물리적으로 확보하여 칩 패키지를 산성 용액으로 녹여내는 디캡핑(Decapping), 집속 이온 빔(FIB, Focused Ion Beam)을 이용한 마이크로프로빙, 전력 소비량의 미세한 변화를 통계적으로 측정하는 차분 전력 분석(DPA, Differential Power Analysis), 또는 클럭/전압에 순간적인 노이즈를 인가하는 결함 주입(Fault Injection/Glitching) 공격을 시도할 경우, 표준 마이크로컨트..

Security & Saftey 2026.10.19

TF-M (Trusted Firmware-M) 아키텍처와 PSA Certified: ITS, PS 스토리지 및 암호화 키 격리 실무

IoT 보안 표준화와 ARM TF-M(Trusted Firmware-M)의 등장 배경이전 글에서 다룬 ARM TrustZone-M 하드웨어 기술을 통해 Cortex-M33 마이크로컨트롤러에서 Secure World와 Non-Secure World를 물리적으로 격리할 수 있게 되었습니다. 그러나 하드웨어 격리 경계가 제공되더라도, 보안 영역(Secure World) 내부에서 어떤 보안 소프트웨어를 실행하고, 암호화 키를 어떤 표준 방식으로 관리하며, 일반 애플리케이션(Non-Secure World)과 어떤 API로 통신해야 하는지에 대한 표준 프레임워크가 부재했습니다.제조사마다 자체적인 Secure OS와 비표준 API를 개발하여 사용함에 따라 코드 재사용성이 떨어지고 보안 취약점이 빈번하게 발생했습니다...

Security & Saftey 2026.10.18

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)이나 서드파티 라이브러리의 버퍼 오버플로우 취약점으로 인해 특권 모드가 장악되면, 디바이스 내부에 보관된 암호화 루트 키, 보안 인증서, 결제 및 펌웨어 보호 로직 전체가 즉시 ..

Security & Saftey 2026.10.17
반응형