סקירה כללית על Android Virtualization Framework ‏ (AVF)

Android Virtualization Framework‏ (AVF) מספק סביבות ביצוע מאובטחות ופרטיות לביצוע קוד. AVF מתאים במיוחד לתרחישי שימוש שמתמקדים באבטחה, שבהם נדרשת ערובה חזקה יותר, ואפילו אימות רשמי, לבידוד בהשוואה לאלה שמוצעים על ידי ארגז החול של אפליקציות ב-Android. ב-Android יש הטמעה לדוגמה של כל הרכיבים הדרושים להטמעת AVF. נכון לעכשיו, יש תמיכה ב-AVF רק במכשירי ARM64. איור 1 מציג את הארכיטקטורה של AVF:

ארכיטקטורת AVF

איור 1. ארכיטקטורת AVF

אלה ההגדרות של המונחים החשובים ביותר שמוצגים באיור 1:

apexd ו-zipfuse
חיבור מאובטח של קובצי APEX ו-APK שיובאו מהמארח.
authfs
מערכת קבצים של fuse לשיתוף מאובטח של כמה קבצים בין Android ל-pVM (מארח וסועד).
binder
הדרך הראשית לתקשורת בין מכונות וירטואליות.
crosvm
מעקב אחרי מכונות וירטואליות שנכתב ב-Rust. ‏ crosvm מקצה זיכרון למכונה הווירטואלית, יוצר חוטי מעבד וירטואליים ומטמיע את הקצוות העורפיים של המכשיר הווירטואלי.
Generic Kernel Image‏ (GKI)
קובץ אימג' של אתחול שאושר על ידי Google, שמכיל ליבה של GKI שנוצרה מעץ המקור של Android Common Kernel‏ (ACK) ומתאים להעברה (flash) למחיצה של אתחול במכשיר Android. מידע נוסף זמין בסקירה הכללית על הליבה.
hypervisor
טכנולוגיית הווירטואליזציה שבה משתמשת AVF, שנקראת גם pKVM. המכונה הווירטואלית מאפשרת לשמור על תקינות הקוד ועל הסודיות של הנכסים של ה-pVM, גם אם המארח של Android או כל אחד מה-pVMs האחרים נפרצו.
Java API
ממשקי ה-API של Java ל-VirtualizationService, שנמצאים רק במכשירים עם תמיכה ב-AVF. ממשקי ה-API האלה הם אופציונליים ולא חלק מ-thebootclasspath.
Microdroid
מערכת הפעלה Android מיני של Google שפועלת ב-pVM.
Microdroid Manager
מנהל את מחזור החיים של ה-pVM, בתוך ה-pVM ובדיסק של המכונה.
API מקורי
קבוצת משנה של Android Native Developers Kit‏ (NDK).
מכונה וירטואלית מבוססת-ליבה מוגנת (pKVM)
מידע נוסף זמין במאמר Hypervisor.
קושחת pVM (pvmfw)
הקוד הראשון שפועל ב-pVM, pvmfw, מאמת את עומס העבודה ומפיק את הסוד לכל מכונה וירטואלית.
מכונה וירטואלית מוגנת (pVM)

סביבה מבודדת לביצוע קוד (אורח) ללא אמון הדדי, שפועלת לצד מערכת ההפעלה הראשית של Android (מארח). אחד מהיבטים חשובים של אבטחת pVM הוא שגם אם המארח נפרץ, אין לו גישה לזיכרון של ה-pVM. ‏pKVM הוא hypervisor הסטנדרטי להרצת מכונות pVM.

בהשוואה לסביבות מחשוב מהימנות (TEE) קיימות, מכונות pVM מספקות סביבה עשירה יותר, כולל היכולת להריץ הפצה של Android בגודל מיני שנקראת Microdroid (אבל Microdroid יכולה לפעול גם במכונה וירטואלית לא מוגנת). אפשר להשתמש במכונות pVM באופן דינמי, והן מספקות קבוצה סטנדרטית של ממשקי API בסביבה מהימנה שזמינה בכל המכשירים שתומכים בהן.

VirtualizationService

שירות Android שמנהל את מחזור החיים של מכונות וירטואליות פרטיות (pVM).

מה השלב הבא?

  • כדי להבין טוב יותר את הצורך ב-AVF, אפשר לעיין במאמר למה AVF?.
  • במאמר תרחישי שימוש מוסבר איך אפשר להשתמש ב-AVF לצורך הידור מבודד.
  • הסבר מעמיק יותר על הארכיטקטורה של הטמעת העזר של AVF זמין במאמר ארכיטקטורת AVF.
  • מידע נוסף על Microdroid זמין במאמר Microdroid.
  • במאמר אבטחה מוסבר איך AVF מטפל באבטחה.
  • כדי להבין את התפקיד של שירות הווירטואליזציה, אפשר לעיין במאמר VirtualizationService.
  • קוד המקור של AVF או הסבר מעמיק על רכיבים ספציפיים זמינים במאגר AOSP.