TDX CVM की पुष्टि और मूल जगह की जानकारी

1. खास जानकारी

गोपनीय वर्चुअल मशीन (सीवीएम), Compute Engine की वर्चुअल मशीन होती हैं. इनमें हार्डवेयर पर आधारित मेमोरी एन्क्रिप्शन और इंटेग्रिटी प्रोटेक्शन का इस्तेमाल किया जाता है. इससे यह पक्का करने में मदद मिलती है कि इस्तेमाल के दौरान, आपका डेटा और ऐप्लिकेशन मेमोरी में पढ़े या बदले न जा सकें. इस कोडलैब में, आपको सीवीएम पर Intel TDX की पुष्टि करने के लिए कोटेशन जनरेट करने और डेमो के मकसद से, स्थानीय तौर पर उसकी पुष्टि करने का तरीका बताया जाएगा. इसके अलावा, आपको सीवीएम के Google Cloud होस्ट और इंस्टेंस के ऑरिजिन की पुष्टि करने का तरीका भी बताया जाएगा.

इस कोडलैब में ये चरण शामिल हैं:

  • Intel TDX की गोपनीय वीएम सेट अप करना
  • TDX की पुष्टि करने के लिए कोटेशन फ़ेच करना
  • TDX की पुष्टि करने के लिए कोटेशन और नॉनस की पुष्टि करना
  • GCE फ़र्मवेयर (OVMF) की इंटेग्रिटी की पुष्टि करना
  • GCE TDX होस्ट और इंस्टेंस के ऑरिजिन की पुष्टि करना

आपको क्या सीखने को मिलेगा

  • go-tdx-guest टूल का इस्तेमाल करके, सीवीएम पर TDX की पुष्टि करने के लिए कोटेशन फ़ेच करने का तरीका
  • कोटेशन की पुष्टि करने के लिए, उसकी असलियत, नयापन (नॉनस), और GCE फ़र्मवेयर की इंटेग्रिटी (OVMF) की पुष्टि करने का तरीका
  • Google Cloud होस्ट और इंस्टेंस के ऑरिजिन (PPID रजिस्ट्री लुकअप और PZID इंस्टेंस बाइंडिंग) की पुष्टि करने का तरीका

आपको किन चीज़ों की ज़रूरत होगी

2. सेटअप और ज़रूरी शर्तें

ज़रूरी एपीआई चालू करने के लिए, Google Cloud Console या अपने लोकल डेवलपमेंट एनवायरमेंट में यह कमांड चलाएं:

gcloud auth login

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

3. सीवीएम सेट अप करना और TDX कोटेशन फ़ेच करना

इस चरण में, आपको TDX सीवीएम बनाना होगा. साथ ही, हार्डवेयर से TDX की पुष्टि करने के लिए कोटेशन फ़ेच करना होगा.

  1. Google Cloud Console या अपने लोकल डेवलपमेंट एनवायरमेंट पर जाएं. इस तरह सीवीएम बनाएं:
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

<project-id> की जगह, अपने प्रोजेक्ट का यूनीक आइडेंटिफ़ायर डालें.

  1. सीवीएम से कनेक्ट करें.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
  1. सीवीएम पर Go एनवायरमेंट सेट अप करें:
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. go-tdx-guest टूल इंस्टॉल करें.

डेटा स्टोर करने की जगह को क्लोन करें और attest टूल बनाएं. यह टूल, TDX कोटेशन जनरेट करता है.

git clone https://github.com/google/go-tdx-guest.git
cd go-tdx-guest/tools/attest
go build
  1. TDX की पुष्टि करने के लिए कोटेशन फ़ेच करें:

कोटेशन जनरेट करने के लिए, attest टूल का इस्तेमाल करें. हम नॉनस (64 बाइट का REPORT_DATA) पास करेंगे और आउटपुट को 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

TDX कोटेशन अब quote.bin में सेव हो गया है!

4. TDX की पुष्टि करने के लिए कोटेशन की पुष्टि करना

