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

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

ארכיטקטורת AVF

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

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

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

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

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

VirtualizationService

שירות Android שמנהל את מחזור החיים של מכונות וירטואליות מוגנות.

מה השלב הבא?

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