עדכון של אישורי KEK ו-db

במסמך הזה מוסבר איך לעדכן את המשתנים Allowed Signature Database ‏(db) ו-Key Exchange Key ‏ (KEK) במכונות וירטואליות שיצרתם לפני 7 בנובמבר 2025, כדי שהמכונות יסמכו על אישורים מעודכנים של אתחול מאובטח.

עדכון KEK ו-db הוא חלופה ללקוחות שלא יוצרים מחדש את מכונות החישוב המושפעות שלהם.

לפני שמתחילים

לפני שמעדכנים את אישורי ה-KEK וה-db של Secure Boot, צריך לבדוק אם המופעים דורשים עדכון ולהשלים את ההכנות הבאות כדי למנוע בעיות אפשריות בהפעלה או בפענוח:

  • אימות הדרישות המוקדמות: מוודאים שהמופעים שלכם דורשים עדכון של אישורי אתחול מאובטח.
  • תקינות נתונים ושחזור מפתחות: מאתרים את מפתחות השחזור של הצפנת הדיסק (BitLocker או LUKS FDE) ומגבים נתונים קריטיים. שינוי משתני אבטחה עלול לנעול את הגישה לדיסקים אם ההגדרה שגויה.
  • המלצה לגבי רצף העדכונים ב-Linux: במקרים של מופעי Linux, מומלץ לעדכן את המשתנה db UEFI ל-Microsoft UEFI CA 2023 לפני שמעדכנים ל-shims חדשים. הסדר הזה עוזר למנוע תרחיש פוטנציאלי של אי-התאמה של רשות אישורים אם מוחל עדכון של shim שנחתם רק באמצעות Microsoft UEFI CA 2023, בזמן שמסד הנתונים מכיל רק את האישור משנת 2011.
  • הגדרות מותאמות אישית של PK או KEK: אם המופע שלכם משתמש במשתני Secure Boot מותאמים אישית (כמו PK או KEK מותאמים אישית), או אם אתם מריצים מערכת מחוץ ל-Compute Engine, קובצי העדכון הרגילים (DBUpdate3P2023.bin או kek2023update.bin) שמופיעים במסמך הזה לא יחולו ישירות. קובצי העדכון של קושחת UEFI צריכים להיות חתומים על ידי המפתח הפרטי של KEK או PK שרשומים במערכת, ו-kek2023update.bin חתום באופן ספציפי על ידי PK ברירת המחדל של Compute Engine. אם אתם משתמשים במפתחות בהתאמה אישית, אתם צריכים לחתום על קובצי העדכון הבינאריים באמצעות המפתחות הפרטיים שלכם או לנהל את העדכונים דרך רשות האישורים המותאמת אישית שלכם. מידע נוסף מופיע במאמר פתרון בעיות בעדכון מפתח KEK.
  • ‫Cloud de Confiance by S3NS מכשירי Backup and DR: אלה מכשירים מנוהלים. אתם לא צריכים לעדכן ידנית את האישורים של Secure Boot במכשירי Cloud de Confiance by S3NS האלה.כל העדכונים מתבצעים באופן אוטומטי.

עדכון של מסד הנתונים ומפתח הצפנה ב-Linux

כדי לעדכן את מסד הנתונים של החתימות המותרות (db) ואת מפתח החלפת המפתחות (KEK), בוחרים את האפשרות שמתאימה למערכת ההפעלה שלכם:

‫Debian או Ubuntu

אפשר לעדכן את האישורים של האתחול המאובטח ב-Debian או ב-Ubuntu באמצעות fwupd,‏ efitools או sbsigntool.

מומלץ להשתמש ב-fwupd כדי לעדכן את האישורים. כדי להשתמש בשיטה הזו, נדרשת גרסה fwupdmgr ‏2.0.10 ומעלה. כדי לאמת את הגרסה, מריצים את הפקודה sudo fwupdmgr --version.

מריצים את הפקודות הבאות:

sudo fwupdmgr refresh
sudo fwupdmgr update 5bc922b7bd1adb5b6f99592611404036bd9f42d0
sudo fwupdmgr update b7a1d3d90faa1f6275d9a98da4fb3be7118e61c7

אפשרות 2: עדכון באמצעות efitools

כדי לעדכן את המשתנים db ו-KEK באמצעות חבילת efitools, מבצעים את הפעולות הבאות:

