מצב המכשיר

מצב המכשיר מציין עד כמה תוכנה יכולה להבהב למכשיר באופן חופשי והאם לבצע אימות. מצבי המכשיר הם 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 שניתן להגדיר על ידי המשתמש

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

אם מוטמע Root of Trust שניתן להגדיר על ידי המשתמש, יש לעשות זאת באופן כזה ש:

  • נדרש אישור פיזי כדי להגדיר או לנקות את השורש שניתן להגדרה על ידי המשתמש אמון.
  • רק משתמש הקצה יכול להגדיר את ה-Root of Trust שניתן להגדיר על ידי המשתמש. אסור מוגדרות במפעל או בכל נקודת ביניים לפני שמשתמש הקצה מקבל במכשיר.
  • ה-Root of Trust שניתן להגדיר על ידי המשתמש מאוחסן באחסון שמאפשר התעסקות במכשיר. המשמעות של Tamper-evident היא שאפשר לזהות אם ב-Android יש שיבוש בנתונים, לדוגמה, אם הם הוחלפו או שונו.
  • אם מוגדר Root of Trust שניתן להגדיר על ידי המשתמש, המכשיר צריך לאפשר גרסה של Android שנחתמה באמצעות Root of Trust המובנה או באמצעות ה-settable של המשתמש Root of Trust לאתחול.
  • בכל פעם שהמכשיר מופעל באמצעות Root of Trust שניתן להגדרה על ידי המשתמש, צריך לקבל הודעה שהמכשיר טוען גרסה מותאמת אישית של Android. עבור למשל, מסכי אזהרה, 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

ניתן להסדיר את ה-Root of Trust שניתן להגדיר על ידי המשתמש:

fastboot erase avb_custom_key