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

בדף הזה מפורטים תרחישי שימוש נפוצים ב-AVF.

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

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

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

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

איור 1. הידור של קובצי JAR בעדכוני Mainline. הידור של קובצי JAR בעדכוני Mainline

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

שירות הקומפילציה במכונה הווירטואלית יוצר חתימה רק אם לא מתרחשת שגיאה במהלך הקומפילציה. מערכת Android יכולה לאחזר את המפתח הציבורי מהמכונה הווירטואלית כדי לאמת את החתימה.

המפתח של המכונה הווירטואלית נוצר מפרופיל ה-DICE של המכונה הווירטואלית, שמוגדר על ידי קובצי ה-APEX וקובצי ה-APK שמוצמדים למכונה הווירטואלית, בנוסף לפרמטרים אחרים של המכונה הווירטואלית, כמו יכולת ניפוי הבאגים.

כדי לקבוע אם המפתח הציבורי לא מגיע ממכונה וירטואלית לא צפויה, מערכת Android מאתחלת את המכונה הווירטואלית כדי לקבוע אם המפתח נכון. המכונה הווירטואלית מופעלת בשלב האתחול המוקדם אחרי כל עדכון של APEX.

באמצעות הפעלה מאומתת של מכונות וירטואליות מוגנות, שירות ההידור מפעיל רק קוד מאומת. כתוצאה מכך, הקוד יכול לקבוע לקבל רק קלטים שעומדים בתנאים מסוימים. לדוגמה, לקבל קובץ קלט רק אם השם שלו וערך הגיבוב fs-verity מוגדרים ברשימת ההיתרים.

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

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

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

סביבת פיתוח של Linux

באופן מסורתי, Android היא מערכת ההפעלה הגדולה היחידה שלא מאפשרת למשתמשים לפתח אפליקציות בפלטפורמה עצמה. עם ההשקה של סביבת הפיתוח של Linux, אנחנו רוצים לספק סביבת פיתוח מבוססת-Linux למשתמשי Android שהם מפתחים. בעתיד, אנחנו מתכננים להרחיב את המאמץ כדי לאפשר לשותפים שלנו להטמיע תרחישי שימוש חדשניים במכונות וירטואליות, כמו הפעלת אפליקציות עם ממשק משתמש גרפי ואפילו משחקים.

סביבת הפיתוח של Linux זמינה במכשירים נבחרים ופועלת במכונה וירטואלית לא מוגנת.

תרחיש לדוגמה לשימוש בסביבת הפיתוח של Linux

איור 2. תרחיש לדוגמה לשימוש בסביבת הפיתוח של Linux.

התהליך הכללי הוא כזה:

  1. כדי להשתמש בסביבת הפיתוח של Linux, צריך להפעיל את האפשרויות למפתחים.
  2. אחרי שמפעילים את האפשרויות למפתחים, אפליקציית הטרמינל מופיעה במפעיל של מסך הבית.
  3. מפעילים את אפליקציית Terminal ממרכז האפליקציות.
  4. אם צריך, אפליקציית הטרמינל מורידה את קובץ האימג' של מערכת ההפעלה מ-Play.
  5. אפליקציית הטרמינל משתמשת ב-Android Virtualization Framework ‏ (AVF) כדי ליצור מכונה וירטואלית (VM).
  6. לאחר מכן, ה-VM מופעל באמצעות תמונת מערכת ההפעלה.
  7. המכונה הווירטואלית מאתחלת את מערכת ההפעלה מהתמונה.
  8. אחרי שהמכונה הווירטואלית מופעלת, ה-WebView באפליקציית הטרמינל מתחבר לשירות אינטרנט במכונה הווירטואלית. השירות הזה מספק גישה לטרמינל באמצעות HTTP.
  9. כדי לקיים אינטראקציה עם הטרמינל, מזינים פקודות וצופים בפלט באפליקציה.

הרכיבים ברמה גבוהה של מכונת ה-VM של Linux הם:

  • אפליקציית טרמינל: אפליקציה ל-Android שמספקת ממשק טרמינל. הוא משתמש ב-WebView כדי להתחבר לשירות אינטרנט שפועל במכונה הווירטואלית לצורך אינטראקציה. האפליקציה הזו מושבתת כברירת מחדל. מפעילים אותה בהגדרות למפתחים.
  • Android Virtualization Framework (AVF): מערכת המשנה הקיימת של Android ליצירה ולניהול של מכונות וירטואליות. כדי לתמוך בתכונה הזו בתמונות של מערכות הפעלה בהתאמה אישית, צריך לבצע שינויים מינימליים.
  • מכונה וירטואלית: מכונה וירטואלית שנוצרת על ידי AVF. הוא מארח את שירות הטרמינל, ו-AVF יוצר אותו במיוחד בשביל הפונקציונליות של אפליקציית הטרמינל.
  • תמונה של מערכת ההפעלה: תמונה של מערכת הפעלה שמבוססת על Debian ועברה שינויים קלים מ-Debian upstream. אפליקציית הטרמינל מורידה את התמונה הזו משרת חיצוני של Google. הוא משמש כבסיס לפעולת המכונה הווירטואלית.
  • Guest Agent: תוכנה חדשה במכונה הווירטואלית. הוא מדווח על מצב מערכת ההפעלה ל-AVF ומספק שליטה במכונה הווירטואלית.
  • ttyd: תוכנה בקוד פתוח שפועלת במכונה הווירטואלית ומיישמת אמולציית מסוף באמצעות HTTP. ה-WebView של אפליקציית Terminal מתחבר אליו.
  • Tethering Manager: מערכת משנה קיימת של Android. הוא מספק גישה לרשת למכונה הווירטואלית על ידי שיתוף האינטרנט מהמכשיר עם מערכת ההפעלה Android.

