หน้านี้อธิบายวิธีเปิดใช้งานฟีเจอร์เริ่มต้นการเข้ารหัสแบบผูกตามพาหนะ
ภาพรวม
เป้าหมายหลักของคุณสมบัติการผูกข้อมูลยานพาหนะคือการปกป้องความเป็นส่วนตัวของผู้ใช้เพิ่มเติมโดยการปกป้องข้อมูลในระบบสาระบันเทิงในรถยนต์ (IVI) ไม่ให้ถูกถอดออกจากรถ ซึ่งทำได้โดยการผูกคีย์เข้ารหัสการจัดเก็บข้อมูลเข้ากับหน่วยควบคุมอิเล็กทรอนิกส์ (ECU) อื่นๆ บางส่วน โดยที่ว่าหาก IVI ถูกถอดออกและวางไว้ในยานพาหนะคันอื่น (หรือวิ่งบนม้านั่งทดสอบ) ข้อมูลผู้ใช้ที่เข้ารหัสบน IVI จะไม่สามารถถอดรหัสได้
ในการผูกคีย์การเข้ารหัสไฟล์ Vold จะผสม เมล็ดพันธุ์ เฉพาะยานพาหนะเข้ากับที่มาของคีย์การเข้ารหัสคีย์ ดังนั้นคีย์จึงไม่ซ้ำกันและเชื่อมโยงกับยานพาหนะทางกายภาพ Seed เป็นอาร์เรย์ไบต์ซึ่งเปิดเผยเป็นคุณสมบัติ Vehicle Hardware Abstraction Layer (VHAL) ใหม่โดย OEM STORAGE_ENCRYPTION_BINDING_SEED
สิทธิ์ของคุณสมบัตินี้ถูกจำกัดในลักษณะที่สามารถสอบถามโดย daemons ระบบที่มีสิทธิ์เท่านั้น
แผนภาพสถาปัตยกรรม
รูปนี้แสดงให้เห็นสถาปัตยกรรมของการรวมเข้ากับยานพาหนะ:
รูปที่ 1 สถาปัตยกรรมที่เชื่อมโยงกับยานพาหนะ
เปิดใช้งานการเชื่อมโยงตามยานพาหนะ
ต้องเปิดใช้งานการเชื่อมโยงการเข้ารหัสที่จัดเก็บข้อมูลกับรถยนต์อย่างชัดเจน และไม่สามารถเปิดหรือปิดได้โดยไม่ทำการรีเซ็ตเป็นค่าจากโรงงาน ซึ่งหมายความว่าการอัปเดตแบบ Over-the-Air (OTA) ไม่สามารถเปิดใช้งานคุณสมบัตินี้ได้หากไม่ได้ล้างอุปกรณ์ด้วย OEM สามารถเลือกเปิดใช้งานคุณลักษณะนี้ได้เมื่ออัปเกรด หากพวกเขารีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นจากโรงงานด้วย เช่น ในการเยี่ยมเยียนบริการ
คุณลักษณะนี้เปิดใช้งานโดยการสนับสนุนคุณสมบัติ 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
หรือลองอีกครั้ง
พฤติกรรมการแจ้งและล้างข้อมูลสามารถเปลี่ยนแปลงได้ใน buildins.cpp :
- เปลี่ยน
prompt_and_wipe_data
เป็นwipe_data
อุปกรณ์จะเช็ดแล้วรีบูตโดยไม่แจ้งให้ทราบ - ข้อความแจ้งมีอยู่ใน 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