Halaman ini menjelaskan cara mengaktifkan fitur benih enkripsi pengikatan berbasis kendaraan.
Ringkasan
Tujuan utama dari fitur vehicle binding seed adalah untuk lebih melindungi privasi pengguna dengan menjaga data pada sistem In-Vehicle Infotainment (IVI) agar tidak terhapus dari kendaraan. Hal ini dilakukan dengan mengikat kunci enkripsi penyimpanan ke beberapa Unit Kontrol Elektronik (ECU) lain sehingga jika IVI dilepas dan ditempatkan di kendaraan lain (atau dijalankan di bangku tes), data pengguna yang dienkripsi pada IVI tidak dapat didekripsi.
Untuk mengikat kunci enkripsi file, Vold menggabungkan seed khusus kendaraan dengan derivasi kunci enkripsi kunci sehingga kuncinya unik dan terikat secara fisik ke kendaraan. Benihnya adalah larik byte, yang diekspos sebagai properti Lapisan Abstraksi Perangkat Keras Kendaraan (VHAL) baru oleh OEM, STORAGE_ENCRYPTION_BINDING_SEED
. Izin properti ini dibatasi sehingga hanya dapat ditanyakan oleh daemon sistem yang memiliki hak istimewa.
Diagram arsitektur
Gambar ini mengilustrasikan arsitektur integrasi terikat kendaraan:
Gambar 1. Arsitektur kendaraan terikat.
Aktifkan pengikatan berbasis kendaraan
Pengikatan enkripsi penyimpanan ke kendaraan harus diaktifkan secara eksplisit dan tidak dapat diaktifkan atau dinonaktifkan tanpa melakukan reset pabrik. Artinya, pembaruan Over-the-Air (OTA) tidak dapat mengaktifkan fitur tersebut tanpa juga menghapus perangkat. OEM dapat memilih untuk mengaktifkan fitur tersebut saat melakukan upgrade jika mereka juga melakukan reset perangkat ke setelan pabrik. Misalnya pada kunjungan dinas.
Fitur ini diaktifkan dengan mendukung properti STORAGE_ENCRYPTION_BINDING_SEED
di HAL kendaraan yang disediakan vendor. Properti ini menyimpan string byte dengan panjang 16 byte dan diharapkan disimpan pada ECU yang terpisah dari IVI. Properti ini awalnya disetel oleh Android Automotive OS (AAOS), yang menghasilkannya menggunakan Cryptographically Secure Random Number Generator (CSRNG). AAOS kemudian membaca properti pada boot berikutnya.
Cara VHAL menyimpan nilai STORAGE_ENCRYPTION_BINDING_SEED
bergantung pada vendor tertentu. Kami mempunyai rekomendasi umum untuk melindungi benih:
- ( Direkomendasikan ) Benih disimpan oleh ECU di dalam kendaraan yang secara fisik terlindungi dengan baik. Kalau tidak, sepele saja IVI dan ECU dicabut dari kendaraan.
- ( Disarankan ) IVI dan ECU harus saling melakukan autentikasi untuk menukarkan benih untuk mencegah spoofing permintaan benih dari ECU.
- ( Direkomendasikan ) Benih harus disebarkan menggunakan saluran yang aman agar tidak diendus oleh bus CAN.
Selain itu, tambahkan yang berikut ini untuk memastikan vendor init.target.rc
pada late-fs
sebelum mount_all --late
:
# feed vehicle binding seed to vold exec_start vold_seed_binding
Kendaraan HAL harus dimulai pada early_hal
bukan hal now
. Properti sistem persist.*
tidak dapat diakses pada early-hal
karena partisi /data
belum dipasang.
Konfigurasikan pengikatan berbasis kendaraan
Jika seed ECU tidak cocok, perangkat akan reboot ke pemulihan dan meminta pengguna untuk menghapus partisi /data
atau mencoba lagi.
Perilaku prompt dan wipe data dapat diubah di builtins.cpp :
- Ubah
prompt_and_wipe_data
menjadiwipe_data
. Perangkat akan terhapus lalu melakukan boot ulang tanpa diminta. - Pesan prompt terdapat di recovery.cpp .
Gambar 2. Pesan cepat.
Uji pengikatan berbasis kendaraan
Pengujian tiruan
Tes tiruan disediakan di packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Untuk menjalankan tes tiruan ini:
attest libvehicle_binding_util_test
Tes integrasi
Tes setidaknya disediakan di packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Untuk menjalankan tes integrasi ini:
atest vehicle_binding_integration_test