עדכון מסד הנתונים
  1. מורידים את הקובץ הבינארי של העדכון של מסד הנתונים של החתימות המותרות (db) מ-Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
    
  2. מעדכנים את המשתנה db:

     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo efi-updatevar -a -f DBUpdate3P2023.bin db
     sudo chattr +i /sys/firmware/efi/efivars/db-*
    
עדכון KEK
  1. מורידים את הארכיון .cab שמכיל את עדכון האישור:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
    
  2. מתקינים את כלי השירות gcab:

     sudo apt update && sudo apt install gcab -y
    
  3. מחולצים את הארכיון ומוודאים שגיבוב SHA-256 של קובץ kek2023update.bin שחולץ תואם ל-99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     sha256sum kek2023update.bin
    
  4. מחילים את העדכון:

     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo efi-updatevar -a -f kek2023update.bin KEK
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
    

אפשרות 3: עדכון באמצעות sbsigntool

כדי לעדכן את המשתנים db ו-KEK באמצעות כלי השירות sbkeysync מהחבילה sbsigntool, צריך להתקין את sbsigntool ואת gcab:

sudo apt update && sudo apt install sbsigntool gcab -y
עדכון מסד הנתונים
  1. מורידים את קובץ העדכון הבינארי של db מ-Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
    
  2. מסנכרנים את המפתח:

     sudo mkdir -p /etc/secureboot/keys/db
     sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/
     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/db-*
    
עדכון KEK
  1. מורידים ומחלצים את העדכון של אישור ה-KEK:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
    
  2. מוודאים שגיבוב SHA-256 של קובץ kek2023update.bin שחולץ תואם ל-99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     sha256sum kek2023update.bin
    
  3. מסנכרנים את המפתח:

     sudo mkdir -p /etc/secureboot/keys/KEK
     sudo cp kek2023update.bin /etc/secureboot/keys/KEK/
     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
    

‫Red Hat Enterprise Linux‏ (RHEL)

אפשר לעדכן את אישורי ההפעלה המאובטחת ב-RHEL באמצעות sbsigntools. יכול להיות שבתמונות RHEL יש גרסה ישנה יותר של fwupd שלא תומכת בעדכוני אישורים של UEFI מחוץ לקופסה.

כדי לעדכן את המשתנים db ו-KEK באמצעות כלי השירות sbkeysync מהחבילה sbsigntools:

  1. מפעילים את מאגר EPEL ומתקינים את sbsigntools ו-cabextract:

    sudo dnf install epel-release -y
    sudo dnf install sbsigntools cabextract -y
    
  2. כדי לעדכן את המשתנה db:

    1. מורידים את הקובץ הבינארי של העדכון של מסד הנתונים של החתימות המותרות (db) מ-Microsoft:

      wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
      
    2. מסנכרנים את המפתח:

      sudo mkdir -p /etc/secureboot/keys/db
      sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/
      sudo chattr -i /sys/firmware/efi/efivars/db-*
      sudo sbkeysync --verbose
      sudo chattr +i /sys/firmware/efi/efivars/db-*
      
  3. כדי לעדכן את המשתנה KEK:

    1. מורידים ומחלצים את העדכון של אישור ה-KEK:

      wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
      cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
      
    2. מוודאים שגיבוב SHA-256 של קובץ kek2023update.bin שחולץ תואם ל-99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

      sha256sum kek2023update.bin
      
    3. מסנכרנים את המפתח:

      sudo mkdir -p /etc/secureboot/keys/KEK
      sudo cp kek2023update.bin /etc/secureboot/keys/KEK/
      sudo chattr -i /sys/firmware/efi/efivars/KEK-*
      sudo sbkeysync --verbose
      sudo chattr +i /sys/firmware/efi/efivars/KEK-*
      

‫SUSE Linux Enterprise Server‏ (SLES)

אפשר לעדכן את אישורי האתחול המאובטח ב-SLES או ב-openSUSE באמצעות sbsigntools או efitools. יכול להיות שבתמונות SLES יש גרסה ישנה יותר של fwupd או שהן לא מספקות אותה בכלל.

אפשרות 1: עדכון באמצעות sbsigntools

כדי לעדכן את המשתנים db ו-KEK באמצעות כלי השירות sbkeysync מהחבילה sbsigntools, מפעילים את SUSE Package Hub ומתקינים את sbsigntools ו-cabextract:

