אימות (attestation) של Confidential VM

אימות (attestation) של מכונת Confidential VM הוא תהליך שנועד לשפר את רמת הסמך בכך שהמכונה לגיטימית ופועלת במצב הצפוי. זהו כלי חיוני לאימות העובדה שעומס העבודה שלכם פועל בסביבת מחשוב אמינה (TEE).

אימות מבוסס-מעבד (CPU)

דוחות אימות הם ההוכחה לכך שהמכונה הווירטואלית פועלת בסביבת TEE. הן נוצרות על ידי מופע Confidential VM, ובהתאם לטכנולוגיית Confidential Computing שבה נעשה שימוש, הן נחתמות על ידי vTPM מבוסס תוכנה או על ידי מודול אבטחה מהימן (TSM) ייעודי מבוסס חומרה. דוחות אימות מכילים מדידות שקשורות לפעילות של טוען האתחול, להגדרת החומרה, להגדרת הקושחה ולאירועים אחרים שנרשמים ביומן בזמן האתחול, ועוזרים לאמת את המצב והזהות של מופע Confidential VM.

סוג דוח האימות שאתם יכולים לבקש תלוי בטכנולוגיית Confidential Computing שבה נעשה שימוש במופע Confidential VM.

מקור החתימה סוג מה נכלל בדוח טכנולוגיית Confidential Computing
SEV SEV-SNP Intel TDX
vTPM בניהול Google מודול vTPM מבוסס תוכנה פעילות של תוכנת אתחול, תקינות של ליבת המערכת
AMD Secure Processor1 TSM מבוסס-חומרה סביבת החומרה והקושחה
מודול Intel TDX TSM מבוסס-חומרה סביבת חומרה וקושחה2

1. מעבד AMD מאובטח הוא משאב משותף שזמין לכל המארחים בשרת הפיזי שבו הוא נמצא. המארח יכול להגביל את הגישה של האורחים למעבד המאובטח, ועדכוני קושחה למעבד המאובטח (שנחשבים לאירועים במארח) יכולים להתבצע בכל שלב.

2. רכיב ההפעלה הראשוני (הקושחה) של מופעי TDX Confidential VM נמדד ב-Measurement of the Trust Domain‏ (MRTD), בעוד ששאר שרשרת האתחול נמדדת ב-Runtime Measurement Registers‏ (RTMR), כך שכל המדידות מושרשות בחומרה. משתמשים יכולים להרחיב את הרישום של RTMR[3] באמצעות מדידות של מרחב המשתמש.

בקשה לדוח אימות (attestation)

אתם יכולים לבקש דוחות אימות מ-vTPM שמנוהל על ידי Google, מ-Secure Processor של AMD וממודול TDX של Intel באמצעות הכלים הבאים:

  • Go-TPM

  • כלי Go-TPM (נדרשת גרסה 0.4.4 ואילך לתמיכה ב-AMD SEV-SNP וב-Intel TDX)

האירוע GceNonHostInfo ביומן האירועים של אימות vTPM מראה איזו טכנולוגיה של Confidential Computing נמצאת בשימוש. כלי Go-TPM יכולים לבקש דוח אימות ממעבד AMD מאובטח אם נעשה שימוש ב-AMD SEV-SNP, או ממודול Intel TDX אם נעשה שימוש ב-Intel TDX.

בדוחות אימות חומרה בלבד, אפשר לשלוח אתגר קריפטוגרפי ל-TSM באמצעות הכלים הבאים:

  • ל-AMD SEV-SNP, משתמשים ב-SEV Guest. אישורי מפתח אישור שבב (VCEK) של גרסה מאוחסנים במטמון במכונה הווירטואלית במקום להתבקש ישירות ממערכת הפצת המפתחות (KDS) של AMD.

  • ל-Intel TDX, משתמשים ב-TDX Guest.

‫Intel TDX ב-Ubuntu

בתמונות של Ubuntu בליבה 1016 ומעלה, המודול tdx_guest נמצא בחבילה linux-modules-extra.

כדי להתקין את חבילת linux-modules-extra, מריצים את הפקודה הבאה:

sudo apt-get install linux-modules-extra-gcp

אם נתקלים בבעיות במהלך ההתקנה של linux-modules-extra-gcp, אפשר לעדכן את ליבת המערכת על ידי הרצת הפקודה הבאה:

sudo apt-get upgrade

כדי שהשינויים ייכנסו לתוקף, צריך להפעיל מחדש את המחשב או לטעון את המודול באופן ידני. כדי לטעון את המודול באופן ידני, מריצים את הפקודה הבאה:

sudo modprobe tdx_guest

אימות דוחות אישור באמצעות Google Cloud Attestation

