כדי לוודא שמכונת VM סודית של Intel TDX פועלת ב- Google Cloud, צריך לקבוע את provenance שלה. כדי לקבוע את מקור הנתונים, המערכת מבצעת את הבדיקות הבאות:
אימות הציטוט וקישור לאתגר: כדי לאמת את האותנטיות של ציטוט Intel TDX, משתמשים באישור הבסיסי המוטמע של Intel. אפשר גם לאמת את הרעננות מול אתגר צפוי בשדה
REPORT_DATAשל הציטוט.אימות המקור של המארח: חילוץ מזהה הקצאת המשאבים בפלטפורמה (PPID) מאישור ה-PCK המוטמע בציטוט. משתמשים ב-PPID כדי לאחזר את מסמך ה-JSON של מאגר המארחים מקטגוריה של Cloud Storage כדי לאמת את מקור הנתונים.
אימות מקור המופע: משתמשים במספר הפרויקט, באזור ובמזהה המופע (PZID) של מופע מכונת ה-VM הסודית כדי לחשב תקציר SHA-384, ואז מוודאים שהתקציר תואם לערך השדה
MR_OWNERבציטוט של Intel TDX.
אימות מקור מרחוק
מומלץ להשתמש בכלי gceprovenance כדי לקבוע את המקור של מכונות Intel TDX. הכלי מחלץ באופן אוטומטי את הערכים הנדרשים ומאחזר את מסמך המקור.
כדי לאמת את מקור המוצר מרחוק באמצעות gceprovenance, צריך לבצע את ההוראות הבאות:
משכפלים את מאגר ה-GitHub
go-tdx-guestאל מאמת הנתונים המרוחק:git clone https://github.com/google/go-tdx-guest.gitבהתאם למערכת ההפעלה של האורח, יכול להיות שתצטרכו להתקין כמה תלויות של Go כדי לבנות את הכלים ב-
go-tdx-guest. האופן שבו עושים את זה משתנה בהתאם למערכת ההפעלה. לדוגמה, הפקודות הבאות מתקינות את יחסי התלות הנדרשים ב-Ubuntu:sudo apt update sudo apt install golang-go build-essentialבניית הכלי
gceprovenance:go build -C go-tdx-guest/tools/gceprovenance .יצירת אתגר של 64 בייט שהמופע של המכונה הווירטואלית הסודית של Intel TDX צריך לקשר לציטוט שלו:
head -c 64 /dev/urandom > challenge.binשולחים את קובץ האתגר למופע של מכונה וירטואלית סודית ב-Intel TDX שרוצים לאמת.
במכונה וירטואלית חסויה של Intel TDX, מעבירים את קובץ האתגר כקלט (
inblob) אל Linux ConfigFS בכתובת/sys/kernel/config/tsm/report/:sudo mkdir -p /sys/kernel/config/tsm/report/report0 sudo sh -c 'cat challenge.bin > /sys/kernel/config/tsm/report/report0/inblob'לאחר מכן, המערכת כותבת את האתגר בשדה
REPORT_DATAשל הצעת המחיר.מאחזרים את בייטים של הצעת המחיר הגולמית מקובץ
outblobשנוצר ומנקים את ספרייתreport0:sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin sudo rmdir /sys/kernel/config/tsm/report/report0מריצים שאילתה בשרת המטא-נתונים המקומי כדי לקבל את מזהה המכונה, מספר הפרויקט והאזור של מכונת ה-VM הסודית:
PROJECT_NUMBER=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google") INSTANCE_ID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google") ZONE_PATH=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google") ZONE=$(basename "$ZONE_PATH")שולחים את הנתונים הבינאריים של הצעת המחיר (
quote.bin), את מספר הפרויקט, את מזהה המופע ואת האזור למאמת המרוחק.בכלי לאימות מרחוק, ממירים את האתגר למחרוזת הקסדצימלית באורך 128 תווים, ואז מעבירים אותה אל
gceprovenance. לאחר מכן, הכלי מאמת את החתימה של הציטוט ואת הקשרים של מקור הנתונים:CHALLENGE_HEX=$(hexdump -v -e '/1 "%02x"' challenge.bin) ./go-tdx-guest/tools/gceprovenance/gceprovenance verify \ -quote PATH_TO_QUOTE \ -instance projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID \ -challenge $CHALLENGE_HEXעליך לספק את הפרטים הבאים:
PATH_TO_QUOTE: הנתיב לקובץ הצעת המחיר שסופק.
PROJECT_NUMBER: מספר הפרויקט שצוין.
ZONE: האזור שצוין.
INSTANCE_ID: המזהה של מופע Confidential VM שסופק.
תגובה מוצלחת תיראה כך:
GCE TDX provenance verification: OK Instance Zone: ZONE Project: PROJECT_NUMBER Instance ID: INSTANCE_ID Checks Quote verification: OK REPORT_DATA challenge: OK Host registry document: found PZID binding: OK PPID: PPID Quote: tdx_quote.bin Host registry: host_registry.json
למידע על פקודות אחרות של gceprovenance, אפשר לעיין במאגר GitHub.