使用 AMD SEV-SNP 進行認證 - Amazon Elastic Compute Cloud

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

使用 AMD SEV-SNP 進行認證

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

若要使用 AMD SEV-SNP 執行認證,請完成下列步驟。

步驟 1:取得認證報告

在此步驟中,您要安裝並建置公用snpguest程式,然後使用它來要求 AMD SEV-SNP 證明報告和憑證。

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

    $ C:\> git clone https://github.com/virtee/snpguest.git $ C:\> cd snpguest $ C:\> cargo build -r $ C:\> cd target/release
  2. 產生驗證報告的請求。公用程式會向主機要求驗證報告,並將其寫入包含所提供請求資料的二進位檔案。

    下面的例子創建一個隨機請求字符串,並使用它作為請求文件(request-file.txt)。當指令傳回驗證報告時,它會儲存在您指定的檔案路徑 () report.bin 中。在此情況下,公用程式會將報告儲存在目前目錄中。

    $ C:\> ./snpguest report report.bin request-file.txt --random
  3. 從主機記憶體要求憑證,並將其儲存為 PEM 檔案。下列範例會將檔案儲存在與snpguest公用程式相同的目錄中。如果指定目錄中已存在憑證,則會覆寫這些憑證。

    $ C:\> ./snpguest certificates PEM ./

步驟 2:驗證報告簽名

驗證報告使用稱為版本化的載入背書金鑰 (VLEK) 簽署的憑證,此憑證由 AMD 發行。 AWS在此步驟中,您可以驗證 VLEK 憑證是由 AMD 核發,且驗證報告是由該 VLEK 憑證簽署。

  1. 從 AMD 官方網站下載信任證書的 VLEK 根目錄到當前目錄。

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

    $ C:\> sudo openssl verify --CAfile ./cert_chain.pem vlek.pem

    預期的輸出結果:

    certs/vcek.pem: OK
  3. 使用 snpguest 公用程式來驗證認證報告由 VLEK 憑證簽署。

    $ C:\> ./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!