펌웨어 보안을 위한 올바른 메모리 아키텍처 선택

연결된 IoT 장치에 대한 사이버 범죄 수가 증가함에도 불구하고 펌웨어 보안은 언제나 나중에 생각되어 왔습니다. 공격자가 부트 프로세스와 저수준 하드웨어 구성을 목표로 시스템 스택을 통해 침투할 때, 메모리 아키텍처의 선택은 검증 가능한 신뢰 체인을 설정하는 데 있어 주요 결정 요소가 되었습니다.

따라서 펌웨어를 보호하려면 실행 전에 각 부품을 암호를 통해 검증해야 합니다. 이 과정은 주 펌웨어를 불러오고 검증하는 불변 부트로더에서 시작됩니다. 그러나 각 단계에서 사용되는 메모리 기술에 따라 무단 수정에 대한 펌웨어 취약성이 결정됩니다.

내부 플러시 대 외부 플러시

펌웨어를 저장하는 데 사용되는 비휘발성 메모리의 물리적 위치는 장치의 위협 모델에서 가장 중요한 요인 중 하나입니다. 펌웨어 엔지니어는 온칩 임베디드 플래시(eFlash)와 SPI 또는 QSPI 같은 직렬 인터페이스를 통해 연결된 외부 플래시 모듈 중에서 선택해야 합니다.

임베디드 플래시는 일반적으로 마이크로 컨트롤러 또는 SoC 다이에 직접 통합됩니다. 이 아키텍처는 공격자가 조작할 수 있는 외부 버스가 없기 때문에 최고 수준의 물리적 보안을 제공합니다. 내부 플래시에 대한 액세스도 전용 레지스터 및 잠금 비트에 의해 제어됩니다.

또한, eFlash는 영구적인 판독 보호를 지원합니다. 전용 보안 퓨즈를 단락시킴으로써 개발자는 JTAG 또는 SWD 디버깅 인터페이스를 비활성화하여 해커가 펌웨어 이미지를 수정하지 못하도록 차단할 수 있습니다. 그러나 이 기술은 SoC가 더 작은 노드로 이동함에 따라 상당한 확장성 문제를 안게 되었습니다.

이에 반해 외부 플래시는 호스트 프로세서 외부에 배치되어 고속 직렬 인터페이스를 통해 통신합니다. 이 아키텍처 옵션을 사용하면 스토리지 용량을 손쉽게 확장할 수 있지만 시스템의 공격 면적도 확장됩니다. 프로세서와 외부 플래시 간의 데이터 이동은 본질적으로 스누핑, 중간자 공격, 물리적 훼손에 취약합니다.

이러한 위험을 처리하기 위해, 펌웨어 엔지니어는 강력한 하드웨어 및 소프트웨어 보호를 구현해야 합니다. 여러 외부 NOR 플래시 장치에는 물리적 쓰기 보호 핀이 제공됩니다. 핀이 특정 전압으로 유지되면 칩의 내부 논리가 모든 지우기 또는 쓰기 명령이 실행되지 않도록 차단합니다.

그림 1: 통신 채널의 정교하고 강력한 암호화 기능을 갖춘 Winbond ElectronicsW77Q32JWSSIR TR 보안 직렬 NOR 플래시 메모리(이미지 출처: Winbond Electronics)

그러나 데이터 읽기가 가능하다면 플래시를 잠그는 것만으로 충분하지 않습니다. 공격자는 실행 중에 여전히 주소와 데이터 버스에 액세스할 수 있습니다. 이러한 취약성은 롤백 공격을 방지하기 위해 하드웨어 기반의 Root-of-Trust(신뢰점) 메커니즘, 암호화된 통신 채널, 단조 카운터를 비롯한 특수한 보안 플래시 장치 개발로 이어졌습니다.