अब हमने Intel TDX कोटेशन (quote.bin) जनरेट कर लिया है. इसलिए, हम go-tdx-guest डेटा स्टोर करने की जगह में दिए गए check टूल का इस्तेमाल करके, इसकी पुष्टि कर सकते हैं. यह टूल, Intel की खास जानकारी के हिसाब से कोटेशन की जांच करता है. साथ ही, Intel की Provisioning Certification Service (PCS) से डाउनलोड किए गए कोलेटरल के हिसाब से इसकी पुष्टि करता है. इसके अलावा, यह नीति की पाबंदियों की पुष्टि करता है. जैसे, रीप्ले हमलों को रोकने के लिए नॉनस की पुष्टि करता है.

  1. check टूल की डायरेक्ट्री पर जाएं और इसे बनाएं:
cd ~/go-tdx-guest/tools/check
go build
  1. क्रिप्टोग्राफ़िक सिग्नेचर और नॉनस दोनों की पुष्टि करने के लिए, टूल चलाएं. हम Intel के PCS से ज़रूरी TEE सर्टिफ़िकेट डाउनलोड करने के लिए -get_collateral=true फ़्लैग, सर्टिफ़िकेट रद्द होने की पुष्टि करने के लिए -check_crl=true फ़्लैग, और नॉनस के नएपन की पुष्टि करने के लिए -report_data फ़्लैग का इस्तेमाल करेंगे:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
    -get_collateral=true -check_crl=true \
    -report_data $nonce

अगर कोटेशन क्रिप्टोग्राफ़िक तौर पर मान्य है और नॉनस मैच करता है, तो टूल, लॉग में इस उदाहरण की तरह, सफल होने का मैसेज दिखाएगा. साथ ही, कोड 0 के साथ बंद हो जाएगा:

INFO : TDX Quote verified successfully

5. GCE फ़र्मवेयर (OVMF) की इंटेग्रिटी की पुष्टि करना

Intel का कोलेटरल, हार्डवेयर की पुष्टि करता है. हालांकि, इससे यह पुष्टि नहीं होती कि वर्चुअल मशीन, Google Compute Engine (GCE) के असली और बिना बदलाव वाले फ़र्मवेयर पर चल रही है.

Google, GCE UEFI (OVMF) फ़र्मवेयर के सभी आधिकारिक रिलीज़ के लिए, साइन किए गए लॉन्च एंडॉर्समेंट (जिनमें गोल्डन रेफ़रंस इंटेग्रिटी मेज़रमेंट या RIM शामिल होते हैं) को, सार्वजनिक Google Cloud Storage (GCS) बकेट में पब्लिश करता है.

इस चरण में, हम Google के सार्वजनिक gce-tcb-verifier टूल का इस्तेमाल करके, GCS से फ़र्मवेयर एंडॉर्समेंट को अपने-आप फ़ेच करेंगे. साथ ही, इस पर Google के सिग्नेचर की पुष्टि करेंगे. इसके अलावा, हम अपने सीवीएम के फ़र्मवेयर मेज़रमेंट (MRTD) की पुष्टि करेंगे.

1. GCE TCB Verifier टूल बनाना

  1. GitHub से, सार्वजनिक gce-tcb-verifier डेटा स्टोर करने की जगह को क्लोन करें:
cd ~
git clone https://github.com/google/gce-tcb-verifier.git
  1. सीएलआई टूल की डायरेक्ट्री पर जाएं और इसे बनाएं:
cd gce-tcb-verifier/gcetcbendorsement/cli
go build -o gcetcbendorsement
  1. सुविधा के लिए, बनाए गए टूल को अपने पाथ में जोड़ें:
export PATH=$PATH:$(pwd)

2. GCE फ़र्मवेयर एंडॉर्समेंट के हिसाब से कोटेशन की पुष्टि करना

अब, अपने पुष्टि करने के लिए कोटेशन की पुष्टि करने के लिए, gcetcbendorsement टूल चलाएं. पुष्टि होने पर, यह टूल कोई मैसेज नहीं दिखाता. इसलिए, हम कमांड को && echo "Validation Succeeded!" के साथ जोड़ सकते हैं, ताकि पुष्टि होने की जानकारी साफ़ तौर पर मिल सके:

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