sudo SUSEConnect -p PackageHub/15.5/x86_64
sudo zypper install sbsigntools cabextract -y
עדכון מסד הנתונים
  1. מורידים את קובץ העדכון הבינארי של db מ-Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
     ```
    
  2. מסנכרנים את המפתח:

     sudo mkdir -p /etc/secureboot/keys/db
     sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/
     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/db-*
     ```
    
עדכון KEK
  1. מורידים ומחלצים את העדכון של אישור ה-KEK:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     ```
    
  2. מוודאים שגיבוב SHA-256 של קובץ kek2023update.bin שחולץ תואם ל-99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     sha256sum kek2023update.bin
     ```
    
  3. מסנכרנים את המפתח:

     sudo mkdir -p /etc/secureboot/keys/KEK
     sudo cp kek2023update.bin /etc/secureboot/keys/KEK/
     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo sbkeysync --verbose
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
     ```
    

אפשרות 2: עדכון באמצעות efitools

כדי לעדכן את המשתנים db ו-KEK באמצעות חבילת efitools, מבצעים את הפעולות הבאות:

עדכון מסד הנתונים
  1. מורידים את הקובץ הבינארי של העדכון של מסד הנתונים של החתימות המותרות (db) מ-Microsoft:

     wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin
     ```
    
  2. מעדכנים את המשתנה db:

     sudo chattr -i /sys/firmware/efi/efivars/db-*
     sudo efi-updatevar -a -f DBUpdate3P2023.bin db
     sudo chattr +i /sys/firmware/efi/efivars/db-*
     ```
    
עדכון KEK
  1. מורידים את הארכיון .cab שמכיל את עדכון האישור:

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     ```
    
  2. מפעילים את SUSE Package Hub ומתקינים את כלי השירות gcab:

     sudo SUSEConnect -p PackageHub/15.5/x86_64
     sudo zypper install gcab -y
     ```
    Note: Replace `15.5` with your SLES version if different.
    
  3. מחולצים את הארכיון ומוודאים שגיבוב SHA-256 של קובץ kek2023update.bin שחולץ תואם ל-99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf:

     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     sha256sum kek2023update.bin
     ```
    
  4. מחילים את העדכון:

     sudo chattr -i /sys/firmware/efi/efivars/KEK-*
     sudo efi-updatevar -a -f kek2023update.bin KEK
     sudo chattr +i /sys/firmware/efi/efivars/KEK-*
     ```
    

עדכון מסד הנתונים ומפתח הצפנה ב-Windows

אם אתם לא משתמשים ב-Secure Boot במופע הזה או לא מתכננים להשתמש בו, אתם לא צריכים להחיל את עדכוני האישורים האלה. מערכות הפעלה של Windows בדרך כלל מתעלמות מניסיונות להחיל את עדכוני האישורים האלה של אתחול מאובטח אם האתחול המאובטח לא מופעל, כי העדכון לא נחוץ.

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

במופעי Windows, הגדרות הרישום ומשימות מתוזמנות מפעילות עדכונים בגרסאות תואמות:

  1. מוודאים שעדכונים חודשיים מהזמן האחרון הוחלו על מופעי Windows.
  2. כאדמינים ב-PowerShell, מריצים את הפקודה:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name "AvailableUpdates" -Value 0x5944
    Start-ScheduledTask -TaskName "\Microsoft\Windows\PI\Secure-Boot-Update"
    
  3. מפעילים מחדש את המופע כדי לאפשר פעולות על משתני קושחה. בסביבות מסוימות נדרשות שתי הפעלות מחדש אם תכונות האבטחה של הוירטואליזציה פעילות.

אימות העדכון

אחרי שמחילים את העדכונים באמצעות fwupd,‏ efitools,‏ sbsigntool או PowerShell, צריך לוודא שהאישורים משנת 2023 נמצאים במשתני ה-UEFI של המופע.

Linux

לא משנה באיזה כלי משתמשים כדי להחיל את העדכון, האישורים נכתבים למשתני ה-UEFI NVRAM של המופע. אפשר לאמת אותם ישירות באמצעות mokutil (מומלץ) או efi-readvar:

  • באמצעות mokutil (מומלץ): mokutil מותקן כברירת מחדל ברוב הפצות Linux.

    sudo mokutil --kek | grep "KEK 2K CA 2023"
    sudo mokutil --db | grep "UEFI CA 2023"
    
  • באמצעות efi-readvar: אם efitools מותקן, מריצים את הפקודה:

    sudo efi-readvar -v KEK | grep "KEK 2K CA 2023"
    sudo efi-readvar -v db | grep "UEFI CA 2023"
    

אם גם המשתנה KEK וגם המשתנה db מציגים את האישורים של 2023, העדכון הוחל בהצלחה ולא נדרשת פעולה נוספת.

Windows

בשורת פקודה של PowerShell עם הרשאות אדמין, מריצים את הפקודה:

# Check for Microsoft KEK 2K CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI KEK).bytes) -match 'Microsoft Corporation KEK 2K CA 2023'

# Check for UEFI CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match 'UEFI CA 2023'

# Confirm general Secure Boot enrollment state
Confirm-SecureBootUEFI

פתרון בעיות בעדכון מפתח KEK

כשמעדכנים את המשתנה KEK ב-Linux, יכול להיות שהעדכון של db (DBUpdate3P2023.bin) יצליח, אבל העדכון של KEK (kek2023update.bin) ייכשל עם אחת מהשגיאות הבאות:

  • כשמשתמשים ב-sbkeysync:

    Inserting key update /etc/secureboot/keys/KEK/kek2023update.bin into KEK
    Error writing key update: Invalid argument
    Error syncing keystore file /etc/secureboot/keys/KEK/kek2023update.bin
    
  • כשמשתמשים ב-efi-updatevar:

    Cannot write to KEK, wrong filesystem permissions
    

מטרה

ב-UEFI Secure Boot, db עדכונים (DBUpdate3P2023.bin) נחתמים על ידי Microsoft Corporation KEK CA 2011, שרשום כברירת מחדל ברוב מערכות UEFI Secure Boot. עם זאת, עדכוני KEK חייבים להיות חתומים על ידי מפתח הפלטפורמה (PK) שרשום בקושחה של המערכת. אם הקושחה דוחה את החתימה ב-kek2023update.bin או מונעת כתיבה למשתנה UEFI, ליבת Linux מחזירה שגיאה.

השגיאה הזו מתרחשת בגלל אחת מהסיבות הבאות:

  • המשתנה KEK UEFI עדיין מסומן כבלתי ניתן לשינוי: הפקודה chattr -i לא הופעלה לפני הניסיון לבצע את פעולת הכתיבה.
  • המכונה משתמשת ב-PK בהתאמה אישית: ארכיון 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab מכיל קובץ בינארי kek2023update.bin שחתום באופן בלעדי על ידי PK ברירת המחדל של Compute Engine. אם במכונה של Compute Engine או באימג' מותאם אישית רשום PK מותאם אישית, הקושחה דוחה את kek2023update.bin.
  • המערכת היא לא מופע של Compute Engine: אם מריצים את הפקודות האלה על חומרה פיזית או על מכונה וירטואלית מחוץ ל-Compute Engine, ה-PK של המערכת שייך ליצרן החומרה או לספק ההיפר-ויזורים ולא ל-Compute Engine, ולכן הקושחה דוחה את kek2023update.bin.

רזולוציה

כדי לאבחן ולפתור את השגיאה, צריך לבצע את הפעולות הבאות:

  1. חשוב להקפיד להסיר את המאפיין immutable מהמשתנה KEK מיד לפני שמריצים את הפקודה sbkeysync או efi-updatevar:

    sudo chattr -i /sys/firmware/efi/efivars/KEK-*
    
  2. בודקים את PK שרשום במופע:

    sudo mokutil --pk
    
  3. בהתאם לפלט של sudo mokutil --pk, מבצעים אחת מהפעולות הבאות:

    • אם המכונה משתמשת ב-PK מותאם אישית: חותמים על קובץ הבינארי של העדכון KEK באמצעות המפתח הפרטי שמתאים ל-PK המותאם אישית, או יוצרים מחדש את מכונת ה-Compute מתוך תמונת מצב של דיסק באמצעות תמונה שמסתמכת על אישורי אתחול מאובטח של Compute Engine שמוגדרים כברירת מחדל.
    • אם מעדכנים מכונה שאינה Compute Engine: מסירים את /etc/secureboot/keys/KEK/kek2023update.bin ומקבלים את העדכון KEK מיצרן החומרה או מספק הפלטפורמה (לדוגמה, על ידי הפעלת sudo fwupdmgr update אם הספק תומך בכך).