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:
- (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.
- (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.
- (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:
- Zmień
prompt_and_wipe_data
nawipe_data
. Pamięć urządzenia zostanie wyczyszczona, po czym uruchamia się ponownie bez pytania. - 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