W przypadku urządzeń z Androidem 13 lub nowszym Android obsługuje metodę uwierzytelniania Trust on First Use (TOFU) (RFC7435), która umożliwia użytkownikom zaufanie sieci firmowej (EAP) przez zainstalowanie głównego urzędu certyfikacji używanego przez serwer i ustawienie jego nazwy domeny w zapisanej sieci. TOFU umożliwia urządzeniu uzyskanie nieuwierzytelnionego klucza publicznego, gdy użytkownik po raz pierwszy łączy się z siecią firmową, i zachowanie tego klucza na potrzeby kolejnych połączeń.
Tło
W porównaniu z sieciami osobistymi, które wymagają tylko hasła, sieci firmowe używają uwierzytelniania PKI (Public Key Infrastructure), które wymaga od klienta wstępnego zainstalowania certyfikatów. Na Androidzie 11 lub starszym użytkownicy mogą wybrać opcję Nie sprawdzaj dla certyfikatu CA serwera w ustawieniach sieci, pomijając weryfikację certyfikatu po stronie serwera. Aby jednak zwiększyć bezpieczeństwo i zapewnić zgodność ze specyfikacją WPA R2, w Androidzie 12 wprowadzono wymaganie, aby sieci firmowe miały włączoną weryfikację certyfikatu serwera. Ten dodatkowy wymóg stanowił barierę dla użytkowników, ponieważ musieli oni instalować certyfikat urzędu certyfikacji w przypadku takich sieci. TOFU umożliwia użytkownikom łączenie się z firmową siecią opartą na infrastrukturze kluczy publicznych przez proste zaakceptowanie głównego urzędu certyfikacji.
Opis funkcji
Urządzenia obsługujące TOFU zachowują się w następujący sposób, gdy użytkownik łączy się z siecią firmową, która nie ma wcześniej zainstalowanego uwierzytelnionego klucza publicznego:
Łączenie się z nową siecią za pomocą selektora Wi-Fi
Wybierz nową sieć firmową w selektorze Wi-Fi.
Na urządzeniu wyświetli się okno dialogowe (rysunek 1) z prośbą o potwierdzenie, czy sieć jest zaufana.
Kliknij Tak, połącz, aby zaakceptować połączenie z siecią, lub Nie, nie łącz, aby je odrzucić.
Jeśli klikniesz Tak, połącz, urządzenie automatycznie skonfiguruje parametry zabezpieczeń, połączy się z siecią i włączy automatyczne łączenie z nią.
Jeśli klikniesz Nie, nie łącz się, urządzenie rozłączy się z siecią i wyłączy automatyczne łączenie z nią.
Rysunek 1. Okno funkcji TOFU
Łączenie z istniejącą siecią z włączoną funkcją automatycznego łączenia
Podczas łączenia się z siecią firmową, w której włączono automatyczne łączenie, ale nie ma ona ważnego certyfikatu CA, urządzenie łączy się automatycznie, a następnie wyświetla trwałe powiadomienie (którego nie można zamknąć).
Kliknij powiadomienie.
Na urządzeniu wyświetli się okno dialogowe (rysunek 1) z prośbą o potwierdzenie, czy sieć jest zaufana.
Kliknij Tak, połącz, aby zaakceptować połączenie z siecią, lub Nie, nie łącz, aby je odrzucić.
Jeśli klikniesz Tak, połącz, urządzenie automatycznie skonfiguruje parametry zabezpieczeń, połączy się z siecią i włączy automatyczne łączenie z nią.
Jeśli klikniesz Nie, nie łącz się, urządzenie rozłączy się z siecią i wyłączy automatyczne łączenie z nią.
Implementacja
Aby obsługiwać funkcję TOFU, zaimplementuj interfejsy HAL supplicanta udostępnione w ramach Projektu Android Open Source (AOSP) pod adresem /hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant
.
W Androidzie 13 aplikacje mogą korzystać z tych publicznych interfejsów API:
WifiManager#isTrustOnFirstUseSupported()
: określa, czy urządzenie obsługuje TOFU.WifiEnterpriseConfig#enableTrustOnFirstUse(boolean)
: włącza TOFU.WifiEnterpriseConfig#isTrustOnFirstUseEnabled()
: wskazuje, czy funkcja TOFU jest włączona.
Weryfikacja
Aby sprawdzić implementację TOFU na urządzeniu, wykonaj te testy:
- CTS:
CtsWifiTestCases
- VTS:
VtsHalWifiSupplicantStaNetworkTargetTest