Konten 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 Infotainment Dalam Kendaraan (IVI) agar tidak dikeluarkan dari kendaraan. Hal ini dilakukan dengan mengikat kunci enkripsi penyimpanan ke beberapa Unit Kontrol Elektronik (ECU) lainnya sehingga jika IVI dilepas dan ditempatkan di kendaraan lain (atau dijalankan di bangku tes), data pengguna terenkripsi pada IVI tidak dapat didekripsi.
Untuk mengikat kunci enkripsi file, Vold mencampurkan seed khusus kendaraan dengan derivasi kunci enkripsi kunci sehingga kuncinya unik dan terikat secara fisik ke kendaraan. Benih adalah larik byte, 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 menggambarkan arsitektur integrasi kendaraan terikat:
Gambar 1. Arsitektur terikat kendaraan
Mengaktifkan pengikatan berbasis kendaraan
Pengikatan enkripsi penyimpanan ke kendaraan harus diaktifkan secara eksplisit dan tidak dapat dihidupkan atau dimatikan tanpa melakukan reset pabrik. Ini berarti bahwa pembaruan Over-the-Air (OTA) tidak dapat mengaktifkan fitur tanpa menghapus perangkat juga. OEM dapat memilih untuk mengaktifkan fitur saat memutakhirkan jika mereka juga mengatur ulang perangkat ke pabrik. Misalnya dalam kunjungan dinas.
Fitur ini diaktifkan dengan mendukung properti STORAGE_ENCRYPTION_BINDING_SEED
di HAL kendaraan yang disediakan vendor. Properti ini menyimpan string byte sepanjang 16 byte dan diharapkan bertahan pada ECU yang terpisah dari IVI. Properti ini awalnya disetel oleh Android Automotive OS (AAOS), yang membuatnya menggunakan Cryptographically Secure Random Number Generator (CSRNG). AAOS kemudian membaca properti pada boot berikutnya.
Cara VHAL menyimpan nilai STORAGE_ENCRYPTION_BINDING_SEED
adalah khusus vendor. Kami memiliki rekomendasi umum untuk melindungi benih:
- ( Direkomendasikan ) Benih disimpan oleh ECU di dalam kendaraan yang secara fisik terlindungi dengan baik. Jika tidak, sepele IVI dan ECU untuk ditarik dari kendaraan.
- ( Direkomendasikan ) IVI dan ECU harus saling mengautentikasi untuk menukar benih untuk mencegah permintaan spoofing benih dari ECU.
- ( Direkomendasikan ) Seed harus ditransmisikan menggunakan saluran yang aman untuk menjaga dari CAN bus sniffing.
Selain itu, tambahkan 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
HAL kendaraan harus dimulai pada early_hal
bukan hal now
. Properti sistem apa pun yang persist.*
tidak dapat diakses di early-hal
karena partisi /data
belum dipasang.
Mengonfigurasi penjilidan berbasis kendaraan
Jika benih ECU tidak cocok, perangkat melakukan boot ulang 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 menghapus dan kemudian reboot tanpa prompt. - Pesan prompt terkandung dalam recovery.cpp .
Gambar 2. Pesan cepat
Menguji pengikatan berbasis kendaraan
Tes 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 atest disediakan dalam packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Untuk menjalankan tes integrasi ini:
atest vehicle_binding_integration_test