Profil SDV untuk Device Identifier Composition Engine (DICE) adalah ekstensi dari Profil Android untuk DICE. Di SDV, VM menggunakan dua rantai DICE paralel:
- Rantai DICE Secure World
- Rantai DICE SDV Android
Kolom ini dari Deskriptor konfigurasi Profil Android untuk DICE relevan dengan setiap rantai ini:
| Nama | Kunci | Jenis | Deskripsi |
|---|---|---|---|
| Nama komponen <0x | -70002
|
tstr
|
Direkomendasikan di setiap lapisan CDI. Nama komponen mengidentifikasi tahap secara jelas di antara semua rantai DICE hardware yang menjalankan VM SDV Android di kendaraan atau platform kendaraan. |
| Versi keamanan | -70005
|
uint
|
Wajib di setiap tahap CDI. Memungkinkan penentuan kebijakan DICE yang mencegah versi VM jarak jauh yang tidak aman bergabung dengan mesh SDV yang aman. |
| Nama Instance Komponen | -70007
|
tstr
|
Diperlukan pada lapisan CDI khusus VM pertama.Misalnya, setelah hypervisor, untuk rantai DICE SDV Android. Nama instance SDV. Jika beberapa lapisan CDI berisi nama instance komponen, setiap lapisan harus memiliki nilai yang sama. |
Rantai DICE Secure World
Rantai DICE Secure World sama dengan yang diterima server Penyediaan Kunci Jarak Jauh (RKP) Android dari perangkat Android. generateCertificateRequestV2()
HAL IRemotelyProvisionedComponent
mengekspos rantai DICE ini ke Android.
Tabel ini menggambarkan contoh rantai DICE Secure World:
| Tahap booting | Lapisan CDI DICE | Dikeluarkan oleh |
|---|---|---|
| Bootloader utama | CDI[0] |
UDS |
| Bootloader sekunder | CDI[1] |
Bootloader utama |
| Boot TEE | CDI[2] |
Bootloader sekunder |
| Boot TA KeyMint | CDI[3] (Daun) |
TEE |
Untuk menerapkan aplikasi tepercaya (TA) KeyMint, gunakan salah satu opsi berikut:
- Satu instance KeyMint untuk semua VM SDV: Anda HARUS menetapkan satu CDI untuk semua VM.
atau,
- Satu instance KeyMint untuk setiap VM SDV: Anda HARUS menetapkan nilai CDI yang berbeda untuk setiap VM. Setiap nilai CDI HARUS berisi Nama Instance Komponen yang cocok dengan Nama Instance Komponen VM.
Rantai DICE SDV Android
Rantai DICE SDV Android mengesahkan software yang berjalan di jalur booting yang mengarah melalui hypervisor ke sistem operasi (HLOS) tingkat tinggi Android yang berjalan di VM SDV.
Tabel ini menggambarkan contoh rantai DICE SDV Android:
| Tahap booting | Lapisan CDI DICE | Dikeluarkan oleh |
|---|---|---|
| Bootloader utama | CDI[0] |
UDS |
| Bootloader sekunder | CDI[1] |
Bootloader utama |
| Hypervisor | CDI[2] |
Bootloader sekunder |
| HLOS Android | CDI[3] (Leaf)
|
(Android loader di) Hypervisor1 |
1 Hypervisor mensertifikasi bootloader Android di guest sebagai lapisan. Bootloader Android mensertifikasi HLOS Android.
Sertifikat CDI HLOS Android
Bootloader Android (atau Hypervisor, jika tidak ada bootloader Android, tetapi hanya program "loader" Android yang memuat VM dalam Hypervisor) menandatangani Sertifikat CDI HLOS Android dan mencakup HLOS Android. Misalnya, cakupannya mencakup semua kode yang diverifikasi oleh Bootloader Android sesuai dengan Boot Terverifikasi Android (AVB).
Sertifikat CDI HLOS Android harus berisi nilai khusus SDV dari OS Android yang memitigasi kerentanan keamanan. Misalnya, potensi kebocoran rahasia dengan melarang VM yang memiliki kerentanan yang diketahui dari SDV Secure Mesh. Verifikasi AVB memberikan sebagian besar nilai ini.
Sertifikat ini juga diserahkan ke KeyMint di TEE, tempat sertifikat ditandatangani oleh CDI leaf dari rantai DICE SecureWorld, dan diteruskan ke Android di DeviceInfo untuk mengaktifkan fitur seperti pengesahan Kunci dan ID di Android inti.
Kolom input kode dan sertifikat codeHash
Ringkasan VBMeta (output yang dilakukan bootloader Android untuk verifikasi AVB) mencakup software HLOS Android. Oleh karena itu,
ID ini berfungsi sebagai android-dice-input-values untuk mendapatkan
secret CDI, dan masuk ke kolom dice-cert-fields pada
sertifikat CDI.
Algoritma hash yang direkomendasikan untuk AVB adalah SHA-256 yang menghasilkan ringkasan VBMeta sepanjang 32 byte. Berbeda dengan Open Profile untuk DICE, Android Profile untuk DICE memungkinkan android-dice-hash-algos menggunakan android-dice-input-values sepanjang 32 byte untuk alur DICE serta menempatkan nilai sepanjang 32 byte yang sama sebagai codeHash dalam sertifikat DICE.
Deskriptor konfigurasi: kolom di Profil Android untuk DICE
Selain yang dijelaskan untuk semua lapisan CDI, hal-hal spesifik berikut berlaku untuk Kolom deskriptor konfigurasi dari Profil Android untuk DICE:
| Nama | Kunci | Jenis | Deskripsi |
|---|---|---|---|
| Versi komponen | -70003
|
int
|
Versi OS sistem dari
AVB version-info-avb. Juga
sama seperti
android.os.Build.VERSION.release. |
| Versi keamanan | -70005
|
uint
|
Tingkat patch keamanan
partisi system dalam format YYYYMMDD. |
| Penanda VM RKP | -70006
|
null
|
Penanda VM RKP mencegah : Penyediaan Kunci Jarak Jauh mengeluarkan sertifikat untuk rantai DICE SDV Android. |
Penanda VM RKP harus muncul di sertifikat CDI pertama dari Rantai DICE SDV Android yang tidak sama dengan rantai DICE Secure World. Selain itu, TIDAK BOLEH muncul di sertifikat CDI lebih lanjut untuk mencegah server RKP
rkp-avf-support menganggap rantai DICE berasal dari VM RKP.
Deskriptor konfigurasi: kolom baru
Deskripsi Konfigurasi Sertifikat CDI HLOS Android harus berisi nilai khusus SDV di luar yang dijelaskan oleh Profil Android untuk DICE. Profil SDV untuk DICE mencadangkan rentang nilai kunci [-71000, -71999] untuk tujuan ini. Anda dapat menambahkan kolom khusus penerapan menggunakan nilai kunci di luar rentang yang dicadangkan. Nilai khusus SDV adalah:
| Nama | Kunci | Jenis | Deskripsi |
|---|---|---|---|
| Status booting terverifikasi | -71000
|
tstr
|
green, yellow, atau orange.
|
| build fingerprint | -71001
|
tstr
|
String yang dapat dibaca manusia yang secara unik mengidentifikasi build ini, sama seperti ro.build.fingerprint. CDD Android, Parameter Build 3.2.2, cdd-3-2-2 mendefinisikan hal ini.
VBMeta menyimpannya sebagai properti
bernama,
com.android.build.system.fingerprint |
system_ext
patch
keamanan |
-71002
|
uint
|
Tingkat patch keamanan partisi
system_ext dalam format YYYYMMDD. |
product
patch
keamanan |
-71003
|
uint
|
Tingkat patch keamanan partisi
product dalam format YYYYMMDD. |
vendor
patch
keamanan |
-71004
|
uint
|
Tingkat patch keamanan partisi
vendor dalam format YYYYMMDD. |
boot
patch
keamanan |
-71005
|
uint
|
Tingkat patch keamanan boot
partisi (yang berisi Kernel
Linux) dalam format YYYYMMDD. |
| Mode boot SDV | -71006
|
tstr
|
locked atau unlocked. Untuk mempelajari lebih lanjut,
lihat Status dan Penyediaan Mesh. |
Pemilihan nilai input mode CDI HLOS Android
android-dice-mode sertifikat CDI HLOS Android menggunakan
definisi berikut:
| AVB TIDAK TERKUNCI | AVB TERKUNCI | |
|---|---|---|
| Mode booting SDV TIDAK TERKUNCI | Debug | Debug |
| Mode booting SDV DIKUNCI | Tidak dikonfigurasi (tidak valid) | Normal |
Fungsi turunan kunci
android-dice-kdf yang mendapatkan pasangan kunci publik dan pribadi dari
secret CDI_Attest untuk CDI HLOS Android harus berupa HKDF dengan SHA512 sebagai
fungsi hash-nya.