מצב המכשיר

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

כשמכשיר מופעל, מנהל האתחול בודק קודם אם המכשיר הוא LOCKED או UNLOCKED. אם המכשיר הוא UNLOCKED, מנהל האתחול מציג למשתמש אזהרה ולאחר מכן ממשיך את האתחול גם אם מערכת ההפעלה שנטענת לא חתומה על ידי Root of Trust.

אם המכשיר הוא LOCKED, תוכנת האתחול עוברת את השלבים שמפורטים בקטע אימות האתחול כדי לאמת את התוכנה של המכשיר. מכשירים עם LOCKED מופעלים רק אם מערכת ההפעלה שנטענת חתומה כראוי על ידי Root of Trust. מידע נוסף זמין במאמר תהליך האתחול.

שינוי המצב של מכשיר

כדי לשנות את המצב של מכשיר, משתמשים בפקודה fastboot flashing [unlock | lock]. כדי להגן על נתוני המשתמשים, כל מעברי המצבים מוחקים את מחיצות הנתונים ומבקשים אישור מהמשתמשים לפני המחיקה של הנתונים.

המעבר מ-UNLOCKED ל-LOCKED צפוי להתרחש כשמשתמש קונה מכשיר פיתוח משומש. כתוצאה מהנעילה של המכשיר, המשתמשים יכולים להיות בטוחים שהוא נמצא במצב שהוגדר על ידי יצרן המכשיר, כל עוד לא מופיעה אזהרה. המעבר מ-LOCKED ל-UNLOCKED צפוי כשמפתח רוצה להשבית את האימות במכשיר למטרות פיתוח.

Root of trust

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

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

Root of trust שניתן להגדרה על ידי משתמשים

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

אם מטמיעים בסיס אמון ברמה הבסיסית שניתן להגדיר על ידי משתמשים, צריך לעשות זאת כך:

  • נדרש אישור פיזי כדי להגדיר או לנקות את שורש האמון שאפשר להגדיר על ידי משתמשים.
  • רק משתמש הקצה יכול להגדיר את עץ ה-Root של האמון שאפשר להגדיר על ידי משתמשים. אי אפשר להגדיר אותו במפעל או בכל שלב ביניים לפני שמשתמש הקצה מקבל את המכשיר.
  • ה-root of trust שהמשתמשים יכולים להגדיר מאוחסן באחסון עם הוכחה לזיהוי פריצה. ניתן לזיהוי מניפולציה: אפשר לזהות אם מערכת Android פגעה בנתונים, למשל אם הם נמחקו או שונו.
  • אם מוגדר עוגן אמינות ברמה הבסיסית (root of trust) שניתן להגדרה על ידי המשתמש, המכשיר אמור לאפשר את האתחול של גרסה של Android שחתמתה על ידי עוגן האמינות המובנה או על ידי עוגן האמינות ברמה הבסיסית שניתן להגדרה על ידי המשתמש.
  • בכל פעם שהמכשיר מופעל באמצעות Root of Trust שהמשתמש מגדיר, המשתמש צריך לקבל הודעה על כך שהמכשיר טוען גרסה מותאמת אישית של Android. לדוגמה, מסכי אזהרה, ראו LOCKED מכשירי LOCKED עם קבוצת מפתחות בהתאמה אישית.

אחת מהדרכים להטמיע Root of Trust שאפשר להגדיר על ידי משתמשים היא ליצור מחיצה וירטואלית שאפשר להפעיל או לנקות רק כשהמכשיר נמצא במצב UNLOCKED. במכשירי Google Pixel 2 נעשה שימוש בגישה הזו, והמחיצה הווירטואלית נקראת avb_custom_key. הפורמט של הנתונים במחיצה הזו הוא הפלט של הפקודה avbtool extract_public_key. דוגמה להגדרת Root of Trust שאפשר להגדיר על ידי משתמשים:

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

אפשר לנקות את עץ האמון שנקבע על ידי המשתמש באמצעות הפקודה:

fastboot erase avb_custom_key