Trust domain extensions

Ahn9807 (토론 | 기여)님의 2023년 4월 9일 (일) 04:41 판 (새 문서: 분류: CPU 분류: 하드웨어 기반 보안 분류: 시스템 보안 분류: 가상화 ==개요== Intel Trust Domain Extensions (TDX)는 SGX에서 더욱 나아가, VMX기능을 확장하여 Untrusted hypervisor환경에서도 VM을 안전하게 하드웨어의 도움으로 VMM그리고 다른 Domain에서 분리하여 안전하게 돌릴 수 있도록 하는 기술이다. Intel trusted domain extensions (TD)은 Intel TDX에서 사용하는 Prote...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

Intel Trust Domain Extensions (TDX)는 SGX에서 더욱 나아가, VMX기능을 확장하여 Untrusted hypervisor환경에서도 VM을 안전하게 하드웨어의 도움으로 VMM그리고 다른 Domain에서 분리하여 안전하게 돌릴 수 있도록 하는 기술이다. Intel trusted domain extensions (TD)은 Intel TDX에서 사용하는 Protection domain을 말한다. Intel TDX는 TD에 메모리 기말성(Confidentiality), 메모리 무결성(Integrity), 메모리 변환 무결성, CPU state 기밀성, CPU state 무결성, 안전한 인터럽트의 전달, 그리고 원격 증명(Attestation)을 제공한다.

인텔 TDX는 대다수의 Software, Hardware 기반 공격을 막을 수 있지만, 플랫폼의 메모리를 직접 캡쳐하는 등의 물리적인 공격기법은 막을 순 없다.

Intel TDX Design & Implementation

TDX는 VMX, TME-MK 그리고 CPU attested software 모듈로 구성된다. 메모리와 CPU의 상태는 기밀성과, 무결성을 보장하며 사용자에게 안전하게 전달된다. 또한 외부 검증 (Remote attestation)을 통해서, 사용자가 현재 진짜 자신과 매핑된 TDX와 통신하면서 안전하게 자신의 데이터를 처리하는지 확신할 수 있도록 하는 서비스를 제공하였다.

TDX를 위해서 인텔은 Secure-Arbitration Mode (SEAM)모드라는 새로운 CPU모드를 만들었다. Intel TDX에서 사용하는 모듈의 메모리의 영역은 SEAM-range register라는 특수한 레지스터에 표시된 메모리의 범위안에서만 사용가능하다. SEAM모드에 대한 접근은 그 어떤 방식으로도 제한되며, SEAM에서 다른 보호된 영역에 접근하는 것또한 제한된다.

SEAM Module flow.png

[1]

인텔 TDX모듈이 사용하는 메모리 범위는 AES를 통해서 암호화 되며, Rowhammer공격과 같은 하드웨어 기반 공격으로부터 보호하기 위해서 SHA방식의 해쉬함수를 통해서 무결성을 체크한다.

TDX모듈을 TDX에 설치하기 위해서 SEAM Loader (SEAMLDR)를 통해서 디지털 서명방식을 사용해 인텔이 제공하는 TDX모듈을 SEAM-range register위에 안전하게 설치할 수 있도록 하였다. 이때 SEAMREPORT라는 명령어를 통해서 디지털 서명에서 사용할 message authentication control 증명서를 발급받을 수 있도록 하였다. 추가적으로 클라우드 서바이스 제공자는 로드된 TDX 모듈이 사용할때 추가적으로 적용할 보안 패치를 Intel TDX가 허용하는 범위에서 더할 수 있다.

SEAMCALL명령어가 VMM명령어로 추가되어서 CPU가 SEAM-MVX-root 모드에서 작동하여 모듈을 호출할 수 있도록 하였다. TDX 모듈은 VMM이 TD에 Schedule execution에 대한 내용을 편집할 수 있도록 하였다. 즉 Intel TDX Module은 VMM과 TD사이에서 TD들이 사용할 보안, 작동 환경과 같은 것들을 VMM과 분리하여 설정할 수 있게 하는 TCB가 된다. VMM은 TD의 생성과정에서 TD의 코드, 데이터 그리고 TD의 VMCS파트와 같은 메타데이터를 담을 메모리의 영역을 설정한다. VMM은 Intel VMX 명령어(VMRESUME, VMLAUNCH...)를 통해서 TD모드를 관리하게 된다. Intel TDX모듈은 VMM이 Control register, model-specific register, debug registerd와 같은 VM의 Secure한 CPU State에 대한 값을 가져올 수 없도록 한다. 또한 VMM은 CPUID, MSR과 같은 값들을 변조함으로서, TD가 잘못된 작동을 하도록 할 수도 없다. 그러나 하드웨어의 기능을 VMM가 제한해서 TD에 제공하는 것은 허용된다. 그리고 VMM은 언제든지 TD의 진행을 종료시킬 수 있다. 이는 TD가 호스트 시스템에 Denial of service공격을 수행하는 것을 막는다.

IN/OUT, HLT, RD/WRMSR와 같은 Sensitive한 명령어들은 Virtualization Execption (#VE)를 TDOS에 일으키고, TDOS에 의해서 안전하게 emulated된다.

TDCALL명령어는 TD가 Module에 특정 기능을 요구할 수 있도록 한다.

TD exit이 난 상황에서 TDMODULE은 TD가 사용하던 CPU state들을 안전한 TD메모리 영역으로 잘라내고, VMM에 컨트롤을 넘김으로서 (SEAMRET 명령어를 통해서), VMM이 CPU state에 접근하는 것을 막고, 나중에 다시 TD로 돌아가는 환경에서 안전하게 저장했던 메모리를 가져와 다시 CPU state를 복구하는 역활을 할 수 있도록 하였다.