ใช้การเข้ารหัสไฟล์ที่ถูกผูกไว้กับยานพาหนะ

หน้านี้อธิบายวิธีเปิดใช้งานฟีเจอร์เริ่มต้นการเข้ารหัสแบบผูกตามพาหนะ

ภาพรวม

เป้าหมายหลักของคุณสมบัติการผูกข้อมูลยานพาหนะคือการปกป้องความเป็นส่วนตัวของผู้ใช้เพิ่มเติมโดยการปกป้องข้อมูลในระบบสาระบันเทิงในรถยนต์ (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 นั้นเป็นข้อมูลเฉพาะของผู้จำหน่าย เรามีคำแนะนำทั่วไปในการปกป้องเมล็ดพันธุ์:

  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 ไม่ตรงกัน อุปกรณ์จะรีบูตเข้าสู่การกู้คืนและแจ้งให้ผู้ใช้ลบพาร์ติชัน /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