מכשיר Google Distributed Cloud (GDC) air-gapped משתמש ב-Linux Unified Key Setup (LUKS) כדי להצפין נתונים בדיסקים כשלא מסופק HSM חיצוני. מערך RAID5 נוצר מעל 4 כונני הנתונים, ומכשיר LUKS יחיד נוצר מעל מערך RAID5. מפתח ה-KEK של LUKS נוצר באופן אקראי ואפשר להחליף אותו.
במסמך הזה מתוארים השלבים להחלפת מפתח ה-KEK של LUKS, שצריך לבצע במקרים הבאים:
- רוטציה של מפתח הצפנה (KEK) שמתוזמנת באופן קבוע.
- חשיפת KEK.
לפני שמתחילים
כך עושים את זה:
- מוודאים שאתם עומדים בדרישות המוקדמות לשימוש במחשב נייד.
- מוודאים שאפשר להיכנס לשלושת הצמתים כמשתמש Root.
ביצוע רוטציה למפתח KEK
מערכת מכשירי Google Distributed Cloud (GDC) עם בידוד פיזי משתמשת באשכול NetApp ONTAP Select (OTS) עם שני צמתים שנפרס בצמתים bm01 ו-bm02 (בדרך כלל ללא יחידות GPU). לכל צומת יש 4 כונני נתונים ייעודיים שמוגדרים כמערך RAID5 לשיפור יתירות. מכשיר מוצפן יחיד של LUKS מונח על כל מערך RAID5 כדי להבטיח את אבטחת מידע.
מפתח ה-KEK של הצפנת LUKS מאוחסן בדיסק האתחול שנמצא ב-/etc/luks. כדי לשמור על האבטחה בכל האשכול, כשמבצעים רוטציה של מפתח הצפנה של LUKS, צריך לבצע רוטציה של הצפנת LUKS בשני הצמתים. כדי לבצע רוטציה רגילה של KEK או אם ה-KEK נחשף, חוזרים על השלבים הבאים ב-bm01 וב-bm02:
נכנסים לצומת כמשתמש root.
מוודאים שמכשיר ה-RAID קיים ומקבלים את
RAID_DEVICEהנתיב המלא.ll /dev/mdמוודאים שקובץ מפתח ה-LUKS הישן קיים ומקבלים את
OLD_KEYהנתיב המלא.ll /etc/luksמוסיפים את ה-KEK הישן למשבצת מפתח 1, כך שגם משבצת מפתח 0 וגם משבצת מפתח 1 יכילו את אותו KEK.
cryptsetup luksAddKey RAID_DEVICE OLD_KEY --key-slot 1 --key-file OLD_KEYמחליפים את
RAID_DEVICEואתOLD_KEYבנתיבים מהשלבים הקודמים.מסירים את ה-KEK הישן מחריץ המפתח 0.
cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEYיוצרים KEK חדש ושומרים אותו בקובץ המפתח החדש
NEW_KEY.dd if=/dev/urandom of=NEW_KEY bs=512 count=1 chmod u=r,go-rwx NEW_KEYמחליפים את
NEW_KEYבנתיב המלא לקובץ המפתח החדש.מוסיפים את ה-KEK החדש למשבצת המפתח 0.
cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEYהגדרה של תצורה קבועה לפתיחה או לסגירה של מכשיר LUKS בזמן הפעלה או כיבוי של המחשב.
DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE) echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttabמסירים את מפתח ההצפנה הישן מחריץ המפתח 1.
cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEYמוודאים שמפתח ה-KEK החדש פועל.
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEYמוודאים שמפתח ה-KEK הישן לא עובד יותר.
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEYמסירים את ה-KEK הישן.
rm OLD_KEY
אם צומת מופעל מחדש לפני שהרוטציה מסתיימת, עדיין אפשר לפתוח את מכשיר ה-LUKS אחרי האתחול. אפשר להמשיך בשלבים אחרי שהצומת חוזר.