Secure boot
Secure Boot (בתרגום חופשי: אתחול מאובטח) הוא תהליך המלווה את עליית מערכת ההפעלה במחשב, ומוודא את תקינותה. התהליך מוגדר כחלק ממפרט ה-UEFI[1], ומשלב שימוש במפתחות קריפטוגרפיים הנצרבים על ידי יצרן המחשב, ומשמשים לבדיקת מנהל האתחול בטרם ריצתו.
רקע
חומרת המחשב איננה יכולה לפנות למערכת ההפעלה השמורה בדיסק ולהפעיל אותה ישירות. ישנו צורך בתוכנה בסיסית שתהיה צרובה על קושחת המכשיר (firmware) שתנהל את העלאת מערכת ההפעלה. תוכנה זו נקראת מנהל האתחול (boot loader).
מנהל האתחול המותקן בקושחה, כדוגמת ה-BIOS או ה-UEFI, מעלה בדרך כלל מנהל אתחול משני, שיהיה אחראי על העלאת מערכת ההפעלה (מנהל אתחול משני לדוגמה הנפוץ במערכות לינוקס הוא GRUB). במקרה של ריבוי מערכות הפעלה יאפשר מנהל האתחול המשני למשתמש לבחור במערכת הרצויה לו. בניגוד למנהל האתחול הצרוב בקושחה, מנהל האתחול המשני שמור בזיכרון, מה שהופך אותו לנגיש יותר ונתון יותר לשינויים.
תהליך זה חשוף לפגיעת נוזקות שונות, כגון Rootkit, המשתלבות בתהליך ומחליפות את מנהל האתחול. אם נוזקה כלשהי הצליחה להכניס קוד זדוני לתהליך האתחול, לא יהיה ניתן לגלות אותה באמצעות אנטי וירוסים הרצים על מערכת ההפעלה, מאחר שהנוזקה עצמה היא זו שמריצה את מערכת ההפעלה.
תהליך ה-Secure boot
מטרתו של תהליך secure boot היא לאבטח את תהליך האתחול. באמצעות מפתחות קריפטוגרפיים הצרובים במנהל האתחול של הקושחה, מנהל האתחול מוודא שרק תוכנה שנחתמה על ידי רשות אמון (Certificate Authority) תופעל במהלך האתחול. מנהל האתחול המשני, בתורו, מוודא בצורה דומה את תקינותה ושלמותה של מערכת ההפעלה, כדי לוודא שלא הוזרק אליה קוד זדוני.
תהליך זה יוצר את מה שמכונה שרשרת האמון (chain of trust). הקושחה, שנחתמה על ידי היצרן, משמשת כבסיס שרשרת האמון, וכל חוליה בשרשרת – מנהל אתחול – מוודאת את אמינותה של החוליה הבאה, עד לעלייה מלאה של מערכת ההפעלה.
לרוב, ניתן לשלוט על הגדרות התהליך בזמן האתחול, על ידי התערבות המשתמש. באמצעות כניסה להגדרות ה-UEFI בזמן האתחול, המשתמש יכול לבטל את אכיפת החתימה הדיגיטלית בתהליך ה-Secure boot, ולאפשר לכל מערכת הפעלה לרוץ על המחשב. מנהלי אתחול מסוימים, כגון Shim, מאפשרים למשתמש להוסיף למאגר המפתחות המאושרים לשימוש מפתחות קריפטוגרפיים משל עצמו.
שימוש במערכות קוד פתוח
חברת מיקרוסופט משמשת כרשות התעודות ברוב מוחלט של יצרני החומרה למחשבים האישיים התומכים בתקן UEFI[2]. משמעותה של עובדה זו היא שמרבית המחשבים האישיים הזמינים לצרכנים, ומגיעים עם מערכת הפעלה חלונות מותקנת, יכולים להריץ אך ורק מערכות הפעלה המאושרות על ידי חברת מיקרוסופט, וכאלה שנחתמו על ידה בלבד. דבר זה מגביל את יכולתם של יצרני ומשתמשי מערכות הפעלה מבוססות קוד פתוח, כדוגמת לינוקס, להשתמש כרצונם במחשבים הנקנים על ידם.
פתרון אחד, שמציעה חברת מיקרוסופט, הוא להגיש את מערכת ההפעלה, מנהל האתחול, או ליבת מערכת ההפעלה לאישור וחתימה על ידי מיקרוסופט[3]. לאחר שנחתמה על ידי חברת מיקרוסופט המתפקדת כרשות התעודות, ניתן יהיה להפעיל את מערכת ההפעלה.
מאחר שפתרון זה מגביל מאוד את קהילת הקוד הפתוח, וכובל אותה למעשה לאישורה ולחתימתה של חברה פרטית, הוכנס Shim לשימוש כפתרון גמיש יותר[4]. Shim הוא מנהל אתחול מינימליסטי שמאפשר למשתמש ליצור מאגר אישי של מפתחות מאושרים לשימוש. Shim עצמו נחתם על ידי חברת מיקרוסופט, ולכן יכול לרוץ על מחשבים אישיים ללא הפרעה, אך הוא מחזיק מאגר מפתחות עצמאי – MOK (Machine Owner Keys), המנוהל על ידי המשתמש או על ידי קהילת הקוד הפתוח. ה-MOK מאפשר למפתחי הקוד הפתוח לחתום את מערכות ההפעלה שלהם ולהפיץ אותן למשתמשים. אצל המשתמש, יוודא Shim שמקור קובצי ההפעלה הוא בקהילת מפתחי מערכת ההפעלה.
בעת השימוש ב-Shim, מנהל האתחול שבקושחה מאתחל את Shim על פי מפתח ההצפנה של מיקרוסופט. Shim מפעיל את מנהל האתחול של הלינוקס (GRUB, לדוגמה) על פי מפתח ההצפנה של קהילת הקוד הפתוח, ומנהל האתחול של לינוקס מעלה את ליבת מערכת ההפעלה. המשתמש עצמו יכול להוסיף מפתחות נוספים, אם ברצונו להריץ מערכות הפעלה אחרות או מקוריות.
קישורים חיצוניים
- UEFI Secure Boot Customization – מסמך של ה-NSA המתאר את תהליך ה-secure boot וכיצד להתאים אותו למערכות עצמאיות.
הערות שוליים
- ^ UEFI Forum, UEFI.2.3.1 Errata C specification, UEFI.org
- ^ Michael Niehaus, Who controls what can run?, oofhours.com
- ^ UPDATED: UEFI Signing Requirements, TECHCOMMUNITY.MICROSOFT.COM, 2021-01-28 (באנגלית)
- ^ Eva-Katharina Kunst, J¸rgen Quade, Better Boots » Linux Magazine, Linux Magazine (באנגלית אמריקאית)
34915788Secure boot