Na tej stronie znajdziesz informacje o włączaniu funkcji wiążącego szyfrowania na podstawie seeda w samochodzie.
Omówienie
Głównym celem funkcji wiązania z pojazdem jest zapewnienie większej ochrony prywatności użytkownika poprzez zabezpieczenie danych w systemie informacyjno-rozrywkowym w pojazdach (IVI) przed usunięciem z pojazdu. Osiąga się to przez powiązanie kluczy szyfrowania pamięci z innym modułem sterowania elektronicznego (ECU), tak aby w przypadku wyjęcia i umieszczenia modułu IVI w innym pojeździe (lub uruchomienia go na stanowisku testowym) zaszyfrowane dane użytkownika na tym module nie mogły zostać odszyfrowane.
Aby powiązać klucze szyfrowania plików, Vold łączy siedziba z kluczem szyfrowania klucza, dzięki czemu klucze są unikalne i fizycznie powiązane z pojazdem. Wartość początkowa to tablica bajtów, która jest udostępniana przez producenta OEM jako nowa właściwość warstwy abstrakcji sprzętu pojazdu (VHAL).STORAGE_ENCRYPTION_BINDING_SEED
Uprawnienia tej usługi są ograniczone, tak aby mogły z niej korzystać tylko uprawnione demony systemowe.
Schemat architektury
Rysunek przedstawia architekturę integracji z pojazdem:
Rysunek 1. Architektura związana z pojazdem.
Włączanie wiązania na podstawie pojazdu
Wiązanie szyfrowania pamięci z pojazdem musi być wyraźnie włączone i nie można go włączyć ani wyłączyć bez przywracania ustawień fabrycznych. Oznacza to, że aktualizacja bezprzewodowa (OTA) nie może włączyć tej funkcji bez wyczyszczenia urządzenia. Producent OEM może włączyć tę funkcję po uaktualnieniu, jeśli przywróci urządzenie do ustawień fabrycznych. Na przykład podczas wizyty w serwisie.
Ta funkcja jest włączona dzięki obsłudze właściwości STORAGE_ENCRYPTION_BINDING_SEED
w interfejsie HAL pojazdu dostarczonym przez dostawcę. Ta właściwość przechowuje ciąg bajtów o długości 16 bajtów i powinna być zapisywana w ECU oddzielnie od IVI. Właściwość jest początkowo ustawiana przez system operacyjny Android Automotive (AAOS), który generuje ją za pomocą kryptograficznie bezpiecznego generatora liczb losowych (CSRNG). Następnie AAOS odczytuje właściwości podczas kolejnych rozruchów.
Sposób przechowywania przez VHAL wartości STORAGE_ENCRYPTION_BINDING_SEED
zależy od dostawcy.
Oto ogólne zalecenia dotyczące ochrony nasienia:
- (zalecane) Klucz jest przechowywany przez ECU w samochodzie, który jest dobrze chroniony fizycznie. W przeciwnym razie wyjęcie IVI i ECU z pojazdu jest bardzo proste.
- (zalecane) IVI i ECU powinny nawzajem uwierzytelniać się, aby wymieniać informacje na temat klucza początkowego i zapobiegać fałszowaniu żądań dotyczących klucza początkowego z ECU.
- (zalecane) Dane nasionowe powinny być przesyłane przez bezpieczny kanał, aby zapobiec podsłuchiwaniu magistrali CAN.
Dodatkowo dodaj te informacje, aby zapewnić, że dostawca init.target.rc
w late-fs
przed mount_all --late
:
# feed vehicle binding seed to vold
exec_start vold_seed_binding
HAL pojazdu powinien być uruchamiany w trybie early_hal
, a nie hal now
.
Nie można uzyskać dostępu do żadnej właściwości systemu persist.*
w systemie early-hal
, ponieważ partycja /data
nie jest jeszcze zamontowana.
Konfigurowanie powiązania na podstawie pojazdu
Jeśli nasiono ECU się nie zgadza, urządzenie uruchamia się ponownie w trybie odzyskiwania i prosi użytkownika o skasowanie partycji /data
lub ponowną próbę.
Zachowanie prompt i wipe można zmienić w pliku builtins.cpp:
- Zmień
prompt_and_wipe_data
nawipe_data
. Urządzenie zostanie wyczyszczone, a następnie zrestartowane bez wyświetlania monitu. - Komunikat prośby znajduje się w pliku recovery.cpp.
Rysunek 2. Komunikat.
Testowanie powiązania z pojazdem
Testowanie próbne
Przykładowy test znajdziesz w dokumentacji packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Aby przeprowadzić test symulowany:
attest libvehicle_binding_util_test
Testowanie integracji
Test atest znajdziesz w pliku packages/services/Car/cpp/security/vehicle_binding_util/tests
.
Aby przeprowadzić ten test integracji:
atest vehicle_binding_integration_test