Profil SDV untuk DICE

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.