आउटपुट:

Validation Succeeded!

बैकग्राउंड में क्या हो रहा है?

  1. एक्सट्रैक्शन: यह टूल, quote.bin को पार्स करता है और TD कोट बॉडी से फ़र्मवेयर मेज़रमेंट (MRTD) को एक्सट्रैक्ट करता है.
  2. फ़ेच करना: यह MRTD का इस्तेमाल करके, GCS यूआरएल बनाता है और Google की सार्वजनिक बकेट (gs://gce_tcb_integrity) से, उससे जुड़ा VMLaunchEndorsement डाउनलोड करता है.
  3. सिग्नेचर की पुष्टि करना: यह Google के सार्वजनिक रूट CA सर्टिफ़िकेट (https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) को फ़ेच करता है. साथ ही, डाउनलोड किए गए एंडॉर्समेंट पर Google के सिग्नेचर की क्रिप्टोग्राफ़िक पुष्टि करता है.
  4. मेज़रमेंट की पुष्टि करना: यह आपके कोटेशन में TDX हार्डवेयर से साइन किए गए MRTD की तुलना, Google के साइन किए गए एंडॉर्समेंट में मौजूद गोल्डन रेफ़रंस मेज़रमेंट से करता है.

अगर सभी जांचें पास हो जाती हैं, तो कमांड, कोड 0 के साथ बंद हो जाएगा. साथ ही, यह कोई मैसेज नहीं दिखाएगा. इसके अलावा, अगर आपने कमांड को `&& echo "Validation Succeeded!"` के साथ जोड़ा है, तो यह Validation Succeeded! मैसेज दिखाएगा. इससे यह साबित होता है कि आपकी वीएम, Google के एंडॉर्स किए गए असली फ़र्मवेयर पर चल रही है!

6. GCE TDX होस्ट और इंस्टेंस के ऑरिजिन की पुष्टि करना

पुष्टि करने और फ़र्मवेयर की पुष्टि करने से यह पक्का होता है कि आपकी वीएम, Google के एंडॉर्स किए गए UEFI फ़र्मवेयर के साथ, असली Intel TDX हार्डवेयर पर चल रही है. हालांकि, GCE TDX ऑरिजिन की पुष्टि करने से, आपका पुष्टि करने के लिए कोटेशन, Google Cloud के इन्फ़्रास्ट्रक्चर से दो अहम तरीकों से सीधे कनेक्ट होता है:

  1. होस्ट का ऑरिजिन: यह कोटेशन के पीसीके सर्टिफ़िकेट से, प्लैटफ़ॉर्म का यूनीक पीपीआईडी (प्लैटफ़ॉर्म प्रोविज़निंग आईडी) एक्सट्रैक्ट करके, आपकी वीएम चलाने वाली Google Cloud की फ़िज़िकल होस्ट मशीन की पहचान करता है. इसके बाद, यह Google Cloud Storage (confidential-host-registry) से, होस्ट प्लैटफ़ॉर्म का रजिस्ट्री रिकॉर्ड वापस लेता है. इसमें, फ़िज़िकल ज़ोन और यह जानकारी रिकॉर्ड होती है कि Google Cloud ने, होस्ट के पुष्टि करने के लिए सर्टिफ़िकेट को पिछली बार कब प्रोविज़न किया था.
  2. इंस्टेंस का ऑरिजिन (पीज़ेडआईडी बाइंडिंग): Google Cloud, क्रिप्टोग्राफ़िक तौर पर आपकी खास वीएम की पहचान (ProjectNumber, Zone, और InstanceID) को, TDX कोटेशन के MR_OWNER रजिस्टर में बाइंड करता है. इस बाइंडिंग की पुष्टि करने से यह पक्का होता है कि कोटेशन सिर्फ़ आपके इंस्टेंस का है. साथ ही, इससे अलग-अलग वीएम या प्रोजेक्ट में, कोटेशन के रीप्ले या कोटेशन को बदलने वाले हमलों को रोका जा सकता है.

gceprovenance सीएलआई टूल (यह go-tdx-guest डेटा स्टोर करने की जगह में भी मौजूद है) ऑरिजिन की पूरी पुष्टि की प्रोसेस को ऑटोमेट करता है. इसमें, एक ही कमांड में कोटेशन की असलियत, नएपन की चुनौती, होस्ट रजिस्ट्री रिकॉर्ड, और इंस्टेंस पीज़ेडआईडी बाइंडिंग की जांच की जाती है.

  1. gceprovenance डायरेक्ट्री पर जाएं और टूल बनाएं:
cd ~/go-tdx-guest/tools/gceprovenance
go build
  1. verify कमांड का इस्तेमाल करके, ऑरिजिन की पूरी पुष्टि करें. हम कोटेशन फ़ाइल (quote.bin) और पहले जनरेट की गई नॉनस चुनौती ($nonce) पास करेंगे:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
  1. जब सभी जांचें पास हो जाती हैं, तो टूल, पुष्टि की रिपोर्ट दिखाता है. यह रिपोर्ट, इस उदाहरण की तरह दिखती है:
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

बैकग्राउंड में क्या हो रहा है?

  • कोटेशन और चुनौती: यह टूल, Intel के रूट सर्टिफ़िकेट के हिसाब से कोटेशन की सिग्नेचर चेन की पुष्टि करता है. साथ ही, यह पुष्टि करता है कि कोटेशन का REPORT_DATA, आपकी $nonce चुनौती से मेल खाता है.
  • होस्ट का ऑरिजिन (PPID): यह लीफ़ पीसीके सर्टिफ़िकेट से, 32 वर्णों वाला हेक्स PPID एक्सट्रैक्ट करता है. साथ ही, GCS (https://storage.googleapis.com/confidential-host-registry/) से, होस्ट रजिस्ट्री JSON दस्तावेज़ डाउनलोड करता है.
  • इंस्टेंस का ऑरिजिन (PZID): यह आपके इंस्टेंस के न्यूमेरिक प्रोजेक्ट आईडी, ज़ोन, और इंस्टेंस आईडी के लिए, लोकल GCE मेटाडेटा सर्वर से क्वेरी करता है. इसके बाद, कैननिकल पीज़ेडआईडी JSON पेलोड ({"instanceId":...,"numericalProjectId":...,"zone":...}) बनाता है. साथ ही, इसका SHA-384 डाइजेस्ट कंप्यूट करता है और पुष्टि करता है कि यह कोटेशन में MR_OWNER से मेल खाता है.
  1. वापस लिए गए होस्ट रजिस्ट्री दस्तावेज़ की जांच करें:

डिफ़ॉल्ट रूप से, verify कमांड, फ़ेच किए गए होस्ट रजिस्ट्री JSON दस्तावेज़ को host_registry.json में सेव करता है. होस्ट प्लैटफ़ॉर्म का मेटाडेटा देखने के लिए, इसकी जांच की जा सकती है:

cat host_registry.json

आउटपुट का उदाहरण:

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

इस मेटाडेटा में, होस्ट मशीन की प्रॉपर्टी के बारे में जानकारी दी गई है:

  • zone: Google Cloud का वह इलाका/ज़ोन जहां होस्ट मशीन मौजूद है.
  • timestamp: यूटीसी में वह तारीख और समय जब Google Cloud ने, इस होस्ट मशीन के हार्डवेयर की पुष्टि करने के लिए सर्टिफ़िकेट को पिछली बार प्रोविज़न और पुष्टि की थी.

7. साफ़-सफ़ाई सेवा

Cloud Console या अपने लोकल डेवलपमेंट एनवायरमेंट में ये कमांड चलाएं:

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

8. आगे क्या करना है

गोपनीय वीएम और Compute Engine के बारे में ज़्यादा जानें.