使用 AMD SEV-SNP 來認證 Amazon EC2 執行個體 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AMD SEV-SNP 來認證 Amazon EC2 執行個體

認證是一種程序,可讓您的執行個體證明其狀態和身分。為執行個體啟用 AMD SEV-SNP 之後,您可以從基礎處理器請求 AMD SEV-SNP 認證報告。AMD SEV-SNP 認證報告包含初始訪客記憶體內容的密碼編譯雜湊 (稱為啟動測量) 和初始 vCPU 狀態。認證報告採用 VLEK 簽章進行簽署,可以鏈接回 AMD 信任根源。您可以使用認證報告中包含的啟動測量來驗證執行個體是否在正版 AMD 環境中執行,並驗證用於啟動執行個體的初始啟動程式碼。

先決條件

啟動為 AMD SEV-SNP 啟用的執行個體。如需詳細資訊,請參閱為 Amazon EC2 執行個體啟用 AMD SEV-SNP

步驟 1:取得認證報告

在此步驟中,您會安裝並建置 snpguest 公用程式,然後用其來請求 AMD SEV-SNP 認證報告和憑證。

  1. 連線到您的執行個體。

  2. 執行下列命令以從 snpguest repository 建置 snpguest 公用程式。

    $ git clone https://github.com/virtee/snpguest.git $ cd snpguest $ cargo build -r $ cd target/release
  3. 產生要求認證報告的請求。公用程式會從主機請求證明報告,並使用提供之請求資料將其寫入二進位檔案。

    以下範例會建立隨機請求字串,並使用其作請求檔案 (request-file.txt)。當命令傳回證明報告時,其會存放在您指定的檔案路徑中 (report.bin)。在此情況下,公用程式會將報告存放在目前目錄中。

    $ ./snpguest report report.bin request-file.txt --random
  4. 從主機記憶體請求憑證,並將其儲存為 PEM 檔案。以下範例會將檔案存放在與 snpguest 公用程式相同的目錄中。若憑證已存在於指定目錄中,便會覆寫這些憑證。

    $ ./snpguest certificates PEM ./

步驟 2:驗證證明報告簽章

證明報告會使用憑證簽署,稱為版本載入背書金鑰 (VLEK),由 AMD 為其發行 AWS。在此步驟中,您可以驗證 VLEK 憑證是否由 AMD 簽發,且認證報告會透過該 VLEK 憑證進行簽署。

  1. 從 AMD 官方網站將 VLEK 信任根憑證下載至目前目錄。

    $ sudo curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vlek/v1/Milan/cert_chain -o ./cert_chain.pem
  2. 使用 openssl 來驗證 VLEK 憑證是否由 AMD 信任根憑證簽署。

    $ sudo openssl verify --CAfile ./cert_chain.pem vlek.pem

    預期的輸出結果:

    certs/vcek.pem: OK
  3. 使用 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!