השתמש בהצפנת קבצים הקשורים לרכב

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

סקירה כללית

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

כדי לאגד מפתחות הצפנת קבצים, Vold מערבב סיד ספציפי לרכב עם גזירת מפתח הצפנת מפתח כך שהמפתחות ייחודיים ומחוברים פיזית לרכב. ה-Seed הוא מערך בתים, שנחשף כמאפיין חדש של Vehicle Hardware Abstraction Layer (VHAL) על ידי ה-OEM, STORAGE_ENCRYPTION_BINDING_SEED . ההרשאות של מאפיין זה מוגבלות כך שניתן לשאול אותו רק על ידי דמוני מערכת מורשים.

דיאגרמת אדריכלות

איור זה ממחיש את הארכיטקטורה של אינטגרציה הקשורה לרכב:

איור 1. ארכיטקטורה קשורה לרכב.

אפשר כריכה מבוססת רכב

הכריכה של הצפנת אחסון לרכב חייבת להיות מופעלת במפורש ולא ניתן להפעיל או לכבות אותה מבלי לבצע איפוס להגדרות היצרן. המשמעות היא שעדכון Over-the-Air (OTA) לא יכול להפעיל את התכונה מבלי למחוק גם את המכשיר. יצרן ציוד מקורי יכול לבחור להפעיל את התכונה בעת השדרוג אם הוא גם יאפס את המכשיר להגדרות היצרן. למשל, בביקור שירות.

תכונה זו מופעלת על ידי תמיכה במאפיין STORAGE_ENCRYPTION_BINDING_SEED ב-HAL של הרכב שסופק על ידי הספק. מאפיין זה מכיל מחרוזת בתים באורך של 16 בתים וצפוי להישמר ב-ECU נפרד מה-IVI. הנכס מוגדר תחילה על ידי מערכת ההפעלה Android Automotive (AAOS), אשר מייצרת אותו באמצעות מחולל מספרים אקראיים מאובטח קריפטוגרפי (CSRNG). לאחר מכן AAOS קורא את הנכס על המגפיים הבאים.

האופן שבו ה-VHAL מאחסן את הערך של STORAGE_ENCRYPTION_BINDING_SEED הוא ספציפי לספק. יש לנו המלצות כלליות להגנה על הזרע:

  1. ( מומלץ ) הזרע מאוחסן על ידי ECU ברכב המוגן היטב פיזית. אם לא, זה טריוויאלי שגם ה-IVI וגם ה-ECU יישלפו מהרכב.
  2. ( מומלץ ) IVI ו-ECU צריכים לבצע אימות הדדי כדי להחליף את הזרע כדי למנוע בקשות זיוף עבור הזרע מה-ECU.
  3. ( מומלץ ) יש להעביר זרעים באמצעות ערוץ מאובטח כדי להגן מפני רחרוח של אוטובוס 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 seed אינו תואם, המכשיר מאתחל לשחזור ומבקש מהמשתמש למחוק את מחיצת /data או לנסות שוב.

ניתן לשנות את התנהגות הנתונים ב- buildins.cpp :

  1. שנה prompt_and_wipe_data ל- wipe_data . המכשיר מוחק ואז מאתחל ללא הנחיה.
  2. הודעת ההנחיה נמצאת ב- recovery.cpp .

    איור 2. הודעת הנחיה.

כריכה על בסיס רכב מבחן

בדיקות מדומה

מבחן מדומה מסופק packages/services/Car/cpp/security/vehicle_binding_util/tests .

כדי להפעיל את המבחן המדומה הזה:

attest libvehicle_binding_util_test

בדיקת אינטגרציה

בדיקת אסט מסופקת packages/services/Car/cpp/security/vehicle_binding_util/tests .

כדי להפעיל את מבחן האינטגרציה הזה:

atest vehicle_binding_integration_test