Status dan penyediaan Mesh

Mode Booting SDV menentukan perilaku agen Penemuan Layanan SDV di VM SDV saat mencoba terhubung ke agen Penemuan Layanan lainnya (yang berjalan di VM SDV lain) untuk membuat mesh yang aman. Hal ini mirip dengan konsep status perangkat yang ada dari Android Booting Terverifikasi.

Mode Booting SDV digunakan saat menyediakan atau mengupdate Vehicle VM Trust Store (VVM Trust Store, juga disebut sebagai vvmtruststore).

Perilaku SDV Secure Mesh

Mesh Penemuan Layanan berada dalam salah satu status berikut, bergantung pada nilai booting yang diterimanya: Normal, Warning, atau Fatal.

Di kendaraan produksi yang dikirimkan ke pelanggan, SDV Secure Mesh harus dalam status Normal. Mesh memerlukan intervensi diagnostik untuk beralih dari status Normal ke Warning. Di lingkungan produksi (misalnya, bukan pengembangan atau proses debug), status Warning hanya terjadi selama penyediaan.

Fatal adalah kegagalan mendasar, mirip dengan image system_ext yang gagal melakukan verifikasi tanda tangan di bootloader Android. Jika SDV Secure Mesh bertransisi dari Normal ke Fatal hanya karena update over-the-air (OTA), update tersebut dianggap buruk dan mesh akan kembali ke versi Normal aslinya.

Bagian berikut menjelaskan status secara lebih mendetail.

Normal

  • Booting sistem adalah SECURE dari perspektif Penemuan Layanan.
  • Penemuan Layanan hanya terhubung dengan peer yang melakukan booting secara aman. Peer yang melakukan booting secara aman menunjukkan bahwa SDV Secure Mesh juga aman.

Warning

  • Booting sistem mungkin telah terganggu karena beberapa verifikasi dinonaktifkan.
  • Penemuan Layanan hanya terhubung dengan peer yang memiliki kumpulan verifikasi yang dinonaktifkan yang sama persis, sehingga memastikan bahwa semua peer di SDV Secure Mesh memiliki properti keamanan yang identik.
  • Keberhasilan booting peer tidak dapat diverifikasi karena kegagalan lokal atau fitur yang dinonaktifkan.
  • Di luar lingkungan atau situasi pengembangan, hal ini memiliki implikasi berikut:
    • Data pengguna tidak boleh tersedia. Artinya, data tersebut tidak boleh ditransmisikan atau terpengaruh oleh komunikasi melalui SDV Secure Mesh.
    • Hanya layanan yang diperlukan untuk alur penyediaan yang boleh tersedia saat mesh berada dalam status ini.

Fatal

  • Error penting selama tahap booting sistem.
  • Setidaknya ada satu kegagalan atau error mendasar yang mencegah agen Penemuan Layanan membuat mesh. Layanan lokal tidak dapat berkomunikasi dengan layanan jarak jauh.
  • Booting sistem adalah UNSECURE dari perspektif Penemuan Layanan.

Mode Booting SDV

Mode Booting SDV memiliki dua kemungkinan nilai: LOCKED dan UNLOCKED. Untuk pembuatan mesh Penemuan Layanan, LOCKED menunjukkan bahwa error verifikasi bersifat fatal, dan UNLOCKED berarti tidak fatal.

Kondisi Mode Booting SDV
UNLOCKED LOCKED
VVM Trust Store lokal kosong Warning Fatal
Rantai DICE lokal tidak ada Fatal Fatal
Kegagalan verifikasi rantai DICE lokal Warning Fatal
Mode SDV dan AVB lokal cocok Lihat tabel di Mode SDV lokal dan AVB cocok
Perbandingan nilai mode perangkat jarak jauh Lihat tabel di Jarak jauh mode perangkat perbandingan nilai
Kegagalan kecocokan uds_pubs jarak jauh Warning Fatal
Kegagalan verifikasi rantai DICE jarak jauh (menggunakan kebijakan DICE) Warning Fatal
Kegagalan handshake autentikasi jarak jauh Fatal Fatal

Mode SDV dan AVB lokal cocok

Tabel berikut menunjukkan pengaruh mode AVB dan Mode Booting SDV terhadap perilaku SDV Secure Mesh. Warnanya seperti yang ditentukan di bagian integrasi khusus Android dalam dokumentasi AVB.

Mode AVB x Mode Booting SDV Mode Booting SDV
UNLOCKED LOCKED
AVB LOCKED Hijau Warning Normal
Kuning Fatal Fatal
AVB UNLOCKED Orange Warning Fatal

