Halaman ini menjelaskan cara mengaktifkan fitur seed enkripsi binding berbasis kendaraan.
Ringkasan
Tujuan utama dari fitur seed binding kendaraan adalah untuk lebih melindungi privasi pengguna dengan menjaga data di sistem Infotainmen dalam Kendaraan (IVI) agar tidak dikeluarkan dari kendaraan. Ini adalah dilakukan dengan mengikat kunci enkripsi penyimpanan ke beberapa Electronic Control Unit (ECU) lain sehingga jika IVI dilepas dan ditempatkan di kendaraan lain (atau dijalankan di bangku tes), data pengguna terenkripsi di IVI tidak dapat didekripsi.
Untuk mengikat kunci enkripsi file, Vold mencampur seed khusus kendaraan dengan enkripsi kunci
turunan kunci, sehingga kunci itu unik
dan terikat secara fisik ke kendaraan. Seed adalah array byte,
diekspos sebagai properti Vehicle Hardware Abstraksi Layer (VHAL) baru oleh OEM,
STORAGE_ENCRYPTION_BINDING_SEED
. Izin properti ini dibatasi sedemikian rupa sehingga
itu hanya dapat dikueri oleh {i>
daemon<i} sistem dengan hak istimewa.
Diagram arsitektur
Gambar ini mengilustrasikan arsitektur integrasi terikat kendaraan:
Gambar 1. Arsitektur yang terikat kendaraan.
Aktifkan binding berbasis kendaraan
Binding enkripsi penyimpanan ke kendaraan harus diaktifkan secara eksplisit dan tidak dapat diaktifkan atau nonaktif tanpa melakukan {i>factory reset<i}. Ini berarti bahwa pembaruan {i> Over-the-Air<i} (OTA) tidak dapat mengaktifkan fitur tersebut tanpa menghapus total perangkat. OEM dapat memilih untuk mengaktifkan fitur tersebut pada meng-upgrade perangkat jika mereka juga mereset perangkat ke setelan pabrik. Misalnya, pada kunjungan layanan.
Fitur ini diaktifkan dengan mendukung properti STORAGE_ENCRYPTION_BINDING_SEED
di HAL kendaraan yang
disediakan oleh vendor. Properti ini menyimpan string byte sepanjang 16 byte dan
diharapkan untuk disimpan di ECU
yang terpisah dari IVI. Properti ini awalnya ditetapkan oleh
Android Automotive OS (AAOS), yang membuatnya menggunakan Cryptographically Secure Random Number
Generator (CSRNG). AAOS kemudian membaca properti tersebut pada booting berikutnya.
Cara VHAL menyimpan nilai STORAGE_ENCRYPTION_BINDING_SEED
bergantung pada vendor.
Kami memiliki rekomendasi umum untuk melindungi seed:
- (Direkomendasikan) Benih disimpan oleh ECU di dalam kendaraan yang secara fisik terlindungi dengan baik. Jika tidak, maka mudah bagi IVI dan ECU untuk ditarik dari saat ini.
- (Direkomendasikan) IVI dan ECU harus saling mengautentikasi untuk bertukar seed dengan mencegah permintaan {i>spoofing<i} untuk benih dari ECU.
- (Disarankan) Benih harus dikirim menggunakan saluran yang aman untuk mencegah CAN mengendus bus.
Selain itu, tambahkan hal berikut untuk memastikan vendor init.target.rc
aktif
late-fs
sebelum mount_all --late
:
# feed vehicle binding seed to vold
exec_start vold_seed_binding
HAL kendaraan harus dimulai di early_hal
, bukan di hal now
.
Setiap properti sistem persist.*
tidak dapat diakses di early-hal
karena
Partisi /data
belum dipasang.
Mengonfigurasi binding berbasis kendaraan
Jika seed ECU tidak cocok, perangkat akan memulai ulang ke pemulihan dan meminta pengguna untuk menghapusnya
partisi /data
atau coba lagi.
Perilaku dialog perintah dan hapus total data dapat diubah di builtins.cpp:
- Ubah
prompt_and_wipe_data
menjadiwipe_data
. Perangkat akan dibersihkan dan kemudian {i>reboot<i} tanpa {i>prompt<i}. - Pesan perintah terdapat di dalam
recovery.cpp baru.
Gambar 2. Pesan perintah.
Menguji binding berbasis kendaraan
Pengujian tiruan
{i>Mockup test<i} disediakan di
packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Untuk menjalankan uji coba ini:
attest libvehicle_binding_util_test
Pengujian integrasi
Pengujian {i>atest<i} disediakan di
packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Untuk menjalankan pengujian integrasi ini:
atest vehicle_binding_integration_test