مصادقة TDX CVM والأصل

1. نظرة عامة

الأجهزة الافتراضية السرية (CVM) هي نوع من الأجهزة الافتراضية في Compute Engine التي تستخدم التشفير المستند إلى الأجهزة وحماية السلامة. يساعد ذلك في ضمان عدم إمكانية قراءة بياناتك وتطبيقاتك أو تعديلها في الذاكرة أثناء الاستخدام. في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية إنشاء عرض أسعار شهادة Intel TDX على الجهاز الافتراضي المشفر، والتحقّق منه محليًا لأغراض توضيحية. بالإضافة إلى ذلك، عليك إثبات صحة مصدر المضيف والآلة الافتراضية في Google Cloud.

يتضمّن هذا الدرس التطبيقي العملي الخطوات التالية:

  • إعداد جهاز افتراضي سري باستخدام Intel TDX
  • الحصول على عرض أسعار لشهادة TDX
  • التحقّق من اقتباس شهادة TDX والقيمة العشوائية
  • التحقّق من سلامة البرامج الثابتة (OVMF) في "محرك حساب Google"
  • التحقّق من مصدر مضيف GCE TDX ومثيله

أهداف الدورة التعليمية

  • كيفية الحصول على عرض أسعار مصادقة TDX على جهاز CVM باستخدام أدوات go-tdx-guest
  • كيفية التحقّق من صحة الاقتباس ومدى حداثته (nonce) وسلامة البرامج الثابتة في 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- إعداد CVM واسترداد عرض أسعار TDX

في هذه الخطوة، ستنشئ جهازًا افتراضيًا مشفّرًا بالكامل (CVM) من TDX وستحصل على عرض أسعار شهادة TDX من الجهاز.

  1. انتقِل إلى Google Cloud Console أو بيئة التطوير المحلية. أنشئ CVM على النحو التالي:
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. اتّصِل بآلة CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
  1. إعداد بيئة Go على الجهاز الافتراضي 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. ثبِّت أدوات 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)، يمكننا التحقّق منه باستخدام أداة check المتوفّرة في مستودع go-tdx-guest. تتحقّق هذه الأداة من صحة الاقتباس مقارنةً بمواصفات Intel، وتتحقّق من صحته باستخدام المستندات الداعمة التي تم تنزيلها من خدمة Provisioning Certification Service (PCS) من Intel، وتتحقّق من صحة قيود السياسة، مثل الرقم العشوائي، لمنع هجمات إعادة الإرسال.

  1. انتقِل إلى دليل أداة check وأنشئها:
cd ~/go-tdx-guest/tools/check
go build
  1. شغِّل الأداة للتحقّق من كلّ من التواقيع المشفرة والرقم الخاص. سنستخدم العلامة -get_collateral=true لتنزيل شهادات TEE اللازمة من خدمة PCS التابعة لشركة Intel، والعلامة -check_crl=true للتحقّق من عمليات إبطال الشهادات، والعلامة -report_data للتحقّق من صحة قيمة nonce:
./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- التحقّق من سلامة البرامج الثابتة (OVMF) في "محرك حساب Google"

مع أنّ المستندات الداعمة من Intel تتحقّق من الأجهزة، إلا أنّها لا تتحقّق من أنّ الجهاز الافتراضي يشغّل برنامجًا ثابتًا أصليًا وغير معدَّل من Google Compute Engine (GCE).

تنشر Google شهادات إطلاق موقّعة (تحتوي على قياسات مرجعية ذهبية لسلامة النظام، أو RIM) لجميع إصدارات البرامج الثابتة الرسمية لواجهة UEFI (OVMF) في GCE في حزمة Google Cloud Storage (GCS) عامة.

في هذه الخطوة، سنستخدم أداة gce-tcb-verifier العامة من Google لاسترداد تأييد البرامج الثابتة تلقائيًا من "خدمة التكوين في Google"، والتحقّق من توقيع Google عليه، والتحقّق من صحة قياس البرامج الثابتة لآلة CVM (MRTD) مقارنةً به.

1. إنشاء أداة التحقّق من TCB في GCE

  1. استنسِخ مستودع gce-tcb-verifier العلني من GitHub:
cd ~
git clone https://github.com/google/gce-tcb-verifier.git
  1. انتقِل إلى دليل أداة واجهة سطر الأوامر وأنشئها:
