콘텐츠로 바로가기

Trusted Execution Environments (TEE)

운영체제마저 믿지 못하는 상황에서도 기밀 연산을 수행하기 위해 하드웨어가 물리적으로 격리한 비밀 구역(Enclave)과 보호 시스템을 다루는 학습 노드입니다.

Article
M

Me

hyunyoun's Blog

computer-architecture-embedded-systemscomputer-architectureembedded-systemshardware-securitytrusted-physicstrusted-execution-environments-teelearningtee9 min read

1. Overview

신뢰 실행 환경(Trusted Execution Environment, TEE)은 운영체제(OS)나 하이퍼바이저(Hypervisor)가 해커에게 완전히 장악당한 최악의 상태에서도, CPU 내부에 절대 뚫리지 않는 '물리적 철제 금고(Enclave)'를 만들어 극비 데이터(생체 정보, 암호 키)를 보호하는 최상위 하드웨어 보안 공학입니다.

학습자는 일반 세계(Normal World)와 격리된 세계(Secure World)를 하드웨어 스위치 하나로 갈라버리는 **ARM TrustZone(트러스트존)**의 버스 컨트롤러 격리 물리를 뜯어보고, 메모리를 암호화하여 물리적인 램 칩 탈취조차 무력화시키는 Intel SGX / AMD SEV 아키텍처를 해부합니다. 나아가 모바일 기기의 지문 인식이나 클라우드의 기밀 컴퓨팅(Confidential Computing)이 어떻게 OS 커널의 해킹으로부터 데이터의 무결성을 보장하는지 통달하여, 제로 트러스트(Zero-Trust) 시스템을 설계하는 아키텍트 역량을 확보합니다.

2. Scope & Boundaries

In-Scope

  • ARM TrustZone 역학 (TrustZone Mechanics): Secure Monitor Call (SMC), 비안전(NS) 비트, 메모리 구역 분할(TZASC).
  • Intel SGX 아키텍처 (Software Guard Extensions): 엔클레이브(Enclave), PRM(Processor Reserved Memory), EPCM(Enclave Page Cache Map).
  • 메모리 암호화 물리 (Memory Encryption): AMD SEV(Secure Encrypted Virtualization), 메모리 버스 암호화(AES-XTS).
  • TEE 원격 증명 (Remote Attestation): 하드웨어가 클라우드 서버에 "나는 조작되지 않은 진짜 엔클레이브다"라고 서명하여 인증하는 프로토콜.

Out-of-Scope

  • 소프트웨어 샌드박스 (Software Sandbox): Docker 컨테이너 격리나 JVM 가상머신 레벨의 소프트웨어적 격리 \rightarrow 03-01-02. Process Isolation & Namespaces 영역.
  • 순수 암호학 알고리즘 (Cryptography): AES-256이나 타원곡선(ECC) 암호의 수학적 증명 과정 \rightarrow 10-03. Applied Cryptography Physics 영역.

Boundaries

  • TEE vs. Secure Boot (02-04-03): 보안 부팅(02-04-03)이 "전원을 켤 때부터 OS가 켜지기 전까지 펌웨어가 변조되지 않았음을 확인하는 시간적 무결성"이라면, TEE는 "OS가 켜지고 나서 런타임(Runtime) 내내 악성 OS로부터 데이터를 방어하는 시공간적 격리 구역"입니다.

3. Counterexample

  • 운영체제 전능성 환상 (OS Omnipotence Fallacy): "커널(Ring 0) 권한만 따내면 메모리에 있는 모든 데이터를 덤프(Dump)떠서 지문 데이터나 인증서를 훔칠 수 있겠지"라고 믿는 낡은 해커의 마인드. TEE(Intel SGX)가 켜진 구역은 CPU 내부에 하드와이어드된 접근 통제(EPCM)를 받으므로, 루팅(Rooting)된 OS 커널이나 하이퍼바이저가 해당 메모리를 읽으려 하면 CPU가 하드웨어 레벨에서 냅다 0xFFFF(쓰레기 값)를 던져버려 완벽히 방어합니다.
  • 엔클레이브 외부 포인터 맹신 (Enclave Pointer Trap): 엔클레이브 내부의 보안 코드를 짤 때, 일반 세계(Untrusted App)가 넘겨준 포인터(주소)를 검증 없이 냅다 역참조(Dereference)하는 치명적 코딩 실수. 악의적인 일반 앱이 엔클레이브 '내부'의 주소를 포인터로 넘기면, TEE가 자기 자신의 보안 구역 메모리를 덮어쓰거나 밖으로 유출하게 되는 Iago Attack(악의적 OS 공격)에 당해 철옹성이 내부에서 붕괴합니다.

