Arm TrustZone이 NXP의 LPC5500 마이크로컨트롤러에서 보안을 어떻게 강화하는지, 그리고 보안 및 비보안 애플리케이션을 구현하는 방법을 알아봅니다.
커넥티드 기기가 확산됨에 따라 정교한 위협도 함께 증가하고 있습니다. NXP는 LPC5500 MCU 제품군에 FIPS 준수 난수 생성기, 암호화된 코드 실행을 위한 'Prince' 암호화 엔진, PUF 기술로 생성된 4096비트 온칩 키 등 견고한 보안 프리미티브를 내장하여 이에 대응했습니다. 온칩 암호화 가속기 'CASPER'와 결합하여, 이 MCU들은 엔드투엔드 키 프로비저닝과 탄력적인 사이버 보안을 요구하는 에지 IoT 배포에 이상적입니다.
이 기능의 핵심은 Cortex-M용 Arm TrustZone입니다. 다음 섹션에서는 그 기초와 프로젝트에서 이를 활용하는 방법을 안내합니다.
Cortex-M용 Arm TrustZone
TrustZone은 두 개의 격리된 실행 컨텍스트를 생성합니다: 독점적이거나 민감한 코드를 호스팅하는 보안 세계와 사용자 애플리케이션을 위한 비보안 세계입니다. 제조사의 독점 라이브러리는 ROM에 상주하여 리버스 엔지니어링으로부터 보호되면서도, 제어된 인터페이스를 통해 애플리케이션 코드에서 호출할 수 있습니다.
그림 1은 동일한 실리콘에서 보안 ROM과 비보안 사용자 코드가 공존하는 모습을 보여줍니다.
그림 1. 보안 ROM과 비보안 사용자 코드가 동일한 MCU를 공유하지만 격리되어 있습니다.
두 세계 간의 전환은 TrustZone의 보안 확장이 관리하며, 비보안 애플리케이션은 노출된 보안 기능만 호출할 수 있고 보안 메모리에 직접 접근할 수 없습니다.
TrustZone을 사용한 프로세서 모드
Cortex-M3와 M4 코어는 스레드 및 핸들러 모드에 권한/비권한 레벨을 제공하지만, Cortex-M33은 TrustZone을 추가하여 네 가지 모드를 제공합니다: 비보안 스레드, 보안 스레드, 비보안 핸들러, 보안 핸들러. 이 분리 덕분에 각 도메인별로 별도의 SysTick 타이머도 갖게 됩니다.
그림 2. TrustZone이 Cortex-M33을 네 가지 프로세서 모드로 확장합니다.
메모리 파티셔닝
TrustZone은 주소 범위에 보안 속성을 할당합니다: 보안(S), 비보안(NS), 비보안 호출 가능(NSC). 각 영역에 대한 접근은 코어의 현재 상태에 따라 달라집니다. 예를 들어 LPC55S69는 비트 28이 낮으면 비보안, 높으면 보안으로 취급하지만, 프로그램 메모리는 보안 속성 유닛(SAU)을 통해 구성 가능합니다.
그림 3. 보안 및 비보안 모드 간 CPU 접근 차이가 있습니다.
보안 애플리케이션 구축
보안 코드는 내부를 직접 노출하지 않습니다. 대신 비니어 테이블(veneer table)을 발행합니다. 이는 비보안 호출 가능 함수들의 얇은 계층으로, 호출을 보안 세계로 전달합니다. 비니어 테이블은 NSC 메모리에 상주하고, 실제 구현은 보안 메모리에 위치합니다.
일반적인 보안 프로젝트는 객체 라이브러리와 비니어 함수를 선언하는 헤더 파일로 컴파일됩니다. 비보안 애플리케이션은 헤더만 포함하며, 런타임에 비니어 테이블이 보안 서비스 호출을 중재합니다.
세계 간 전환
두 가지 특수 명령어가 상태 전환을 관리합니다:
SG - 코어를 보안 모드로 전환합니다.
BXNS - 제어권을 비보안 모드로 반환합니다.
비보안 호출 시퀀스는 다음과 같습니다:
// 비보안 코드
SG(); // 보안 세계 진입
SecureFunc(); // 비니어를 통해 보안 서비스 호출
BXNS(); // 비보안으로 복귀
불법 접근 시 Secure Fault 예외가 발생하여 시스템 무결성을 보존합니다.
보안 Hello World 예제
LPCXpresso55S69 SDK에는 빌드를 보안 및 비보안 프로젝트로 분할하는 TrustZone 데모가 포함되어 있습니다. 보안 프로젝트는 초기화 호출로 시작합니다:
MCUXpresso에서 TEE 퍼스펙티브는 SAU 및 IDAU 구성을 위한 시각적 편집기를 제공합니다:
그림 5. MCUXpresso 메모리 맵 보안 속성 보기 및 편집 도구.
왼쪽 테이블에서 각 영역의 보안 수준을 설정하면, 오른쪽 맵에 결과 파티셔닝이 반영됩니다.
LPC5500에서 TrustZone이 중요한 이유
TrustZone은 LPC5500에 명확한 관심사 분리를 제공합니다: 보안 세계는 독점 코드와 암호화 키를 보호하고, 비보안 세계는 사용자 애플리케이션을 호스팅합니다. 하드웨어가 불법 메모리 접근을 차단하고, 소프트웨어 인프라(비니어 테이블, SG/BXNS 명령어, TEE 도구)가 보안 애플리케이션 개발을 단순화합니다.
더 깊은 통찰을 원하면 NXP 웨비나 TrustZone: Calling the Secure World를 시청하거나 공식 문서를 살펴보세요.
업계 기사는 업계 파트너가 All About Circuits 독자들에게 유용한 소식, 메시지, 기술을 공유할 수 있는 콘텐츠 형태로, 편집 콘텐츠로는 다루기 어려운 주제를 다룹니다. 모든 업계 기사는 독자들에게 유용한 소식, 기술 전문성, 이야기를 제공하기 위한 엄격한 편집 가이드라인을 따릅니다. 업계 기사에 표현된 관점과 의견은 파트너의 것이며, 반드시 All About Circuits나 그 작가들의 견해를 반영하지는 않습니다.