Używaj szyfrowania plików powiązanych z pojazdem

Na tej stronie dowiesz się, jak włączyć funkcje wyjściowe szyfrowania wiązania w pojeździe.

Omówienie

Głównym celem funkcji wyjściowej do wiązania pojazdu jest dodatkowa ochrona prywatności użytkownika przez zabezpieczanie danych w systemie multimedialnym w pojeździe (IVI) przed usunięciem z pojazdu. To jest można to zrobić przez wiązanie kluczy szyfrowania pamięci masowej z innymi elektronicznymi jednostkami sterującymi (ECU), tak aby jeśli System IVI jest usuwany i umieszczany w innym pojeździe (lub na stanowisku testowym), gdzie zaszyfrowane dane użytkownika są Nie można odszyfrować IVI.

Aby powiązać klucze szyfrowania plików, Vold łączy się w pliku wyjściowym z szyfrowaniem klucza konkretnego pojazdu. klucze są unikalne i fizycznie powiązane z pojazdem. Materiał wyjściowy to tablica bajtów, ujawniono przez OEM jako nową właściwość VHAL (ang. Vehicle Hardware Abstraction Layer), STORAGE_ENCRYPTION_BINDING_SEED Uprawnienia w tej usłudze są ograniczone: mogą go wysyłać tylko demony systemów z podwyższonymi uprawnieniami.

Schemat architektury

Ilustracja przedstawiająca architekturę integracji z pojazdami:

Rysunek 1. Architektura dostosowana do potrzeb pojazdów.

Włącz wiązanie oparte na pojeździe

Powiązanie szyfrowania miejsca na dane z pojazdem musi być wyraźnie włączone i nie można go włączyć lub wyłączone bez przywracania do ustawień fabrycznych. Oznacza to, że aktualizacja bezprzewodowa (OTA) nie może włącz tę funkcję bez czyszczenia pamięci urządzenia. OEM może włączyć tę funkcję uaktualnić, o ile użytkownicy przywrócili też urządzenie do ustawień fabrycznych. na przykład podczas wizyty w usłudze.

Tę funkcję można włączyć przy użyciu właściwości STORAGE_ENCRYPTION_BINDING_SEED w HAL dostarczonej przez dostawcę. Ta właściwość zawiera ciąg bajtów o długości 16 bajtów i jest nie powinny być obecne na jednostce ECU niezależnej od IVI. Początkowo właściwość jest ustawiona przez system operacyjny Android Automotive (AAOS), który generuje go przy użyciu kryptograficznie bezpiecznej liczby losowej. Generatora (CSRNG). Następnie AAOS odczytuje właściwość przy kolejnych uruchomieniach.

Sposób, w jaki VHAL przechowuje wartość STORAGE_ENCRYPTION_BINDING_SEED, zależy od dostawcy. Ogólne zalecenia dotyczące ochrony nasion:

  1. (Zalecane) Nasiono jest przechowywane przez ECU w pojeździe, który jest fizycznie jest dobrze chroniona. Jeśli nie, można łatwo pobrać dane IVI i ECU z pojazdu.
  2. (Zalecane) IVI i ECU powinny uwierzytelniać się wzajemnie, aby wymieniać dane wyjściowe zapobiega podszywaniu się pod inne osoby w pliku wyjściowym do ECU.
  3. (Zalecane) Materiał wyjściowy należy przesyłać za pomocą bezpiecznego kanału, który zapewnia ochronę przed Nasłuchiwanie magistrali CAN.

Oprócz tego dodaj te elementy, aby dostawca init.target.rc late-fs przed mount_all --late:

# feed vehicle binding seed to vold
exec_start vold_seed_binding

HAL pojazdu powinno się uruchamiać w early_hal, a nie hal now. W usłudze early-hal nie można uzyskać dostępu do żadnej właściwości systemowej persist.*, ponieważ Partycja /data nie jest jeszcze podłączona.

Skonfiguruj powiązanie na podstawie pojazdu

Jeśli dane wyjściowe ECU nie są zgodne, urządzenie uruchomi się ponownie w trybie przywracania i poprosi użytkownika o wykasowanie danych. na partycji /data lub spróbuj jeszcze raz.

Sposób wyświetlania promptów i czyszczenia danych można zmienić w builtins.cpp:

  1. Zmień prompt_and_wipe_data na wipe_data. Pamięć urządzenia zostanie wyczyszczona, po czym uruchamia się ponownie bez pytania.
  2. Komunikat jest zawarty w Plik recovery.cpp

    Rysunek 2. Prompt.

Testowanie wiązania opartego na pojeździe

Testy próbne

Próbny test obejmuje packages/services/Car/cpp/security/vehicle_binding_util/tests

Aby przeprowadzić ten próbny test:

attest libvehicle_binding_util_test

Testowanie integracji

Test atestowy jest dostępny w tych językach: packages/services/Car/cpp/security/vehicle_binding_util/tests

Aby przeprowadzić ten test integracji:

atest vehicle_binding_integration_test