Poświadczenie i pochodzenie TDX CVM

1. Przegląd

Poufne maszyny wirtualne (CVM) to maszyny wirtualne Compute Engine, które korzystają z szyfrowania pamięci i ochrony integralności opartej na sprzęcie. Dzięki temu dane i aplikacje nie mogą być odczytywane ani modyfikowane w pamięci podczas używania. W tym ćwiczeniu z programowania dowiesz się, jak wygenerować wycenę atestu Intel TDX na CVM i zweryfikować ją lokalnie na potrzeby demonstracji. Dodatkowo sprawdzisz pochodzenie hosta i instancji CVM w Google Cloud.

To ćwiczenie z programowania obejmuje te kroki:

  • Konfigurowanie poufnej maszyny wirtualnej Intel TDX
  • Pobieranie wyceny atestu TDX
  • Weryfikowanie wyceny atestu TDX i nonce
  • Weryfikowanie integralności oprogramowania sprzętowego GCE (OVMF)
  • Weryfikowanie pochodzenia hosta i instancji GCE TDX

Czego się nauczysz

  • Jak pobrać wycenę atestu TDX na CVM za pomocą narzędzi go-tdx-guest
  • Jak sprawdzić autentyczność, świeżość (nonce) i integralność oprogramowania sprzętowego GCE (OVMF)
  • Jak sprawdzić pochodzenie hosta i instancji Google Cloud (wyszukiwanie w rejestrze PPID i powiązanie instancji PZID)

Czego potrzebujesz

2. Konfiguracja i wymagania

Aby włączyć wymagane interfejsy API, uruchom to polecenie w konsoli Google Cloud lub lokalnym środowisku programistycznym:

gcloud auth login

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

3. Konfigurowanie CVM i pobieranie wyceny TDX

W tym kroku utworzysz TDX CVM i pobierzesz wycenę atestu TDX ze sprzętu.

  1. Otwórz konsolę Google Cloud lub lokalne środowisko programistyczne. Utwórz CVM w ten sposób:
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

Zastąp <project-id> unikalnym identyfikatorem projektu.

  1. Połącz się z CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
  1. Skonfiguruj środowisko Go na 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. Zainstaluj narzędzia go-tdx-guest.

Sklonuj repozytorium i utwórz narzędzie attest, które generuje wycenę TDX.

git clone https://github.com/google/go-tdx-guest.git
cd go-tdx-guest/tools/attest
go build
  1. Pobierz wycenę atestu TDX:

Użyj narzędzia attest, aby wygenerować wycenę. Przekażemy nonce (64 bajty REPORT_DATA) i zapiszemy dane wyjściowe w pliku 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

Wycena TDX jest teraz zapisana w pliku quote.bin.

4. Weryfikowanie wyceny atestu TDX

Po wygenerowaniu wyceny Intel TDX (quote.bin) możemy ją zweryfikować za pomocą narzędzia check dostępnego w repozytorium go-tdx-guest. To narzędzie sprawdza wycenę pod kątem specyfikacji firmy Intel, weryfikuje ją na podstawie zabezpieczeń pobranych z usługi Provisioning Certification Service (PCS) firmy Intel oraz sprawdza ograniczenia zasad, takie jak nonce, aby zapobiec atakom typu replay.

  1. Otwórz katalog narzędzia check i utwórz je:
cd ~/go-tdx-guest/tools/check
go build
  1. Uruchom narzędzie, aby zweryfikować zarówno podpisy kryptograficzne, jak i nonce. Użyjemy flagi -get_collateral=true, aby pobrać niezbędne certyfikaty TEE z usługi PCS firmy Intel, flagi -check_crl=true, aby sprawdzić odwołania certyfikatów, oraz flagi -report_data, aby sprawdzić świeżość nonce:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
    -get_collateral=true -check_crl=true \
    -report_data $nonce

Jeśli wycena jest kryptograficznie prawidłowa, a nonce się zgadza, narzędzie zarejestruje komunikat o powodzeniu podobny do tego przykładu i zakończy działanie z kodem 0:

INFO : TDX Quote verified successfully

5. Weryfikowanie integralności oprogramowania sprzętowego GCE (OVMF)

Zabezpieczenia firmy Intel weryfikują sprzęt, ale nie sprawdzają, czy maszyna wirtualna korzysta z oryginalnego, niezmodyfikowanego oprogramowania sprzętowego Google Compute Engine (GCE).

Google publikuje podpisane Launch Endorsements (zawierające złote pomiary integralności odniesienia, czyli RIM) dla wszystkich oficjalnych wersji oprogramowania sprzętowego GCE UEFI (OVMF) w publicznym zasobniku Google Cloud Storage (GCS).

W tym kroku użyjemy publicznego narzędzia Google gce-tcb-verifier, aby automatycznie pobrać potwierdzenie oprogramowania sprzętowego z GCS, zweryfikować podpis Google i sprawdzić pomiar oprogramowania sprzętowego CVM (MRTD) pod kątem tego potwierdzenia.

1. Tworzenie narzędzia GCE TCB Verifier

  1. Sklonuj publiczne repozytorium gce-tcb-verifier z GitHub:
cd ~
git clone https://github.com/google/gce-tcb-verifier.git
  1. Otwórz katalog narzędzia wiersza poleceń i utwórz je:
cd gce-tcb-verifier/gcetcbendorsement/cli
go build -o gcetcbendorsement
  1. Dla wygody dodaj utworzone narzędzie do zmiennej PATH:
export PATH=$PATH:$(pwd)

2. Sprawdzanie wyceny pod kątem potwierdzenia oprogramowania sprzętowego GCE