Nilai mode perangkat

Dalam rantai DICE, setiap sertifikat CDI memiliki nilai mode. Nilai ini menjelaskan status keamanan lapisan tersebut berdasarkan input konfigurasinya. Untuk menyatakan posisi keamanan semua software di perangkat, spesifikasi SDV menentukan nilai Mode Perangkat. Nilai ini berasal dari nilai mode semua tahap CDI dalam rantai DICE yang relevan dengan VM SDV tertentu (yaitu, Android HLOS dan Secure World) dan menggunakan enumerasi berikut:

enum DeviceMode {
  NotConfigured = 0,
  Recovery = 1,
  Debug = 2,
  Normal = 3,
}

Algoritma

Algoritma untuk menghitung Nilai Mode Perangkat adalah sebagai berikut:

  1. Tentukan deviceMode sebagai DeviceMode::Normal.
  2. Tentukan diceChainList sebagai daftar rantai DICE yang relevan dengan VM SDV.
  3. Untuk setiap diceChain di diceChainList:
    1. Tentukan cdiList sebagai daftar sertifikat CDI di diceChain:
    2. Untuk setiap cdiCert di cdiList:
      1. Tentukan cdiDeviceMode sebagai DeviceMode yang sesuai dengan cdiCert.mode.
      2. Tetapkan deviceMode ke min(deviceMode, cdiDeviceMode).
  4. Tampilkan deviceMode.

Perbandingan nilai mode perangkat jarak jauh

Agen Penemuan Layanan hanya terhubung dengan agen lain yang memiliki Nilai Mode Perangkat yang sama.

Nilai Mode Perangkat memastikan bahwa mesh tidak dapat memiliki anggota dengan properti keamanan yang berbeda. Mesh yang dihasilkan memiliki posisi keamanan yang seragam di antara semua anggotanya.

Nilai Mode Perangkat Jarak jauh
Tidak dikonfigurasi Debug Pemulihan Normal
Lokal Tidak dikonfigurasi Fatal Fatal Fatal Fatal
Debug Fatal Warning Fatal Fatal
Pemulihan Fatal Fatal Warning Fatal
Normal Fatal Fatal Fatal Normal

Alur penyediaan pabrik

Ini adalah alur penyediaan di jalur perakitan kendaraan, yang diasumsikan bahwa infrastruktur kunci publik tidak tersedia. Alur ini bergantung pada nilai 32 byte yang disimpan dalam memori yang dapat diprogram satu kali (OTP) yang disebut Vehicle VM (VVM) Factory Trust atau vvmfactorytrust. Jika ditetapkan, nilai ini akan diteruskan ke kernel sebagai parameter bernama androidboot.sdv.vvmfactorytrust.

Semua VM di ECU harus memiliki Mode Booting SDV dan VVM Factory Trust yang sama.

Keadaan awal

Semua ECU awalnya adalah Mode Booting SDV dalam mode UNLOCKED dengan VVM Factory Trust dan Vehicle VM Trust Store kosong, selain uds_certs yang ada di vvmtruststore. Gambar 1 menggambarkan contoh ketika ada tiga VM SDV (VM-A, VM-B, dan VM-C) yang didistribusikan dalam dua ECU terpisah (ECU-0 dan ECU-1):

Contoh penyediaan pabrik, status awal

Gambar 1. Penyediaan pabrik, status awal.

Langkah 1: Jalankan sdv_provisioning_tool

Booting semua VM dari semua ECU.

Di setiap VM, jalankan sdv_provisioning_tool.

  1. Alat ini berkomunikasi dengan agen Penemuan Layanan lokal dan menunggu agen tersebut memberi sinyal bahwa SDV Secure Mesh telah selesai, dan agen telah menulis daftar kunci publik UDS ke /vvmtruststore/uds_pubs.
  2. Saat hal ini terjadi, alat akan mendapatkan hash dari /vvmtruststore/uds_pubs yang baru saja ditulis dan menampilkannya.

Penyediaan pabrik, langkah 1

Gambar 2. Penyediaan pabrik, langkah 1.

Langkah 2: Tulis VVM Factory Trust

Di satu VM dari setiap ECU:

  1. Tulis hash /vvmtruststore/uds_pubs yang dihasilkan oleh sdv_provisioning_tool pada langkah sebelumnya ke VVM Factory Trust. Cara penulisan ini dilakukan bersifat khusus OEM atau vendor dan berada di luar cakupan spesifikasi ini.