אם מודל האמון שלכם מאפשר זאת, במקום לכתוב ולהריץ בעצמכם כלי לאימות הצהרות, אתם יכולים להשתמש ב-Google Cloud Attestation. התהליך כולל שימוש בכלי Go-TPM כדי לאחזר ציטוט אימות מ-vTPM של מופע Confidential VM, ושליחה שלו ל-Google Cloud Attestation לצורך אימות. אם הצעת המחיר עוברת את האימות, Google Cloud Attestation מחזיר אסימון שמכיל מידע על מכונת ה-VM. לאחר מכן אפשר להשוות אותו למדיניות שלכם כדי לוודא אם אפשר לסמוך על מכונת ה-VM.

אפשר להשתמש ב-Google Cloud Attestation עם מופעים של Confidential VM שמשתמשים בטכנולוגיות הבאות של Confidential Computing:

דוגמה מקצה לקצה לעבודה עם Google Cloud Attestation מופיעה בשיעור ה-Codelab בנושא אימות (attestation) מרחוק של vTPM במכונה וירטואלית סודית.

אימות מבוסס-GPU

אימות ה-GPU כולל אימות של הדרייבר של ה-GPU, של מכשיר ה-GPU או של שניהם.

בעיות מוכרות

יכול להיות שאימות ה-GPU ייכשל, ויוצג דיווח על רשומת מדידה לא תואמת באינדקס 9. ‫Google ו-NVIDIA פועלות לפתרון הבעיה.

כדי לעקוף את הבעיה, צריך לבצע עצירה והפעלה מחדש מלאות של ה-VM החסוי. הפעלה מחדש של המכונה הווירטואלית ממערכת ההפעלה של האורח לא פותרת את הבעיה.

אימות של דרייבר GPU

כדי להבטיח אימות חזק, מומלץ להפעיל את ההפעלה המאובטחת כשיוצרים את מכונת ה-VM הסודית.

התכונה Secure Boot מאפשרת טעינה רק של מנהלי התקנים של GPU שחתומים על ידי ההפצה. האימות הזה חיוני כדי לוודא שהדרייבר של ה-GPU שוחרר באופן רשמי על ידי NVIDIA. חשוב להשתמש בדרייבר רשמי כי הוא יוצר סשן מאובטח של פרוטוקול אבטחה ומודל נתונים (SPDM) עם מכשירי GPU, ומשמש כבסיס לאימות של מכשירי GPU של NVIDIA.

אימות של מכשיר עם GPU של NVIDIA

בנוסף לאימות של דרייבר ה-GPU, אפשר גם לאמת מכשירי GPU של NVIDIA. אימות המכשיר של NVIDIA GPU מאמת את ה-BIOS של הווידאו (VBIOS) שפועל ב-GPU. כך תוכלו לזהות גרסאות של תוכנת NVIDIA ולהעריך את נוכחותן של נקודות חולשה פוטנציאליות.

כדי לבצע אימות של מכשיר GPU של NVIDIA, צריך להתקין את התלות go-nvattest-toolsולבנות את הכלי nvattest מתוך google/go-nvattest-tools:

  1. מתקינים את יחסי התלות של הבנייה:

    sudo apt-get update && sudo apt-get install -y \
      git gcc pkg-config libxml2-dev curl
    
  2. מורידים ומתקינים את Go:

    GO_VERSION="1.25.0"
    curl -fsSL \
      "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
      -o go.tar.gz
    sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go.tar.gz
    rm go.tar.gz
    export PATH=/usr/local/go/bin:$PATH
    
  3. משכפלים את המאגר ומקמפלים את הקובץ הבינארי nvattest:

    git clone https://github.com/google/go-nvattest-tools.git
    cd go-nvattest-tools
    go build -o nvattest ./cmd/nvattest
    

אימות של מכשיר GPU מקומי

אימות מקומי של מכשיר GPU מאפשר לכם לבצע את תהליך האימות ישירות במכונת ה-VM שלכם ולראות את התוצאות באופן מקומי כדי לאמת את השלמות של ה-GPU.

כדי לבצע אימות של מכשיר GPU מקומי בזמן אמת, מריצים את הכלי nvattest ישירות במכונת ה-VM החסויה:

sudo ./nvattest attest --device=gpu

אופציונלי: אפשר להפריד בין איסוף ההוכחות לבין האימות:

  1. יוצרים ערך חד-פעמי הקסדצימלי באורך 32 בייט ואוספים את ראיות האימות:

    NONCE=$(openssl rand -hex 32)
    sudo ./nvattest collect-evidence \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json
    
  2. אימות הראיות שנאספו באופן מקומי:

    ./nvattest attest \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json