Menggunakan Enkripsi File Terikat Kendaraan

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:

  1. ( Direkomendasikan ) Benih disimpan oleh ECU di dalam kendaraan yang secara fisik terlindungi dengan baik. Jika tidak, sepele IVI dan ECU untuk ditarik dari kendaraan.
  2. ( Direkomendasikan ) IVI dan ECU harus saling mengautentikasi untuk menukar benih untuk mencegah permintaan spoofing benih dari ECU.
  3. ( 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 :

  1. Ubah prompt_and_wipe_data menjadi wipe_data . Perangkat menghapus dan kemudian reboot tanpa prompt.
  2. 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