Memverifikasi bahwa instance VM Intel TDX berjalan di Google Cloud

Untuk menentukan bahwa instance Confidential VM Intel TDX berjalan Google Cloud, Anda harus menetapkan provenance. Menetapkan asal-usul melibatkan pemeriksaan berikut:

  • Verifikasi kutipan dan pengikatan tantangan: Verifikasi keaslian kutipan Intel TDX menggunakan sertifikat root Intel yang disematkan, dan secara opsional verifikasi kesegaran terhadap tantangan yang diharapkan di kolom REPORT_DATA kutipan.

  • Verifikasi asal-usul host: Ekstrak ID penyediaan platform (PPID) dari sertifikat PCK yang disematkan dalam kutipan. Gunakan PPID untuk mengambil dokumen JSON registri host dari bucket Cloud Storage guna memverifikasi asal-usul.

  • Verifikasi asal-usul instance: Gunakan nomor project, zona, dan ID instance (PZID) instance Confidential VM untuk menghitung ringkasan SHA-384, lalu verifikasi bahwa ringkasan cocok dengan nilai kolom MR_OWNER dalam kutipan Intel TDX.

Memverifikasi asal-usul dari jarak jauh

Sebaiknya gunakan alat gceprovenance untuk menentukan asal-usul mesin Intel TDX. Alat ini mengotomatiskan ekstraksi nilai yang diperlukan dan mengambil dokumen asal-usul.

Untuk memverifikasi asal-usul dari jarak jauh menggunakan gceprovenance, selesaikan petunjuk berikut:

  1. Clone repositori GitHub go-tdx-guest ke verifier jarak jauh Anda:

    git clone https://github.com/google/go-tdx-guest.git
    
  2. Bergantung pada sistem operasi tamu Anda, Anda mungkin perlu menginstal beberapa dependensi Go untuk membuat alat di go-tdx-guest. Cara melakukannya akan berubah bergantung pada sistem operasi Anda. Misalnya, perintah berikut menginstal dependensi yang diperlukan di Ubuntu:

    sudo apt update
    sudo apt install golang-go build-essential
    
  3. Buat alat gceprovenance:

    go build -C go-tdx-guest/tools/gceprovenance .
    
  4. Buat tantangan 64 byte yang harus diikat oleh instance Confidential VM Intel TDX ke kutipannya:

    head -c 64 /dev/urandom > challenge.bin
    
  5. Kirim file tantangan ke instance Confidential VM Intel TDX yang ingin Anda verifikasi.

  6. Di instance Confidential VM Intel TDX, teruskan file tantangan sebagai input (inblob) ke Linux ConfigFS di /sys/kernel/config/tsm/report/:

    sudo mkdir -p /sys/kernel/config/tsm/report/report0
    sudo sh -c 'cat challenge.bin > /sys/kernel/config/tsm/report/report0/inblob'
    

    Tantangan tersebut kemudian ditulis ke kolom REPORT_DATA kutipan oleh sistem.

  7. Ambil byte kutipan mentah dari file outblob yang dihasilkan, dan hapus direktori report0:

    sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin
    sudo rmdir /sys/kernel/config/tsm/report/report0
    
  8. Kueri server metadata lokal untuk ID instance, nomor project, dan zona instance Confidential VM:

    PROJECT_NUMBER=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google")
    INSTANCE_ID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google")
    ZONE_PATH=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google")
    ZONE=$(basename "$ZONE_PATH")
    
  9. Kirim biner kutipan (quote.bin), nomor project, ID instance, dan zona ke verifier jarak jauh.

  10. Di verifier jarak jauh, konversi tantangan Anda menjadi string heksadesimal 128 karakter, lalu teruskan ke gceprovenance. Alat ini kemudian memverifikasi tanda tangan kutipan dan pengikatan asal-usul:

    CHALLENGE_HEX=$(hexdump -v -e '/1 "%02x"' challenge.bin)
    ./go-tdx-guest/tools/gceprovenance/gceprovenance verify \
        -quote PATH_TO_QUOTE \
        -instance projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID \
        -challenge $CHALLENGE_HEX
    

    Berikan hal berikut:

    • PATH_TO_QUOTE: Jalur ke file kutipan yang diberikan.

    • PROJECT_NUMBER: Nomor project yang diberikan.

    • ZONE: Zona yang diberikan.

    • INSTANCE_ID: ID instance Confidential VM yang diberikan.

    Respons yang berhasil akan terlihat mirip dengan berikut ini:

    GCE TDX provenance verification: OK
    
    Instance
      Zone: ZONE
      Project: PROJECT_NUMBER
      Instance ID: INSTANCE_ID
    
    Checks
      Quote verification: OK
      REPORT_DATA challenge: OK
      Host registry document: found
      PZID binding: OK
    
    PPID: PPID
    Quote: tdx_quote.bin
    Host registry: host_registry.json
    

Untuk perintah gceprovenance lainnya, lihat repositori GitHub.