Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

3240
557
422294


[Arm프로세서][Armv7] 트러스트존(TrustZone): 시큐어 상태와 Secure Control Register(SCR) Arm: Security Extensions

트러스트존 아키텍처에서 논 시큐어 월드와 시큐어 월드를 기준으로 트러스트존의 주요 개념을 설명합니다. 그런데 Arm 아키텍처의 스팩 문서를 살펴보면 시큐어 상태와 논 시큐어 상태라는 용어를 만나게 됩니다. 시큐어 상태와 논 시큐어 상태는 시큐어 월드와 논 시큐어 월드와 거의 유사한 개념인데, 트러스트존의 구현 레벨에서 쓰이는 용어입니다. 

먼저 시큐어 상태와 논 시큐어 상태에 대해 알아봅시다. 어떤 코드가 실행 중인데 현재 코드가 논 시큐어 월드 혹은 시큐어 월드에서 실행 중인지 어떻게 알 수 있을까요? Armv7 아키텍처에서는 이 정보를 저장하는 레지스터를 설계했는데 이를 Secure Control Register(SCR) 레지스터라고 합니다. 

이번에는 Arm 스팩 문서를 보면서 Secure Control Register에 대해 알아봅시다.
 
B4.1.129 SCR, Secure Configuration Register, Security Extensions
The SCR defines the configuration of the current security state. It specifies:
  • the security state of the processor, Secure or Non-secure
  • what mode the processor branches to if an IRQ, FIQ or external abort occurs
  • whether the CPSR.{F, A} bits can be modified when SCR.NS == 1.
(출처: DDI0406C_d_armv7ar_arm.pdf)

스팩 문서의 내용은 다음과 같이 해석할 수 있습니다.

   * SCR은 현재 프로세서의 시큐어 상태를 설정할 수 있는 레지스터이다.
   * SCR은 프로세서의 상태를 시큐어 상태와 논 시큐어 상태로 지정한다.
   * IRQ, FIQ나 외부 어보트가 일어나면 프로세서가 어떤 모드로 진입하는지 결정한다.

이번에는 다음 그림을 보면서 SCR 레지스터가 각 비트 별로 어떤 정보를 저장하는지 확인해봅시다.

 

그림 11.3 SCR 레지스터의 비트 Assignment

SCR 레지스터를 구성하는 비트 중에 가장 많이 언급되는 비트는 NS인데, 보통 SCR.NS라고 표기합니다. 이는 현재 프로세서의 시큐어 상태를 설정합니다. 만약 프로세서가 논 시큐어 상태에서 실행 중이면 SCR.NS 비트는 1, 시큐어 상태에서 실행 중이면 SCR.NS 비트는 0을 저장합니다. 

#Reference: 트러스트존(TrustZone) 

트러스트존 소개
Armv7 아키텍처의 트러스트존
트러스트존의 실제 구현 방식

Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자
* 2021년 대한민국 학술원 선정 우수도서


---



핑백

덧글

댓글 입력 영역