메모리 암호화
개요
메모리 암호화(Memory Encryption)는 메모리에 저장된 데이터를 물리적 또는 논리적 접근으로부터 보호하기 위해 암호화 알고리즘을 적용하는 기술이다. DRAM에 저장되는 데이터는 CPU 외부의 물리적 버스에서 탈취(snoop)하거나 메모리 모듈을 분리(dismantling)하여 직접 읽을 수 있으므로, 냉기 공격(cold boot attack), 메모리 스니핑(memory snooping), DMA 공격 등으로부터 데이터를 보호하기 위해 하드웨어 기반 암호화가 필수적이다.
현대 프로세서는 메모리 컨트롤러에 통합된 암호화 엔진을 통해 CPU-메모리 경계에서 투명하게 암호화/복호화를 수행한다. Intel은 Total Memory Encryption(TME)과 Multi-Key TME(MKTME)를, AMD는 Secure Memory Encryption(SME)과 Secure Encrypted Virtualization(SEV) 계열을 제공한다. 이 기술들은 가상화 환경에서 VM 간 격리, 클라우드 보안, 규제 컴플라이언스를 위한 신뢰할 수 있는 실행 환경(TEE)의 기반이 된다.
핵심 개념
메모리 암호화의 필요성
현대 시스템에서 메모리 데이터는 여러 경로에서 유출될 수 있다:
- 물리적 접근: 메모리 모듈 탈거 후 냉각제(liquid nitrogen)를 이용한 냉기 공격
- DMA 공격: PCIe 디바이스를 통한 직접 메모리 접근으로 페이지 테이블 보호 우회
- 메모리 스니핑: 버스 프로버(bus probe)를 이용한 CPU-메모리 간 데이터 탈취
- 메모리 잔상(retention): 전원 제거 후에도 커패시터에 남아있는 데이터 잔존
암호화 범위 분류
| 분류 기준 | 유형 | 설명 |
|---|---|---|
| 키 관리 | Single-Key | 시스템 전체에 하나의 키 사용 (TME, SME) |
| Multi-Key | VM/도메인별 고유 키 사용 (MKTME, SEV) | |
| 투명성 | Transparent | OS/애플리케이션 변경 없이 투명하게 동작 |
| Explicit | 페이지 테이블 비트로 암호화 영역 지정 | |
| 무결성 | Confidentiality-Only | 기밀성만 보장 (TME, SME) |
| Integrity-Protected | 무결성까지 보장 (SEV-SNP, TDX) |
암호화 알고리즘
현대 메모리 암호화는 대부분 AES(Advanced Encryption Standard)를 사용한다:
- AES-XTS: 디스크/메모리 암호화에 특화된 모드. 동일 평문이 다른 키스토REAM과 암호화되어 패턴 분석을 방지
- AES-GCM: 인증된 암호화(Authenticated Encryption). AMD SEV에서 사용
- AES-ECB/CTR: 초기 구현에서 사용되었으므로 현재는 XTS/GCM으로 대체
비교/분석
주요 메모리 암호화 기술 비교
| 기술 | 제조사 | 도입 시기 | 키 관리 | 투명성 | 무결성 | 주요 대상 |
|---|---|---|---|---|---|---|
| Intel TME | Intel | 2016 (Skylake) | Single | 투명 | X | 전체 메모리 |
| Intel MKTME | Intel | 2017 (Skylake-SP) | Multi | PTE 비트 | X | VM/도메인별 |
| Intel TDX | Intel | 2023 (Sapphire Rapids) | Multi | TEE | O | VM 격리 |
| AMD SME | AMD | 2017 (Zen) | Single | PTE 비트 | X | 선택적 페이지 |
| AMD TSME | AMD | Zen+ | Single | 투명 | X | 전체 메모리 |
| AMD SEV | AMD | 2017 (EPYC 7001) | Multi | VM별 | X | VM 격리 |
| AMD SEV-ES | AMD | 2019 (EPYC 7002) | Multi | VM별 | X | CPU 레지스터 |
| AMD SEV-SNP | AMD | 2021 (EPYC 7003) | Multi | VM별 | O | VM 격리+무결성 |
암호화 오버헤드 비교
| 기술 | 읽기 지연 추가 | 쓰기 지연 추가 | 대역폭 영향 | 멀티키 오버헤드 |
|---|---|---|---|---|
| Intel TME | ~1-2 cycle | ~1-2 cycle | <1% | N/A |
| Intel MKTME | ~2-3 cycle | ~2-3 cycle | ~1-2% | 키당 최대 5% |
| AMD SME | ~1-2 cycle | ~1-2 cycle | <1% | N/A |
| AMD SEV | ~3-5 cycle | ~3-5 cycle | ~2-5% | VM당 키 관리 |
| Intel TDX | ~3-5 cycle | ~3-5 cycle | ~2-5% | TD별 키 관리 |
보호 수준 비교
| 보호 대상 | TME | MKTME | SME | SEV | SEV-ES | SEV-SNP | TDX |
|---|---|---|---|---|---|---|---|
| DRAM 데이터 | O | O | O | O | O | O | O |
| CPU 레지스터 | X | X | X | X | O | O | O |
| I/O DMA | X | X | X | X | X | X | O |
| 메모리 무결성 | X | X | X | X | X | O | O |
| 리플레이 방지 | X | X | X | X | X | O | O |
| 하이퍼바이저 격리 | X | X | X | O | O | O | O |
| 원격 인증 | X | X | X | X | X | O | O |
동작 원리
Intel TME (Total Memory Encryption)
TME는 시스템 부팅 시 고정된 AES-XTS-128 키를 생성하고, 모든 메모리 접근을 자동으로 암호화/복호화한다.
- 부팅 시 키 생성: TPM이나 플랫폼 레지스터에서 128비트 키를 생성하여 메모리 컨트롤러의 전용 레지스터에 로드
- CPU 쓰기 동작: CPU가 메모리에 쓸 때 AES-XTS 엔진이 실시간으로 암호화하여 DRAM에 기록
- CPU 읽기 동작: DRAM에서 읽은 암호화된 데이터를 AES-XTS 엔진이 복호화하여 CPU에 전달
- 키 보호: 암호화 키는 CPU 외부로 노출되지 않으며, TPM과 연동하여 플랫폼 무결성 보장
Intel MKTME (Multi-Key Total Memory Encryption)
MKTME는 TME를 확장하여 최대 256개의 독립적인 키를 지원한다.
- 키 할당: 각 메모리 페이지에 PTE(Page Table Entry)의 비트를 사용하여 키 ID를 지정
- 컨텍스트 스위칭: VM 전환 시 메모리 컨트롤러의 키 레지스터 세트를 전환
- DMA 보호: IOMMU와 연동하여 디바이스별 다른 키로 DMA 접근 메모리를 암호화
- 보안 펌웨어: Intel CSME(Converged Security and Management Engine)가 키 관리를 담당
AMD SME (Secure Memory Encryption)
SME는 페이지 테이블 엔트리의 C-bit(C encryption bit)를 설정하여 페이지별로 선택적으로 메모리를 암호화한다.
- CPUID 확인: 부팅 시 CPUID 함수로 SME 지원 여부와 C-bit 위치 확인
- SYSCFG MSR 활성화: SYSCFG MSR의 SME 비트를 설정하여 암호화 엔진 활성화
- 페이지 테이블 설정: OS가 페이지 테이블 엔트리의 C-bit를 설정하여 암호화할 페이지 지정
- AES-128 암호화: 메모리 컨트롤러에 통합된 AES-128 엔진이 쓰기 시 암호화, 읽기 시 복호화
- AMD 보안 프로세서: ARM Cortex-A5 기반 PSP(Platform Security Processor)가 키 관리 담당
AMD TSME (Transparent SME)
TSME는 SME를 확장하여 OS 변경 없이 전체 메모리를 자동으로 암호화한다.
- BIOS에서 활성화: UEFI/BIOS 설정에서 TSME를 활성화하면 전체 메모리가 암호화됨
- 투명 동작: OS나 애플리케이션 변경 없이 메모리 컨트롤러 레벨에서 투명하게 동작
- 단일 키: 시스템 전체에 하나의 키를 사용하므로 VM 간 격리는 제공하지 않음
AMD SEV (Secure Encrypted Virtualization)
SEV는 가상화 환경에서 각 VM에 고유한 암호화 키를 할당하여 메모리를 암호화한다.
- VM 생성 시 키 생성: 하이퍼바이저가 AMD 보안 프로세서에 VM 생성을 요청하면 고유 키가 생성됨
- 페이지별 키 관리: 각 VM의 페이지 테이블에 VM별 고유 키 ID가 할당됨
- 메모리 컨트롤러 암호화: 메모리 컨트롤러가 VM별 키로 실시간 암호화/복호화 수행
- 하이퍼바이저 격리: 하이퍼바이저도 VM 메모리에 접근할 수 없으므로 악성 하이퍼바이저로부터 보호
AMD SEV-ES (Encrypted State)
SEV-ES는 SEV에 CPU 레지스터 암호화를 추가하여 VM 전환 시 레지스터 정보 유출을 방지한다.
- VMEXIT 시 레지스터 보호: VM이 VMEXIT될 때 CPU 레지스터 값이 암호화되어 저장됨
- GHCB 암호화: Guest-Hypervisor Communication Block도 암호화되어 전달
- 정보 유출 방지: 하이퍼바이저가 VM의 레지스터 값을 읽을 수 없으므로 side-channel 공격 완화
AMD SEV-SNP (Secure Nested Paging)
SEV-SNP는 메모리 무결성 보호를 추가하여 리플레이, 리매핑 공격을 방지한다.
- Reverse Map Table (RMP): 모든 물리적 메모리 페이지의 소유권과 암호화 상태를 추적하는 하드웨어 테이블
- 페이지 테이블 검증: 메모리 접근 시 RMP와 페이지 테이블을 대조하여 무결성을 확인
- 리플레이 방지: 동일한 페이지를 두 번 수신하는 것을 탐지하여 리플레이 공격 차단
- 원격 인증: 게스트의 하드웨어/소프트웨어 구성과 보안 상태를 증명하는 attestation 제공
Intel TDX (Trust Domain Extensions)
TDX는 Intel의 기밀 컴퓨팅 기술로, SEAM(Secure Arbitration Mode) 모드에서 동작하는 TDX 모듈이 VM(Trust Domain)을 격리하고 보호한다.
- SEAM 모드: 새로운 CPU 모드인 SEAM에서 TDX 모듈이 동작하여 기존 VMM과 동등한 권한으로 보안 관리
- Trust Domain (TD): VM이 Trust Domain으로 격리되며, 각 TD에 고유한 메모리 키가 할당됨
- 메모리 보호: Intel TME-MK를 사용하여 TD별 다른 키로 메모리를 암호화
- GPA 공유 비트: Guest Physical Address의 비트를 사용하여 공유/전용 메모리 영역을 구분
- 안전한 페이지 관리: 물리적 메모리 페이지의 메타데이터 테이블로 페이지 상태와 소유권 관리
장단점
메모리 암호화 공통
장점:
- 물리적 메모리 접근으로부터 데이터를 보호하여 냉기 공격, 메모리 스니핑 방지
- 하드웨어 기반으로 소프트웨어 오버헤드 최소화
- 클라우드 환경에서 테넌트 간 데이터 격리 보장
- 규제 컴플라이언스(GDPR, HIPAA 등) 충족 지원
단점:
- 암호화/복호화로 인한 메모리 접근 지연 발생 (1~5 cycle)
- 암호화 엔진의 대역폭 제한으로 대규모 메모리 접근 시 병목 가능
- 멀티키 기술의 경우 키 관리 오버헤드와 메모리 사용량 증가
- 디버깅/프로파일링 도구의 메모리 접근이 어려워짐
Intel TME/MKTME
장점:
- OS/애플리케이션 변경 없이 투명하게 동작
- 빠른 암호화 속도와 낮은 오버헤드
- MKTME는 VM별 격리 지원
단점:
- TME는 단일 키로 VM 간 격리 불가
- MKTME의 키 관리가 복잡하고 보안 취약점 존재 가능
- 메모리 무결성 보장 없음
AMD SME/TSME
장점:
- 페이지별 선택적 암호화로 유연성 확보
- TSME는 투명 동작으로 OS 변경 불필요
- AMD 보안 프로세서로 안전한 키 관리
단점:
- SME는 C-bit 설정을 위한 OS 지원 필요
- 단일 키 사용 시 VM 간 격리 불가
- 보안 프로세서(PSP)에 대한 공격 가능성 존재
AMD SEV 계열
장점:
- VM별 고유 키로 하이퍼바이저로부터 VM 데이터 보호
- SEV-ES는 CPU 레지스터까지 보호
- SEV-SNP은 메모리 무결성과 원격 인증 지원
- 클라우드 환경에서의 기밀 컴퓨팅 실현
단점:
- SEV-SNP 이전 버전은 메모리 무결성 보장 부족
- 보안 프로세서의 키 관리 병목
- 레거시 하드웨어/소프트웨어와의 호환성 문제
Intel TDX
장점:
- SEAM 모드로 하이퍼바이저와 동등한 권한의 보안 관리
- TD별 메모리 키와 무결성 보호 동시 지원
- 원격 인증으로 신뢰할 수 있는 실행 환경 보장
- 기존 VM 인프라와의 호환성
단점:
- SEAM 모드 도입으로 아키텍처 복잡성 증가
- 물리적 메모리 메타데이터 테이블로 메모리 사용량 증가
- 최신 하드웨어(Sapphire Rapids+)에서만 지원
관련 기술
참고 문헌
- Intel Corporation. "Intel Total Memory Encryption (Intel TME)." Intel White Paper, 2017.
- Intel Corporation. "Intel Multi-Key Total Memory Encryption." Intel White Paper, 2018.
- Intel Corporation. "Intel Trust Domain Extensions (Intel TDX)." Intel White Paper, 2021.
- AMD. "AMD Secure Memory Encryption." AMD White Paper, 2016.
- AMD. "Secure Encrypted Virtualization: Key Management." AMD White Paper, 2017.
- AMD. "SEV-SNP: Strengthening VM Isolation with Integrity Protection." AMD White Paper, 2020.
- Kaplan, D. et al. "AMD x86 Memory Encryption Technologies." USENIX Security Symposium, 2016.
- Qureshi, M.K. et al. "Securing the Memory Controller." ISCA, 2014.
- Sabt, M. et al. "Trusted Execution Environment: What It Is, and What It Is Not." IEEE TrustCom, 2015.
- Arnautov, S. et al. "SCONE: Secure Linux Containers with Intel SGX." OSDI, 2016.
- CHEN, S. et al. "Tackling Compiler Optimization Intensity: Towards End-to-End Security of SGX." IEEE S&P, 2016.
- Moosavi, S.H. et al. "DMON: Detecting Data Structure in Cloud Memory." USENIX ATC, 2015.
- Kim, Y. et al. "Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors." ISCA, 2014.
- AMD. "AMD Memory Encryption." White Paper, 2021.
- AMD. "AMD SEV-SNP: Strengthening VM Isolation with Integrity Protection and More." White Paper, 2020.
- Intel. "Intel Trust Domain Extensions (Intel TDX) Overview." 2026.
관련 문서
핵심 정리
메모리 암호화는 현대 프로세서에서 물리적 메모리 접근으로부터 데이터를 보호하는 핵심 기술로, Intel TME/MKTME/TDX와 AMD SME/SEV 계열이 대표적인 구현체이다. Intel TME는 단일 키로 전체 메모리를 투명하게 암호화하고, MKTME는 멀티키를 지원하여 VM 간 격리를 제공한다. AMD SME는 페이지별 선택적 암호화를, TSME는 투명 암호화를 지원하며, SEV 계열은 VM별 고유 키로 하이퍼바이저로부터 VM 데이터를 격리한다. Intel TDX와 AMD SEV-SNP은 메모리 무결성 보호와 원격 인증을 추가하여 기밀 컴퓨팅 환경을 구현한다. 암호화 오버헤드는 대부분 1~5 cycle 수준으로 제한적이지만, 대규모 메모리 접근 시 대역폭 병목과 키 관리 병목이 존재한다. 냉기 공격, DMA 공격, 메모리 스니핑 등에 대한 효과적인 방어를 제공하며, 클라우드 컴퓨팅과 규제 컴플라이언스를 위한 필수 기술로 자리잡았다.