בטיחות בנוגע לתוכן במכשיר

התכונה 'בטיחות תוכן במכשיר' היא פתרון לשמירה על פרטיות התוכן, שנוצר על ידי הצוות של 'בטיחות תוכן במכשיר'. הוא מסווג תוכן כדי לוודא שהוא בטוח לשימוש במגוון מוצרי Google במכשירי צד ראשון וצד שלישי, ומגן על יותר ממיליארד משתמשים מפני תוכן פוגע, בלי לשלוח את נתוני המשתמשים בחזרה לשרתים של Google. הוא מתוכנן בהתאם לעקרונות של Private Compute Core ‏ (PCC) כדי לאמת תקשורת שקופה ושומרת על הפרטיות בין הלקוח, המכונה הווירטואלית (VM) ולמנוע זליגת נתונים של משתמשים. אפשר להשתמש בו למטרות שונות, כמו הפעלת זיהוי ניצול לרעה במכשירים, למשל זיהוי איומים בזמן אמת ב-Play Protect.

בתרחיש השימוש הזה, המערכת משתמשת במכונות וירטואליות מוגנות כדי להריץ את סיווג המודלים שלה לצורך זיהוי איומים בזמן אמת ב-Play Protect, וכך משפרת באופן משמעותי את האבטחה של המודלים וההגנות שלה. כך נמנעים הנדסה הפוכה ומניפולציה על ידי תוקפים, גם במכשירים עם הרשאות רוט. זאת באמצעות אימות של קוד מאושר בלבד, והסתרת הפעולות שלו מתהליכים חיצוניים.

התהליכים הכלליים הם:

  1. זיהוי איומים בזמן אמת שולח פינג ל-Private Compute Services כדי להפעיל את המכונה הווירטואלית. ‫Private Compute Services הוא מתווך שמתמקד בפרטיות בין PCC לבין שרת הענן
  2. ‫Private Compute Services מפעיל את המכונה הווירטואלית ומקבל ממנה את המפתח הציבורי
  3. רכיב Private Compute Services מעביר את הבעלות על המכונה הווירטואלית ל-Play Protect לצורך זיהוי איומים בזמן אמת
  4. ‫Private Compute Services שולח אישור ומפתח ציבורי לשרת
  5. השרת מאמת את האימות ומצפין את ההגנות באמצעות המפתח הציבורי של מכונת ה-VM
  6. השרת שולח בחזרה למכשיר את אמצעי ההגנה המוצפנים
  7. לאחר מכן, זיהוי האיומים בזמן אמת במכשיר יכול להשתמש בהגנה מוצפנת במכונה הווירטואלית. המכונה הווירטואלית היא הישות היחידה עם המפתח הפרטי שיכול לפענח את ההגנות

הרכיבים ברמה הגבוהה הם:

  • השרת: מצפין ומספק הגנות מוצפנות למכונה הווירטואלית
  • שירותי מחשוב פרטיים: משמשים להפעלת המכונה הווירטואלית ולתיווך התקשורת עם המכונה הווירטואלית, ומאפשרים שקיפות בכך שנתוני המשתמש לא עוברים דרך Astrea לשרת
  • זיהוי איומים בזמן אמת ב-Play Protect:
    • היא מכילה מסווגי מודלים שסופקו על ידי Content Safety במכשיר ומשתמשת בהם
    • מקבל את הבעלות על המכונה הווירטואלית ושומר אותה לשימוש בסיווג
    • מפעיל ומפסיק את ה-VM לפי הצורך.

יצרני ציוד מקורי (OEM)

יצרן ציוד מקורי יכול להשתמש ב-AVF לתרחישי שימוש מותאמים אישית. לדוגמה, ב-OPPO משתמשים ב-AVF כדי להפעיל את מרחב המחשוב הפרטי של AI. האפליקציה הראשונה במרחב הזה מספקת פתרון לשליטה בסיכונים במכשיר עבור לקוחות אפליקציות, שפועל במכונה וירטואלית. המערכת מנטרלת איומים מפעילויות לא חוקיות ומציעה הגנה מפני סכנות שונות.