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
PPIDi powiązanie instancjiPZID)
Czego potrzebujesz
- Projekt Google Cloud Platform
- Podstawowa znajomość Google Compute Engine i poufnych maszyn wirtualnych
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.
- 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.
- Połącz się z CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- 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
- 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
- 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.
- Otwórz katalog narzędzia
checki utwórz je:
cd ~/go-tdx-guest/tools/check go build
- 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
- Sklonuj publiczne repozytorium
gce-tcb-verifierz GitHub:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- Otwórz katalog narzędzia wiersza poleceń i utwórz je:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- 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?
- Wyodrębnianie: narzędzie analizuje plik
quote.bini wyodrębnia z treści wyceny TD pomiar oprogramowania sprzętowego (MRTD). - Pobieranie: narzędzie tworzy adres URL GCS na podstawie
MRTDi pobiera odpowiedni plikVMLaunchEndorsementz publicznego zasobnika Google (gs://gce_tcb_integrity). - 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. - Sprawdzanie pomiaru: narzędzie porównuje
MRTDpodpisany 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:
- 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. - Pochodzenie instancji (powiązanie PZID): Google Cloud kryptograficznie wiąże tożsamość konkretnej maszyny wirtualnej (
ProjectNumber,ZoneiInstanceID) z rejestremMR_OWNERwyceny 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.
- Otwórz katalog
gceprovenancei utwórz narzędzie:
cd ~/go-tdx-guest/tools/gceprovenance go build
- 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
- 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_DATAwyceny odpowiada wyzwaniu$nonce. - Pochodzenie hosta (
PPID): narzędzie wyodrębnia 32-znakowy szesnastkowyPPIDz 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ściMR_OWNERw wycenie.
- 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.