Konsep baru yang disebut Mode Boot SDV, yang dapat berupa Terkunci atau Tidak Terkunci, 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. Konsep ini mirip dengan konsep Status Perangkat yang ada dari Boot Terverifikasi Android.
Mode Boot SDV digunakan saat menyediakan Vehicle VM Trust Store atau saat memperbaruinya.
Perilaku Mesh Aman SDV
Service Discovery Mesh dapat berada dalam salah satu status berikut, bergantung pada nilai booting yang diterimanya: Normal, Peringatan, atau Fatal.
Mobil akan berada di tangan pemiliknya hanya jika mesh dalam status "Normal". Mesh tidak dapat beralih dari status "Normal" ke "Peringatan" tanpa intervensi diagnostik. "Peringatan", di lingkungan produksi (misalnya, bukan pengembangan/penelusuran bug), hanya terjadi selama penyediaan.
"Fatal" adalah kegagalan mendasar, mirip dengan kegagalan verifikasi tanda tangan gambar system_ext di bootloader Android. Jika Jaringan SDV bertransisi
dari "Normal" ke "Fatal" hanya karena update Over The Air (OTA), update tersebut
akan dianggap buruk dan Anda akan kembali ke versi "Normal"
asli.
Bagian berikut menjelaskan status tersebut secara lebih mendetail.
Normal
- Booting sistem adalah
SECUREdari perspektif Penemuan Layanan. - Penemuan Layanan hanya terhubung dengan peer yang diyakini telah di-boot dengan aman dan, sebagai akibatnya, diyakini bahwa Jaringan Aman SDV yang menjadi bagiannya aman.
Peringatan
- Booting sistem mungkin telah terganggu karena beberapa verifikasi dinonaktifkan.
- Penemuan Layanan hanya terhubung dengan peer yang juga memiliki verifikasi yang sama yang dinonaktifkan. Oleh karena itu, perangkat ini adalah bagian dari SDV Secure Mesh dengan properti keamanan yang sama dengan dirinya sendiri.
- Booting Peer mungkin telah berhasil atau gagal - tidak dapat diverifikasi karena kegagalan / penonaktifan lokal.
- Di luar lingkungan atau situasi pengembangan, hal ini memiliki implikasi sebagai berikut:
- Data pengguna tidak boleh tersedia. Artinya, data tersebut tidak boleh dikirimkan atau terpengaruh oleh komunikasi melalui SDV Secure.
- Hanya layanan yang diperlukan untuk alur penyediaan yang harus tersedia saat mesh berada dalam status ini.
Fatal
- Error kritis pada 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 TIDAK AMAN dari perspektif Penemuan Layanan.
Mode Booting SDV
Mode Boot SDV memiliki dua kemungkinan nilai: UNLOCKED dan LOCKED. Terkait pembentukan mesh Penemuan Layanan, mode TERKUNCI berarti error verifikasi bersifat fatal, sedangkan dalam mode TIDAK TERKUNCI, error verifikasi tidak bersifat fatal.
Perhatikan bahwa Mode Boot SDV berbeda dengan Status Perangkat Android (alias Mode AVB). Mode Boot SDV memandu perilaku SDV Secure Mesh dan apakah error koneksi mesh bersifat FATAL. Mode AVB menentukan apakah verifikasi yang dilakukan oleh bootloader Android bersifat fatal.
| KONDISI | Mode Booting SDV | |
|---|---|---|
| TERBUKA | LOCKED | |
| Local VVM Trust Store kosong | Peringatan | Fatal |
| Rantai DICE Lokal Tidak Ada | Fatal | Fatal |
| Kegagalan Verifikasi Rantai DICE Lokal | Peringatan | Fatal |
| Pencocokan Mode SDV & AVB Lokal | Lihat tabel | |
| Perbandingan nilai Mode Perangkat Jarak Jauh | Lihat tabel | |
Kegagalan pencocokan uds_pubs jarak jauh |
Peringatan | Fatal |
| Kegagalan Verifikasi Rantai DICE Jarak Jauh (menggunakan Kebijakan DICE) | Peringatan | Fatal |
| Kegagalan Handshake Autentikasi Jarak Jauh | Fatal | Fatal |
Pencocokan Mode SDV & AVB Lokal
Tabel berikut menunjukkan pengaruh Mode AVB dan Mode Boot SDV terhadap Perilaku Mesh Aman SDV. Warna ditentukan seperti dalam bagian Integrasi Khusus Android dalam dokumentasi AVB.
| Mode AVB x Mode Boot SDV | Mode Booting SDV | ||
|---|---|---|---|
| TERBUKA | LOCKED | ||
| AVB TERKUNCI | Hijau | Peringatan | Normal |
| Kuning | Fatal | Fatal | |
| AVB TIDAK TERKUNCI | Orange | Peringatan | Fatal |
Nilai Mode Perangkat
Dalam Rantai DICE, setiap sertifikat CDI memiliki Nilai Mode. Digunakan untuk mendeskripsikan status keamanan lapisan tersebut berdasarkan input konfigurasinya. Untuk menyatakan sikap keamanan semua software di perangkat, Nilai Mode Perangkat ditentukan, yang berasal dari Nilai Mode semua tahap CDI Rantai DICE yang relevan dengan VM SDV tertentu (yaitu, Android HLOS dan Secure World) dan ditentukan sebagai berikut:
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
Algoritma
- Izinkan
deviceModemenjadiDeviceMode::Normal - Misalkan
diceChainListadalah daftar Rantai DICE yang relevan dengan VM SDV - Untuk setiap
diceChaindidiceChainList:- Biarkan
cdiListmenjadi daftar sertifikat CDI didiceChain: - Untuk setiap
cdiCertdicdiList:- Misalkan
cdiDeviceModeadalahDeviceModeyang sesuai dengancdiCert.mode. - Setel
deviceModekemin(deviceMode, cdiDeviceMode).
- Misalkan
- Biarkan
- Tampilkan
deviceMode.
Perbandingan nilai Mode Perangkat Jarak Jauh
Agen Penemuan Layanan hanya akan terhubung dengan Agen lain yang memiliki Nilai Mode Perangkat yang sama dengan dirinya.
Nilai Mode Perangkat memastikan bahwa mesh tidak dapat memiliki anggota dengan properti keamanan yang berbeda. Oleh karena itu, mesh yang dihasilkan memiliki posisi keamanan yang seragam di antara semua anggotanya.
| Nilai Mode Perangkat | Eksternal | ||||
|---|---|---|---|---|---|
| Tidak Dikonfigurasi | Debug | Pemulihan | Normal | ||
| Lokal | Tidak Dikonfigurasi | Fatal | Fatal | Fatal | Fatal |
| Debug | Fatal | Peringatan | Fatal | Fatal | |
| Pemulihan | Fatal | Fatal | Peringatan | Fatal | |
| Normal | Fatal | Fatal | Fatal | Normal | |
Alur Penyediaan Pabrik
Ini adalah alur penyediaan di jalur perakitan kendaraan, yang mengasumsikan 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 VVMFactoryTrust. Nilai ini, jika disetel, akan diteruskan ke kernel sebagai
parameter bernama androidboot.sdv.vvmfactorytrust.
Semua VM dalam ECU harus memiliki Mode Boot SDV dan VVMFactoryTrust yang sama.
Keadaan Awal
Semua ECU awalnya tidak terkunci dalam Mode Boot SDV, dengan VVMFactoryTrust dan VVMTrustStore kosong, selain kemungkinan 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).
Langkah 1: Jalankan sdv_provisioning_tool
Booting semua VM dari semua ECU.
Di setiap VM:
Jalankan
sdv_provisioning_tool- Alat ini berkomunikasi dengan agen Service Discovery lokal dan menunggu
untuk memberi sinyal bahwa SDV Secure Mesh telah selesai, dan agen telah
menulis daftar kunci publik UDS ke
/vvmtruststore/uds_pubs. - Jika hal ini terjadi, alat akan mendapatkan hash
/vvmtruststore/uds_pubsyang baru saja ditulis dan menampilkannya.
- Alat ini berkomunikasi dengan agen Service Discovery lokal dan menunggu
untuk memberi sinyal bahwa SDV Secure Mesh telah selesai, dan agen telah
menulis daftar kunci publik UDS ke
Langkah 2: Tulis VVMFactoryTrust
Di satu VM setiap ECU:
- Tulis hash
/vvmtruststore/uds_pubsyang dihasilkan olehsdv_provisioning_toolpada langkah sebelumnya ke VVMFactoryTrust. Cara penulisan ini dilakukan khusus untuk OEM/vendor dan oleh karena itu berada di luar cakupan spesifikasi ini.
Langkah 3: Mulai ulang dalam Mode Boot SDV Terkunci
Mulai ulang semua VM di semua ECU dalam Mode Boot SDV Terkunci.
Agen Penemuan Layanan memercayai VM di ECU dengan kunci publik UDS yang tercantum
di uds_pubs karena hash file ini cocok dengan VVMFactoryTrust.
Karena ECU disediakan bersama, ECU tersebut terikat secara permanen dan dapat dianggap sebagai satu bagian hardware dari perspektif verifikasi rantai DICE.
Alur penggantian suku cadang
Ini adalah alur penyediaan di bengkel atau garasi reparasi mobil resmi, tempat ECU yang rusak harus diganti dengan ECU baru yang belum disediakan.
Alur ini bergantung pada sertifikat UDS yang dikeluarkan secara langsung oleh otoritas root yang dinyatakan dalam vvmconfig atau secara tidak langsung, melalui beberapa rantai otoritas perantara.
Keadaan Awal
Semua VM telah disediakan dari pabrik dan berjalan dengan Mode Boot SDV yang dikunci.
Gambar 5 menggambarkan contoh saat ECU-0 tidak berfungsi dan dengan demikian perlu
diganti.
Langkah 1: Instal ECU baru
Pasang ECU baru, yang akan berada dalam status kosong dan belum disediakan.
Pada Gambar 6, saat ECU-2 (ECU pengganti) diaktifkan, ada dua Jaringan Aman SDV yang tidak terkait: satu dalam status peringatan dan satu lagi dalam status normal. Kedua Jaringan Aman SDV tidak lengkap.
Langkah 2: Mulai ulang dalam Mode Boot SDV yang tidak terkunci
Mulai ulang semua VM dari semua ECU dalam Mode Boot SDV yang tidak terkunci.
Pada Gambar 7, VM-B dan VM-C kemudian bergabung dengan SDV Secure Mesh peringatan, yang kini telah selesai.
Langkah 3: Jalankan sdv_provisioning_tool
Di setiap VM, jalankan sdv_provisioning_tool.
Alat ini berkomunikasi dengan agen Service Discovery lokal dan menunggu
untuk memberi sinyal bahwa SDV Secure Mesh telah selesai, dan agen telah
menulis daftar kunci publik UDS ke /vvmtruststore/uds_pubs.
Jika hal ini terjadi, alat akan mendapatkan hash /vvmtruststore/uds_pubs yang baru saja ditulis dan menampilkannya, tetapi hash ini tidak digunakan dalam alur ini.
Langkah 4: Instal sertifikat UDS
- Ekstrak
/vvmtruststore/uds_pubsdari VM SDV arbitrer. Tidak masalah yang mana karena akan identik untuk semua VM di SDV Secure Mesh yang sama. - Ambil sertifikat penyediaan untuk semua kunci publik UDS yang tercantum di
/vvmtruststore/uds_pubstersebut.- Biasanya, hal ini berarti mengirimkannya ke server jarak jauh yang telah menyimpan sertifikat atau akan membuatnya dengan memeriksa kunci publik yang diterima terhadap database kunci publik UDS yang diketahui. Database ini akan dibuat dari kunci publik UDS yang diekstrak selama pembuatan ECU.
- Tulis
/vvmtruststore/uds_certssetiap VM SDV.
Langkah 5: Mulai ulang dalam Mode Boot SDV terkunci
Mulai ulang semua VM dengan Mode Boot SDV yang terkunci.
Jika karena alasan tertentu SDV Secure Mesh tidak selesai, kembali ke Langkah 2.