Gunakan enkripsi file terikat kendaraan

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:

  1. ( Direkomendasikan ) Benih disimpan oleh ECU di dalam kendaraan yang secara fisik terlindungi dengan baik. Kalau tidak, sepele saja IVI dan ECU dicabut dari kendaraan.
  2. ( Disarankan ) IVI dan ECU harus saling melakukan autentikasi untuk menukarkan benih untuk mencegah spoofing permintaan benih dari ECU.
  3. ( 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 :

  1. Ubah prompt_and_wipe_data menjadi wipe_data . Perangkat akan terhapus lalu melakukan boot ulang tanpa diminta.
  2. 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