4. Prerequisites

  • 가상 메모리 및 페이징 (Basic): TEE가 메모리 주소를 물리적으로 어떻게 격리하는지 이해하려면, OS가 메모리를 맵핑하는 페이지 테이블(Page Table) 구조를 장악하고 있어야 합니다. (03-01-02 VMM)
  • 비대칭 암호와 해시 (Recommended): 원격 증명(Attestation) 시 전자 서명이 어떻게 작동하는지 기초 개념이 필요합니다. (10-03-01)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 TrustZone (ARM) 스마트폰 CPU를 두 개의 인격(일반 vs 보안)으로 갈라, 지문 인식 데이터를 안드로이드 OS로부터 물리적으로 단절시킵니다. P1
2 Enclaves (Intel SGX) 악성 OS 커널조차 열어볼 수 없는 메모리 속 강철 금고(Enclave)를 만들고, CPU 칩이 직접 경비를 서게 만듭니다. P5
3 Memory Encryption (AMD SEV) 해커가 서버 마더보드에 물리적 탐침을 꽂고 램을 훔쳐봐도 쓰레기 값만 보이도록, 램과 CPU 사이의 버스(Bus)를 암호화합니다. Industry
4 Remote Attestation 저 멀리 떠 있는 클라우드 서버의 금고가 "진짜 인텔 CPU로 만든 안전한 금고"인지 원격으로 검증(서명 확인)합니다. Industry

6. Learning Topics

Basic

Core Topic 01: 두 개의 세상, ARM TrustZone 역학 (TrustZone Mechanics)

  • Why to Learn: 안드로이드 폰이 해킹(루팅)당해 카카오톡 메모리가 다 털려도, 삼성페이 카드 정보나 지문 데이터만큼은 절대 유출되지 않는 모바일 보안의 근본 뼈대를 장악하기 위함입니다.
  • What to Learn:
    • Concepts: Normal World(Rich OS), Secure World(Trusted OS), NS(Non-Secure) 비트.
    • Skills: SMC(Secure Monitor Call), TZASC(TrustZone Address Space Controller).
    • Tools: 버스 마스터(Bus Master) 권한 분리 다이어그램.
    • Trade-offs: 물리적 CPU 코어 하나를 시분할(Time-slicing)하여 두 세상으로 나누어 쓰므로 코어 실리콘 면적을 아끼는 압도적 가성비 vs 일반 세상에서 보안 세상으로 넘어갈 때마다 CPU 레지스터를 싹 다 백업하고 복구해야 하는 SMC 컨텍스트 스위칭의 끔찍한 오버헤드.
  • How to Learn:
    • 1단계: 마더보드를 돌아다니는 모든 버스(Bus) 트랜잭션 주소에 NS(Non-Secure) 비트라는 하드웨어 꼬리표를 1개 강제 추가하여, NS=1(일반 OS)인 놈이 NS=0(보안 메모리) 구역을 읽으려 하면 컨트롤러가 전기 충격(Bus Error)을 가해 끊어버리는 물리적 장벽을 해부합니다.
    • 2단계: 안드로이드 앱이 지문 인증을 요청할 때, 얌전히 SMC 명령어를 호출하면 CPU가 멈추고 Secure Monitor라는 문지기가 권한을 뺏은 뒤, 폰 전체의 제어권을 Secure OS로 완전히 넘겨버리는 시공간 단절을 뜯어봅니다.
  • Implement: 파이썬으로 가상의 CPU 버스 컨트롤러 객체를 만들고, Memory_Read(Address, Is_Secure_World) 호출 시 Address가 사전에 정의된 Secure_Region에 속하는데 Is_Secure_World=False이면 Hardware_Fault_Exception을 발생시켜 접근을 원천 차단하는 하드웨어 라우터 시뮬레이션.

