โหมดเปิดเครื่อง SDV กำหนดลักษณะการทำงานของเอเจนต์การค้นพบบริการ SDV ใน SDV VM เมื่อพยายามเชื่อมต่อกับเอเจนต์การค้นพบบริการอื่นๆ (ที่ทำงานใน SDV VM อื่นๆ) เพื่อสร้างเมชที่ปลอดภัย ซึ่งคล้ายกับแนวคิดเรื่องสถานะอุปกรณ์ที่มีอยู่จากการเปิดเครื่องที่ได้รับการยืนยันของ Android
ระบบจะใช้โหมดเปิดเครื่อง SDV เมื่อจัดเตรียมหรืออัปเดตที่เก็บใบรับรองของ VM ในยานพาหนะ (ที่เก็บใบรับรอง VVM หรือที่เรียกว่า vvmtruststore)
ลักษณะการทำงานของเมชที่ปลอดภัย SDV
เมชการค้นพบบริการจะอยู่ในสถานะใดสถานะหนึ่งต่อไปนี้ ขึ้นอยู่กับค่าการเปิดเครื่องที่ได้รับ ได้แก่ Normal, Warning หรือ Fatal
ในยานพาหนะที่ใช้งานจริงซึ่งส่งมอบให้กับลูกค้า SDV Secure Mesh ต้องอยู่ในสถานะ Normal เมชต้องมีการแทรกแซงเพื่อการวินิจฉัยเพื่อเปลี่ยนจากสถานะ Normal เป็นสถานะ Warning ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ที่ใช้งานจริง (เช่น ไม่ใช่การพัฒนาหรือการแก้ไขข้อบกพร่อง) สถานะ Warning จะเกิดขึ้นระหว่างการจัดเตรียมเท่านั้น
Fatal คือความล้มเหลวพื้นฐาน ซึ่งคล้ายกับอิมเมจ system_ext ที่การตรวจสอบลายเซ็นใน Bootloader ของ Android ไม่สำเร็จ หากเมชที่ปลอดภัย SDV เปลี่ยนจาก Normal เป็น Fatal เนื่องจากการอัปเดตแบบ Over-the-Air (OTA) เพียงอย่างเดียว ระบบจะถือว่าการอัปเดตไม่ถูกต้องและเมชจะกลับไปใช้เวอร์ชัน Normal เดิม
ส่วนต่อไปนี้จะอธิบายสถานะต่างๆ โดยละเอียด
Normal
- การเปิดเครื่องของระบบเป็น
SECUREจากมุมมองของการค้นพบบริการ - การค้นพบบริการจะเชื่อมต่อกับเพียร์ที่เปิดเครื่องอย่างปลอดภัยเท่านั้น เพียร์ที่เปิดเครื่องอย่างปลอดภัยหมายความว่าเมชที่ปลอดภัย SDV ก็ปลอดภัยด้วย
Warning
- การเปิดเครื่องของระบบอาจถูกบุกรุกเนื่องจากมีการปิดใช้การตรวจสอบบางอย่าง
- Service Discovery จะเชื่อมต่อกับเพียร์ที่มีการตรวจสอบที่ปิดใช้ชุดเดียวกันทุกประการเท่านั้น เพื่อให้เพียร์ทั้งหมดใน SDV Secure Mesh มีพร็อพเพอร์ตี้ความปลอดภัยเหมือนกัน
- ระบบไม่สามารถยืนยันความสำเร็จของการเปิดเครื่องของเพียร์ได้เนื่องจากความล้มเหลวในเครื่องหรือฟีเจอร์ที่ปิดใช้
- นอกสภาพแวดล้อมในการพัฒนาซอฟต์แวร์หรือสถานการณ์ การดำเนินการนี้จะมีผลดังนี้
- ข้อมูลผู้ใช้ต้องไม่พร้อมใช้งาน นั่นคือ ข้อมูลต้องไม่ถูกส่งหรือได้รับผลกระทบจากการสื่อสารผ่านเมชที่ปลอดภัย SDV
- ควรมีเพียงบริการที่จำเป็นสำหรับโฟลว์การจัดเตรียมเท่านั้นที่พร้อมใช้งานเมื่อเมชอยู่ในสถานะนี้
Fatal
- เกิดข้อผิดพลาดร้ายแรงระหว่างขั้นตอนการเปิดเครื่องของระบบ
- เกิดความล้มเหลวหรือข้อผิดพลาดพื้นฐานอย่างน้อย 1 รายการที่ป้องกันไม่ให้เอเจนต์การค้นพบบริการสร้างเมช บริการในเครื่องไม่สามารถสื่อสารกับบริการระยะไกลได้
- การเปิดเครื่องของระบบเป็น
UNSECUREจากมุมมองของการค้นพบบริการ
โหมดเปิดเครื่อง SDV
โหมดเปิดเครื่อง SDV มีค่าที่เป็นไปได้ 2 ค่า ได้แก่ LOCKED และ UNLOCKED สำหรับการสร้างเมชการค้นพบบริการ
LOCKED หมายความว่าข้อผิดพลาดในการตรวจสอบเป็นข้อผิดพลาดร้ายแรง
และ UNLOCKED หมายความว่าข้อผิดพลาดในการตรวจสอบไม่ใช่ข้อผิดพลาดร้ายแรง
| เงื่อนไข | โหมดเปิดเครื่อง SDV | |
|---|---|---|
UNLOCKED |
LOCKED |
|
| ที่เก็บใบรับรอง VVM ในเครื่องว่างเปล่า | Warning | Fatal |
| ไม่มีเชน DICE ในเครื่อง | Fatal | Fatal |
| การตรวจสอบเชน DICE ในเครื่องไม่สำเร็จ | Warning | Fatal |
| โหมด SDV และ AVB ในเครื่องตรงกัน | ดูตารางในโหมด SDV และ AVB ในเครื่องตรงกัน | |
| การเปรียบเทียบค่าโหมดอุปกรณ์ระยะไกล | ดูตารางในระยะไกล การเปรียบเทียบค่าโหมดอุปกรณ์ | |
รีโมต uds_pubs ไม่ตรงกัน |
Warning | Fatal |
| การตรวจสอบเชน DICE ระยะไกลไม่สำเร็จ (โดยใช้ นโยบาย DICE) | Warning | Fatal |
| การจับมือเพื่อตรวจสอบสิทธิ์ระยะไกลไม่สำเร็จ | Fatal | Fatal |
โหมด SDV และ AVB ในเครื่องตรงกัน
ตารางต่อไปนี้แสดงวิธีที่โหมด AVB และโหมดเปิดเครื่อง SDV ส่งผลต่อลักษณะการทำงานของ เมชที่ปลอดภัย SDV สีต่างๆ เป็นไปตามที่กำหนดไว้ในส่วนการผสานรวมเฉพาะ Android ของเอกสารประกอบ AVB
| โหมด AVB x โหมดเปิดเครื่อง SDV | โหมดเปิดเครื่อง SDV | ||
|---|---|---|---|
UNLOCKED |
LOCKED |
||
AVB LOCKED |
เขียว | Warning | Normal |
| เหลือง | Fatal | Fatal | |
AVB UNLOCKED |
ส้ม | Warning | Fatal |
ค่าโหมดอุปกรณ์
ในเชน DICE ใบรับรอง CDI ทุกใบจะมีค่าโหมด ค่านี้อธิบายสถานะความปลอดภัยของเลเยอร์นั้นๆ ตามอินพุตการกำหนดค่า ข้อกำหนด SDV กำหนดค่าโหมดอุปกรณ์เพื่อแสดงจุดยืนด้านความปลอดภัยของซอฟต์แวร์ทั้งหมดในอุปกรณ์ ค่านี้ได้มาจากค่าโหมดของขั้นตอน CDI ทั้งหมดในเชน DICE ที่เกี่ยวข้องกับ SDV VM ที่กำหนด (นั่นคือ Android HLOS และ Secure World) และใช้การแจกแจงต่อไปนี้
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
อัลกอริทึม
อัลกอริทึมในการคำนวณค่าโหมดอุปกรณ์มีดังนี้
- ระบุ
deviceModeเป็นDeviceMode::Normal - ระบุ
diceChainListเป็นรายการเชน DICE ที่เกี่ยวข้องกับ SDV VM - สำหรับ
diceChainแต่ละรายการในdiceChainList:- ระบุ
cdiListเป็นรายการใบรับรอง CDI ในdiceChain - สำหรับ
cdiCertแต่ละรายการในcdiListให้ทำดังนี้- ระบุ
cdiDeviceModeเป็นDeviceModeที่สอดคล้องกับcdiCert.mode - ตั้งค่า
deviceModeเป็นmin(deviceMode, cdiDeviceMode)
- ระบุ
- ระบุ
- แสดงผล
deviceMode
การเปรียบเทียบค่าโหมดอุปกรณ์ระยะไกล
เอเจนต์การค้นพบบริการจะเชื่อมต่อกับเอเจนต์อื่นๆ ที่มีค่า โหมดอุปกรณ์เดียวกันเท่านั้น
ค่าโหมดอุปกรณ์ช่วยให้มั่นใจได้ว่า Mesh จะมีสมาชิกที่มีพร็อพเพอร์ตี้ความปลอดภัยต่างกันไม่ได้ เมชที่ได้จะมีจุดยืนด้านความปลอดภัยเหมือนกันระหว่างสมาชิกทั้งหมด
| ค่าโหมดอุปกรณ์ | รีโมต | ||||
|---|---|---|---|---|---|
| ไม่ได้กำหนดค่า | แก้ไขข้อบกพร่อง | การฟื้นตัว | ปกติ | ||
| ภายใน | ไม่ได้กำหนดค่า | Fatal | Fatal | Fatal | Fatal |
| แก้ไขข้อบกพร่อง | Fatal | Warning | Fatal | Fatal | |
| การฟื้นตัว | Fatal | Fatal | Warning | Fatal | |
| ปกติ | Fatal | Fatal | Fatal | Normal | |
โฟลว์การจัดเตรียมจากโรงงาน
นี่คือโฟลว์การจัดเตรียมที่สายการประกอบยานพาหนะ ซึ่งถือว่าโครงสร้างพื้นฐานคีย์สาธารณะไม่พร้อมใช้งาน โฟลว์นี้ขึ้นอยู่กับค่า 32 ไบต์ที่จัดเก็บไว้ในหน่วยความจำแบบโปรแกรมได้ครั้งเดียว (OTP) ที่เรียกว่า Vehicle VM (VVM) Factory Trust หรือ vvmfactorytrust เมื่อตั้งค่าแล้ว ระบบจะส่งค่านี้ไปยังเคอร์เนลเป็นพารามิเตอร์ชื่อ androidboot.sdv.vvmfactorytrust
VM ทั้งหมดใน ECU ต้องมีโหมดเปิดเครื่อง SDV และ VVM Factory Trust เหมือนกัน
สถานะเริ่มต้น
ECU ทั้งหมดจะอยู่ในโหมดเปิดเครื่อง SDV ในโหมด UNLOCKED เริ่มต้น โดยมี VVM Factory Trust และ ที่เก็บใบรับรองของ VM ในยานพาหนะว่างเปล่า นอกเหนือจาก uds_certs
ที่มีอยู่ใน vvmtruststore รูปที่ 1 แสดงตัวอย่างที่มี SDV VM 3 รายการ (VM-A, VM-B และ VM-C) ซึ่งกระจายอยู่ใน ECU 2 รายการแยกกัน (ECU-0 และ ECU-1)
รูปที่ 1 การจัดเตรียมจากโรงงาน สถานะเริ่มต้น
ขั้นตอนที่ 1: เรียกใช้ sdv_provisioning_tool
เปิดเครื่อง VM ทั้งหมดจาก ECU ทั้งหมด
เรียกใช้ sdv_provisioning_tool ใน VM แต่ละรายการ
- เครื่องมือจะสื่อสารกับเอเจนต์ Service Discovery ในเครื่องและรอให้เอเจนต์ส่งสัญญาณว่า SDV Secure Mesh เสร็จสมบูรณ์แล้ว และเอเจนต์ได้เขียนรายการคีย์สาธารณะ UDS ไปยัง
/vvmtruststore/uds_pubs - เมื่อเกิดเหตุการณ์นี้ เครื่องมือจะรับแฮชของ
/vvmtruststore/uds_pubsที่เพิ่งเขียนและแสดงผล
รูปที่ 2 การจัดเตรียมจากโรงงาน ขั้นตอนที่ 1
ขั้นตอนที่ 2: เขียน VVM Factory Trust
ใน VM รายการหนึ่งของ ECU แต่ละรายการ ให้ทำดังนี้
- เขียนแฮชของ
/vvmtruststore/uds_pubsที่sdv_provisioning_toolแสดงผลในขั้นตอนก่อนหน้าลงใน VVM Factory Trust วิธีเขียนนี้ขึ้นอยู่กับ OEM หรือผู้ให้บริการ และอยู่นอกขอบเขตของข้อกำหนดนี้
รูปที่ 3 การจัดเตรียมจากโรงงาน ขั้นตอนที่ 2
ขั้นตอนที่ 3: รีบูตในโหมดเปิดเครื่อง SDV ที่ล็อก
รีบูต VM ทั้งหมดใน ECU ทั้งหมดในโหมดเปิดเครื่อง SDV ในโหมด LOCKED
เอเจนต์การค้นพบบริการจะเชื่อถือ VM ใน ECU ที่มีคีย์สาธารณะ UDS แสดงอยู่ใน uds_pubs เนื่องจากแฮชของไฟล์นี้ตรงกับ VVM Factory Trust
เนื่องจากมีการจัดเตรียม ECU พร้อมกัน ECU จึงเชื่อมโยงกันอย่างถาวรและถือได้ว่าเป็นฮาร์ดแวร์ชิ้นเดียวจากมุมมองการตรวจสอบเชน DICE
รูปที่ 4 การจัดเตรียมจากโรงงาน ขั้นตอนที่ 3
โฟลว์การเปลี่ยนชิ้นส่วน
นี่คือโฟลว์การจัดเตรียมที่เวิร์กช็อปหรืออู่ซ่อมรถที่ได้รับอนุญาต ซึ่งต้องเปลี่ยน ECU ที่ชำรุดด้วย ECU ใหม่ที่ยังไม่ได้จัดเตรียม
โฟลว์นี้ขึ้นอยู่กับใบรับรอง UDS ที่ออกโดยหน่วยงานราก
ที่ระบุไว้ใน vvmconfig โดยตรงหรือโดยอ้อมผ่านเชนของ
หน่วยงานระดับกลาง
สถานะเริ่มต้น
VM ทั้งหมดได้รับการจัดเตรียมจากโรงงานแล้วและทำงานในโหมดเปิดเครื่อง SDV ในโหมด LOCKED
รูปที่ 5 แสดงตัวอย่างที่ ECU-0 ทำงานผิดปกติและต้องเปลี่ยน
รูปที่ 5 การเปลี่ยนชิ้นส่วน สถานะเริ่มต้น
ขั้นตอนที่ 1: ติดตั้ง ECU ใหม่
ติดตั้ง ECU ใหม่ซึ่งอยู่ในสถานะว่างเปล่าที่ยังไม่ได้จัดเตรียม
ในรูปที่ 6 เมื่อเปิดเครื่อง ECU-2 (ECU ที่เปลี่ยน) จะมีเมชที่ปลอดภัย SDV 2 รายการที่แยกกัน ได้แก่ รายการหนึ่งอยู่ในสถานะ Warning และอีกรายการหนึ่งอยู่ในสถานะ Normal เมชที่ปลอดภัย SDV ทั้ง 2 รายการไม่สมบูรณ์
รูปที่ 6 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 1
ขั้นตอนที่ 2: รีบูตในโหมดเปิดเครื่อง SDV ที่ปลดล็อก
รีบูต VM ทั้งหมดของ ECU ทั้งหมดในโหมดเปิดเครื่อง SDV ในโหมด UNLOCKED
ในรูปที่ 7 VM-B และ VM-C เข้าร่วมเมชที่ปลอดภัย SDV ในสถานะ Warning ซึ่งสมบูรณ์แล้ว
รูปที่ 7 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 2
ขั้นตอนที่ 3: เรียกใช้ sdv_provisioning_tool
เรียกใช้ sdv_provisioning_tool ใน VM แต่ละรายการ
เครื่องมือจะสื่อสารกับเอเจนต์ Service Discovery ในเครื่องและรอให้เอเจนต์ส่งสัญญาณว่า SDV Secure Mesh เสร็จสมบูรณ์แล้ว และเอเจนต์ได้เขียนรายการคีย์สาธารณะ UDS ไปยัง /vvmtruststore/uds_pubs
เมื่อเกิดเหตุการณ์นี้ เครื่องมือจะรับแฮชของ /vvmtruststore/uds_pubs ที่เพิ่งเขียนและแสดงผล แต่จะไม่ใช้แฮชนี้ในโฟลว์นี้
รูปที่ 8 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 3
ขั้นตอนที่ 4: ติดตั้งใบรับรอง UDS
- แยก
/vvmtruststore/uds_pubsจาก SDV VM ที่กำหนด ไม่ว่าจะเป็น VM รายการใดก็ได้ เนื่องจาก VM ทั้งหมดในเมชที่ปลอดภัย SDV เดียวกันจะมีไฟล์นี้เหมือนกัน - เรียกใบรับรองการจัดเตรียมสำหรับคีย์สาธารณะ UDS ทั้งหมดที่แสดงอยู่ใน
/vvmtruststore/uds_pubsนั้น- โดยปกติขั้นตอนนี้จะเกี่ยวข้องกับการส่งคีย์สาธารณะ UDS ที่แยกออกมา (หรือไฟล์
/vvmtruststore/uds_pubs) ไปยังเซิร์ฟเวอร์การจัดเตรียมระยะไกล เซิร์ฟเวอร์จะเรียกใบรับรองที่มีอยู่ก่อนแล้วหรือสร้างใบรับรองใหม่โดยตรวจสอบคีย์สาธารณะที่ได้รับกับฐานข้อมูลคีย์สาธารณะ UDS ที่รู้จักซึ่งสร้างขึ้นระหว่างการผลิต ECU
- โดยปกติขั้นตอนนี้จะเกี่ยวข้องกับการส่งคีย์สาธารณะ UDS ที่แยกออกมา (หรือไฟล์
- เขียน
/vvmtruststore/uds_certsของ SDV VM แต่ละรายการ
รูปที่ 9 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 4
ขั้นตอนที่ 5: รีบูตในโหมดเปิดเครื่อง SDV ที่ล็อก
รีบูต VM ทั้งหมดในโหมดเปิดเครื่อง SDV ในโหมด LOCKED
หากเมชที่ปลอดภัย SDV ไม่สมบูรณ์ ให้กลับไปที่ ขั้นตอนที่ 2
รูปที่ 10 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 5