Android Virtualization Framework (AVF) מספק סביבות ביצוע מאובטחות ופרטיות להרצת קוד. התכונה AVF מתאימה במיוחד לתרחישי שימוש שמתמקדים באבטחה ודורשים בידוד חזק יותר, אפילו בידוד מאומת רשמית, בהשוואה לבידוד שמציע ארגז החול של אפליקציות ב-Android. Android מספקת הטמעה לדוגמה של כל הרכיבים שנדרשים להטמעה של AVF. AVF נתמך רק במכשירי ARM64. איור 1 מציג את הארכיטקטורה של AVF:
איור 1. ארכיטקטורת AVF.
הנה ההגדרות של המונחים החשובים ביותר מאיור 1:
- apexd ו-zipfuse
- התקנה מאובטחת של קובצי APEX ו-APK שיובאו מהמארח.
- authfs
- מערכת קבצים מסוג FUSE לשיתוף מאובטח של כמה קבצים בין Android לבין pVM (מארח ואורח).
- binder
- הדרך העיקרית לתקשורת בין מכונות וירטואליות.
- crosvm
- A virtual machine monitor written in rust. crosvm מקצה זיכרון למכונה הווירטואלית, יוצר שרשורים של מעבדים וירטואליים ומטמיע את הקצה העורפי של המכשיר הווירטואלי.
- תמונת ליבה גנרית (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מאמת את מטען הייעודי (payload) וגוזר את הסוד לכל מכונה וירטואלית. - מכונה וירטואלית מוגנת (pVM)
סביבת ביצוע מבודדת (אורח) שאין בה אמון הדדי, שפועלת לצד מערכת ההפעלה הראשית של Android (מארח). היבט חשוב באבטחת pVM הוא שגם אם המארח נפגע, למארח אין גישה לזיכרון של pVM. pKVM הוא ההיפר-ויז'ר הסטנדרטי להפעלת pVM.
בהשוואה לסביבות מחשוב אמינות (TEE) קיימות, מכונות וירטואליות מוגנות (pVM) מספקות סביבה עשירה יותר, כולל היכולת להריץ הפצה מינימלית של Android שנקראת Microdroid (אבל אפשר להריץ את Microdroid גם במכונה וירטואלית לא מוגנת). אפשר להשתמש במכונות וירטואליות מוגנות באופן דינמי, והן מספקות קבוצה סטנדרטית של ממשקי API בסביבה מהימנה שזמינה בכל המכשירים שתומכים בהן.
- VirtualizationService
שירות Android שמנהל את מחזור החיים של מכונות pVM.
מה השלב הבא?
- כדי להבין טוב יותר למה צריך אימות AVF, אפשר לעיין במאמר למה צריך אימות AVF?.
- כדי לקרוא על השימוש ב-AVF לצורך קומפילציה מבודדת, אפשר לעיין בתרחישי שימוש.
- אם אתם רוצים לקבל הסבר מפורט יותר על הארכיטקטורה של יישום ההפניה של AVF, תוכלו לעיין במאמר בנושא ארכיטקטורת AVF.
- מידע על Microdroid זמין במאמר Microdroid.
- אם אתם רוצים לדעת איך AVF מטפל באבטחה, כדאי לעיין במאמר בנושא אבטחה.
- כדי להבין את התפקיד של שירות הווירטואליזציה, אפשר לעיין במאמר בנושא VirtualizationService.
- לקבלת קוד המקור של AVF או הסבר מפורט על רכיבים ספציפיים, אפשר לעיין במאגר AOSP.