Core Topic 02: 인텔 SGX와 엔클레이브 구조 (Enclave Physics)

  • Why to Learn: 서버의 최고 관리자(root) 권한을 가진 해커나 악의적인 클라우드 사업자(AWS, Azure)조차, 내 프로세스의 메모리를 절대로 들여다보지 못하게 만드는 '기밀 컴퓨팅(Confidential Computing)'의 마법을 쥐기 위해서입니다.
  • What to Learn:
    • Concepts: 엔클레이브(Enclave), EPC(Enclave Page Cache), EPCM(EPC Map).
    • Skills: Enclave Entry/Exit(EENTER, EEXIT), 측정(Measurement, 해시).
    • Tools: 하드웨어 기반 접근 통제 회로.
    • Trade-offs: CPU 안에 엔클레이브 전용 램(EPC) 용량을 128MB 정도로 극히 작게 묶어두어 보안 컨트롤을 완벽하게 해내는 견고함 vs 128MB가 넘어가는 거대 알고리즘을 돌리려면 디스크나 일반 메모리로 스와핑(Paging)하며 암/복호화를 미친 듯이 해야 해서 성능이 수십 배 추락하는 절망적 한계.
  • How to Learn:
    • 1단계: 일반 애플리케이션 코드를 짤 때, 네트워크나 파일 I/O처럼 위험한 코드는 밖에(Untrusted) 두고, 비밀번호 해시 생성처럼 핵심적인 코드와 데이터만 금고(Enclave) 안에 가둬 컴파일하는 공간 분할 기하학을 해부합니다.
    • 2단계: OS 커널이 악의적으로 엔클레이브 페이지 테이블 맵핑을 바꾸려 할 때, CPU 내부의 하드웨어 감시자(EPCM)가 "이 페이지는 엔클레이브 3번 소유인데 네가 왜 건드려?"라며 OS의 명령을 씹고 물리적으로 거부하는 항명(Insubordination) 역학을 뜯어봅니다.
  • Implement: Enclave 클래스를 정의하고, 이 객체 내부의 변수는 오직 EENTER(func_name)라는 전용 게이트(Gate) 메서드를 통해서만 접근할 수 있으며, 직접 enclave.secret_data를 찍으려 하면 파이썬 @property 데코레이터를 이용해 강제로 쓰레기(Garbage) 값을 반환하는 은닉 래퍼(Wrapper) 설계.

Practical

Core Topic 03: 하드웨어 메모리 암호화 (AMD SEV & Memory Encryption)

  • Why to Learn: 클라우드 가상머신(VM) 하나를 통째로 보안 구역으로 만들거나, 해커가 서버 뚜껑을 열고 질소 냉각기로 램(RAM)을 얼려서 물리적으로 떼어가도(Cold Boot Attack) 데이터가 털리지 않는 극한 방어망을 구축하기 위함입니다.
  • What to Learn:
    • Concepts: SME(Secure Memory Encryption), SEV(Secure Encrypted Virtualization), 메모리 컨트롤러 암호화 엔진.
    • Skills: AES-XTS 인라인 암호화, VM별 독립 키(Key) 관리.
    • Tools: AMD Secure Processor (SP).
    • Trade-offs: VM 자체를 뜯어고칠 필요 없이 OS 커널 채로 몽땅 암호화시켜 버리는 압도적 편의성(Lift and Shift) vs CPU가 메모리를 긁어올 때마다 캐시 미스가 나면 메모리 컨트롤러에서 실시간으로 AES 복호화를 때려야 하므로 발생하는 미세한 레이턴시 증가와 대역폭 하락.
  • How to Learn:
    • 1단계: CPU 내부의 L1/L2 캐시에서는 데이터가 평문(Plaintext)으로 쌩쌩 돌지만, 칩을 벗어나 마더보드의 메모리 버스(Bus)를 타는 순간 컨트롤러가 0.1나노초 만에 데이터를 AES로 찢어 암호화한 뒤 DRAM에 박아버리는 경계선 암호화 물리를 해부합니다.
    • 2단계: 하이퍼바이저(VMware, KVM)가 10개의 VM을 굴릴 때, AMD 보안 프로세서가 VM마다 각기 다른 암호화 키 10개를 쥐여줘서, 하이퍼바이저 관리자조차 VM1의 램을 읽으면 키가 안 맞아서 깨진 외계어만 보게 만드는 완벽한 수직 격리성을 뜯어봅니다.
  • Implement: 가상의 Memory_Controller가 데이터를 배열(RAM)에 쓸 때 특정 VM_Key로 XOR(가짜 암호화)하여 저장하고, 읽을 때 다시 XOR하여 복원하는 로직을 구축. 이후 Hypervisor_Admin 스레드가 램 배열을 직접 덤프 떴을 때 원래 데이터가 파괴되어 전혀 알아볼 수 없는 형태임을 콘솔에 증명하는 시뮬레이터.

Advanced

