Pengesahan dan asal TDX CVM

1. Ringkasan

Confidential Virtual Machines (CVM) adalah jenis virtual machine Compute Engine yang menggunakan enkripsi memori berbasis hardware dan perlindungan integritas. Hal ini membantu memastikan data dan aplikasi Anda tidak dapat dibaca atau diubah dalam memori saat digunakan. Dalam codelab ini, Anda akan mempelajari cara membuat kutipan pengesahan Intel TDX di CVM, dan memverifikasinya secara lokal untuk tujuan demonstrasi. Selain itu, Anda akan memverifikasi host Google Cloud dan asal instance CVM.

Codelab ini mencakup langkah-langkah berikut:

  • Menyiapkan Confidential VM Intel TDX
  • Mengambil Penawaran Pengesahan TDX
  • Memverifikasi Kutipan Pengesahan dan Angka Sekali Pakai TDX
  • Memverifikasi Integritas Firmware GCE (OVMF)
  • Memverifikasi Provenans Host dan Instance TDX GCE

Yang akan Anda pelajari

  • Cara mengambil Kutipan Pengesahan TDX di CVM menggunakan alat go-tdx-guest
  • Cara memverifikasi keaslian kutipan, kebaruan (nonce), dan integritas firmware GCE (OVMF)
  • Cara memverifikasi Asal Host dan Instance Google Cloud (pencarian PPID registry dan pengikatan instance PZID)

Yang Anda butuhkan

2. Penyiapan dan Persyaratan

Untuk mengaktifkan API yang diperlukan, jalankan perintah berikut di Konsol Google Cloud atau lingkungan pengembangan lokal Anda:

gcloud auth login

gcloud services enable \
    cloudapis.googleapis.com \
    cloudshell.googleapis.com \
    confidentialcomputing.googleapis.com \
    compute.googleapis.com

3. Menyiapkan CVM dan Mengambil Penawaran TDX

Pada langkah ini, Anda akan membuat CVM TDX dan mengambil kutipan pengesahan TDX dari hardware.

  1. Buka Konsol Google Cloud atau lingkungan pengembangan lokal Anda. Buat CVM sebagai berikut:
gcloud config set project <project-id>

gcloud compute instances create tdx-cvm-attestation-codelab \
    --machine-type=c3-standard-4 \
    --zone=us-central1-c \
    --confidential-compute-type=TDX \
    --maintenance-policy=TERMINATE \
    --image-family=ubuntu-2204-lts \
    --image-project=ubuntu-os-cloud \
    --scopes https://www.googleapis.com/auth/cloud-platform

Ganti <project-id> dengan ID unik project Anda.

  1. Hubungkan ke CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
  1. Siapkan lingkungan Go di CVM:
wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
  1. Instal alat go-tdx-guest.

Clone repositori dan bangun alat attest, yang menghasilkan penawaran TDX.

git clone https://github.com/google/go-tdx-guest.git
cd go-tdx-guest/tools/attest
go build
  1. Ambil Kutipan Pengesahan TDX:

Gunakan alat attest untuk membuat penawaran harga. Kita akan meneruskan nonce (64 byte REPORT_DATA) dan menyimpan output ke quote.bin.

nonce=$(head -c 64 /dev/urandom | xxd -p | tr -d '\n' | head -c 128)
sudo ./attest -in $nonce -inform hex -outform bin -out quote.bin

Kutipan TDX kini disimpan di quote.bin.

4. Memverifikasi Kutipan Pengesahan TDX

Setelah membuat penawaran Intel TDX (quote.bin), kita dapat memverifikasinya menggunakan alat check yang disediakan di repositori go-tdx-guest. Alat ini memeriksa kutipan terhadap spesifikasi Intel, memverifikasinya terhadap materi promosi yang didownload dari Layanan Sertifikasi Penyediaan (PCS) Intel, dan memvalidasi batasan kebijakan seperti nonce untuk mencegah serangan replay.

  1. Buka direktori alat check dan bangun:
