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ربط المثيل)
المتطلبات
- مشروع على Google Cloud Platform
- معرفة أساسية بـ Google Compute Engine وConfidential VM
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 من الجهاز.
- انتقِل إلى 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> بالمعرّف الفريد لمشروعك.
- اتّصِل بآلة CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- إعداد بيئة 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
- ثبِّت أدوات
go-tdx-guest.
استنسِخ المستودع وأنشئ الأداة attest التي تنشئ عرض أسعار TDX.
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- استرداد عرض أسعار الإقرار بشأن استخدام 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، وتتحقّق من صحة قيود السياسة، مثل الرقم العشوائي، لمنع هجمات إعادة الإرسال.
- انتقِل إلى دليل أداة
checkوأنشئها:
cd ~/go-tdx-guest/tools/check go build
- شغِّل الأداة للتحقّق من كلّ من التواقيع المشفرة والرقم الخاص. سنستخدم العلامة
-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
- استنسِخ مستودع
gce-tcb-verifierالعلني من GitHub:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- انتقِل إلى دليل أداة واجهة سطر الأوامر وأنشئها:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- أضِف الأداة التي تم إنشاؤها إلى 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!
ما الذي يحدث في الخلفية؟
- الاستخراج: تحلّل الأداة
quote.binوتستخرج قياس البرامج الثابتة (MRTD) من نص عرض الأسعار في TD. - الجلب: يتم إنشاء عنوان URL في "خدمة التخزين السحابي من Google" باستخدام
MRTDوتنزيلVMLaunchEndorsementالمقابل من الحزمة العامة من Google (gs://gce_tcb_integrity). - التحقّق من التوقيع: يتم استرداد شهادة مرجع التصديق الجذر العام من Google (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) والتحقّق من توقيع Google على شهادة المصادقة التي تم تنزيلها باستخدام التشفير. - التحقّق من صحة القياس: يقارن هذا الإجراء بين
MRTDالموقّع من جهاز TDX في عرض الأسعار الخاص بك وبين قياسات المرجع الذهبي في تأييد Google الموقّع.
إذا اجتازت جميع عمليات التحقّق، سيتم إنهاء الأمر باستخدام الرمز 0 بدون إظهار أي رسالة (أو طباعة Validation Succeeded! مع الصدى المتسلسل)، ما يثبت أنّ جهازك الظاهري يعمل ببرامج ثابتة معتمدة من Google.
6. التحقّق من مصدر مضيف GCE TDX ومثيله
في حين أنّ شهادة المصادقة والتحقّق من البرامج الثابتة تؤكّدان أنّ جهازك الافتراضي يعمل على أجهزة Intel TDX أصلية مع برامج ثابتة UEFI معتمدة من Google، فإنّ خدمة GCE TDX Provenance Verification تربط عرض الأسعار الخاص بشهادة المصادقة مباشرةً ببنية Google Cloud الأساسية بطريقتَين مهمتَين:
- مصدر المضيف: يحدّد الجهاز المضيف الفعلي على Google Cloud الذي يشغّل جهازك الظاهري من خلال استخراج PPID (معرّف توفير النظام الأساسي) الفريد للنظام الأساسي من شهادة PCK الخاصة بعرض الأسعار. بعد ذلك، يسترد سجلّ منصة المضيف من Google Cloud Storage (
confidential-host-registry)، والذي يسجّل المنطقة المادية ووقت آخر توفير لشهادات التصديق الخاصة بالمضيف من Google Cloud. - مصدر المثيل (ربط PZID): يربط Google Cloud بشكل مشفّر هوية جهازك الظاهري المحدّد (
ProjectNumberوZoneوInstanceID) بسجلّMR_OWNERفي عرض أسعار TDX. يضمن إثبات صحة هذا الربط أنّ عرض الأسعار يخص مثالك حصريًا ويمنع هجمات إعادة التشغيل أو الاستبدال لعروض الأسعار على مستوى الأجهزة الافتراضية أو المشاريع المختلفة.
تعمل أداة سطر الأوامر gceprovenance (الموجودة أيضًا في مستودع go-tdx-guest) على إتمام عملية التحقّق الكامل من صحة المستندات المصدر تلقائيًا، وذلك من خلال التحقّق من صحة الاقتباس وتحدي الحداثة وسجلّ تسجيل المضيف وربط PZID الخاص بالمثيل في أمر واحد.
- انتقِل إلى الدليل
gceprovenanceوأنشئ الأداة:
cd ~/go-tdx-guest/tools/gceprovenance go build
- نفِّذ عملية التحقّق الكامل من مصدر البيانات باستخدام الأمر
verify. سنمرّر ملف الاقتباس (quote.bin) وتحدّي الرقم العشوائي ($nonce) اللذين أنشأناهما سابقًا:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- عند نجاح جميع عمليات التحقّق، ستعرض الأداة تقرير تحقّق مشابهًا لما يلي:
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في الاقتباس.
- افحص مستند "سجلّ المضيف" الذي تم استرداده:
يحفظ الأمر 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