Teraz uruchom narzędzie gcetcbendorsement, aby sprawdzić wycenę atestu. Ponieważ narzędzie w przypadku pomyślnej weryfikacji nie wyświetla żadnych komunikatów, możemy połączyć polecenie z poleceniem && echo "Validation Succeeded!", aby uzyskać przyjazne i wyraźne potwierdzenie powodzenia:

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

Dane wyjściowe:

Validation Succeeded!

Co się dzieje w tle?

  1. Wyodrębnianie: narzędzie analizuje plik quote.bin i wyodrębnia z treści wyceny TD pomiar oprogramowania sprzętowego (MRTD).
  2. Pobieranie: narzędzie tworzy adres URL GCS na podstawie MRTD i pobiera odpowiedni plik VMLaunchEndorsement z publicznego zasobnika Google (gs://gce_tcb_integrity).
  3. Weryfikacja podpisu: narzędzie pobiera publiczny certyfikat głównego urzędu certyfikacji Google (https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) i kryptograficznie weryfikuje podpis Google na pobranym potwierdzeniu.
  4. Sprawdzanie pomiaru: narzędzie porównuje MRTD podpisany przez sprzęt TDX w wycenie ze złotymi pomiarami odniesienia w podpisanym potwierdzeniu Google.

Jeśli wszystkie etapy weryfikacji zakończą się powodzeniem, polecenie zakończy działanie z kodem 0 (lub wyświetli komunikat Validation Succeeded! za pomocą połączonego polecenia echo), co oznacza, że maszyna wirtualna korzysta z oryginalnego oprogramowania sprzętowego zatwierdzonego przez Google.

6. Weryfikowanie pochodzenia hosta i instancji GCE TDX

Atest i weryfikacja oprogramowania sprzętowego potwierdzają, że maszyna wirtualna działa na oryginalnym sprzęcie Intel TDX z oprogramowaniem sprzętowym UEFI zatwierdzonym przez Google, ale weryfikacja pochodzenia GCE TDX łączy wycenę atestu bezpośrednio z infrastrukturą Google Cloud na 2 ważne sposoby:

  1. Pochodzenie hosta: identyfikuje fizyczną maszynę hosta Google Cloud, na której działa maszyna wirtualna, przez wyodrębnienie unikalnego PPID (identyfikatora udostępniania platformy) z certyfikatu PCK wyceny. Następnie pobiera rekord rejestru platformy hosta z Google Cloud Storage (confidential-host-registry), który rejestruje fizyczną strefę i czas ostatniego udostępnienia przez Google Cloud certyfikatów atestu hosta.
  2. Pochodzenie instancji (powiązanie PZID): Google Cloud kryptograficznie wiąże tożsamość konkretnej maszyny wirtualnej (ProjectNumber, Zone i InstanceID) z rejestrem MR_OWNER wyceny TDX. Sprawdzenie tego powiązania gwarantuje, że wycena należy wyłącznie do Twojej instancji, i zapobiega atakom typu replay lub podstawienia wyceny w różnych maszynach wirtualnych lub projektach.

Narzędzie gceprovenance interfejsu wiersza poleceń (również znajdujące się w repozytorium go-tdx-guest) automatyzuje pełną weryfikację pochodzenia – sprawdza autentyczność wyceny, wyzwanie świeżości, rekord rejestru hosta i powiązanie PZID instancji za pomocą jednego polecenia.

  1. Otwórz katalog gceprovenance i utwórz narzędzie:
cd ~/go-tdx-guest/tools/gceprovenance
go build
  1. Uruchom pełną weryfikację pochodzenia za pomocą polecenia verify. Przekażemy plik wyceny (quote.bin) i wyzwanie nonce ($nonce) wygenerowane wcześniej:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
  1. Gdy wszystkie etapy weryfikacji zakończą się powodzeniem, narzędzie wyświetli raport weryfikacji podobny do tego:
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

Co się dzieje w tle?

  • Wycena i wyzwanie: narzędzie sprawdza łańcuch podpisu wyceny pod kątem certyfikatu głównego firmy Intel i potwierdza, że REPORT_DATA wyceny odpowiada wyzwaniu $nonce.
  • Pochodzenie hosta (PPID): narzędzie wyodrębnia 32-znakowy szesnastkowy PPID z certyfikatu PCK liścia i pobiera dokument JSON rejestru hosta z GCS (https://storage.googleapis.com/confidential-host-registry/).
  • Pochodzenie instancji (PZID): narzędzie wysyła zapytanie do lokalnego serwera metadanych GCE o numeryczny identyfikator projektu, strefę i identyfikator instancji, tworzy kanoniczny ładunek JSON PZID ({"instanceId":...,"numericalProjectId":...,"zone":...}), oblicza jego skrót SHA-384 i sprawdza, czy odpowiada on wartości MR_OWNER w wycenie.
  1. Sprawdź pobrany dokument rejestru hosta:

Domyślnie polecenie verify zapisuje pobrany dokument JSON rejestru hosta w pliku host_registry.json. Możesz go sprawdzić, aby wyświetlić metadane platformy hosta:

cat host_registry.json

Przykładowe dane wyjściowe:

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

Te metadane opisują właściwości maszyny hosta:

  • zone: fizyczny region/strefa Google Cloud, w której znajduje się maszyna hosta.
  • timestamp: data i godzina UTC ostatniego udostępnienia i zweryfikowania przez Google Cloud certyfikatów atestu sprzętu tej maszyny hosta.

7. Czyszczenie

Uruchom te polecenia w konsoli Google Cloud lub lokalnym środowisku programistycznym:

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

8. Co dalej?

Więcej informacji o poufnych maszynach wirtualnych i Compute Engine.