cd ~/go-tdx-guest/tools/check
go build
  1. Jalankan alat untuk memverifikasi kedua tanda tangan kriptografi dan nonce. Kita akan menggunakan flag -get_collateral=true untuk mendownload sertifikat TEE yang diperlukan dari PCS Intel, flag -check_crl=true untuk memverifikasi pencabutan sertifikat, dan flag -report_data untuk memvalidasi keaktualan nonce:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
    -get_collateral=true -check_crl=true \
    -report_data $nonce

Jika kutipan valid secara kriptografi dan nonce cocok, alat akan mencatat pesan keberhasilan yang mirip dengan contoh berikut dan keluar dengan kode 0:

INFO : TDX Quote verified successfully

5. Memverifikasi Integritas Firmware GCE (OVMF)

Meskipun materi pendukung Intel memverifikasi hardware, materi tersebut tidak memverifikasi bahwa virtual machine menjalankan firmware Google Compute Engine (GCE) yang asli dan tidak dimodifikasi.

Google memublikasikan Pengesahan Peluncuran bertanda tangan (yang berisi Pengukuran Integritas Rujukan (RIM) emas) untuk semua rilis firmware UEFI (OVMF) GCE resmi ke bucket Google Cloud Storage (GCS) publik.

Pada langkah ini, kita akan menggunakan alat gce-tcb-verifier publik Google untuk mengambil pengesahan firmware secara otomatis dari GCS, memverifikasi tanda tangan Google di dalamnya, dan memvalidasi pengukuran firmware CVM (MRTD) kita terhadapnya.

1. Membangun Alat Verifikasi TCB GCE

  1. Clone repositori gce-tcb-verifier publik dari GitHub:
cd ~
git clone https://github.com/google/gce-tcb-verifier.git
  1. Buka direktori alat CLI dan bangun:
cd gce-tcb-verifier/gcetcbendorsement/cli
go build -o gcetcbendorsement
  1. Tambahkan alat yang dibuat ke PATH Anda agar lebih mudah:
export PATH=$PATH:$(pwd)

2. Memvalidasi Kutipan terhadap Pengesahan Firmware GCE

Sekarang, jalankan alat gcetcbendorsement untuk memvalidasi penawaran pengesahan Anda. Karena alat ini berhasil secara diam-diam setelah verifikasi berhasil, kita dapat menggabungkan perintah dengan && echo "Validation Succeeded!" untuk mendapatkan konfirmasi keberhasilan yang jelas dan mudah dipahami:

gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"

Output:

Validation Succeeded!