그러나, 잘못된 메모리 아키텍처가 선택될 경우, 장치에 소프트웨어 패치가 완전히 해결할 수 없는 근본적인 약점이 남을 수 있습니다. 예를 들어, 암호화나 인증 없이 외부 EEPROM에 펌웨어를 저장하는 설계는 항상 하드웨어 공격자에게 취약할 수 있습니다. 반대로, 너무 제한적인 메모리를 선택하면 기능에 방해가 될 수 있습니다.

따라서, 엔지니어는 메모리 아키텍처를 통해 펌웨어 보안을 극대화하기 위한 모범 사례와 설계 팁을 반드시 이해해야 합니다.

보안 펌웨어 스토리지 설계를 위한 모범 사례

펌웨어 엔지니어는 전원 인가부터 런타임까지의 보안 펌웨어 스토리지 경로를 설계할 때 다음 원칙을 따라야 합니다.

1. 하드웨어 기반의 Root-of-Trust

실행은 반드시 변경이 불가능한 메모리 영역에서 시작해야 합니다. 예를 들어, 부트 ROM 또는 영구적으로 안전한 플래시 섹터에는 다른 모든 펌웨어를 검증하는 코드가 포함되어 있어야 합니다. 이렇게 하면 공격자가 초기 코드를 변조하여 인증을 우회하는 것을 방지할 수 있습니다.

2. 암호화 서명 사용

신뢰할 수 있는 개인 키로 서명된 펌웨어 이미지에서만 실행되는 보안 부트로더를 구현합니다. 이는 공격자가 메모리에 액세스하고 비트를 수정할 수 있는 경우에도 승인되지 않은 코드로부터 보호합니다. 기밀성이 중요한 경우 저장 시 펌웨어를 암호화하세요.

3. 하드웨어 보안 기능 활용

시스템 아키텍처에 외부 메모리가 사용되는 경우, 엔지니어는 내장된 비밀번호 보호 또는 단순 암호화 등 하드웨어 보안을 지원하는 장치를 선택해야 합니다. 이러한 기능은 완전한 보안 요소만큼 강력하지 않을 수 있지만 보호 수준을 한층 더 강화할 수 있습니다.

그림 2: 직렬 주변 장치 인터페이스를 지원하는 MacronixMX25L3233FM2I-08Q 32Mb 직렬 NOR 플래시 메모리(이미지 출처: Macronix)

4. 펌웨어와 데이터 분리

가장 민감한 코드가 분리되도록 메모리 영역을 구성합니다. MCU에서는 중요한 루틴 명령을 보안 메모리 섹션에 배치합니다. 펌웨어를 사용하더라도, 하드웨어가 지원한다면 특정 플래시 메모리 뱅크를 실행 전용 또는 읽기 전용으로 표시합니다.

5. 보안 펌웨어 업데이트 계획

업데이트 프로세스 자체가 인증되었는지 확인합니다(예: 서명된 업데이트 패키지 요구). 업데이트 스테이징을 위해 설계에 외부 메모리가 사용되는 경우 주 펌웨어 스토리지와 동일한 보안으로 취급합니다.

결론

펌웨어에 적합한 메모리를 선택하는 것은 임베디드 IoT 장치의 보안을 좌우할 수 있습니다. 보호 기능이 없는 외부 스토리지와 같이 안전하지 않은 메모리를 선택하면 공격자에게 문을 열어주는 셈입니다. 반대로, 온칩 메모리와 안전한 외부 스토리지 및 암호화 제어 기능을 결합하는 잘 설계된 아키텍처를 선택하면 정교한 공격을 방어하기 위한 강력한 기반을 제공할 수 있습니다.

펌웨어 엔지니어에게 핵심적인 요점은 Root-of-Trust를 변조 방지 메모리에 유지하고, 오프칩 메모리는 신뢰할 수 없는 것으로 간주하여 그에 맞게 보완하며, 최신 메모리 기술이 제공하는 모든 하드웨어 보안 기능을 활용하는 것입니다. 장치의 보안 요구 사항에 맞게 메모리 기술을 조정하면 가장 작은 IoT 센서라도 펌웨어 수준의 공격으로부터 보호할 수 있습니다.

작성자 정보

More posts by Abhishek Jadhav
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum