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 간의 컨텍스트 스위칭 과정
- Non-Secure EL1(OS 커널) → Secure EL3 전환 (TrustZone 활용)
- Non-Secure EL2(Hypervisor) → Realm Mode로 전환
- 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의 예외 처리 및 보안 기능을 활용하면 운영체제, 하이퍼바이저, 보안 시스템을 효과적으로 설계할 수 있다.
'정보기술 > 하드웨어' 카테고리의 다른 글
ARM Core - 5. ARM 기반의 OS와 임베디드 시스템 개발 (1. ARM에서 리눅스 커널 실행) (0) | 2025.03.07 |
---|---|
ARM Core - 4. ARM 프로세서의 운영 모드 및 시스템 프로그래밍 (3. 부트로더 및 시스템 초기화 실습) (0) | 2025.03.07 |
ARM Core - 4. ARM 프로세서의 운영 모드 및 시스템 프로그래밍 (1. ARM의 실행 모드 가이드) (0) | 2025.03.07 |
ARM Core - 3. ARM Assembly 프로그래밍 기초 (2. ARM 어셈블리 기본 명령어 및 최적화) (0) | 2025.03.07 |
ARM Core - 3. ARM Assembly 프로그래밍 기초 (1. ARM Assembly 환경 설정 가이드) (0) | 2025.03.07 |