Apa yang terjadi di balik layar?

  1. Ekstraksi: Alat ini mengurai quote.bin dan mengekstrak pengukuran firmware (MRTD) dari Isi Kutipan TD.
  2. Pengambilan: Membangun URL GCS menggunakan MRTD dan mendownload VMLaunchEndorsement yang sesuai dari bucket publik Google (gs://gce_tcb_integrity).
  3. Verifikasi Tanda Tangan: Mengambil sertifikat CA Root publik Google (https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) dan memverifikasi tanda tangan Google pada pengesahan yang didownload secara kriptografis.
  4. Validasi Pengukuran: Membandingkan MRTD yang ditandatangani oleh hardware TDX dalam penawaran Anda dengan pengukuran referensi standar dalam pengesahan bertanda tangan Google.

Jika semua pemeriksaan berhasil, perintah akan keluar dengan kode 0 secara diam-diam (atau mencetak Validation Succeeded! dengan echo yang dirantai), yang membuktikan bahwa VM Anda menjalankan firmware asli yang didukung Google.

6. Memverifikasi Provenans Host dan Instance TDX GCE

Meskipun pengesahan dan verifikasi firmware mengonfirmasi bahwa VM Anda berjalan di hardware TDX Intel asli dengan firmware UEFI yang disetujui Google, Verifikasi Provenans TDX GCE menghubungkan kutipan pengesahan Anda langsung ke infrastruktur Google Cloud dalam dua cara penting:

  1. Host Provenance: Mengidentifikasi mesin host Google Cloud fisik yang menjalankan VM Anda dengan mengekstrak PPID (Platform Provisioning ID) unik platform dari sertifikat PCK kutipan. Kemudian, layanan ini mengambil catatan pendaftaran platform host dari Google Cloud Storage (confidential-host-registry), yang mencatat zona fisik dan kapan terakhir kali Google Cloud menyediakan sertifikat pengesahan host.
  2. Provenans Instance (Pengikatan PZID): Google Cloud secara kriptografis mengikat identitas VM spesifik Anda (ProjectNumber, Zone, dan InstanceID) ke register MR_OWNER kutipan TDX. Memverifikasi binding ini memastikan bahwa penawaran harga hanya berlaku untuk instance Anda dan mencegah serangan pemutaran ulang atau penggantian penawaran harga di berbagai VM atau project.

Alat CLI gceprovenance (juga terletak di repositori go-tdx-guest) mengotomatiskan verifikasi asal lengkap—memeriksa keaslian kutipan, tantangan keaktualan, catatan pendaftaran host, dan pengikatan PZID instance dalam satu perintah.

  1. Buka direktori gceprovenance dan bangun alat:
cd ~/go-tdx-guest/tools/gceprovenance
go build
  1. Jalankan verifikasi asal-usul lengkap menggunakan perintah verify. Kita akan meneruskan file kutipan (quote.bin) dan tantangan nonce ($nonce) yang kita buat sebelumnya:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
  1. Jika semua pemeriksaan berhasil, alat akan menghasilkan laporan verifikasi yang mirip dengan berikut ini:
GCE TDX provenance verification: OK

Instance: projects/123456789012/zones/us-central1-c/instances/987654321098765

Checks
  Quote verification: OK
  REPORT_DATA challenge: OK
  Host registry document: found
  PZID binding: OK

PPID: 0123456789abcdef0123456789abcdef
Quote: tdx_quote.bin
Host registry: host_registry.json

Apa yang terjadi di balik layar?

  • Kutipan & Tantangan: Alat ini memverifikasi rantai tanda tangan kutipan terhadap root certificate Intel dan mengonfirmasi bahwa REPORT_DATA kutipan cocok dengan tantangan $nonce Anda.
  • Asal Host (PPID): Asal Host mengekstrak PPID hex 32 karakter dari sertifikat PCK leaf dan mendownload dokumen JSON pendaftaran host dari GCS (https://storage.googleapis.com/confidential-host-registry/).
  • Asal Instance (PZID): Kueri ini mengkueri Server Metadata GCE lokal untuk mendapatkan project ID numerik, zona, dan ID instance Anda, membuat payload JSON PZID kanonis ({"instanceId":...,"numericalProjectId":...,"zone":...}), menghitung ringkasan SHA-384-nya, dan memverifikasi bahwa ringkasan tersebut cocok dengan MR_OWNER dalam kutipan.
  1. Periksa dokumen Host Registry yang diambil:

Secara default, perintah verify menyimpan dokumen JSON pendaftaran host yang diambil ke host_registry.json. Anda dapat memeriksanya untuk melihat metadata platform host:

cat host_registry.json

Contoh output:

{
  "zone": "us-central1",
  "timestamp": "2026-02-17T11:25:12Z"
}

Metadata ini menjelaskan properti mesin host:

  • zone: Region/zona Google Cloud fisik tempat mesin host berada.
  • timestamp: Tanggal dan waktu UTC saat sertifikat pengesahan hardware mesin host ini terakhir kali disediakan dan diverifikasi oleh Google Cloud.

7. Pembersihan

Jalankan perintah berikut di konsol cloud atau lingkungan pengembangan lokal Anda:

# Delete the CVM instance
gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c

8. Langkah berikutnya

Pelajari lebih lanjut Confidential VM dan Compute Engine.