Secure boot

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

לפני הפעלת תוכנה בשרשרת האתחול של המחשב, מתבצעת בדיקה מהימנה על ידי אימות החתימה הדיגיטלית של התוכנה. כדי שיהיה ניתן לסמוך על הבדיקה יש ליצור שרשרת אמון (Chain of Trust). זאת אומרת, שעל התוכנה הבודקת את החתימה להיות מהימנה גם כן - התוכנה המתבצעת לפניה צריכה לבדוק קודם את מהימנותה, וחוזר חלילה. בדיקת המהימנות הראשונה צריכה להתבצע על ידי תוכנה מהימנה הצרובה במערכת המחשב באופן שלא ניתן לשנותה ומתחילה להתבצע ראשונה עם הדלקת מערכת המחשב. תוכנה זו מהווה שורש מהימן (Root Of Trust) והיא מפעילה את מנהל האתחול של מערכת המחשב ובודקת את מהימנותו.

מפרט ה-UEFI מגדיר את UEFI Secure boot. מנגנון זה משמש ליישום אתחול מאובטח במערכות ששרשרת האתחול שלהם מבוססת על המפרט.

== רקע ==
חומרת המחשב איננה יכולה לפנות למערכת ההפעלה השמורה בדיסק ולהפעיל אותה ישירות. ישנו צורך בתוכנה בסיסית שתהיה צרובה במעבד על גבי זיכרון לקריאה בלבד (ROM) תוכנה זה מתחילה להתבצע מיד עם הדלקת המחשב והיא מפעילה את קושחת (firmware) ה"קדם אתחול" (Pre Boot) שצרובה במערכת. במחשב אישי ה"קדם אתחול" הוא בדרך כלל חלק מה-BIOS או UEFI. תוכנה זו עשויה להפעיל יחדות תוכנה נוספות לצורך אתחול ראשוני של החומרה. קושחה זו מפעילה את מנהל האתחול (boot loader) שינהל את העלאת מערכת ההפעלה. למשל, bootmgr במערכות מבוססות חלונות, GRUB בשרתי לינוקס, או U-boot במערכות משובצות מחשב מבוססות לינוקס. לעיתים, מנהל האתחול יפעיל מנהל אתחול משני, שיהיה אחראי על העלאת מערכת ההפעלה.(מקרה של ריבוי מערכות הפעלה במחשב אישי ה-GRUB יאפשר למשתמש לבחור במערכת הרצויה לו ).

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

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

== תהליך ה-Secure boot ==
מטרתו של תהליך secure boot היא לאבטח את תהליך האתחול, באמצעות שימוש בחתימות דיגיטליות המאומתות על ידי המפתחות הצרובים במנהל האתחול של הקושחה. כמו כן, לצורך האימות של תוכנת האתחול הראשונית, יש צורך במפתח ציבורי שלא ניתן לשינוי. באמצעות מפתח זה תאומת החתימה הדיגיטלית של תוכנת האתחול הראשונית אשר תשמש כשורש האמון (root of trust). מפתח זה נצרב במערכת המחשב, בזיכרון שלא ניתן לשינוי, על ידי יצרן מערכת המחשב. מפתח תואם למפתח זה, משמש לחתימת תוכנת האתחול הראשונית באופן דיגיטלי.

מנהל האתחול מוודא שרק תוכנה שנחתמה על ידי רשות אמון (Certificate Authority) תופעל במהלך האתחול. מנהל האתחול המשני, בתורו, מוודא בצורה דומה את תקינותה ושלמותה של מערכת ההפעלה, כדי לוודא שהיא לא מכילה קוד זדוני.

תהליך זה יוצר את מה שמכונה שרשרת האמון (chain of trust). הקושחה, שנחתמה על ידי היצרן, משמשת כבסיס שרשרת האמון, וכל חוליה בשרשרת – מנהל אתחול – מוודאת את אמינותה של החוליה הבאה, עד לעלייה מלאה של מערכת ההפעלה.

לרוב, ניתן לשלוט על הגדרות התהליך בזמן האתחול על ידי התערבות המשתמש. למשל, באמצעות כניסה להגדרות ה-UEFI בזמן האתחול, המשתמש יכול לבטל את אכיפת החתימה הדיגיטלית בתהליך ה-Secure boot, ולאפשר לכל מערכת הפעלה לרוץ על המחשב. מנהלי אתחול מסוימים, כגון Shim, מאפשרים למשתמש להוסיף למאגר המפתחות המאושרים לשימוש מפתחות קריפטוגרפיים משל עצמו.

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

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

מאחר שפתרון זה מגביל מאוד את קהילת הקוד הפתוח, וכובל אותה למעשה לאישורה ולחתימתה של חברה פרטית, הוכנס Shim לשימוש כפתרון גמיש יותר. Shim הוא מנהל אתחול מינימליסטי שמאפשר למשתמש ליצור מאגר אישי של מפתחות מאושרים לשימוש. Shim עצמו נחתם על ידי חברת מיקרוסופט, ולכן יכול לרוץ על מחשבים אישיים ללא הפרעה, אך הוא מחזיק מאגר מפתחות עצמאי – MOK (Machine Owner Keys), המנוהל על ידי המשתמש או על ידי קהילת הקוד הפתוח. ה-MOK מאפשר למפתחי הקוד הפתוח לחתום את מערכות ההפעלה שלהם ולהפיץ אותן למשתמשים. אצל המשתמש, יוודא Shim שמקור קובצי ההפעלה הוא בקהילת מפתחי מערכת ההפעלה.

בעת השימוש ב-Shim, מנהל האתחול שבקושחה מאתחל את Shim על פי מפתח ההצפנה של מיקרוסופט. Shim מפעיל את מנהל האתחול של הלינוקס (GRUB, לדוגמה) על פי מפתח ההצפנה של קהילת הקוד הפתוח, ומנהל האתחול של לינוקס מעלה את ליבת מערכת ההפעלה. המשתמש עצמו יכול להוסיף מפתחות נוספים, אם ברצונו להריץ מערכות הפעלה אחרות או מקוריות.

== קישורים חיצוניים ==
* [https://media.defense.gov/2020/Sep/15/2002497594/-1/-1/0/CTR-UEFI-Secure-Boot-Customization-UOO168873-20.PDF UEFI Secure Boot Customization] – מסמך של ה-NSA המתאר את תהליך ה-secure boot וכיצד להתאים אותו למערכות עצמאיות.

== הערות שוליים ==

קטגוריה:מונחים בתוכנה