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