Android chroni dane użytkownika, w tym przechowywane w zaszyfrowanej postaci dane logowania i klucze Keystore powiązane z uwierzytelnianiem, za pomocą skonfigurowanych przez użytkownika czynników wiedzy o ekranie blokady (LSKF) , takich jak kody PIN, wzory i hasła. LSKF to zwykle wartości o niskiej entropii, takie jak 4- lub 6-cyfrowe kody PIN, dlatego wymagana jest ochrona przed atakami brute force.
Android używa ograniczników szybkości w zaufanym środowisku wykonawczym (TEE) lub bezpiecznym elemencie (SE), aby spowolnić, a po wystarczającej liczbie prób zablokować hakerów przeprowadzających ataki brute force na LSKF. Dokument CDD 9.11 określa minimalne wymagania i zalecenia dotyczące ograniczników szybkości LSKF. Android 16 QPR2 i nowszy implementuje znacznie silniejsze zasady ograniczania szybkości niż starsze wersje Androida. Więcej informacji znajdziesz w artykule Silniejsze domyślne zasady ograniczania szybkości w Androidzie 16 QPR2 i nowszym.
Odblokowywanie chronionych danych użytkownika za pomocą LSKF
LockSettingsService
zarządza przechowywaniem i weryfikowaniem LSKF. Użytkownik może mieć tylko 1 aktywny LSKF. Przypisanie nowego LSKF unieważnia poprzedni i powoduje rozpoczęcie stosowania zasad ograniczania szybkości od początku.
Główny ogranicznik szybkości w TEE lub SE, czyli Gatekeeper
lub Weaver, egzekwuje ograniczenie szybkości dla
aktywnego LSKF. Gdy dostępna jest implementacja, LockSettingsService preferuje Weaver.
Chronione dane użytkownika są odblokowywane tylko wtedy, gdy do głównego ogranicznika szybkości zostanie podany prawidłowy LSKF. Jeśli LSKF jest nieprawidłowy, ogranicznik szybkości zwiększa licznik nieudanych prób i po określonej liczbie nieudanych prób wymusza przekroczenie limitu czasu. Podczas przekroczenia limitu czasu odrzuca wszystkie próby i podaje pozostały czas.
Silniejsze domyślne zasady ograniczania szybkości w Androidzie 16 QPR2 i nowszym
Dokument CDD 9.11 wymaga ograniczania szybkości LSKF w Androidzie 6 i nowszym. W przeszłości wymagane zasady ograniczania szybkości były dość łagodne. Na przykład implementacja spełniająca minimalne wymagania Androida 16 pozwala na maksymalnie 10 prób w pierwszej minucie, 20 w 6 minutach, 50 w 25 minutach, 110 w 24 godzinach i 1800 prób w 5 latach.
Chociaż te zasady są dość bezpieczne w przypadku LSKF wybranych losowo, w praktyce użytkownicy nie wybierają LSKF losowo. Niektóre LSKF występują znacznie częściej niż inne. Hakerzy mogą osiągnąć znaczną skuteczność, próbując LSKF w kolejności malejącej częstotliwości.
Na przykład w badaniu This PIN Can Be Easily Guessed stwierdzono, że skuteczność odgadywania rzeczywistych kodów PIN po 100 próbach wynosi 16,2%, a w przypadku wzorów – 35,5%. Hakerzy znający informacje o użytkowniku, takie jak data urodzenia, mogą osiągnąć jeszcze wyższą skuteczność.
Dlatego Android 16 QPR2 i nowszy zapewnia silniejsze domyślne zasady ograniczania szybkości LSKF. Te zasady pozwalają na maksymalnie 6 prób w pierwszej minucie, 7 w 6 minutach, 8 w 25 minutach, 12 w 24 godzinach i 19 w 5 latach. Po 20 nieprawidłowych próbach nie są dozwolone żadne dalsze próby. Pełny harmonogram przekroczenia limitu czasu znajdziesz w tabeli poniżej. W przyszłych wersjach Androida może się on zmienić.
| Liczba nieprawidłowych prób | Przekroczenie limitu czasu po nieprawidłowej próbie |
|---|---|
| 0 | Nie dotyczy |
| 1–4 | 0 sekund |
| 5 | 1 minuta |
| 6 | 5 minut |
| 7 | 15 minut |
| 8 | 30 minut |
| 9 | 90 minut |
| 10 | 4 godziny |
| 11 | 12 godzin |
| 12 | 36 godzin |
| 13 | 4 dni |
| 14 | 13 dni |
| 15 | 41 dni |
| 16 | 123 dni |
| 17 | 1 rok |
| 18 | 3 lata |
| 19 | 9 lat |
| 20+ | Nie można już próbować |
Zaktualizowane ograniczniki szybkości
Android 16 QPR2 i nowszy zawiera zaktualizowane implementacje Gatekeepera i Weavera, które egzekwują zasady ograniczania liczby żądań w tabeli.
Ogranicznik szybkości oprogramowania
Android 16 QPR2 i nowszy zawiera opcjonalny dodatkowy ogranicznik szybkości, SoftwareRateLimiter.
Jest on zaimplementowany na serwerze systemowym i umożliwia urządzeniom stosowanie silniejszych zasad ograniczania szybkości, gdy
nie można zaktualizować TEE ani SE.
Skonfiguruj SoftwareRateLimiter w trybie egzekwowania za pomocą config_softwareLskfRateLimiterEnforcing
wartości konfiguracji. W trybie egzekwowania SoftwareRateLimiter stosuje swoje zasady ograniczania szybkości jednocześnie z głównym ogranicznikiem szybkości. W przypadku danej liczby nieprawidłowych prób przekroczenie limitu czasu jest dłuższe niż wymagane przez główny ogranicznik szybkości i SoftwareRateLimiter.
W trybie nieegzekwowania SoftwareRateLimiter przekazuje wszystkie żądania weryfikacji do głównego ogranicznika szybkości bez stosowania dodatkowych zasad ograniczania szybkości.
Wykrywanie duplikatów prób
Aby zwiększyć wygodę użytkowania i umożliwić stosowanie silniejszych zasad ograniczania szybkości, Android 16 QPR2 i nowszy obsługuje wykrywanie duplikatów prób. Gdy ta funkcja jest włączona, użytkownicy nie są karani za wielokrotne wprowadzanie tego samego nieprawidłowego LSKF.
Prawidłowi użytkownicy czasami wielokrotnie wprowadzają ten sam nieprawidłowy LSKF. Jeśli jest to liczone jako wiele prób, powoduje to niepotrzebne przekroczenie limitu czasu. Sprawni hakerzy nie próbują danego LSKF więcej niż raz. Zasady, które nie uwzględniają duplikatów prób, zwiększają wygodę wprowadzania LSKF przez prawidłowych użytkowników, nie ułatwiając jednocześnie sprawnym hakerom odgadywania LSKF, co pozwala na egzekwowanie silniejszych zasad ograniczania szybkości. Prawidłowi użytkownicy rzadziej spotykają się z przekroczeniem limitu czasu, ponieważ muszą wprowadzić 5 unikalnych nieprawidłowych prób zamiast 5 nieprawidłowych prób, w tym duplikatów.
Na urządzeniach z Androidem 16 QPR2 i nowszym, implementacją Weavera oraz SoftwareRateLimiter skonfigurowanym w trybie egzekwowania duplikaty prób są wykrywane i odrzucane przed przekazaniem do Weavera. Takie odrzucenia nie zwiększają liczby nieprawidłowych prób. W pamięci śledzonych jest maksymalnie 5 unikalnych nieprawidłowych prób. Jeśli tracker jest pełny, najstarsza próba jest odrzucana, aby zwolnić miejsce. Wszystkie śledzone próby są odrzucane 5 minut po ostatniej nieśledzonej nieprawidłowej próbie.
Gatekeeper nie rozróżnia nieprawidłowych prób od innych nieudanych weryfikacji, dlatego SoftwareRateLimiter nie obsługuje wykrywania duplikatów prób, gdy Gatekeeper jest głównym ogranicznikiem szybkości.
Osoby implementujące Weavera mogą zdecydować się na obsługę wykrywania duplikatów prób w implementacji Weavera.