Biometria

Biometria to wygodniejszy, ale potencjalnie mniej bezpieczny sposób potwierdzania tożsamości na urządzeniu. W modelu uwierzytelniania warstwowego najwyższy poziom bezpieczeństwa zapewnia uwierzytelnianie podstawowe (czyli metody oparte na czynniku wiedzy, takie jak kod PIN, wzór i hasło). Biometria należy do drugiego poziomu uwierzytelniania, zapewniając równowagę między wygodą a bezpieczeństwem. Dokument CDD Androida definiuje 3 klasy siły zabezpieczeń biometrycznych: klasę 3 (wcześniej silna), klasę 2 (wcześniej słaba) i klasę 1 (wcześniej wygodna). Każda klasa ma zestaw wymagań wstępnych, uprawnień i ograniczeń. Więcej informacji znajdziesz w dokumencie CDD powyżej. Wszystkie 3 klasy mogą być zintegrowane z ekranem blokady, ale tylko uwierzytelnianie silne i słabe mogą być zintegrowane z interfejsami API android.hardware.biometrics. Ta tabela zawiera opis każdego uwierzytelniania i obsługiwanych przez nie funkcji.

Mechanizm uwierzytelniający Ekran blokady Integracja BiometricPrompt Magazyn kluczy (klucz oparty na czasie) Magazyn kluczy (klucz oparty na operacji)
BIOMETRIC_STRONG (klasa 3) Tak Tak Tak Tak
BIOMETRIC_WEAK (klasa 2) Tak Tak Nie Nie
BIOMETRIC_CONVENIENCE
(klasa 1)
Tak Nie Nie Nie
DEVICE_CREDENTIAL Tak Tak Tak Tak

Platforma Androida obsługuje uwierzytelnianie biometryczne za pomocą rozpoznawania twarzy i odcisków palców. Androida można dostosować do obsługi innych metod biometrycznych (np. skanowania tęczówki). Integracja biometryczna będzie jednak zależeć od zabezpieczeń biometrycznych, a nie od sposobu uwierzytelniania. Więcej informacji o specyfikacjach zabezpieczeń biometrycznych znajdziesz w artykule Pomiar bezpieczeństwa odblokowywania biometrycznego.

Źródło

Android 12

  • Wprowadza interfejs BiometricManager.Strings, który udostępnia zlokalizowane ciągi znaków dla aplikacji korzystających z interfejsu BiometricPrompt na potrzeby uwierzytelniania. Te ciągi znaków mają być dostosowane do urządzenia i zawierać bardziej szczegółowe informacje o tym, jakich typów uwierzytelniania można używać.
  • Obejmuje obsługę czytnika linii papilarnych pod wyświetlaczem.

Android 11

  • Wprowadza interfejs BiometricManager.Authenticators, który udostępnia stałe wartości, których deweloperzy mogą używać do określania typów uwierzytelniania akceptowanych przez ich aplikacje.
  • Dodaje ACTION_BIOMETRIC_ENROLL intent action, którego deweloperzy mogą używać, aby kierować użytkowników do rejestracji metody uwierzytelniania spełniającej wymagania ich aplikacji.
  • Dodaje AuthenticationResult#getAuthenticationType() metodę, z której programiści mogą korzystać, aby sprawdzić, czy użytkownik uwierzytelnił się za pomocą danych biometrycznych czy danych urządzenia.
  • Zapewnia dodatkową obsługę kluczy auth-per-use w klasie BiometricPrompt.

Android 10

  • Wprowadza BiometricManager klasę, której deweloperzy mogą używać do sprawdzania dostępności uwierzytelniania biometrycznego.
  • Obejmuje integrację uwierzytelniania odciskiem palca i rozpoznawania twarzy w przypadku BiometricPrompt

Android 9

  • Obejmuje integrację z odciskiem palca tylko w przypadku BiometricPrompt.
  • Wycofuje klasę FingerprintManager. Jeśli aplikacje w pakiecie i aplikacje systemowe korzystają z tej klasy, zaktualizuj je, aby zamiast niej używały BiometricPromptBiometricManager.
  • Zaktualizowano FingerprintManagertesty weryfikacyjne CTS, aby testowaćBiometricPrompt za pomocą BiometricPromptBoundKeysTest.

Implementacja

Aby zapewnić użytkownikom i programistom bezproblemowe korzystanie z biometrii, zintegruj swój stos biometryczny z interfejsami API BiometricPrompt, BiometricManagerACTION_BIOMETRIC_ENROLL. Urządzenia z czujnikami biometrycznymi muszą spełniać te wymagania dotyczące siły.Dodatkowo wszystkie implementacje muszą przejść moduł CTS CtsBiometricsTestCases.

