สถานะและการจัดสรร Mesh

โหมดเปิดเครื่อง 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,
}

อัลกอริทึม

อัลกอริทึมในการคำนวณค่าโหมดอุปกรณ์มีดังนี้

  1. ระบุ deviceMode เป็น DeviceMode::Normal
  2. ระบุ diceChainList เป็นรายการเชน DICE ที่เกี่ยวข้องกับ SDV VM
  3. สำหรับ diceChain แต่ละรายการใน diceChainList:
    1. ระบุ cdiList เป็นรายการใบรับรอง CDI ใน diceChain
    2. สำหรับ cdiCert แต่ละรายการใน cdiList ให้ทำดังนี้
      1. ระบุ cdiDeviceMode เป็น DeviceMode ที่สอดคล้องกับ cdiCert.mode
      2. ตั้งค่า deviceMode เป็น min(deviceMode, cdiDeviceMode)
  4. แสดงผล 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 แต่ละรายการ

  1. เครื่องมือจะสื่อสารกับเอเจนต์ Service Discovery ในเครื่องและรอให้เอเจนต์ส่งสัญญาณว่า SDV Secure Mesh เสร็จสมบูรณ์แล้ว และเอเจนต์ได้เขียนรายการคีย์สาธารณะ UDS ไปยัง /vvmtruststore/uds_pubs
  2. เมื่อเกิดเหตุการณ์นี้ เครื่องมือจะรับแฮชของ /vvmtruststore/uds_pubs ที่เพิ่งเขียนและแสดงผล

การจัดสรรจากโรงงาน ขั้นตอนที่ 1

รูปที่ 2 การจัดเตรียมจากโรงงาน ขั้นตอนที่ 1

ขั้นตอนที่ 2: เขียน VVM Factory Trust

ใน VM รายการหนึ่งของ ECU แต่ละรายการ ให้ทำดังนี้

  1. เขียนแฮชของ /vvmtruststore/uds_pubs ที่ sdv_provisioning_tool แสดงผลในขั้นตอนก่อนหน้าลงใน VVM Factory Trust วิธีเขียนนี้ขึ้นอยู่กับ OEM หรือผู้ให้บริการ และอยู่นอกขอบเขตของข้อกำหนดนี้

การจัดสรรอุปกรณ์จากโรงงาน ขั้นตอนที่ 2

รูปที่ 3 การจัดเตรียมจากโรงงาน ขั้นตอนที่ 2

ขั้นตอนที่ 3: รีบูตในโหมดเปิดเครื่อง SDV ที่ล็อก

รีบูต VM ทั้งหมดใน ECU ทั้งหมดในโหมดเปิดเครื่อง SDV ในโหมด LOCKED

เอเจนต์การค้นพบบริการจะเชื่อถือ VM ใน ECU ที่มีคีย์สาธารณะ UDS แสดงอยู่ใน uds_pubs เนื่องจากแฮชของไฟล์นี้ตรงกับ VVM Factory Trust

เนื่องจากมีการจัดเตรียม ECU พร้อมกัน ECU จึงเชื่อมโยงกันอย่างถาวรและถือได้ว่าเป็นฮาร์ดแวร์ชิ้นเดียวจากมุมมองการตรวจสอบเชน DICE

การจัดสรรจากโรงงาน ขั้นตอนที่ 3

รูปที่ 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 รายการไม่สมบูรณ์

การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 1

รูปที่ 6 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 1

ขั้นตอนที่ 2: รีบูตในโหมดเปิดเครื่อง SDV ที่ปลดล็อก

รีบูต VM ทั้งหมดของ ECU ทั้งหมดในโหมดเปิดเครื่อง SDV ในโหมด UNLOCKED

ในรูปที่ 7 VM-B และ VM-C เข้าร่วมเมชที่ปลอดภัย SDV ในสถานะ Warning ซึ่งสมบูรณ์แล้ว

การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 2

รูปที่ 7 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 2

ขั้นตอนที่ 3: เรียกใช้ sdv_provisioning_tool

เรียกใช้ sdv_provisioning_tool ใน VM แต่ละรายการ

เครื่องมือจะสื่อสารกับเอเจนต์ Service Discovery ในเครื่องและรอให้เอเจนต์ส่งสัญญาณว่า SDV Secure Mesh เสร็จสมบูรณ์แล้ว และเอเจนต์ได้เขียนรายการคีย์สาธารณะ UDS ไปยัง /vvmtruststore/uds_pubs

เมื่อเกิดเหตุการณ์นี้ เครื่องมือจะรับแฮชของ /vvmtruststore/uds_pubs ที่เพิ่งเขียนและแสดงผล แต่จะไม่ใช้แฮชนี้ในโฟลว์นี้

การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 3

รูปที่ 8 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 3

ขั้นตอนที่ 4: ติดตั้งใบรับรอง UDS

  • แยก /vvmtruststore/uds_pubs จาก SDV VM ที่กำหนด ไม่ว่าจะเป็น VM รายการใดก็ได้ เนื่องจาก VM ทั้งหมดในเมชที่ปลอดภัย SDV เดียวกันจะมีไฟล์นี้เหมือนกัน
  • เรียกใบรับรองการจัดเตรียมสำหรับคีย์สาธารณะ UDS ทั้งหมดที่แสดงอยู่ใน /vvmtruststore/uds_pubs นั้น
    • โดยปกติขั้นตอนนี้จะเกี่ยวข้องกับการส่งคีย์สาธารณะ UDS ที่แยกออกมา (หรือไฟล์ /vvmtruststore/uds_pubs) ไปยังเซิร์ฟเวอร์การจัดเตรียมระยะไกล เซิร์ฟเวอร์จะเรียกใบรับรองที่มีอยู่ก่อนแล้วหรือสร้างใบรับรองใหม่โดยตรวจสอบคีย์สาธารณะที่ได้รับกับฐานข้อมูลคีย์สาธารณะ UDS ที่รู้จักซึ่งสร้างขึ้นระหว่างการผลิต ECU
  • เขียน /vvmtruststore/uds_certs ของ SDV VM แต่ละรายการ

การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 4

รูปที่ 9 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 4

ขั้นตอนที่ 5: รีบูตในโหมดเปิดเครื่อง SDV ที่ล็อก

รีบูต VM ทั้งหมดในโหมดเปิดเครื่อง SDV ในโหมด LOCKED

หากเมชที่ปลอดภัย SDV ไม่สมบูรณ์ ให้กลับไปที่ ขั้นตอนที่ 2

การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 5

รูปที่ 10 การเปลี่ยนชิ้นส่วน ขั้นตอนที่ 5