בדף הזה מוסבר איך מפעילים תכונות מקור להצפנה מבוססת-הקשר של הרכב.
סקירה כללית
המטרה העיקרית של תכונת הבסיס לקישור הרכב היא להגן עוד יותר על פרטיות המשתמש על ידי הגנה על נתונים במערכת המידע והבידור ברכב (IVI) מפני הסרה מהרכב. הדבר נעשה על ידי קישור של מפתחות הצפנת האחסון ליחידת בקרה אלקטרונית (ECU) אחרת, כך שאם המערכת מסירה את ה-IVI ומוצבת ברכב אחר (או פועלת על ספסל בדיקה), ונתוני משתמש מוצפנים אי אפשר לפענח את ההודעה IVI.
כדי לקשר מפתחות להצפנת קבצים, Vold משלב במקור ספציפי לרכב עם הצפנת מפתחות
נגזרות של מפתחות כך שהמפתחות יהיו ייחודיים וקשורים פיזית לרכב. הבסיס הוא מערך בייטים,
נחשפת כמאפיין חדש של שכבת האבסטרציה של חומרת הרכב (VHAL) על ידי ה-OEM (יצרן הציוד המקורי).
STORAGE_ENCRYPTION_BINDING_SEED
ההרשאות של הנכס הזה מוגבלות, למשל
רק אדמינים בעלי הרשאות יכולים לשלוח שאילתות.
תרשים הארכיטקטורה
האיור הזה ממחיש את הארכיטקטורה של שילוב שקשור לרכב:
איור 1. ארכיטקטורה שקשורה לרכבים.
הפעלת קישור שמבוסס על רכב
הקישור של הצפנת האחסון לרכב צריך להיות מופעל באופן מפורש ואי אפשר להפעיל אותו ומכבים אותו בלי לבצע איפוס להגדרות המקוריות. המשמעות היא שעדכון אלחוטי (OTA) לא יכול להפעיל את התכונה בלי לנגב גם את המכשיר. יצרן ציוד מקורי יכול לבחור להפעיל את התכונה עם לשדרג את המכשיר אם הם גם מאפסים אותו להגדרות המקוריות. לדוגמה, בביקור בשירות.
התכונה הזו מופעלת על ידי תמיכה בנכס STORAGE_ENCRYPTION_BINDING_SEED
ב-HAL ברכב שסופק על ידי הספק. הנכס הזה מכיל מחרוזת של בייט באורך 16 בייטים,
צפוי להישאר ב-ECU בנפרד מה-IVI. המאפיין מוגדר בהתחלה על ידי
מערכת ההפעלה Android Automotive OS (AAOS), שיוצרת אותה באמצעות מספר אקראי מאובטח באמצעות קריפטוגרפיה
מחולל (CSRNG). לאחר מכן AAOS קורא את המאפיין במגפיים הבאים.
האופן שבו VHAL מאחסן את הערך של STORAGE_ENCRYPTION_BINDING_SEED
הוא ספציפי לספק.
יש לנו המלצות כלליות להגנה על המקור:
- (מומלץ) ערך הבסיס מאוחסן באמצעות ECU ברכב שמאוחסן פיזית מוגן היטב. אם לא, זה דבר טריוויאלי גם עבור ה-IVI וגם עבור ה-ECU שיש לשלוף לרכב.
- (מומלץ) IVI ו-ECU צריכים לבצע אימות הדדי כדי להמיר את המקור למנוע זיוף של בקשות למקור מה-ECU.
- (מומלץ) יש לשדר את הזרעים באמצעות ערוץ מאובטח כדי להגן מפני לכידת אוטובוסים ב-CAN.
בנוסף, צריך להוסיף את הפרטים הבאים כדי לוודא שהספק init.target.rc
ב-
late-fs
לפני mount_all --late
:
# feed vehicle binding seed to vold
exec_start vold_seed_binding
צריך להתחיל את הנחיות ה-HAL של הרכב בearly_hal
במקום בhal now
.
לא ניתן לגשת אל מאפייני המערכת של persist.*
בתוך early-hal
כי
המחיצה /data
עדיין לא נטענה.
הגדרת קישור שמבוסס על רכב
אם ערך ה-ECU לא תואם, המכשיר יופעל מחדש לצורך שחזור ותתבקש מהמשתמש למחוק את הנתונים
את המחיצה /data
או לנסות שוב.
ניתן לשנות את ההתנהגות של הצגת נתונים בזמן איפוס נתונים builtins.cpp:
- שינוי
prompt_and_wipe_data
לwipe_data
. המכשיר יאופס ואז מופעלת מחדש ללא הנחיה. - הודעת ההנחיה כלולה
recovery.cpp
איור 2. הודעת הנחיה.
בדיקת הקישור שמבוסס על הרכב
בדיקות הדמיה
מסופקת בדיקת הדמיה
packages/services/Car/cpp/security/vehicle_binding_util/tests
כדי להריץ את בדיקת ההדמיה:
attest libvehicle_binding_util_test
בדיקת אינטגרציה
בדיקת Atest ניתנת ב
packages/services/Car/cpp/security/vehicle_binding_util/tests
כדי להריץ את בדיקת השילוב הזו:
atest vehicle_binding_integration_test