ARM Core - 4. ARM 프로세서의 운영 모드 및 시스템 프로그래밍 (2. ARM 예외 처리 및 보안 기능 가이드)

2025. 3. 7. 13:34정보기술/하드웨어

2. ARM 예외 처리 및 보안 기능 가이드


1. ARMv8/v9의 새로운 예외 처리 모델

ARM 아키텍처에서 예외(Exception)가 발생하면 현재 실행 중인 코드의 흐름이 중단되고, 예외 처리 루틴이 실행된다.

1) 예외 유형 및 처리 방식 (AArch64 기준)

예외 유형 설명  진입 Exception Level
Synchronous Exception 명령어 실행 오류(Undefined Instruction) 또는 시스템 콜(SVC) 발생 EL1~EL3
IRQ (Interrupt Request) 일반 인터럽트 요청 EL1, EL2
FIQ (Fast Interrupt Request) 빠른 인터럽트 요청 EL1, EL2
SError (System Error) 하드웨어 장애(메모리 오류, 버스 오류) EL1~EL3

2) 예외 처리 벡터 테이블 설정 (AArch64)

AArch64에서 예외가 발생하면, CPU는 예외의 유형에 따라 벡터 테이블(Vector Table)을 참조하여 적절한 예외 핸들러로 이동한다.

예외 처리 벡터 테이블 예제 (EL1)

.align 7
exception_vector_table:
    b sync_exception_handler   // 동기 예외 처리 (Synchronous Exception)
    b irq_handler              // IRQ 인터럽트 처리
    b fiq_handler              // FIQ 인터럽트 처리
    b serror_handler           // 시스템 오류 처리
  • exception_vector_table이 설정되면, CPU는 예외 발생 시 해당 핸들러를 호출한다.
  • b 명령어는 특정 예외 핸들러로 점프하는 역할을 한다.

AArch64에서 벡터 테이블 등록 코드 (EL1)

LDR X0, =exception_vector_table  // 벡터 테이블 주소 로드
MSR VBAR_EL1, X0                 // 벡터 테이블을 VBAR_EL1에 설정
  • VBAR_EL1 레지스터에 벡터 테이블 주소를 설정하여 예외 처리 시작점을 지정한다.

2. ARMv9의 Realm 기능과 TrustZone과의 상호작용

1) ARMv9의 Realm Mode란?

  • ARMv9에서는 보안 및 데이터 보호 강화를 위해 Realm Mode가 추가되었다.
  • 기존의 TrustZone이 **Secure World(EL3)와 Non-Secure World(EL0~EL2)**를 분리하는 방식이라면, Realm Mode는 EL2(하이퍼바이저)에서 독립적인 보안 영역을 추가하여 보안 강도를 향상시킨다.
TrustZone 기반 실행 환경 ARMv9의 확장
EL3: Secure World EL3: Secure World (TrustZone)
EL2: Non-Secure Hypervisor EL2: Non-Secure Hypervisor & Realm Mode
EL1: OS Kernel (Normal Mode) EL1: OS Kernel (Normal Mode)
EL0: User Mode EL0: User Mode

2) TrustZone과 Realm Mode의 차이점

기능  TrustZone (ARMv8 이전) Realm Mode (ARMv9 이후)
보안 모델 Secure/Non-Secure Secure/Non-Secure + Realm
EL3에서 보안 관리 O X (Realm은 EL2에서 관리)
가상화 지원 제한적 독립적인 보안 가상화 지원
데이터 보호 하드웨어 기반 격리 별도 메모리 암호화 지원

3) TrustZone과 Realm Mode의 상호작용

  • TrustZone(EL3)은 여전히 Secure World와 Non-Secure World를 분리하는 역할을 수행한다.
  • Realm Mode(EL2)는 가상화 환경에서 하이퍼바이저와 독립적으로 동작하며, 추가적인 보안 도메인을 제공한다.
  • 즉, 기존 TrustZone을 유지하면서, 가상화 환경에서도 높은 수준의 보안이 가능하도록 확장된 것이다.

TrustZone과 Realm 간의 컨텍스트 스위칭 과정

  1. Non-Secure EL1(OS 커널) → Secure EL3 전환 (TrustZone 활용)
  2. Non-Secure EL2(Hypervisor) → Realm Mode로 전환
  3. Realm Mode에서 보안 작업 수행 후 EL2로 복귀

Realm Mode에서 실행 상태 확인 코드 (AArch64)

MRS X0, CurrentEL   // 현재 Exception Level 읽기
LSR X0, X0, #2      // 상위 비트에서 EL 값 추출
CMP X0, #2          // EL2인지 확인 (Realm Mode 실행 여부)
BEQ realm_handler
  • CMP X0, #2 → Realm Mode(EL2)인지 확인
  • EL2에서 Realm Mode로 동작 중이면 realm_handler로 분기

3. SMCCC (Secure Monitor Call Calling Convention)

1) SMCCC란?

SMCCC(Secure Monitor Call Calling Convention)TrustZone과 Realm Mode 간의 통신을 지원하는 인터페이스로,

  • EL1(Non-Secure)에서 EL3(Secure Monitor)로 명령을 전달할 때 사용
  • EL2에서 EL3으로 보안 요청을 수행하는 경우에도 사용

2) SMCCC 호출 방식

Secure Monitor Call(SMC) 명령어를 사용하여 EL1 또는 EL2에서 EL3으로 호출을 수행한다.

AArch64에서 SMCCC 호출 예제

MOV X0, #0xC3000000  // ARM 표준 Secure Monitor Call (SIP)
MOV X1, #1           // 요청 ID
MOV X2, #0           // 추가 파라미터
SMC #0               // EL3으로 Secure Call 실행
  • X0: 호출 유형 지정 (0xC3000000 = 표준 Secure Monitor Call)
  • X1: 요청 ID (서비스 식별자)
  • X2: 추가 파라미터 전달
  • SMC #0: EL3으로 Secure Monitor Call 실행

4. 예외 처리 및 보안 기능 요약

항목  ARMv8  ARMv9
예외 처리 구조 EL0~EL3 EL0~EL3 + Realm Mode
보안 모드 Secure/Non-Secure Secure/Non-Secure + Realm
가상화 지원 EL2 (Hypervisor Mode) EL2 + Realm
예외 유형 Synchronous, IRQ, FIQ, SError 동일

 

보안 기능 설명
TrustZone Secure/Non-Secure 모드 분리
SMCCC Secure Monitor Call 인터페이스
Realm Mode ARMv9에서 추가된 보안 레벨

5. 결론

  • ARMv9에서는 기존 TrustZone을 유지하면서도 가상화 환경에서 독립적인 보안 도메인(Realm Mode)을 추가하였다.
  • 예외 처리 벡터 테이블(Vector Table) 설정을 통해 예외 발생 시 적절한 핸들러로 이동 가능하다.
  • SMCCC는 TrustZone과 Realm Mode 간의 보안 호출을 수행하는 인터페이스로, 보안 펌웨어 및 가상화 환경에서 사용된다.
  • ARM의 예외 처리 및 보안 기능을 활용하면 운영체제, 하이퍼바이저, 보안 시스템을 효과적으로 설계할 수 있다.