사물인터넷 장치에 대한 네트워크 공격이 증가하고 있음에도 불구하고 펌웨어 보안은 종종 부차적인 위치에 있습니다.공격자가 시스템 스택에 침투하여 부팅 프로세스와 기본 하드웨어 구성을 목표로 할 때, 메모리 아키텍처의 선택은 검증 가능한 신뢰 체인을 구축하는 데 핵심 결정이되었습니다.
따라서 펌웨어 보안을 보장하기 위해서는 각 컴포넌트가 실행되기 전에 암호화 검증을 받아야 합니다. 이 경로는 변하지 않는 부트 로더로 시작됩니다.주요 펌웨어를 로드하고 확인하는 역할을 하는그러나 각 단계에 사용되는 메모리 기술은 허가되지 않은 수정에 대한 펌웨어 취약성을 초래할 수 있습니다.
내부 및 외부 플래시 메모리
펌웨어를 저장하는 데 사용되는 비휘발성 메모리의 물리적 위치는 장치 위협 모델에서 가장 중요한 요소 중 하나입니다.펌웨어 엔지니어들은 칩에 내장된 플래시 (eFlash) 와 SPI 또는 QSPI와 같은 일련 인터페이스를 통해 연결된 외부 플래시 모듈을 선택해야 합니다..
임베디드 플래시 메모리는 일반적으로 마이크로 컨트롤러 또는 SoC 칩에 직접 통합됩니다.이 아키텍처는 공격자가 조작할 수 있는 외부 버스가 없기 때문에 가장 높은 수준의 물리적 보안을 제공합니다.내부 플래시 메모리에 대한 액세스도 전용 레지스터와 잠금 비트에 의해 제어됩니다.
또한, 임베디드 플래시 메모리는 영구적인 읽기 보호를 지원합니다.개발자는 JTAG 또는 SWD 디버깅 인터페이스를 비활성화하여 해커가 펌웨어 이미지를 수정하는 것을 막을 수 있습니다.하지만, 소커스가 더 작은 노드로 이동함에 따라, 이 기술은 확장성 문제로 직면하게 됩니다.
대조적으로, 외부 플래시 메모리는 메인 프로세서 외부에 배치되어 고속 일련 인터페이스를 통해 통신합니다. 이러한 구조 선택은 저장 용량을 쉽게 확장시킵니다.하지만 또한 시스템의 공격 표면을 확장합니다프로세서와 외부 플래시 메모리 사이에 전송되는 모든 데이터는 내재적으로 감청, 중간에 있는 공격, 물리적 조작 등의 위협에 취약합니다.
이러한 위험을 해결하기 위해 펌웨어 엔지니어는 건전한 하드웨어 및 소프트웨어 보호 조치를 구현해야합니다. 많은 외부 NOR 플래시 메모리 장치에는 물리적 기록 보호 핀이 장착되어 있습니다.핀이 특정 전압에 배치 될 때, 칩의 내부 논리는 삭제 또는 쓰기 명령을 실행하는 것을 방지합니다.
그림 1: Winbond Electronics의 W77Q32JWSSIR TR 보안 일련 NOR 플래시 메모리는 복잡한 통신 채널 암호화 기능을 가지고 있습니다. (사진 소스: Winbond Electronics)
그러나 데이터가 읽을 수 있다면 플래시 메모리를 잠금하는 것만으로는 충분하지 않습니다. 실행 중에 공격자는 여전히 주소 및 데이터 버스에 액세스 할 수 있습니다.이 취약점은 특수 보안 플래시 장치의 개발을 촉구했습니다.하드웨어 기반 루트 오브 트러스트 메커니즘, 암호화된 통신 채널, 그리고 롤백 공격을 방지하기 위한 단조로운 카운터를 포함합니다.
그러나 잘못된 저장 구조가 선택되면 장치에는 소프트웨어 패치로 완전히 수정할 수 없는 근본적인 결함이 남게 됩니다.암호화 또는 검증 없이 외부 EEPROM에 펌웨어를 저장하는 디자인은 항상 하드웨어 공격자에 취약합니다.반대로, 과도한 제한을 가진 메모리를 선택하는 것은 기능에 영향을 줄 수 있습니다.
따라서 엔지니어는 메모리 아키텍처를 통해 펌웨어 보안을 극대화하기 위해 최상의 방법과 설계 기술을 이해해야합니다.
보안 펌웨어 저장소 설계에 대한 최상의 방법
펌웨어 저장 경로를 설계할 때 펌웨어 엔지니어는 다음 원칙을 준수해야 합니다.
1하드웨어 기반 신뢰의 뿌리
실행은 항상 변하지 않는 메모리 영역에서 시작해야합니다. 예를 들어, 부팅 ROM 또는 영구적으로 보안 된 플래시 섹터는 다른 모든 펌웨어를 확인하는 코드를 포함해야합니다.이것은 공격자가 초기 암호를 조작하여 검증을 우회할 수 없도록 보장합니다..
2암호화된 서명 사용
보안 부트 로더를 신뢰할 수 있는 개인 키로 서명된 펌웨어 이미지만 실행하도록 구성합니다. 이 방법으로 공격자가 메모리에 액세스하고 비트 변경을 할 수 있지만 무단 코드를 막을 수 있습니다.비밀이 요구되는 경우, 저장된 펌웨어는 암호화 될 수 있습니다.
3하드웨어 보안 기능을 사용
시스템 아키텍처가 외부 스토리지를 사용하는 경우 엔지니어들은 하드웨어 보안을 지원하는 장치를 선택해야 합니다. 예를 들어, 내장된 비밀번호 보호 또는 간단한 암호화와 같이요.이 장치들은 완전한 보안 부품만큼 견고하지는 않지만, 그들은 보호의 또 다른 층을 추가합니다.
그림 2: 매크로닉스는 MX25L3233FM2I-08Q 32 Mb 시리즈 NOR 플래시 메모리를 시리즈 주변 인터페이스로 지원합니다. (사진 소스: 매크로닉스)
4. 펌웨어와 데이터를 격리
메모리 영역을 정리하고 가장 민감한 코드를 분리합니다. MCU에서는 중요한 루틴 명령어를 안전한 메모리 영역에 배치합니다. 하드웨어에 의해 지원되는 펌웨어조차도,특정 플래시 메모리 은행을 실행 또는 읽기 전용으로 표시할 수 있습니다..
5보안 펌웨어 업데이트 계획
업데이트 프로세스 자체가 검증되었는지 확인합니다 (예를 들어 업데이트 패키지가 서명되어야 합니다). 디자인이 일시적인 업데이트를 위해 외부 저장소를 사용하는 경우주요 펌웨어 저장장치와 동일한 보안 조치를 취해야 합니다..

