החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
סקירה כללית על Android Virtualization Framework (AVF)
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
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
- מעקב אחר מכונות וירטואליות שנכתב ב-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) קיימות, מכונות וירטואליות פרטיות מספקות סביבה עשירה יותר, כולל היכולת להריץ הפצה מיני של Android שנקראת Microdroid (אבל Microdroid יכולה לפעול גם במכונה וירטואלית לא מוגנת). אפשר להשתמש במכונות וירטואליות פרטיות באופן דינמי, והן מספקות קבוצה סטנדרטית של ממשקי API בסביבה מהימנה שזמינה בכל המכשירים שתומכים בהן.
- VirtualizationService
שירות Android שמנהל את מחזור החיים של מכונות וירטואליות פרטיות (pVM).
מה השלב הבא?
- כדי להבין טוב יותר את הצורך ב-AVF, כדאי לעיין במאמר למה AVF?.
- במאמר תרחישי שימוש מוסבר איך אפשר להשתמש ב-AVF לצורך הידור מבודד.
- הסבר מעמיק יותר על הארכיטקטורה של הטמעת העזר של AVF זמין במאמר ארכיטקטורת AVF.
- מידע נוסף על Microdroid זמין במאמר Microdroid.
- במאמר אבטחה מוסבר איך AVF מטפל באבטחה.
- במאמר VirtualizationService מוסבר מה התפקיד של שירות הווירטואליזציה.
- קוד המקור של AVF או הסבר מעמיק על הרכיבים השונים זמינים במאגר AOSP.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Android Virtualization Framework (AVF) overview\n\n*Android Virtualization Framework (AVF)* provides secure and private execution\nenvironments for executing code. AVF is ideal for security-oriented use cases\nthat require stronger, even formally verified, isolation assurances over those\noffered by Android's app sandbox. Android provides a reference implementation\nof all the components needed to implement AVF. AVF is supported only\non ARM64 devices. Figure 1 shows the architecture of AVF:\n\n**Figure 1.** AVF architecture.\n\nHere are the definitions for the most important terms from figure 1:\n\n*apexd and zipfuse*\n: Securely mounts APEXes and APKs imported from host.\n\n*authfs*\n: A fuse file system for securely sharing multiple files between Android and pVM\n (host and guest).\n\n*binder*\n: Primary means of inter-VM communication.\n\n*crosvm*\n: A virtual machine monitor written in rust. crosvm allocates VM memory,\n creates virtual CPU threads, and implements the virtual device's back-ends.\n\n*Generic Kernel Image (GKI)*\n: A boot image certified by Google that contains a GKI kernel built from an\n Android Common Kernel (ACK) source tree and is suitable to be flashed to the\n boot partition of an Android device. For further information, see the [Kernel\n overview](/docs/core/architecture/kernel).\n\n*hypervisor*\n: The virtualization technology used by AVF, also known as *pKVM*. The\n hypervisor maintains the integrity of the executed code and confidentiality of\n the pVM's assets, even if host Android or any of the other pVMs are compromised.\n\n*Java API*\n: The VirtualizationService Java APIs, which are present only on devices with\n AVF support. These APIs are optional and not part of `thebootclasspath`.\n\n*Microdroid*\n: A Google-provided mini-Android OS that runs in a pVM.\n\n*Microdroid Manager*\n: Manages the pVM lifecycle, inside the pVM, and instance disk.\n\n*Native API*\n: A subset of the Android Native Developers Kit (NDK).\n\n*protected kernel-based virtual machine (pKVM)*\n: See [Hypervisor](#hyper).\n\n*pVM firmware (`pvmfw`)*\n: The first code that runs on a pVM, `pvmfw` verifies the payload and derives\n the per-VM secret.\n\n*protected virtual machine (pVM)*\n\n: A mutually distrusted isolated execution environment (*guest* ) that runs\n alongside the main Android operating system (*host*). One important aspect of\n pVM security is even if the host is compromised, the host doesn't have access\n to a pVM's memory. pKVM is the standard hypervisor for running pVMs.\n\n Compared to existing trusted execution environments (TEEs), pVMs provide a\n richer environment, including the ability to run a mini-Android distribution\n called [Microdroid](#micro) (though Microdroid can also run on an\n unprotected VM). pVMs can be used dynamically and provide a\n standard set of APIs in a trusted environment available across all devices\n that support them.\n\n*VirtualizationService*\n\n: The Android service that manages the lifecycle of pVMs.\n\nWhat's next?\n------------\n\n- If you want to better understand the need for AVF, refer to [Why AVF?](/docs/core/virtualization/whyavf).\n- To read about how AVF can be used for isolated compilation, refer to [Use cases](/docs/core/virtualization/usecases).\n- If you want a more in-depth explanation of the AVF reference implementation's architecture, refer to [AVF architecture](/docs/core/virtualization/architecture).\n- If you want to learn about Microdroid, refer to [Microdroid](/docs/core/virtualization/microdroid).\n- If you are interested in how AVF handles security, refer to [Security](/docs/core/virtualization/security).\n- To understand the role of the virtualization service, refer to [VirtualizationService](/docs/core/virtualization/virtualization-service).\n- For source code of AVF or in-depth explanation about individual components, refer to [AOSP\n repository](https://android.googlesource.com/platform/packages/modules/Virtualization/+/refs/heads/main)"]]