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

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

ภาพรวม

เป้าหมายหลักของฟีเจอร์เมล็ดพันธุ์การเชื่อมโยงยานพาหนะคือการปกป้องความเป็นส่วนตัวของผู้ใช้เพิ่มเติมด้วยการป้องกันไม่ให้นำข้อมูลจากระบบสาระบันเทิงในรถ (IVI) ออกจากรถ ซึ่งทำได้โดยการเชื่อมโยงคีย์การเข้ารหัสพื้นที่เก็บข้อมูลกับชุดควบคุมอิเล็กทรอนิกส์ (ECU) อื่นๆ เช่น หากนำ IVI ออกและใส่ไว้ในรถคันอื่น (หรือนำไปทดสอบบนแท่นทดสอบ) ระบบจะถอดรหัสข้อมูลผู้ใช้ที่เข้ารหัสใน IVI ไม่ได้

หากต้องการเชื่อมโยงคีย์การเข้ารหัสไฟล์ Vold จะผสมข้อมูลเริ่มต้นเฉพาะรถเข้ากับการสร้างคีย์การเข้ารหัสเพื่อให้คีย์ไม่ซ้ำกันและเชื่อมโยงกับรถ เมล็ดพันธุ์คืออาร์เรย์ไบต์ที่ OEM แสดงเป็นพร็อพเพอร์ตี้ระดับชั้นการจัดการฮาร์ดแวร์โดยตรง (VHAL) ใหม่ STORAGE_ENCRYPTION_BINDING_SEED สิทธิ์ของพร็อพเพอร์ตี้นี้ถูกจํากัดไว้เพื่อให้สามารถค้นหาได้เฉพาะโดยเดรัมของระบบที่มีสิทธิ์เท่านั้น

แผนภาพสถาปัตยกรรม

รูปภาพนี้แสดงสถาปัตยกรรมของการผสานรวมแบบเชื่อมโยงกับยานพาหนะ

รูปที่ 1 สถาปัตยกรรมที่เชื่อมโยงกับยานพาหนะ

เปิดใช้การเชื่อมโยงตามยานพาหนะ

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

นอกจากนี้ ให้เพิ่มข้อมูลต่อไปนี้เพื่อให้แน่ใจว่าผู้ให้บริการ 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

  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

การทดสอบการผสานรวม

มีการทดสอบ atest ใน packages/services/Car/cpp/security/vehicle_binding_util/tests

วิธีทำการทดสอบการผสานรวมนี้

atest vehicle_binding_integration_test