Tryb uruchamiania SDV określa, jak agent wykrywania usług SDV w maszynie wirtualnej SDV zachowuje się podczas próby połączenia z innymi agentami wykrywania usług (działającymi w innych maszynach wirtualnych SDV) w celu utworzenia bezpiecznej siatki. Jest to podobne do obecnej koncepcji stanu
urządzenia w weryfikacji podczas uruchamiania w Androidzie. Tryb uruchamiania SDV może być LOCKED lub
UNLOCKED.
Zachowanie bezpiecznej sieci typu mesh SDV
Siatka wykrywania usług może być w jednym z tych stanów w zależności od otrzymanych wartości uruchamiania: Normal, Warning lub Fatal.
Samochód trafia do właściciela tylko wtedy, gdy jego sieć typu mesh jest w stanie Normal. Aby sieć typu mesh przeszła ze stanu Normal do stanu Warning, wymagana jest interwencja diagnostyczna. W środowisku produkcyjnym (np. nie w środowisku programistycznym ani debugowania) stan Warning występuje tylko podczas rejestrowania.
Fatal to podstawowy błąd podobny do błędu weryfikacji podpisu obrazu system_ext w programie rozruchowym Androida. Jeśli siatka SDV przechodzi ze stanu Normal do stanu Fatal wyłącznie z powodu aktualizacji bezprzewodowej (OTA), aktualizacja jest uznawana za nieprawidłową, a siatka wraca do pierwotnej wersji Normal.
Więcej informacji o stanach znajdziesz w sekcjach poniżej.
Normal
- Z perspektywy wykrywania usług uruchamianie systemu jest
SECURE. - Wykrywanie usług łączy się tylko z elementami równorzędnymi, które zostały bezpiecznie uruchomione. Bezpiecznie uruchomiony element równorzędny oznacza, że bezpieczna siatka SDV jest również bezpieczna.
Warning
- Uruchamianie systemu mogło zostać naruszone, ponieważ niektóre weryfikacje są wyłączone.
- Wykrywanie usług łączy się tylko z elementami równorzędnymi, które mają te same wyłączone weryfikacje. Jest to część bezpiecznej siatki SDV o tych samych właściwościach bezpieczeństwa.
- Nie można zweryfikować powodzenia uruchomienia elementu równorzędnego z powodu lokalnych błędów lub wyłączonych funkcji.
- Poza środowiskiem programistycznym lub sytuacją programistyczną ma to następujące konsekwencje:
- Dane użytkownika nie mogą być dostępne. Oznacza to, że nie mogą być przesyłane ani wpływać na komunikację w bezpiecznej siatce SDV.
- Gdy siatka jest w tym stanie, dostępne powinny być tylko usługi potrzebne do procesów rejestrowania.
Fatal
- Krytyczny błąd podczas etapów uruchamiania systemu.
- Występuje co najmniej 1 podstawowy błąd, który uniemożliwia agentowi wykrywania usług utworzenie siatki. Usługi lokalne nie mogą komunikować się z usługami zdalnymi.
- Z perspektywy wykrywania usług uruchamianie systemu jest UNSECURE.
Tryb uruchamiania SDV
Tryb uruchamiania SDV może mieć 2 wartości: UNLOCKED i LOCKED. W przypadku tworzenia siatki wykrywania usług wartość LOCKED oznacza, że błędy weryfikacji są krytyczne, a UNLOCKED – że nie są.
| Warunek | Tryb uruchamiania SDV | |
|---|---|---|
UNLOCKED
| LOCKED |
|
| Lokalny magazyn zaufanych certyfikatów maszyny wirtualnej jest pusty | Warning | Fatal |
| Brak lokalnego łańcucha DICE | Fatal | Fatal |
| Nie udało się zweryfikować lokalnego łańcucha DICE | Warning | Fatal |
| Tryb lokalny SDV i AVB są zgodne | Zobacz tabelę w sekcji Tryb lokalny SDV i AVB są zgodne | |
| Porównanie wartości trybu urządzenia zdalnego | Zobacz tabelę w sekcji Porównanie wartości trybu urządzenia zdalnego | |
Nie udało się dopasować zdalnych uds_pubs |
Warning | Fatal |
| Nie udało się zweryfikować zdalnego łańcucha DICE (przy użyciu zasad DICE) | Warning | Fatal |
| Nie udało się nawiązać zdalnego uwierzytelniania | Fatal | Fatal |
Tryb lokalny SDV i AVB są zgodne
W tabeli poniżej pokazano, jak tryb AVB i tryb uruchamiania SDV wpływają na działanie bezpiecznej siatki SDV. Kolory są zdefiniowane w sekcji integracji z Androidem w dokumentacji AVB.
| Tryb AVB x tryb uruchamiania SDV | Tryb uruchamiania SDV | ||
|---|---|---|---|
UNLOCKED |
LOCKED |
||
AVB LOCKED |
Zielony | Warning | Normal |
| Żółty | Fatal | Fatal | |
AVB UNLOCKED |
Orange | Warning | Fatal |
Wartość trybu urządzenia
W łańcuchu DICE każdy certyfikat CDI ma wartość trybu. Ta wartość opisuje stan bezpieczeństwa tej warstwy na podstawie jej konfiguracji. Aby wyrazić stan bezpieczeństwa całego oprogramowania na urządzeniu, definiuje się wartość trybu urządzenia , która jest wyprowadzana z wartości trybu wszystkich etapów CDI łańcuchów DICE powiązanych z daną maszyną wirtualną SDV (czyli Android HLOS i Secure World) i jest definiowana w ten sposób:
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
Algorytm
Algorytm obliczania wartości trybu urządzenia jest taki:
- Określ
deviceModejakoDeviceMode::Normal. - Określ
diceChainListjako listę łańcuchów DICE powiązanych z maszyną wirtualną SDV. - W przypadku każdego
diceChainwdiceChainList:- Określ
cdiListjako listę certyfikatów CDI wdiceChain: - W przypadku każdego
cdiCertwcdiList:- Określ
cdiDeviceModejakoDeviceModeodpowiadającycdiCert.mode. - Ustaw
deviceModenamin(deviceMode, cdiDeviceMode).
- Określ
- Określ
- Zwróć
deviceMode.
Porównanie wartości trybu urządzenia zdalnego
Agent wykrywania usług łączy się tylko z innymi agentami, którzy mają tę samą wartość trybu urządzenia.
Wartość trybu urządzenia zapewnia, że sieć typu mesh nie może mieć elementów o różnych właściwościach bezpieczeństwa. Wynikowa siatka ma jednolity stan bezpieczeństwa między wszystkimi swoimi elementami.
| Wartość trybu urządzenia | Pilot | ||||
|---|---|---|---|---|---|
| Nie skonfigurowano | Debugowanie | Regeneracja | Normalny | ||
| Lokalnie | Nie skonfigurowano | Fatal | Fatal | Fatal | Fatal |
| Debugowanie | Fatal | Warning | Fatal | Fatal | |
| Regeneracja | Fatal | Fatal | Warning | Fatal | |
| Normalny | Fatal | Fatal | Fatal | Normal | |
Proces rejestrowania fabrycznego
Jest to proces rejestrowania na linii montażowej pojazdu, gdzie zakłada się, że infrastruktura kluczy publicznych nie jest dostępna.
Ten proces zależy od 32-bajtowej wartości przechowywanej w pamięci OTP (one-time-programmable), zwanej VVMFactoryTrust. Gdy ta wartość jest ustawiona, jest przekazywana do jądra jako parametr o nazwie androidboot.sdv.vvmfactorytrust.
Wszystkie maszyny wirtualne w ECU muszą mieć ten sam tryb uruchamiania SDV i VVMFactoryTrust.
Stan początkowy
Wszystkie ECU są początkowo w trybie uruchamiania SDV w trybie UNLOCKED, z pustym
VVMFactoryTrust i magazynem zaufanych certyfikatów maszyny wirtualnej pojazdu, z wyjątkiem wszystkich uds_certs
znajdujących się w VVMTrustStore.
Rysunek 1 przedstawia przykład, w którym są 3 maszyny wirtualne SDV (VM-A, VM-B i VM-C) rozmieszczone w 2 oddzielnych ECU (ECU-0 i ECU-1):
Rysunek 1. Rejestrowanie fabryczne, stan początkowy.
Krok 1. Uruchom sdv_provisioning_tool
Uruchom wszystkie maszyny wirtualne ze wszystkich ECU.
Na każdej maszynie wirtualnej uruchom sdv_provisioning_tool.
- Narzędzie komunikuje się z lokalnym agentem wykrywania usług i czeka, aż ten zasygnalizuje, że bezpieczna sieć typu mesh SDV jest kompletna, a agent zapisał listę kluczy publicznych UDS w
/vvmtruststore/uds_pubs. - Gdy to nastąpi, narzędzie pobiera skrót właśnie zapisanego pliku
/vvmtruststore/uds_pubsi go wyświetla.
Rysunek 2. Rejestrowanie fabryczne, krok 1.
Krok 2. Zapisz VVMFactoryTrust
Na jednej maszynie wirtualnej każdego ECU:
- Zapisz skrót
/vvmtruststore/uds_pubs, który został wyświetlony przezsdv_provisioning_toolw poprzednim kroku, w VVMFactoryTrust. Sposób zapisu zależy od producenta OEM lub dostawcy i wykracza poza zakres tej specyfikacji.
Rysunek 3. Rejestrowanie fabryczne, krok 2.
Krok 3. Uruchom ponownie w trybie uruchamiania SDV zablokowanym
Uruchom ponownie wszystkie maszyny wirtualne we wszystkich ECU w trybie uruchamiania SDV LOCKED.
Agent wykrywania usług ufa maszynom wirtualnym w ECU z kluczami publicznymi UDS wymienionymi w uds_pubs, ponieważ skrót tego pliku pasuje do VVMFactoryTrust.
Ponieważ ECU zostały zarejestrowane razem, są trwale powiązane i z perspektywy weryfikacji łańcucha DICE można je traktować jako jeden element sprzętu.
Rysunek 4. Rejestrowanie fabryczne, krok 3.
Proces wymiany części
Jest to proces rejestrowania w autoryzowanym warsztacie samochodowym, w którym wadliwy ECU musi zostać wymieniony na nowy, niezarejestrowany.
Ten proces zależy od certyfikatów UDS wydanych bezpośrednio przez urząd główny
określony w vvmconfig lub pośrednio przez łańcuch
urzędów pośrednich.
Stan początkowy
Wszystkie maszyny wirtualne są już zarejestrowane fabrycznie i działają w trybie uruchamiania SDV LOCKED.
Rysunek 5 przedstawia przykład, w którym ECU-0 działa nieprawidłowo i wymaga wymiany:
Rysunek 5. Wymiana części, stan początkowy.
Krok 1. Zainstaluj nowy ECU
Zainstaluj nowy ECU, który jest w stanie pustym i niezarejestrowanym.
Na rysunku 6, gdy ECU-2 (zastępczy ECU) jest włączony, istnieją 2 rozłączne bezpieczne siatki SDV: jedna w stanie Warning, a druga w stanie Normal. Obie bezpieczne siatki SDV są niekompletne.
Rysunek 6. Wymiana części, krok 1.
Krok 2. Uruchom ponownie w trybie uruchamiania SDV odblokowanym
Uruchom ponownie wszystkie maszyny wirtualne we wszystkich ECU w trybie uruchamiania SDV UNLOCKED.
Na rysunku 7 maszyny wirtualne VM-B i VM-C dołączają do bezpiecznej siatki SDV Warning, która jest kompletna.
Rysunek 7. Wymiana części, krok 2.
Krok 3. Uruchom sdv_provisioning_tool
Na każdej maszynie wirtualnej uruchom sdv_provisioning_tool.
Narzędzie komunikuje się z lokalnym agentem wykrywania usług i czeka, aż ten zasygnalizuje, że bezpieczna sieć typu mesh SDV jest kompletna, a agent zapisał listę kluczy publicznych UDS w /vvmtruststore/uds_pubs.
Gdy to nastąpi, narzędzie pobiera skrót właśnie zapisanego pliku /vvmtruststore/uds_pubs i go wyświetla, ale ten skrót nie jest używany w tym procesie.
Rysunek 8. Wymiana części, krok 3.
Krok 4. Zainstaluj certyfikaty UDS
- Wyodrębnij
/vvmtruststore/uds_pubsz dowolnej maszyny wirtualnej SDV. Nie ma znaczenia, która to maszyna, ponieważ jest taka sama dla wszystkich maszyn wirtualnych w tej samej bezpiecznej siatce SDV. - Pobierz certyfikaty rejestrowania dla wszystkich kluczy publicznych UDS wymienionych w
/vvmtruststore/uds_pubs.- Zwykle oznacza to wysłanie go na serwer zdalny, który ma już zapisane certyfikaty lub generuje je, sprawdzając otrzymane klucze publiczne w bazie danych znanych kluczy publicznych UDS. Ta baza danych została utworzona na podstawie kluczy publicznych UDS wyodrębnionych podczas produkcji ECU.
- Zapisz
/vvmtruststore/uds_certskażdej maszyny wirtualnej SDV.
Rysunek 9. Wymiana części, krok 4.
Krok 5. Uruchom ponownie w trybie uruchamiania SDV zablokowanym
Uruchom ponownie wszystkie maszyny wirtualne w trybie uruchamiania SDV LOCKED.
Jeśli bezpieczna siatka SDV jest niekompletna, wróć do kroku 2.
Rysunek 10. Wymiana części, krok 5.