אבטחה

כדי למנוע הפעלת עומסים שרירותיים בתוך pVM, Android Virtualization Framework (AVF) משתמש בגישת אבטחה שכבתית שבה כל שכבה מוסיפה אכיפות נוספות. להלן רשימה של שכבות אבטחה של AVF:

  • אנדרואיד - אנדרואיד מבטיח שרק אפליקציות עם הרשאות pVM מורשות ליצור או לבדוק מכשירי pVM.

  • טוען האתחול - טוען האתחול מבטיח שרק תמונות pVM חתומות על ידי גוגל או ספקי מכשירים מורשים לאתחל ומכבד את נוהל האתחול המאומת של Android . ארכיטקטורה זו מרמזת על אפליקציות המריצות pVMs אינן יכולות לאגד את הגרעינים שלהן.

  • pVM - ה-pVM מספק הגנה מעמיקה, כמו עם SELinux , עבור מטענים המופעלים ב-pVM. Defense-in-depth מונע מיפוי של נתוני הפעלה ( neverallow execmem ) ומבטיח ש- W^X מתקיים עבור כל סוגי הקבצים.

מודל אבטחה

סודיות, יושרה וזמינות, המכונה גם שלישיית ה-CIA, היא מודל שנועד להנחות את מדיניות אבטחת המידע:

  • סודיות היא מערכת כללים המגבילה את הגישה למידע.
  • יושרה היא הביטחון שהמידע אמין ומדויק.
  • זמינות היא ערובה לגישה מהימנה למידע על ידי גורמים מורשים.

שימו לב ש-pKVM תוכנן לשמור על סודיות ושלמות, אך לא זמינות, של האורחים. עקרונות אלה משפיעים על החלטות התכנון המשתרעות על כל ההיבטים של הארכיטקטורה, מה-Hypervisor ועד רכיבי חלל המשתמש.

סודיות ויושרה

סודיות נובעת ממאפייני בידוד הזיכרון שנאכפים על ידי pKVM hypervisor. pKVM עוקב אחר בעלות על זיכרון של דפי זיכרון פיזיים בודדים וכל בקשות של בעלים לשיתוף דפים. pKVM מבטיח שרק ל-pVMs זכאים (מארח ואורחים) העמוד הנתון ממופה בטבלאות העמודים שלהם בשלב 2 שנשלטות על ידי ה-Hypervisor. ארכיטקטורה זו טוענת כי תוכן הזיכרון שבבעלות pVM נשאר פרטי אלא אם כן הבעלים חולק אותו במפורש עם pVM אחר.

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

שלמות חלה הן על נתונים בזיכרון והן בחישוב:

  • pVMs לא יכולים לשנות את הזיכרון אחד של השני ללא הסכמה.
  • pVMs לא יכולים להשפיע זה על מצב המעבד של זה.

דרישות אלה נאכפות על ידי המפקח. אבל בעיות הנוגעות לשלמות הנתונים מתעוררות גם עם אחסון נתונים וירטואלי שבו יש ליישם פתרונות אחרים, כגון dm-verity או AuthFS.

העקרונות הללו אינם שונים מבידוד תהליכים שמציעה לינוקס, כאשר הגישה לדפי זיכרון נשלטת באמצעות טבלאות עמוד שלב 1 ומעברי ההקשר של הליבה בין תהליכים. עם זאת, לחלק EL2 של pKVM, אשר אוכף את המאפיינים הללו, יש בערך מחצית משטח ההתקפה בהשוואה לכל ליבת לינוקס (בערך 10,000 לעומת 20 מיליון שורות קוד) ולכן מציע בטחון חזק יותר לשימוש במקרים שהם רגישים מכדי להסתמך עליהם. על בידוד תהליך.

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

שאר המסמך הזה מכסה את ערבויות הסודיות והשלמות שכל רכיב סביב pKVM מספק.

היפרוויזר

