W przypadku urządzeń z systemem Android w wersji 13 lub nowszej system Android obsługuje metodę uwierzytelniania Trust on First Use (TOFU) ( RFC7435 ), która pozwala użytkownikom ufać sieci firmowej (EAP) poprzez zainstalowanie głównego urzędu certyfikacji używanego przez serwer i ustawienie jego nazwy domeny w zapisana sieć. TOFU umożliwia urządzeniu uzyskanie nieuwierzytelnionego klucza publicznego, gdy użytkownik po raz pierwszy łączy się z siecią firmową i zachowanie klucza do kolejnych połączeń.
Tło
W porównaniu z sieciami osobistymi, które wymagają tylko hasła, sieci korporacyjne wykorzystują uwierzytelnianie infrastruktury klucza publicznego (PKI), co wymaga od klienta wstępnej instalacji certyfikatów. W systemie Android 11 lub starszym użytkownicy mogą wybrać opcję Nie sprawdzaj poprawności dla certyfikatu CA serwera w ustawieniach sieciowych, pomijając sprawdzanie poprawności certyfikatu po stronie serwera. Jednak w celu wzmocnienia bezpieczeństwa i zgodności ze specyfikacją WPA R2, Android 12 wprowadził wymóg sprawdzania poprawności certyfikatu serwera w sieciach korporacyjnych. Ten dodatkowy wymóg stworzył barierę dla użytkowników, którzy muszą zainstalować certyfikat CA dla takich sieci. TOFU umożliwia użytkownikom łączenie się z siecią korporacyjną opartą na PKI poprzez akceptację głównego urzędu certyfikacji.
Zachowanie funkcji
Urządzenia obsługujące TOFU wykazują następujące zachowanie, gdy użytkownik łączy się z siecią firmową, która nie ma już zainstalowanego uwierzytelnionego klucza publicznego.
Połącz się z nową siecią za pomocą selektora Wi-Fi
Wybierz nową sieć firmową w selektorze Wi-Fi.
Urządzenie wyświetli okno dialogowe (Rysunek 1), aby potwierdzić, czy sieć jest zaufana.
Stuknij Tak, połącz , aby zaakceptować połączenie sieciowe, lub stuknij Nie, nie łącz, aby odrzucić.
Jeśli dotkniesz Tak, połącz , urządzenie automatycznie skonfiguruje parametry bezpieczeństwa, połączy się z siecią i włączy automatyczne łączenie z siecią.
Jeśli dotkniesz Nie, nie łącz , urządzenie rozłączy się z siecią i wyłączy automatyczne łączenie z siecią.
Rysunek 1. Okno dialogowe funkcji TOFU
Połącz się z istniejącą siecią z włączonym automatycznym łączeniem
Podczas łączenia się z siecią firmową, która ma włączone automatyczne łączenie, ale nie ma ważnego certyfikatu CA, urządzenie łączy się automatycznie, a następnie wyświetla powiadomienie trwałe (nie można go odrzucić).
Stuknij powiadomienie.
Urządzenie wyświetli okno dialogowe (Rysunek 1), aby potwierdzić, czy sieć jest zaufana.
Stuknij Tak, połącz , aby zaakceptować połączenie sieciowe, lub stuknij Nie, nie łącz, aby odrzucić.
Jeśli dotkniesz Tak, połącz , urządzenie automatycznie skonfiguruje parametry bezpieczeństwa, połączy się z siecią i włączy automatyczne łączenie z siecią.
Jeśli dotkniesz Nie, nie łącz , urządzenie rozłączy się z siecią i wyłączy automatyczne łączenie z siecią.
Realizacja
Aby obsługiwać funkcję TOFU, zaimplementuj warstwy HAL suplikanta dostępne w projekcie Android Open Source Project (AOSP) pod /hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant
.
Następujące publiczne interfejsy API są dostępne w systemie Android 13 do użytku przez aplikacje:
-
WifiManager#isTrustOnFirstUseSupported()
: Wskazuje, czy urządzenie obsługuje TOFU. -
WifiEnterpriseConfig#enableTrustOnFirstUse(boolean)
: Włącza TOFU. -
WifiEnterpriseConfig#isTrustOnFirstUseEnabled()
: Wskazuje, czy funkcja TOFU jest włączona.
Walidacja
Aby zweryfikować implementację TOFU na swoim urządzeniu, użyj następujących testów:
- CTS:
CtsWifiTestCases
- VTS:
VtsHalWifiSupplicantStaNetworkTargetTest