기밀 VM 게스트 증명 디자인 세부 정보
이 문서에서는 Azure 기밀 VM 게스트 증명 디자인에 대한 자세한 개요를 제공합니다.
vTPM 기반 디자인
Azure 기밀 VM(가상 머신)은 게스트 증명을 위해 vTPM 기반 디자인을 활용합니다. 이 방법은 게스트 운영 체제(Linux 및 Windows) 및 하드웨어 플랫폼(AMD SEV-SNP 및 Intel TDX)에서 일관된 인터페이스를 보장합니다.
증명 흐름
게스트 증명 프로세스에는 증거 생성 및 증거 확인이라는 두 가지 주요 단계가 포함됩니다. 사용자는 Azure 기밀 VM에 vTPM 증거를 생성한 다음, 검증을 위해 신뢰할 수 있는 당사자(예: MAA(Microsoft Azure Attestation))에게 증거를 보내도록 요청합니다.
Azure Key Vault Premium 또는 Azure Key Vault 관리형 HSM과 같은 신뢰 당사자는 확인 결과에 따라 Azure 기밀 VM의 신뢰성을 평가할 수 있습니다. VM이 신뢰할 수 있는 것으로 간주되는 경우 신뢰 당사자는 보안 키 릴리스와 같은 메커니즘을 사용하여 VM에 비밀을 안전하게 프로비전할 수 있습니다.
vTPM 증명 정보
vTPM 증거는 섹션의 나머지 부분에 설명된 대로 견적을 확인하는 데 사용되는 TPM 견적 및 보증으로 구성됩니다.
TPM 견적
- TPM 2.0 사양에 정의된 명령의
TPM2_Quote
출력인 표준 TPM 따옴표입니다. - 게스트 OS의 측정값(예: 부팅 프로세스)을 캡처하는 PCR(플랫폼 구성 레지스터) 목록을 포함합니다.
- PCR 사용은 Linux 및 Windows 표준(각각 사용 정의 포함)을 준수합니다.
- vTPM AK(증명 프라이빗 키)로 서명됨; 즉, AK는 명령에서 서명 키
TPM2_Quote
로 지정됩니다.
- TPM 2.0 사양에 정의된 명령의
TPM 이벤트 로그
- TPM 견적에서 PCR 값을 재현하는 데 사용할 수 있는 시스템에 저장된 이벤트 로그입니다.
- 자세한 내용은 TPM 사양을 참조하세요.
vTPM AK 인증서
- Azure에서 발급(Azure CA에서 서명).
- 하드웨어에서 지원됩니다(vTPM 증명 공개 키, AK 퍼블릭은 하드웨어 보고서에 캡처됨).
하드웨어 보고서
- 하드웨어에서 생성 및 서명합니다.
- 다음 정보 캡처
- AK public
- vTPM이 실행되는 Microsoft에서 빌드한 게스트 파라바이저의 측정값
- Azure의 기밀 VM에 대해 자세히 알아보세요).
- 하드웨어 정보
- 자세한 내용은 AMD SEV-SNP 및 Intel TDX 사양을 참조하세요.
하드웨어 공급업체 인증서 체인
- 하드웨어 공급업체(AMD 및 Intel)가 하드웨어 보고서의 서명을 인증하기 위해 발급합니다.
- AMD SEV-SNP: 버전이 지정된 VCEK(칩 인증 키) 인증서
- Intel TDX: PCK(인증서 키) 인증서 프로비전
- 하드웨어 공급업체(AMD 및 Intel)가 하드웨어 보고서의 서명을 인증하기 위해 발급합니다.
vTPM 증명 정보에서 다루는 항목은 무엇인가요?
구성 요소 | 적용 대상 |
---|---|
게스트 OS | TPM 견적(PCR) |
UEFI | 하드웨어 보고서 |
게스트 파라바이저(vTPM 포함) | 하드웨어 보고서 |
vTPM 증거는 어떻게 확인되는가?
검증 도구(MAA(Microsoft Azure Attestation))는 다음 그림과 같이 신뢰할 수 있는 체인을 기반으로 vTPM 증거를 확인했습니다. 성공적인 확인은 증명된 Azure 기밀 VM이 신뢰할 수 있고 하드웨어에 의해 보호됨을 의미합니다.
개발자 참조
이 섹션에서는 Azure 기밀 VM에서 사용하는 vTPM 기반 게스트 증명 디자인에 대한 참조를 제공합니다.
Azure-Reserved TPM NV 인덱스
속성 | NV 인덱스 | 크기(바이트) | 설명 |
---|---|---|---|
증명 보고서 | 0x01400001 | 2600 | 하드웨어 보고서가 포함된 Azure 정의 형식입니다. |
보고서 데이터 | 0x01400002 | 64 | 런타임 데이터에 포함할 보고서 데이터입니다. |
vTPM AK 인증서 | 0x01C101D0 | 4096 | vTPM AK에서 서명한 TPM 견적을 확인하는 데 사용되는 인증서입니다. |
vTPM AK | 0x81000003 | 키 유형에 따라 | TPM 견적에 서명하는 데 사용되는 키입니다. |
샘플 TPM 명령에 대한 Azure 기밀 VM 증명 지침 및 FAQ를 참조하세요.
증명 보고서 형식
증명 보고서
속성 | 오프셋(바이트) | 크기(바이트) | 설명 |
---|---|---|---|
헤더 | 0 | 32 | 보고서 헤더(하드웨어 보고서에서 보증되지 않음)입니다. |
보고서 페이로드 | 32 | 1,184 | 하드웨어 보고서입니다. |
런타임 데이터 | 1,612 | 가변 길이 | 런타임 데이터에는 하드웨어 보고서에서 보증하는 클레임이 포함됩니다. |
헤더
속성 | 오프셋(바이트) | 크기(바이트) | 설명 |
---|---|---|---|
서명 | 0 | 4 | 포함된 서명입니다. 예상: 0x414c4348(HCLA ). |
버전 | 4 | 4 | 형식 버전입니다. 예상: 2. |
보고서 크기 | 8 | 4 | 보고서 페이로드의 크기입니다. 예상: 1184(AMD SEV-SNP), 1024(Intel TDX). |
요청 유형 | 12 | 4 | 증명 보고서의 Azure 관련 사용량입니다. 예상: 2. |
상태 | 16 | 4 | 예약되었습니다. |
예약됨 | 20 | 12 | 예약되었습니다. |
보고서 페이로드
하드웨어(AMD SEV-SNP 또는 Intel TDX)에서 생성된 보고서입니다. 보고서의 report_data 필드는 런타임 데이터에서 런타임 클레임의 해시를 캡처합니다. 자세한 내용은 하드웨어 공급업체의 사양을 참조하세요.
런타임 데이터
속성 | 오프셋(바이트) | 크기(바이트) | 설명 | 측정됨 |
---|---|---|---|---|
데이터 크기 | 0 | 4 | 런타임 클레임의 크기입니다. | 아니요 |
버전 | 4 | 4 | 형식 버전입니다. 예상: 1. | 아니요 |
보고서 유형 | 8 | 4 | 하드웨어 보고서의 유형입니다. 예상: 2(AMD SEV-SNP), 4(Intel TDX) | 아니요 |
해시 형식 | 12 | 4 | 런타임 데이터를 해시하는 데 사용되는 알고리즘입니다. 해시 값은 하드웨어 보고서의 report_data 필드에 캡처됩니다. 예상: 1(SHA-256), 2(SHA-384), 3(SHA-512) | 아니요 |
런타임 클레임 | 16 | 가변 길이 | JSON 형식의 런타임 클레임입니다. | 예 |
런타임 클레임
JSON 필드 | 설명 |
---|---|
키 | JWK 형식의 키 배열입니다. 예상 kid : HCLAkPub (vTPM AK public), HCLEkPub (vTPM EK public). |
vm_configuration | 선택적 Azure 기밀 VM 구성. |
user_data | NV 인덱스에서 읽 0x01400002 은 64바이트 데이터(HEX 문자열)(보고서 데이터)입니다. |
예시
{
"keys": [
{
"kid": "HCLAkPub",
"key_ops": [
"sign"
],
"kty": "RSA",
"e": "AQAB",
"n": "rAipdAAArL6V1FNnSQ-39i3VH-a8PuOeVRo2VpecspDWbJNmgHJ4-VGGFEx4sdVbvDC6fyo_VM2ebE-_AKxTmrNVEr-KIZveJMD_vlOqvMvjtllsWwA-vsRfpqiduvQdFcdCvyHzfxBRHYqdmxgKq-3QI-XBbZv9cCMMMPHkNp4mWkyahjQxXVJVwB1egCrJGKSk1bRXlP1dXNG_Pe4-W5O-YEGRKdLIA31G0Yh8VBnrEUCAMjDAuh6fncMkwdMVskI5Ta-kJgGw4GepIj6_smIyYhxg3o8Ik4qPntxj1TrV0bVW2IiNMLHoM67y1ErOir7bv00xqgqouFodI-vM3Q"
},
{
"kid": "HCLEkPub",
"key_ops": [
"encrypt"
],
"kty": "RSA",
"e": "AQAB",
"n": "m3AfPAAA-_HY3M_-x4bQbr0p2nkvAgig1mENl-BColvqq0aKKAqIHr-DFQ9-iB2z7EzhYVon5R7Nc1jzqBsmxahE8uaQfD-sp8bWOtbvy4V9nAqLY4HOwfxlJ99cEOOpxNXfCNesYOk8T0ntG05w7oBRjFw0LMVKS-1S3j5-oMnNnpJoo7rX5hNM8JVpxEuVa1IOf1NmvRey6wjwSHbjUay_IMUTAq1wzpx8wo_hjeY4JMd0Ka1ewLjJDaTQSpSxZI36ujyR6EGho0FBXSKN-9W9DAXkO8-RKuLUrmTXA6ETJRYApMuYGiUDCk1Y5zQTQsyWS6pLjnf2mg2tEntZZw"
}
],
"vm-configuration": {
"root-cert-thumbprint": "",
"console-enabled": true,
"secure-boot": true,
"tpm-enabled": true,
"tpm-persisted": true,
"vmUniqueId": "68dc0ac0-2ed9-4b2a-a03e-4953e416d939"
},
"user-data": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}