디버거를 넘어선 보안 아키텍처 진단 과정 — AI 생성 일러스트AI 일러스트
리서치 연구

디버거를 넘어선 보안 아키텍처 진단 과정

When the Debugger Lies

Hacker News9월 22일 발표 · 3분

Nordic nRF54L의 키 관리 장치(KMU)를 디버거 레지스터 조작을 통해 직접 분석하며 보안 기능을 테스트했습니다.

세 줄 요약Hacker News 원문 기반
  1. 데이터 푸시 작업 후 같은 메모리 주소에 새 값을 쓰려 했으나, 이전의 오래된 값이 계속 남아있는 현상을 발견했습니다.
  2. 복잡한 하드웨어 보안 기능(KMU)을 다룰 때, 일반적인 디버거 환경만으로는 데이터 무결성이나 실제 시스템 상태를 정확히 파악하기 어려울 수 있습니다.
  3. 따라서 KMU와 같은 보안 영역 작업 시, 메모리 쓰기 동작은 캐시나 디버그 인터페이스의 특성을 고려하여 주의 깊게 접근해야 합니다.

작성자는 Nordic Semiconductor의 nRF54L 시리즈의 키 관리 장치(KMU) 보안 아키텍처를 분석하며, 디버거를 이용해 레지스터에 직접 접근하는 방식으로 학습을 진행했습니다. nRF54L은 Arm TrustZone 지원과 KMU를 통해 민감한 데이터(키 시드 등)를 Secure Information Configuration Region (SICR)에 저장합니다. 일반적으로 애플리케이션 펌웨어는 PSA 드라이버를 통해 키 생성, 저장 및 사용 과정을 추상화하여 처리하며, 이 과정에서 KMU가 핵심적인 역할을 수행합니다.

KMU의 기능을 테스트하기 위해 GDB 환경을 활용하여 복잡한 레지스터 조작 절차를 따랐습니다. 먼저 `SRC` 데이터 구조체를 메모리에 구성하고, 해당 주소를 KMU의 `SRC` 레지스터(`0x50049504`)에 설정했습니다. 이후 키 슬롯 ID와 RRAMC(저항성 랜덤 액세스 메모리 컨트롤러)를 unbuffered write 모드로 설정한 뒤, `TASKS_PROVISION` 레지스터(`0x50049000`)에 값을 기록하여 KMU가 데이터를 저장하도록 작업을 트리거했습니다.

데이터 쓰기 작업이 완료된 후, 키 푸시 기능을 테스트하기 위해 원하는 슬롯 ID를 설정하고 `TASKS_PUSH` 레지스터(`0x50049004`)에 값을 기록하여 작업을 수행했습니다. 이 과정에서 특정 메모리 주소에 데이터를 성공적으로 쓰기 했음에도 불구하고, 다른 키 슬롯을 사용하거나 반복적으로 푸시 작업을 시도할 때 이전의 값이 계속 유지되는 현상을 발견했습니다. 이는 디버거 환경만으로는 시스템의 실제 데이터 무결성이나 상태 변화를 정확히 파악하기 어렵다는 점을 보여주었습니다.

원문Hacker News · When the Debugger Lies같은 주제 가이드 · 바로 써 보기영어 논문, 초록부터 쉽게 읽기

평일 아침 메일로 받아 보기 ›틀린 곳 알리기