หน้านี้จะอธิบายวิธีเปิดใช้ฟีเจอร์ Seed การเข้ารหัสการเชื่อมโยงตามยานพาหนะ
ภาพรวม
เป้าหมายหลักของฟีเจอร์ SEED การเชื่อมโยงยานพาหนะคือการปกป้องความเป็นส่วนตัวของผู้ใช้เพิ่มเติมโดย ปกป้องข้อมูลในระบบสาระบันเทิงในยานพาหนะ (IVI) ไม่ให้นำออกจากรถ นี่คือ ซึ่งทำได้โดยการเชื่อมโยงคีย์การเข้ารหัสพื้นที่จัดเก็บกับหน่วยควบคุมอิเล็กทรอนิกส์ (ECU) อื่นๆ เพื่อที่ว่า IVI ถูกนำออกแล้ววางไว้ในรถคันอื่น (หรือวิ่งบนม้านั่งทดสอบ) ข้อมูลผู้ใช้ที่เข้ารหัสบน ถอดรหัส IVI ไม่ได้
Vold จะเชื่อมโยงคีย์การเข้ารหัสไฟล์กับ Seed เฉพาะยานพาหนะกับการเข้ารหัสคีย์เพื่อเชื่อมโยงคีย์การเข้ารหัสไฟล์
การสร้างกุญแจใหม่เพื่อให้กุญแจไม่ซ้ำกันและยึดโยงกับตัวรถ Seed คืออาร์เรย์ไบต์
แสดงเป็นคุณสมบัติใหม่ของ OEM ฮาร์ดแวร์สำหรับยานพาหนะแบบ Abstraction Layer (VHAL)
STORAGE_ENCRYPTION_BINDING_SEED
สิทธิ์ของพร็อพเพอร์ตี้นี้ถูกจำกัดเพื่อให้
โดยจะค้นหาได้โดย Daemon ของระบบที่ได้รับสิทธิ์เท่านั้น
แผนภาพสถาปัตยกรรม
ภาพนี้แสดงสถาปัตยกรรมของการผสานรวมยานพาหนะ:
รูปที่ 1 สถาปัตยกรรมที่เชื่อมโยงกับยานพาหนะ
เปิดใช้การเชื่อมโยงตามยานพาหนะ
ต้องเปิดใช้การเชื่อมโยงการเข้ารหัสพื้นที่เก็บข้อมูลกับรถยนต์อย่างชัดแจ้งและเปิดไม่ได้ หรือปิดโดยไม่รีเซ็ตเป็นค่าเริ่มต้นได้ ซึ่งหมายความว่าการอัปเดตผ่านอากาศ (OTA) ไม่สามารถ เปิดใช้งานฟีเจอร์นี้ได้โดยไม่ต้องล้างข้อมูลอุปกรณ์ OEM สามารถเลือกเปิดใช้ฟีเจอร์นี้ได้เมื่อ อัปเกรดหากรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นด้วย เช่น เมื่อเข้ามารับบริการ
ฟีเจอร์นี้เปิดใช้โดยการรองรับพร็อพเพอร์ตี้ STORAGE_ENCRYPTION_BINDING_SEED
ใน HAL ยานพาหนะที่ผู้ให้บริการจัดหา พร็อพเพอร์ตี้นี้เก็บสตริงไบต์ความยาว 16 ไบต์และ
ควรจะอยู่ใน ECU ที่แยกต่างหากจาก IVI พร็อพเพอร์ตี้ได้รับการตั้งค่าเริ่มต้นโดย
Android Automotive OS (AAOS) ซึ่งสร้างโดยใช้หมายเลขสุ่มที่ปลอดภัยในการเข้ารหัส
โปรแกรมสร้าง (CSRNG) จากนั้น AAOS จะอ่านพร็อพเพอร์ตี้ในการเปิดเครื่องครั้งถัดไป
วิธีที่ VHAL จัดเก็บค่าของ STORAGE_ENCRYPTION_BINDING_SEED
จะเป็นข้อมูลเฉพาะผู้ให้บริการ
เรามีคำแนะนำทั่วไปในการปกป้องเมล็ดพันธุ์ดังนี้
- (แนะนำ) Seed จัดเก็บโดย ECU ในยานพาหนะที่อยู่จริง ได้รับการปกป้องอย่างดี หากไม่ การดึงทั้ง IVI และ ECU ออกจากกันก็ไม่ใช่เรื่องยาก ยานพาหนะ
- (แนะนำ) IVI และ ECU ควรตรวจสอบสิทธิ์ร่วมกันเพื่อแลกเปลี่ยน Seed เป็น เพื่อป้องกันคำขอ Seed จาก ECU
- (แนะนำ) ควรส่ง Seed โดยใช้ช่องทางที่ปลอดภัยเพื่อป้องกัน การดมกลิ่นรถเมล์ของ 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
หรือลองอีกครั้ง
เปลี่ยนการทำงานของข้อความแจ้งและล้างข้อมูลได้ใน 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
การทดสอบการผสานรวม
การทดสอบ A จะมีให้ใน
packages/services/Car/cpp/security/vehicle_binding_util/tests
วิธีทำการทดสอบการผสานรวมนี้
atest vehicle_binding_integration_test