הם התרגומים של שני פוסטים שג'יימס בומטלי לקח בבלוג שלו. הפוסט הראשון בוצע ב -1 בפברואר ונקרא "LCA2013 וארגון מחדש של האתחול המאובטח"
הייתי שקט לזמן מה, אז הגיע הזמן לעדכון על מה שקורה עם טוען האתחול המאובטח של קרן לינוקס (במיוחד לאור העובדה שהוא הוצג בכנס LCA2013). ( קישור לשקופיות )
מהות הבעיה היא ש-GregKH (גרג קראה-הרטמן, מפתח ליבות) גילה בתחילת דצמבר ש-Pre-BootLoader המוצע לא יעבוד בצורתו הנוכחית עם Gummiboot. זה היה מייאש מכיוון שמשמעותו שהוא לא ממלא את משימת קרן לינוקס לאפשר את כל טועי האתחול. הסיבה, לאחר בדיקה, הייתה פשוטה: Gummiboot נוצר כדי להדגים שניתן ליצור טוען אתחול קטן ופשוט שמנצל את כל השירותים הזמינים בפלטפורמת UEFI במקום להיות טוען קישורים מסיבי כמו GRUB. לרוע המזל, משמעות הדבר היא שהוא מאתחל ליבות באמצעות הפונקציה BootServices->LoadImage(), מה שאומר שהליבה שיש לאתחל צריכה לעבור את בדיקות האתחול המאובטח בפלטפורמת UEFI. במקור, Pre-BootLoader, כמו shim (טוען האתחול של מת'יו גארט), נכתב להשתמש בטעינת קישורים PE/Coff כדי לעקוף את בדיקות האתחול המאובטח. למרבה הצער, משמעות הדבר היא שכל דבר שמופעל על ידי ה-Pre-BootLoader חייב להשתמש גם בטעינת קישורים כדי להתגבר על בדיקות אתחול מאובטח על כל דבר שהוא רוצה לטעון, ולכן Gummiboot, שאינו טוען קישורים במכוון, לא יעבוד תחת סכמה זו.
אז נאלצתי לארגן מחדש ולכתוב מחדש: הבעיה עברה כעת מ"איך ליצור מטעין קישורים שנחתם על ידי מיקרוסופט שמציית למדיניות שלהם "ל"איך לאפשר לכל ילדי מטעין האתחול להשתמש בפונקציה BootServices-> LoadImage () של דרך לציית למדיניות שלהם. למרבה המזל, יש דרך ליירט את תשתית החתימה של פלטפורמת UEFI על ידי התקנת פרוטוקול אבטחת אדריכלות משלך. למרבה הצער, מפרט אתחול הפלטפורמה אינו למעשה חלק ממפרט ה- UEFI, אך למרבה המזל הוא מיושם על ידי כל מערכת Windows 8 שתוכלו למצוא. הארכיטקטורה החדשה מיירטת את הפרוטוקול ומוסיפה בדיקת אבטחה משלה. עם זאת, ישנה בעיה שנייה: בעודנו נמצאים בקריאה חוזרת לפרוטוקול אבטחה, אנו לא בהכרח מחזיקים במסך מערכת ה- UEFI, מה שמאפשר לחלוטין לבצע בדיקת משתמשים כדי לאשר את ביצוע הבינארי. למרבה המזל, יש דרך שאינה אינטראקטיבית לעשות זאת והיא מנגנון SUSE Machine Owner Key (MOK). לכן, קרן ה- Linux Pre-BootLoader התפתחה כעת לשימוש במשתני MOK סטנדרטיים לאחסון חשיפות בינאריות מורשות.
התוצאה של כל זה היא שעכשיו תוכלו להשתמש ב- Pre-BootLoader עם Gummiboot (בדיוק כמו שזה נעשה בהדגמה ב- LCA2013). כדי לאתחל, עליך להוסיף 2 hashes: אחד עבור ה- Gummiboot עצמו והשני עבור הליבה שברצונך לאתחל, אך למעשה זה דבר טוב מכיוון שעכשיו יש לך מדיניות אבטחה אחת השולטת על כל רצף האתחול. ה- Gummiboot עצמו תוקן גם כדי לזהות התרסקות עקב אתחול מאובטח ומציג הודעה שאומרת לך איזה חשיש להירשם.
אעשה פוסט נפרד שיסביר כיצד עובדת האדריכלות החדשה, אך חשבתי שעדיף להסביר מה קרה בחודש שעבר.
ואת הפוסט השני הזה הוא עשה אתמול ומכונה "השיק את מערכת האתחול המאובטח של קרן לינוקס"
כפי שהובטח, הנה מערכת הקרן המאובטחת של Linux Foundation. זה למעשה שוחרר אלינו על ידי מיקרוסופט ב- 6 בפברואר, אבל עם הנסיעות, הכנסים והפגישות לא הספקתי לאמת הכל עד היום. הקבצים הם:
PreLoader.efi (md5sum 4f7a4f566781869d252a09dc84923a82)
HashTool.efi (md5sum 45639d23aa5f2a394b03a65fc732acf2)
צור גם תמונת מיני USB ניתנת לאתחול; (עליך להתקין אותו ב- USB באמצעות dd; לתמונה יש מחיצות GPT, כך שהיא משתמשת בכל הדיסק). יש לה מעטפת EFI בה צריך להיות הליבה ומשתמש בטעינת gummiboot כדי לטעון אותה. תוכלו למצוא אותו כאן (md5sum 7971231d133e41dd667a184c255b599f).כדי להשתמש בתמונת מיני USB, עליך להזין את החשיפות עבור loader.efi (בתיקיה \ EFI \ BOOT) ו- shell.efi (בתיקיית השורש). זה כולל גם עותק של KeyTool.efi, אתה צריך להזין את ה- hash כדי לרוץ.
מה קרה ל- KeyTool.efi? במקור זה יהיה חלק מהערכה החתומה שלנו. עם זאת, במהלך הבדיקה גילתה מיקרוסופט כי עקב באג באחת מפלטפורמות ה- UEFI, ניתן להשתמש בה להסרת מפתח הפלטפורמה באופן תכנותי, מה שיהרוס את מערכת האבטחה של UEFI. עד שנוכל לפתור את זה (יש לנו את הספק הפרטי), הם סירבו לחתום על KeyTool.efi אם כי אתה יכול לאשר זאת על ידי הוספת משתני MOK אם ברצונך להריץ אותו.
ספר לי איך זה הולך כי אני מעוניין לאסוף משוב על מה עובד ומה לא. בפרט, אני מודאג מכך שייתכן שעקיפת פרוטוקול האבטחה לא תפעל בפלטפורמות מסוימות, ולכן אני רוצה לדעת במיוחד אם זה לא עובד עבורן.
מקורות:
http://blog.hansenpartnership.com/lca2013-and-rearchitecting-secure-boot/
http://blog.hansenpartnership.com/linux-foundation-secure-boot-system-released/
החליטו אם אלה חדשות טובות או רעות.