בידוד מערכת הרכב

כדי להבטיח את שלמות מערכת הרכב, Android Automotive מגן על נתונים נכנסים ברמות הבאות:

רכיבי מערכת EVS

איור 1. ארכיטקטורת שירות מערכת

  • אפליקציות. המערכת מאמתת שלאפליקציה יש הרשאה לדבר עם תת-מערכות רכב.
  • ממשקי API מוגדרים היטב. ממשקי API גנריים אינם מקבלים קוביות נתונים שרירותיות (ממשקי API חייבים להיות מוגדרים היטב).
  • שירות מכוניות. עדכונים מותרים רק דרך OTA (או USB), עם הצפנת דיסק מלא ואתחול מאומת. לא ניתן להעמיס בצד.
  • רכב HAL. מאמת שמותר הודעות ספציפיות.

אפליקציות וממשקי API

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

הודעות HAL של רכב מסוננות בשתי רמות:

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

רכב HAL

רכב HAL היא שכבה נמוכה יותר שמקיימת אינטראקציה עם הרכב, מתקשרת עם רשתות בתוך הרכב וחומרה אחרת של כלי רכב באמצעות קריאות בקרת קלט/פלט של הנהג (ioctl).

ה-HAL של הרכב הוא הרכיב היחיד ב-Android Automotive המחובר למערכת IVI, או דרך מעבד אפליקציה ישיר/חיבור MicroController או משודר דרך VMCU. הגישה ל-HAL של הרכב צריכה להיות מוגבלת ליישומי מערכת המשתמשים בכללי SELinux והרשאות מתאימות בממשקי ליבה.

מדיניות SELinux

Android Automotive מרחיב את SELinux לסינון גישת נהגים כולל פתיחה, סגירה, קריאה, כתיבה ושיחות ioctl. שימוש בסינון ioctl (יחד עם פונקציונליות אחרת של SELinux) מגביל את סוג הודעות ה-CAN המותרות והמקובלות על ידי ה-HAL של הרכב, ומצמצם באופן דרסטי את משטח ההתקפה. לפרטים על SELinux, ראה לינוקס משופרת באבטחה באנדרואיד .

בנוסף, מקרי שימוש ברכב כוללים סוגים חדשים של נתונים רגישים שיש לבודד ולשלוט בהם. לנתונים רגישים יש הרשאות נפרדות; יכולות אחרות כגון בקרות HVAC והתאמת חלונות צריכות להינתן רק לאפליקציות מערכת. דוגמה למדיניות 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 מספקת פקדים נוספים (רשימת אישורים) כדי להבטיח שלא ניתן להשתמש באפליקציות עם טעינת צד כאשר הרכב בתנועה. אפליקציות אלה עדיין יכולות לפעול כאשר רכב חונה או עצור.

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