Penyediaan pabrik, langkah 2

Gambar 3. Penyediaan pabrik, langkah 2.

Langkah 3: Reboot dalam Mode Booting SDV terkunci

Reboot semua VM di semua ECU dalam Mode Booting SDV dalam mode LOCKED.

Agen Penemuan Layanan mempercayai VM di ECU dengan kunci publik UDS yang tercantum di uds_pubs karena hash file ini cocok dengan VVM Factory Trust.

Karena ECU disediakan bersama, ECU tersebut terikat secara permanen dan dapat secara efektif dianggap sebagai satu bagian hardware dari perspektif verifikasi rantai DICE.

Penyediaan pabrik, langkah 3

Gambar 4. Penyediaan pabrik, langkah 3.

Alur penggantian suku cadang

Ini adalah alur penyediaan di bengkel atau garasi perbaikan mobil resmi, tempat ECU yang rusak harus diganti dengan ECU baru yang belum disediakan.

Alur ini bergantung pada sertifikat UDS yang dikeluarkan langsung oleh otoritas root yang dinyatakan dalam vvmconfig atau secara tidak langsung, melalui beberapa rantai otoritas perantara.

Keadaan awal

Semua VM sudah disediakan pabrik dan berjalan dalam Mode Booting SDV dalam mode LOCKED.

Gambar 5 menggambarkan contoh ketika ECU-0 tidak berfungsi dan perlu diganti:

Penggantian suku cadang, status awal

Gambar 5. Penggantian suku cadang, status awal.

Langkah 1: Instal ECU baru

Instal ECU baru, yang berada dalam status kosong dan belum disediakan.

Pada Gambar 6, saat ECU-2 (ECU pengganti) diaktifkan, ada dua SDV Secure Mesh yang terpisah: satu dalam status Warning dan yang lainnya dalam status Normal. Kedua SDV Secure Mesh tidak lengkap.

Penggantian suku cadang, langkah 1

Gambar 6. Penggantian suku cadang, langkah 1.

Langkah 2: Reboot dalam Mode Booting SDV tidak terkunci

Reboot semua VM dari semua ECU dalam Mode Booting SDV dalam mode UNLOCKED.

Pada Gambar 7, VM-B dan VM-C bergabung dengan SDV Secure Mesh Warning, yang sudah selesai.

Penggantian komponen, langkah 2

Gambar 7. Penggantian suku cadang, langkah 2.

Langkah 3: Jalankan sdv_provisioning_tool

Di setiap VM, jalankan sdv_provisioning_tool.

Alat ini berkomunikasi dengan agen Penemuan Layanan lokal dan menunggu agen tersebut memberi sinyal bahwa SDV Secure Mesh telah selesai, dan agen telah menulis daftar kunci publik UDS ke /vvmtruststore/uds_pubs.

Saat hal ini terjadi, alat akan mendapatkan hash dari /vvmtruststore/uds_pubs yang baru saja ditulis dan menampilkannya, tetapi hash ini tidak digunakan dalam alur ini.

Penggantian suku cadang, langkah 3

Gambar 8. Penggantian suku cadang, langkah 3.

Langkah 4: Instal sertifikat UDS

  • Ekstrak /vvmtruststore/uds_pubs dari VM SDV arbitrer. Tidak masalah yang mana karena identik untuk semua VM di SDV Secure Mesh yang sama.
  • Ambil sertifikat penyediaan untuk semua kunci publik UDS yang tercantum di /vvmtruststore/uds_pubs tersebut.
    • Langkah ini biasanya melibatkan pengiriman kunci publik UDS yang diekstrak (atau file /vvmtruststore/uds_pubs) ke server penyediaan jarak jauh. Server akan mengambil sertifikat yang sudah ada atau membuat sertifikat baru dengan memeriksa kunci publik yang diterima terhadap database kunci publik UDS yang dikenal yang dibuat selama pembuatan ECU.
  • Tulis /vvmtruststore/uds_certs dari setiap VM SDV.

Penggantian suku cadang, langkah 4

Gambar 9. Penggantian suku cadang, langkah 4.

Langkah 5: Reboot dalam Mode Booting SDV terkunci

Reboot semua VM dalam Mode Booting SDV dalam mode LOCKED.

Jika SDV Secure Mesh tidak lengkap, kembali ke Langkah 2.

Penggantian komponen, langkah 5

Gambar 10. Penggantian suku cadang, langkah 5.