תרחישים לדוגמה

מסמך זה מכיל מקרי שימוש נפוצים עבור AVF.

קומפילציה מבודדת

כמובלעת מאובטחת בתוכנה, VM מוגן מספק סביבה בטוחה להידור קוד רגיש לאבטחה. סביבה זו מאפשרת להעביר את הקומפילציה של bootclasspath ו-JARs של שרת המערכת (מופעל על ידי עדכון APEX) מאתחול מוקדם לפני אתחול מחדש, ומקטינה משמעותית את זמן האתחול לאחר עדכון APEX.

היישום הוא ב- com.android.compos APEX. רכיב זה הוא אופציונלי וניתן לכלול אותו באמצעות makefile .

קומפילציה מבודדת

איור 1. קומפילציה של JARs על עדכוני Mainline

מטרת האבטחה היא להרכיב קלט מאומת בכנות ולהפיק את הפלט במנותק; אנדרואיד כלקוח לא מהימן לא יכול לשנות את פלט ההידור בשום אופן מלבד לגרום לו להיכשל (כאשר אנדרואיד חוזרת להידור של זמן האתחול).

שירות ההידור ב-VM מייצר חתימה רק אם אין שגיאה במהלך כל ההידור. אנדרואיד יכול לאחזר את המפתח הציבורי מה-VM לצורך אימות חתימה.

המפתח של ה-VM נוצר מפרופיל DICE של ה-VM, המוגדר על ידי ה-APEXs וה-APKs המורכבים על ה-VM, בנוסף לפרמטרים אחרים של VM, כגון יכולת ניפוי באגים.

כדי לקבוע אם המפתח הציבורי אינו מ-VM בלתי צפוי, אנדרואיד מאתחל את ה-VM כדי לקבוע אם המפתח נכון. ה-VM מופעל באתחול מוקדם לאחר כל עדכון APEX.

עם אתחול מאומת של Protected VM, שירות ההידור מריץ רק קוד מאומת. לכן הקוד יכול לקבוע לקבל רק קלטות העומדות בתנאים מסוימים, למשל, קבל קובץ קלט רק כאשר השם שלו וה- fs-verity digest מוגדרים ברשימת היתרים.

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

שלמות קובץ הקלט/פלט מאומתת על ידי ה-VM, כאשר הקבצים מאוחסנים באנדרואיד כשרת קבצים לא מהימן, כדלקמן:

  • יש לאמת את התוכן של קובץ קלט לפני השימוש באמצעות אלגוריתם fs-verity . כדי שקובץ קלט יהיה זמין ב-VM, ה-hash השורש שלו חייב להיות מסופק במיכל (APK) שתורם לפרופיל DICE של ה-VM. עם ה-Root hash המהימן, תוקף לא יכול להתעסק בקלט מבלי שיזוהה.
  • יש לשמור על שלמות קובץ הפלט ב-VM. גם אם קובץ פלט מאוחסן באנדרואיד, במהלך היצירה, השלמות נשמרת עם אותו פורמט עץ fs-verity אך ניתן לעדכן באופן דינמי. ניתן לזהות את קובץ הפלט הסופי עם ה-root hash, המבודד ב-VM. השירות ב-VM מגן על קבצי הפלט באמצעות חתימה.