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
SECUREdari 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
UNSECUREdari 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:
- Tentukan
deviceModesebagaiDeviceMode::Normal. - Tentukan
diceChainListsebagai daftar rantai DICE yang relevan dengan VM SDV. - Untuk setiap
diceChaindidiceChainList:- Tentukan
cdiListsebagai daftar sertifikat CDI didiceChain: - Untuk setiap
cdiCertdicdiList:- Tentukan
cdiDeviceModesebagaiDeviceModeyang sesuai dengancdiCert.mode. - Tetapkan
deviceModekemin(deviceMode, cdiDeviceMode).
- Tentukan
- Tentukan
- 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):
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.
- 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_pubsyang baru saja ditulis dan menampilkannya.
Gambar 2. Penyediaan pabrik, langkah 1.
Langkah 2: Tulis VVM Factory Trust
Di satu VM dari setiap ECU:
- Tulis hash
/vvmtruststore/uds_pubsyang dihasilkan olehsdv_provisioning_toolpada langkah sebelumnya ke VVM Factory Trust. Cara penulisan ini dilakukan bersifat khusus OEM atau vendor dan berada di luar cakupan spesifikasi ini.
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.
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:
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.
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.
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.
Gambar 8. Penggantian suku cadang, langkah 3.
Langkah 4: Instal sertifikat UDS
- Ekstrak
/vvmtruststore/uds_pubsdari 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_pubstersebut.- 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.
- Langkah ini biasanya melibatkan pengiriman kunci publik UDS yang diekstrak (atau file
- Tulis
/vvmtruststore/uds_certsdari setiap VM SDV.
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.
Gambar 10. Penggantian suku cadang, langkah 5.