AMD SEV-SNP による アマゾン EC2 インスタンスの認証
認証はインスタンスがその状態と身元を証明できるようにするプロセスです。インスタンスで AMD SEV-SNP を有効にすると、基盤となるプロセッサに AMD SEV-SNP 認証レポートをリクエストできます。AMD SEV-SNP 認証レポートには初期ゲストメモリーの内容と vCPU の初期状態の起動測定と呼ばれる暗号化ハッシュが含まれています。認証レポートには VLEK 署名が付いており、AMD のルートオブトラストに紐づいています。認証レポートに含まれる起動測定値を使用して、インスタンスが正規の AMD 環境で実行されていることを確認し、インスタンスの起動に使用された初期ブートコードを検証できます。
前提条件
AMD SEV-SNP が有効になっているインスタンスを起動します。詳細については「アマゾン EC2 インスタンスの AMD SEV-SNP の有効化」を参照してください。
ステップ 1: 認証レポートを取得する
このステップではsnpguest
ユーティリティをインストールして構築し、それを使用して AMD SEV-SNP 認証レポートと証明書を要求します。
-
インスタンスに接続します。
-
snpguest repository
から snpguest
ユーティリティを構築するには次のコマンドを実行します。$
git clone https://github.com/virtee/snpguest.git$
cd snpguest$
cargo build -r$
cd target/release -
認証レポートのリクエストを生成します。ユーティリティはホストから認証レポートをリクエストし、提供されたリクエストデータを使用してバイナリファイルに書き込みます。
次の例ではランダムなリクエスト文字列を作成し、それをリクエストファイル (
request-file.txt
) として使用します。コマンドによって認証レポートが返されると、指定したファイルパス (report.bin
) に保存されます。この場合、ユーティリティはレポートを現在のディレクトリに保存します。$
./snpguest reportreport.bin
request-file.txt
--random -
ホストメモリから証明書をリクエストし、PEM ファイルとして保存します。次の例では
snpguest
ユーティリティと同じディレクトリにファイルを保存します。指定したディレクトリに証明書が既に存在する場合、その証明書は上書きされます。$
./snpguest certificates PEM./
ステップ 2: 認証レポートの署名を検証する
認証レポートにはAMD が AWS のために発行するバージョン対応認証キー (VLEK) と呼ばれる証明書が署名されています。このステップではVLEK 証明書が AMD によって発行されていること、および認証レポートが VLEK 証明書によって署名されていることを確認します。
-
VLEK の Root of Trust 証明書を、AMD の公式ウェブサイトから現在のディレクトリにダウンロードします。
$
sudo curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vlek/v1/Milan/cert_chain -o ./cert_chain.pem -
openssl
を使用して、VLEK 証明書が AMD の信頼証明書ルートによって署名されていることを確認します。$
sudo openssl verify --CAfile ./cert_chain.pem vlek.pem正常な出力:
certs/vcek.pem: OK
-
snpguest
ユーティリティを使用して、認証レポートが VLEK 証明書によって署名されていることを確認します。$
./snpguest verify attestation ./ report.bin正常な出力
Reported TCB Boot Loader from certificate matches the attestation report. Reported TCB TEE from certificate matches the attestation report. Reported TCB SNP from certificate matches the attestation report. Reported TCB Microcode from certificate matches the attestation report. VEK signed the Attestation Report!