Aby zintegrować stos biometryczny z interfejsem ACTION_BIOMETRIC_ENROLL API:

  1. Zmodyfikuj BiometricEnrollActivity, aby wyświetlać proces rejestracji. Pamiętaj, że dane biometryczne mogą być przedstawione tylko wtedy, gdy spełniają wymagane kryteria. Jeśli urządzenie obsługuje więcej niż 1 metodę, ta czynność powinna wyświetlić listę, z której użytkownik może wybrać odpowiednią opcję.
Architektura BiometricPrompt
Rysunek 1. BiometricPrompt architecture

Wskazówki dotyczące implementacji HAL

Postępuj zgodnie z tymi wytycznymi dotyczącymi interfejsu HAL danych biometrycznych, aby mieć pewność, że dane biometryczne nie wyciekną i zostaną usunięte, gdy użytkownik zostanie usunięty z urządzenia:

  • Upewnij się, że surowe dane biometryczne ani ich pochodne (np. szablony) nie są nigdy dostępne spoza bezpiecznego, odizolowanego środowiska (np. TEE lub Secure Element). Wszystkie przechowywane dane muszą być szyfrowane za pomocą klucza specyficznego dla urządzenia, który jest znany tylko zaufanemu środowisku wykonawczemu (TEE). Jeśli sprzęt to umożliwia, ogranicz dostęp do sprzętu do bezpiecznego, odizolowanego środowiska i chroń go za pomocą zasad SELinux. Udostępnij kanał komunikacji (np. SPI, I2C) tylko bezpiecznemu, odizolowanemu środowisku z wyraźnymi zasadami SELinux dotyczącymi wszystkich plików na urządzeniu.
  • Proces pozyskiwania, rejestracji i rozpoznawania danych biometrycznych musi odbywać się w bezpiecznym, odizolowanym środowisku, aby zapobiec wyciekom danych i innym atakom. Ten wymóg dotyczy tylko danych biometrycznych klasy 3 (wcześniej silnych) i klasy 2 (wcześniej słabych).
  • Aby chronić się przed atakami typu replay, podpisuj szablony biometryczne kluczem prywatnym przypisanym do urządzenia. W przypadku standardu Advanced Encryption Standard (AES) podpisz co najmniej szablon z bezwzględną ścieżką systemu plików, grupą i identyfikatorem biometrycznym, aby pliki szablonu nie działały na innym urządzeniu ani dla nikogo innego niż użytkownik, który zarejestrował je na tym samym urządzeniu. Na przykład zapobiegaj kopiowaniu danych biometrycznych od innego użytkownika na tym samym urządzeniu lub z innego urządzenia.
  • Jeśli musisz przechowywać dane poza TEE, użyj ścieżki systemu plików podanej przez setActiveUser() HIDL method lub podaj inny sposób na usunięcie wszystkich danych szablonu użytkownika po jego usunięciu. Ma to na celu ochronę przed wyciekiem danych użytkownika. Urządzenia, które nie korzystają z tej ścieżki, muszą posprzątać po usunięciu użytkownika. Wymagania CDD nakładają obowiązek przechowywania danych biometrycznych i plików pochodnych w postaci zaszyfrowanej, zwłaszcza jeśli nie znajdują się one w TEE. Jeśli jest to niemożliwe ze względu na wymagania dotyczące pamięci bezpiecznego, odizolowanego środowiska, dodaj punkty zaczepienia, aby zapewnić usunięcie danych, gdy użytkownik zostanie usunięty lub urządzenie zostanie wyczyszczone. Zobacz LockSettingsService.removeBiometricsForUser()

Dostosowywanie

Jeśli urządzenie obsługuje wiele rodzajów danych biometrycznych, użytkownik powinien mieć możliwość określenia domyślnego w ustawieniach. W BiometricPromptimplementacji należy domyślnie stosować biometrię klasy 3 (dawniej silną), chyba że użytkownik wyraźnie ją zastąpi. W takim przypadku należy wyświetlić komunikat ostrzegawczy wyjaśniający ryzyko związane z biometrią (np. zdjęcie może odblokować urządzenie).

Ciągi uwierzytelniające dotyczące konkretnych urządzeń

Od Androida 12 ciągi uwierzytelniania kontekstowego są udostępniane deweloperom za pomocą interfejsu BiometricManager.Strings. Możesz dostosować wartości zasobów zwracane przez ten interfejs API, aby wdrożyć ciągi znaków specyficzne dla urządzenia. Jeśli tak, upewnij się, że wszystkie nowe ciągi znaków są przetłumaczone na wszystkie języki, które obsługuje urządzenie. Sprawdź też, czy te właściwości są zachowane:


Metoda

Cel ciągu znaków

Typy uwierzytelniania do uwzględnienia

Jeśli możliwe jest odblokowywanie biometryczne i blokada ekranu

