Posts
171 posts[Arm프로세서] 트러스트존(TrustZone): 시큐어 상태(Secure State)와 SCR_EL3 레지스터란
이전 포스트에서 소개했듯이 트러스트존 아키텍처 관점으로 보면 시큐어 상태와 논 시큐어 상태가 존재합니다. 일반적으로 우리가 알고 있는 유저 애플리케이션이나 운영체제 커널은 논 시큐어 상태에서 동작한다고 볼 수 있습니다. 그렇다면 각 익셉션 레벨 별로 현재 시큐어 상태인지 아닌지는 어떻게 알 수 있을까요? 바로 SCR_ELx 레지스터의 값을 통해 알 수 있습니다. [정보]SCR_ELx에서 보이는 ELx는 익셉션 레벨을 뜻하면 EL0--EL3까지를 뜻합니다. SCR_ELx 레지스터는 EL3에서만 변경하거나 접근할 수 있습니다. 다음은 EL3에서만 접근할 수 있는 SCR_EL3 레지스터의 다이어그램입니다. 그림 11.7 SCR_EL3 레지스터의 Bit Assignment SCR 레지스터의 맵을 보면
[Arm프로세서][Armv7] 트러스트존(TrustZone): 시큐어 월드로 실행 흐름이 변경되는 과정
이번에는 Armv7 아키텍처에서 정의된 전체 동작 모드를 보면서 논 시큐어 월드에서 시큐어 월드로 실행 흐름이 바뀌는 과정과 이 때 SCR.NS 비트가 어떻게 바뀌는지 알아봅시다. 그림 11.4 모드, privilege 레벨과 시큐리티 상태들 먼저 그림을 넓은 시야로 봅시다. 그림의 왼쪽 부분은 논 시큐어 상태, 오른쪽 부분은 시큐어 상태를 나타냅니다. 각 박스 내에 PL이 보이는데 이는 Privilege level의 약자이며 권한 수준을 나타냅니다. 권한 수준이 낮은 User 모드는 PL0이고, 시스템 레벨로 권한 수준이 있는 System, IRQ, Undef, Abort, Supervisor 모드는 PL1입니다. 그런데 그림의 오른쪽 부분에도 PL0에 해당되는 User 모드, PL1에 해당되
[Arm프로세서][Armv7] 트러스트존(TrustZone): 시큐어 상태와 Secure Control Register(SCR)
트러스트존 아키텍처에서 논 시큐어 월드와 시큐어 월드를 기준으로 트러스트존의 주요 개념을 설명합니다. 그런데 Arm 아키텍처의 스팩 문서를 살펴보면 시큐어 상태와 논 시큐어 상태라는 용어를 만나게 됩니다. 시큐어 상태와 논 시큐어 상태는 시큐어 월드와 논 시큐어 월드와 거의 유사한 개념인데, 트러스트존의 구현 레벨에서 쓰이는 용어입니다. 먼저 시큐어 상태와 논 시큐어 상태에 대해 알아봅시다. 어떤 코드가 실행 중인데 현재 코드가 논 시큐어 월드 혹은 시큐어 월드에서 실행 중인지 어떻게 알 수 있을까요? Armv7 아키텍처에서는 이 정보를 저장하는 레지스터를 설계했는데 이를 Secure Control Register(SCR) 레지스터라고 합니다. 이번에는 Arm 스팩 문서를 보면서 Secure Cont
[Arm프로세서] 트러스트존(TrustZone): 시큐어 모드와 모니터 모드
대부분 트러스트존을 설명할 때 논 시큐어 월드와 시큐어 월드의 개념과 smc 명령어까지만 다루는 경우가 많습니다. 하지만 세세한 구현 방식을 파악하려면 모니터 모드와 시큐어 모드는 물론 익셉션 벡터 테이블에 대해 파악해야 합니다. 또한 익셉션의 동작 원리도 알아야 합니다. 논 시큐어 월드에서 시큐어 월드로 진입하거나 반대로 시큐어 월드에서 논 시큐어 월드로 진입할 때 익셉션이 유발되기 때문입니다. 먼저 아래와 같이 각 모드 별로 정의된 익셉션 벡터 테이블을 보면서 이 내용을 배워 봅시다. 표 11.1 arm 동작 모드 별로 정의된 익셉션 벡터 테이블 보다시피 각 arm의 모드 별로 익셉션 벡터 테이블의 세부 내용이 표기돼 있습니다. 먼저 표의 가장 오른쪽에 있는 논 시큐어 모드의 익셉션 벡터 테이블을



![[Spoiler] '우주 형제' 완결. 매거진 신작 '천선 전기'.](https://img.zoomtrend.com/2026/06/10/1781142015-ECBD98ED8AB8EBA1A4EB9FACEBA5BCEB93A0EC9E90.jpg)