cd gce-tcb-verifier/gcetcbendorsement/cli
go build -o gcetcbendorsement
  1. أضِف الأداة التي تم إنشاؤها إلى PATH لتسهيل الوصول إليها:
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 وتستخرج قياس البرامج الثابتة (MRTD) من نص عرض الأسعار في TD.
  2. الجلب: يتم إنشاء عنوان URL في "خدمة التخزين السحابي من Google" باستخدام MRTD وتنزيل VMLaunchEndorsement المقابل من الحزمة العامة من Google (gs://gce_tcb_integrity).
  3. التحقّق من التوقيع: يتم استرداد شهادة مرجع التصديق الجذر العام من Google (https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) والتحقّق من توقيع Google على شهادة المصادقة التي تم تنزيلها باستخدام التشفير.
  4. التحقّق من صحة القياس: يقارن هذا الإجراء بين MRTD الموقّع من جهاز TDX في عرض الأسعار الخاص بك وبين قياسات المرجع الذهبي في تأييد Google الموقّع.

إذا اجتازت جميع عمليات التحقّق، سيتم إنهاء الأمر باستخدام الرمز 0 بدون إظهار أي رسالة (أو طباعة Validation Succeeded! مع الصدى المتسلسل)، ما يثبت أنّ جهازك الظاهري يعمل ببرامج ثابتة معتمدة من Google.

6. التحقّق من مصدر مضيف GCE TDX ومثيله

في حين أنّ شهادة المصادقة والتحقّق من البرامج الثابتة تؤكّدان أنّ جهازك الافتراضي يعمل على أجهزة Intel TDX أصلية مع برامج ثابتة UEFI معتمدة من Google، فإنّ خدمة GCE TDX Provenance Verification تربط عرض الأسعار الخاص بشهادة المصادقة مباشرةً ببنية Google Cloud الأساسية بطريقتَين مهمتَين:

  1. مصدر المضيف: يحدّد الجهاز المضيف الفعلي على Google Cloud الذي يشغّل جهازك الظاهري من خلال استخراج PPID (معرّف توفير النظام الأساسي) الفريد للنظام الأساسي من شهادة PCK الخاصة بعرض الأسعار. بعد ذلك، يسترد سجلّ منصة المضيف من Google Cloud Storage (confidential-host-registry)، والذي يسجّل المنطقة المادية ووقت آخر توفير لشهادات التصديق الخاصة بالمضيف من Google Cloud.
  2. مصدر المثيل (ربط PZID): يربط Google Cloud بشكل مشفّر هوية جهازك الظاهري المحدّد (ProjectNumber وZone وInstanceID) بسجلّ MR_OWNER في عرض أسعار TDX. يضمن إثبات صحة هذا الربط أنّ عرض الأسعار يخص مثالك حصريًا ويمنع هجمات إعادة التشغيل أو الاستبدال لعروض الأسعار على مستوى الأجهزة الافتراضية أو المشاريع المختلفة.

تعمل أداة سطر الأوامر gceprovenance (الموجودة أيضًا في مستودع go-tdx-guest) على إتمام عملية التحقّق الكامل من صحة المستندات المصدر تلقائيًا، وذلك من خلال التحقّق من صحة الاقتباس وتحدي الحداثة وسجلّ تسجيل المضيف وربط PZID الخاص بالمثيل في أمر واحد.

  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): تستخرج هذه الميزة السلسلة السداسية العشرية PPID المكوّنة من 32 حرفًا من شهادة PCK الطرفية وتنزّل مستند JSON الخاص بسجلّ المضيف من GCS (https://storage.googleapis.com/confidential-host-registry/).
  • مصدر بيانات الجهاز الافتراضي (PZID): يطلب هذا المصدر من خادم البيانات الوصفية المحلي في Google Compute Engine (GCE) الحصول على رقم تعريف المشروع العددي للمشروع والمنطقة ورقم تعريف الجهاز الافتراضي، وينشئ حمولة JSON الأساسية لمعرّف PZID ({"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 بتوقيت UTC.

7. تنظيف

نفِّذ الأوامر التالية في وحدة تحكّم السحابة الإلكترونية أو بيئة التطوير المحلية:

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

8. الخطوات التالية

مزيد من المعلومات عن الأجهزة الافتراضية السرية وCompute Engine