כדי להבטיח את תקינות המערכת של הרכב, מערכת Android Automotive מגינה על הנתונים הנכנסים ברמות הבאות:
איור 1. ארכיטקטורת שירותי מערכת
- אפליקציות. המערכת מאמתת שלאפליקציה יש הרשאה לדבר עם הרכב ובמערכות המשנה.
- ממשקי API מוגדרים היטב. ממשקי API כלליים לא מקבלים blobs שרירותיים של נתונים (ממשקי API חייבים צריכות להיות מוגדרות היטב).
- שירות לרכב. העדכונים מותרים רק באמצעות OTA (או USB), עם דיסק מלא הצפנה ואתחול מאומת. לא ניתן לבצע התקנה ממקור לא ידוע.
- מערכת HAL לרכב מאמת הודעות מסוימות מותרות.
אפליקציות וממשקי API
Android Automotive מבוסס על Android ויוצר אינטראקציה ישירה עם ובמערכות המשנה. בנוסף, לרכבים שונים עשויים להיות ממשקים שונים עם פונקציונליות שחשופות ל-Android. כדי שהפונקציות האלה יהיו בטוחות ויעילות, מבודדים בשכבת הפשטה, בנפרד משאר מכשירי Android. רק ממשקי API מוגדרים היטב עם פורמט קפדני של הודעות שנשלחות דרך רשתות שמובנות ברכב, הן יכולות לתקשר עם כלי הרכב HAL. כך המפתחים של Android יכולים להשתמש בממשק צפוי, והאינטראקציה איתם מאובטחת יחד עם שאר כלי הרכב.
הודעות HAL של רכב מסוננות בשתי רמות:
- ברמת האפליקציה. אפליקציות שאינן של המערכת יכולות לגשת אל מערכת תקינות הרכב דרך הרכב השירות עם ההרשאות המתאימות.
- רמת HAL של הרכב. אפשר להוסיף עוד שכבת הגנה שההודעות שנשלחות למערכות משנה של רכבים מגיעות ממקור לגיטימי. אפשר גם להשתמש להגבלת קצב של הודעות, שמונעת מאפליקציות זדוניות להציף את אפיק CAN שעלולות להפריע למערכות משנה של רכבים.
HAL לרכב
טכנולוגיית HAL של הרכב היא שכבה נמוכה יותר שמקיימת אינטראקציה עם הרכב, והשיחה שלו נקבעה. ברשתות ובחומרת רכב אחרת באמצעות הפעלות של בקרת קלט/פלט (ioctl) במנהל התקן.
מערכת ה-HAL של הרכב היא הרכיב היחיד ב-Android Automotive שמחובר למערכת IVI, באמצעות חיבור ישיר למעבד האפליקציות/MicroController, או מוגבל דרך VMCU. גישה אל צריך להגביל את האיכות של מערכת ה-HAL לרכב לאפליקציות מערכת שמשתמשות בכללי SELinux ובהרשאות מתאימות בממשקי ליבה.
המדיניות של SELinux
מערכת Android Automotive מרחיבה את SELinux כדי לסנן את גישת הנהג, כולל פתיחה, סגירה, קריאה, כתיבה, ושיחות ביוקטל. השימוש בסינון ioctl (יחד עם פונקציונליות אחרת של SELinux) מגביל את סוג הודעות רשות האישורים (CA) שאושרו ואושרו על ידי תקן HAL של רכב, מצמצמות באופן משמעותי את שטח המתקפה. עבור לפרטים על SELinux, ראו Linux עם שיפור אבטחה ב-Android.
בנוסף, התרחישים לדוגמה בתחום כלי הרכב כוללים סוגים חדשים של מידע אישי רגיש שצריך לבודד. ומבוקרת. למידע אישי רגיש יש הרשאות נפרדות; יכולות אחרות כמו פקדי בקרת אקלים והתאמת חלון יש לתת רק לאפליקציות מערכת. דוגמה למוצר ספציפי לרכב מדיניות SELinux:
<permission-group android:name=”android.support.car.permission.CAR_MONITORING /> <permission android:name=”android.support.car.permission.CAR_MILEAGE” android:protectionLevel=”signature|privileged” /> <permission android:name=”android.support.car.permission.CAR_SPEED” android:permissionGroup=”android.permission-group.LOCATION” android:protectionLevel=”dangerous” /> <permission android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION” android:permissionGroup=”android.support.car.permission.CAR_INFORMATION” android:protectionLevel=”signature|privileged” />
קבוצת ההרשאות CAR_MONITORING
נוצרה להרשאות שקשורות לכלי רכב.
המהירות הנוכחית נחשבת למידע רגיש. לכן, CAR_SPEED
נוצרו ברמת הגנה מסוכנים. המשמעות של רמה זו
הוא פרטי ורגיש. ההרשאה CAR_VENDOR_EXTENSION
נוצרה
בעלי הרשאה ברמת המערכת או ברמת החתימה, המשמשת לאפליקציות מערכת או לאפליקציות חתומות
מקבלים את ההרשאה הזו באופן מפורש.
חסימת אפליקציות ופעילות
כדי לצמצם את הסחות הדעת, ב-Android Automotive יש אמצעי בקרה נוספים (רשימת היתרים) כדי לוודא שלא ניתן להשתמש באפליקציות שהותקנו ממקור לא ידוע כשהרכב נמצא בתנועה. האפליקציות האלה עדיין יכולות פועלות כשכלי רכב חונה או עוצר.
ברשימת ההיתרים מפורטות אפליקציות שאפשר להשתמש בהן כשהרכב נמצא בתנועה. מהימנים בלבד אפליקציות מערכת יכולות לעדכן את רשימת ההיתרים. עדכונים עשויים להתבצע דרך הרשת, אבל לא נחשבת אמינה.