pKVM הוא hypervisor מבוסס KVM המבודד מכשירי pVM ו-Android לתוך סביבות ביצוע שאינן מהימנות הדדית. מאפיינים אלה מתקיימים במקרה של פשרה בתוך כל pVM, כולל המארח. היפרוויזרים חלופיים התואמים ל-AVF צריכים לספק מאפיינים דומים.

  • pVM לא יכול לגשת לדף השייך לישות אחרת, כגון pVM או hypervisor, אלא אם כן שותף במפורש על ידי בעל הדף. כלל זה כולל את ה-pVM המארח והוא חל על גישה למעבד ו-DMA כאחד.
  • לפני שדף המשמש את pVM מוחזר למארח, למשל כאשר ה-pVM מושמד, הוא נמחק.
  • הזיכרון של כל ה-pVMs וקושחת ה-pVM מאתחול מכשיר אחד נמחק לפני שמטען האתחול של מערכת ההפעלה פועל באתחול ההתקן הבא.
  • כאשר מאתר באגים בחומרה, כגון SJTAG, מחובר, pVM לא יכול לגשת למפתחות שהוטבעו בעבר.
  • הקושחה של pVM לא מאתחלת אם היא לא יכולה לאמת את התמונה הראשונית.
  • הקושחה של pVM לא מאתחלת אם השלמות של ה- instance.img נפגעת.
  • שרשרת אישורי האתחול (BCC) ומזהי התקנים מורכבים (CDI) המסופקים למופע pVM יכולים להיגזר רק על ידי המופע המסוים הזה.

מערכת הפעלה אורחת

Microdroid הוא דוגמה למערכת הפעלה הפועלת בתוך pVM. Microdroid מורכב ממטען אתחול מבוסס U-boot, GKI, ומתת-קבוצה של מרחב משתמשי אנדרואיד, ומשגר עומסים. מאפיינים אלה מתקיימים במקרה של פשרה בתוך כל pVM, כולל המארח. מערכות הפעלה חלופיות הפועלות ב-pVM צריכות לספק מאפיינים דומים.

  • Microdroid לא יאתחל אם לא ניתן לאמת את boot.img , super.img , vbmeta.img או vbmeta\_system.img .
  • Microdroid לא יאתחל אם אימות ה-APK נכשל.
  • אותו מופע Microdroid לא יאתחל גם אם ה-APK עודכן.
  • Microdroid לא יאתחל אם אחד מה-APEXs נכשל באימות.
  • Microdroid לא יאתחל (או אתחול עם מצב התחלתי נקי) אם ה- instance.img משתנה מחוץ ל-pVM האורח.
  • Microdroid מספק אישור לשרשרת האתחול.
  • כל שינוי (לא חתום) בתמונות הדיסק המשותפות ל-pVM האורח גורם לשגיאת קלט/פלט בצד ה-pVM.
  • BCC ו-CDI שסופקו למופע pVM יכולים להיגזר רק על ידי המופע המסוים הזה.

דְמוּי אָדָם

אלו מאפיינים המתוחזקים על ידי אנדרואיד כמארח אך אינם מתקיימים במקרה של פשרה מארח:

  • PVM אורח לא יכול ליצור אינטראקציה ישירה עם (לדוגמה, ליצור חיבור vsock ל) PVM אורח אחרים.
  • רק ה- VirtualizationService ב-pVM המארח יכול ליצור ערוץ תקשורת ל-pVM (הערה: הוא יכול להעביר את הערוץ שהוקם לאחרים).
  • רק האפליקציות החתומות עם מפתח הפלטפורמה יכולות לבקש הרשאה ליצור, להחזיק או לקיים אינטראקציה עם מכשירי pVM.
  • המזהה, הנקרא מזהה הקשר (CID) , המשמש בהגדרת חיבורי vsock בין המארח ל-pVM אינו בשימוש חוזר בזמן שה-pVM המארח פועל. לדוגמה, החלפת pVM פועל באחר אינה אפשרית.

זמינות

בהקשר של pVMs, זמינות מתייחסת לכך שהמארח מקצה מספיק משאבים לאורחים כדי שהאורחים יוכלו לבצע את המשימות שהם תוכננו לעשות.

תחומי האחריות של המארח כוללים תזמון של המעבדים הווירטואליים של ה-pVM. KVM, בניגוד ל-Hypervisors מסורתיים מסוג Type-1, כגון Xen, מקבלת את החלטת התכנון המפורשת להאציל תזמון עומסי עבודה לגרעין המארח. בהתחשב בגודל ובמורכבות של המתזמנים של ימינו, החלטת עיצוב זו מקטינה משמעותית את גודל בסיס המחשוב המהימן (TCB) ומאפשרת למארח לקבל החלטות תזמון מושכלות יותר כדי לייעל את הביצועים. עם זאת, מארח זדוני יכול לבחור לעולם לא לקבוע אורח.

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

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

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

הפעלה בטוחה

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

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

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

מכשירים לא נעולים

כאשר נעול מכשיר עם fastboot oem unlock , נתוני המשתמש נמחקים. תהליך זה מגן על נתוני המשתמש מפני גישה לא מורשית. נתונים שהם פרטיים ל-pVM אינם חוקיים גם כאשר מתרחשת ביטול נעילה של מכשיר.

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

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