Core Topic 04: TEE 원격 증명과 제로 트러스트 (Remote Attestation)

  • Why to Learn: 내가 클라우드에 올려보낸 AI 모델이나 지갑 프라이빗 키가, "AWS가 쳐놓은 가짜 소프트웨어 에뮬레이터"가 아니라 "진짜 인텔 실리콘 칩으로 만든 뚫리지 않는 TEE" 안에 안착했는지 지구 반대편에서 수학적으로 검증해 내기 위해서입니다.
  • What to Learn:
    • Concepts: 원격 증명(Remote Attestation), 측정(Measurement / Hash), 융합(Quote).
    • Skills: 하드웨어 퓨즈 융단(Fused Keys: EPID/DCAP), 챌린지-리스폰스(Challenge-Response) 프로토콜.
    • Tools: Intel Attestation Service (IAS).
    • Trade-offs: 하드웨어 제조사(Intel)가 구워놓은 마스터키에 의존해야 하므로 "인텔이 나쁜 마음을 먹으면 어쩌지?"라는 서플라이 체인(Supply Chain) 종속성 리스크 vs 이를 해결하기 위해 자체 PKI 인프라를 구축하는 DCAP(Data Center Attestation)의 극악한 인프라 관리 난이도.
  • How to Learn:
    • 1단계: 엔클레이브가 켜질 때, 안에 들어가는 모든 코드와 데이터 0과 1을 CPU가 싹 다 해시(SHA-256) 떠버려서 고유의 지문(Measurement)을 남기고, 만약 해커가 코드 한 줄이라도 변조했으면 해시가 박살 나는 무결성 증명 기하학을 해부합니다.
    • 2단계: 클라이언트가 서버에 "너 진짜 TEE 맞음?" 하고 난수(Nonce)를 던지면, TEE 하드웨어가 자신의 해시값과 난수를 묶어 'CPU 공장에서 구워진 절대 위조 불가능한 비밀키(Fused Key)'로 전자 서명(Quote)을 만들어 응답하는 챌린지 핑퐁을 뜯어봅니다.
  • Implement: 파이썬 해시 라이브러리(hashlib)와 RSA 전자 서명을 이용해, 1) TEE 객체 초기화 시 내부 스크립트 텍스트의 SHA-256 해시를 생성 2) 클라이언트 난수와 결합해 3) TEE의 프라이빗 키로 서명(sign)하는 과정과, 클라이언트가 TEE의 퍼블릭 키로 이를 검증(verify)하여 "변조되지 않은 정상 엔클레이브"임을 확정 짓는 원격 증명 파이프라인.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
TEE 메인 프로세서 내부에 하드웨어로 격리되어 보안 연산과 데이터 보호를 전담하는 물리적 환경입니다. 기본 격리 환경 TrustZone / SGX OS '외부 보안 칩(HSM)'과 다름 P3:CyBOK core
Enclave (인클레이브) 어플리케이션 메모리 중 CPU에 의해 직접 보호되고 암호화되는 독립된 기밀 물리 구역입니다. 추천 실시간 보호 EPC / RAM World '가상 머신'과 다름 P1:CS2023/SystemSecurity core
Attestation 하드웨어가 자신의 상태와 실행 중인 코드가 정당함을 외부 증명하는 물리적 보증 기술입니다. 실무 무결성 증명 Fingerprint / Key Verification '단순한 인증'으로 오해 P3:CyBOK core
SMC 일반 소프트웨어가 신뢰 실행 환경(TEE)에 서비스를 요청하기 위해 사용하는 하드웨어 게이트 명령입니다. 심화 세계 전이 Monitor / Call Trap '일반 시스템 콜'과 다름 Industry Arch core

8. References

Primary

Secondary

  • [Trusted Execution Environments: A Survey] Sabt et al. — Comprehensive academic overview.
  • [Intel SGX Explained] Costan & Devadas — The definitive SGX technical manual.

Industry

  • [ARM TrustZone for Cortex-A Architecture Whitepaper] — Industry standard for mobile TEE.
  • [GlobalPlatform TEE Specifications] — Software interaction standards for TEE.

9. Final Checklist

Primary

  • '보안 사이드' 메모리에 일반 사이드 OS가 접근하려 할 때, 하드웨어 MMU가 어떤 비트를 읽어 이 요청을 물리적으로 차단하는지 설명 가능한가? (P1)
  • TEE 내부에서 실행되는 코드가 메인 OS의 가용 자원(디스크, 네트워크)을 직접 쓰지 못하고 대리 요청(Proxy)을 해야 하는 물리적 이유를 소통 가능한가? (P1)

Secondary

  • ARM TrustZone에서 'Secure Monitor'가 CPU의 레지스터 세트를 두 세계 사이에서 어떻게 스위칭하여 데이터 유출을 막는지 입증할 수 있는 가?
  • Intel SGX의 EPC(Enclave Page Cache) 크기 제한이 대규모 데이터 보호 연산 시 왜 'Page Swapping'을 통한 성능 참사를 유발하는지 분석 가능한가?

Industry

  • 디지털 저작권 관리(DRM) 시스템 설계 시, 비디오 스트리밍 데이터를 TEE 내부에서만 해독하게 함으로써 얻는 물리적 복제 방지 이점을 제안할 수 있는 가? (SFIA)
  • 클라우드 컴퓨팅 환경에서 'Confidential Computing' 하드웨어를 사용하여 관리자가 고객의 VM 메모리를 덤프 뜨지 못하게 막는 물리적 기법을 기술할 수 있는 가?

Hardware Security & Trusted Physics

2 / 5