getButtonLabel()

Etykieta przycisku, który wywołuje BiometricPrompt

Tylko zarejestrowane typy (jeśli to możliwe), które spełniają wymagania dotyczące uwierzytelniania.

Użyj ciągu znaków biometric-only (np. „Użyj odcisku palca”)

getPromptMessage()

Komunikat wyświetlany w BiometricPrompt podczas uwierzytelniania

Tylko zarejestrowane typy (jeśli to możliwe), które spełniają wymagania dotyczące uwierzytelniania.

Użyj połączonego ciągu znaków biometrycznych i blokady ekranu (np. „Aby kontynuować, użyj odcisku palca lub kodu PIN”).

getSettingName()

Nazwa ustawienia, które włącza BiometricPrompt na potrzeby uwierzytelniania

Wszystkie typy obsługiwane przez urządzenie (nawet jeśli nie są zarejestrowane), które spełniają wymagania uwierzytelniania.

Użyj połączonego ciągu biometrycznego i blokady ekranu (np. „Użyj odcisku palca lub blokady ekranu”).

Rozważmy na przykład urządzenie, które ma czujnik twarzy klasy 2zarejestrowaną twarzą, zarejestrowany kod PINczytnik linii papilarnych klasy 3, w którym nie ma zarejestrowanych odcisków palców. W tabeli poniżej znajdziesz przykładowe ciągi znaków dla każdej kombinacji dozwolonych uwierzytelniaczy i wywoływanej metody BiometricManager.Strings:


Dozwolone uwierzytelnianie

getButtonLabel()

getPromptMessage()

getSettingName()

Biometria klasy 3 (BIOMETRIC_STRONG)

„Użyj odcisku palca”
(Tylko odcisk palca spełnia wymagania uwierzytelniania)

„Użyj odcisku palca, aby kontynuować”
(tylko odcisk palca spełnia wymagania uwierzytelniania)

„Użyj odcisku palca”
(Tylko odcisk palca spełnia wymagania uwierzytelniania)

Biometria klasy 2 (BIOMETRIC_WEAK)

„Użyj twarzy”
(Twarz i odcisk palca spełniają wymagania; zarejestrowana jest tylko twarz)

„Użyj twarzy, aby kontynuować”
(Wymagania spełnione przez rozpoznawanie twarzy i odcisków palców; zarejestrowano tylko rozpoznawanie twarzy)

„Używaj rozpoznawania twarzy lub odcisku palca”
(Rozpoznawanie twarzy i odcisk palca spełniają wymagania; urządzenie obsługuje obie te funkcje)

Blokada ekranu (DEVICE_CREDENTIAL)

„Użyj kodu PIN”
(Wymagania spełnia dowolna blokada ekranu; kod PIN jest zarejestrowany)

„Wpisz kod PIN, aby kontynuować”
(Każda blokada ekranu spełnia wymagania; kod PIN jest zarejestrowany)

„Używaj blokady ekranu”
(Każda blokada ekranu spełnia wymagania)

Biometria klasy 3 LUB blokada ekranu

„Użyj kodu PIN”
(odcisk palca i dowolna blokada ekranu spełniają wymagania; zarejestrowany jest tylko kod PIN)

„Wpisz kod PIN, aby kontynuować”
(Wymagania spełnia odcisk palca i dowolna blokada ekranu; zarejestrowany jest tylko kod PIN)

„Użyj odcisku palca lub blokady ekranu”
(Wymagania spełnia odcisk palca i dowolna blokada ekranu)

Biometria klasy 2 LUB blokada ekranu

„Używaj twarzy”
(Wymagania spełniają rozpoznawanie twarzy, odcisk palca i dowolna blokada ekranu; twarz jest zarejestrowana i zastępuje kod PIN)

„Aby kontynuować, użyj rozpoznawania twarzy lub kodu PIN”
(Wymagania spełniają rozpoznawanie twarzy, odcisk palca i dowolna blokada ekranu; rozpoznawanie twarzy i kod PIN są zarejestrowane)

„Użyj biometrii lub blokady ekranu”
(Wymagania spełnia rozpoznawanie twarzy, odcisk palca i każda blokada ekranu)

Weryfikacja

Wdrożenie biometryczne musi przejść te testy:

  • CTS BiometricManager
  • CTS BiometricPrompt (sanity, in-depth testing relies on verifier)
  • Sekcja CtsVerifier Biometric Test: musi przejść test osobno w przypadku każdego obsługiwanego przez urządzenie rodzaju danych biometrycznych.

Dodatkowo, jeśli urządzenie obsługuje dane biometryczne, które mają interfejs HIDL AOSP (fingerprint@2.1, fingerprint@2.2, face1.0), musi przejść odpowiedni test VTS (fingerprint, face).