Stan sieci mesh i obsługa administracyjna

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.

Tryb uruchamiania SDV jest wykorzystywany podczas rejestrowania lub aktualizowania magazynu zaufanych certyfikatów maszyny wirtualnej pojazdu.

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:

  1. Określ deviceMode jako DeviceMode::Normal.
  2. Określ diceChainList jako listę łańcuchów DICE powiązanych z maszyną wirtualną SDV.
  3. W przypadku każdego diceChain w diceChainList:
    1. Określ cdiList jako listę certyfikatów CDI w diceChain:
    2. W przypadku każdego cdiCert w cdiList:
      1. Określ cdiDeviceMode jako DeviceMode odpowiadający cdiCert.mode.
      2. Ustaw deviceMode na min(deviceMode, cdiDeviceMode).
  4. 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):

Przykład wstępnej konfiguracji fabrycznej

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.

  1. 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.
  2. Gdy to nastąpi, narzędzie pobiera skrót właśnie zapisanego pliku /vvmtruststore/uds_pubs i go wyświetla.

Konfigurowanie fabryczne, krok 1

Rysunek 2. Rejestrowanie fabryczne, krok 1.

Krok 2. Zapisz VVMFactoryTrust

Na jednej maszynie wirtualnej każdego ECU:

  1. Zapisz skrót /vvmtruststore/uds_pubs, który został wyświetlony przez sdv_provisioning_tool w poprzednim kroku, w VVMFactoryTrust. Sposób zapisu zależy od producenta OEM lub dostawcy i wykracza poza zakres tej specyfikacji.

Konfigurowanie fabryczne, krok 2

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.

Konfigurowanie fabryczne, krok 3

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:

Wymiana części, stan początkowy

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.

Wymiana części, krok 1

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.

Wymiana części, krok 2

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.

Wymiana części, krok 3

Rysunek 8. Wymiana części, krok 3.

Krok 4. Zainstaluj certyfikaty UDS

  • Wyodrębnij /vvmtruststore/uds_pubs z 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_certs każdej maszyny wirtualnej SDV.

Wymiana części, krok 4

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.

Wymiana części, krok 5

Rysunek 10. Wymiana części, krok 5.