Biometria

La biometria offre un modo più pratico, ma potenzialmente meno sicuro, per confermare la tua identità con un dispositivo. Nel modello di autenticazione a più livelli, l'autenticazione principale (ovvero le modalità basate su fattori di conoscenza come PIN, sequenza e password) offre il massimo livello di sicurezza. La biometria si trova nel livello secondario di autenticazione e offre un equilibrio tra praticità e sicurezza. La CDD di Android definisce tre classi di robustezza biometrica: classe 3 (precedentemente Forte), classe 2 (precedentemente Debole) e classe 1 (precedentemente Comodità). Ogni classe ha un insieme di prerequisiti, privilegi e vincoli. Per ulteriori dettagli, consulta il CDD riportato sopra. Tutte e tre le classi possono essere integrate con la schermata di blocco, ma solo gli autenticatori Strong e Weak possono essere integrati con le API android.hardware.biometrics. Questa tabella descrive ogni autenticatore e la funzionalità che supporta.

Authenticator Schermata di blocco Integrazione di BiometricPrompt Archivio chiavi (chiave basata sul tempo) Archivio chiavi (chiave basata sull'operazione)
BIOMETRIC_STRONG (classe 3)
BIOMETRIC_WEAK (Classe 2) No No
BIOMETRIC_CONVENIENCE
(Classe 1)
No No No
DEVICE_CREDENTIAL

Il framework Android include il supporto per l'autenticazione biometrica con impronta e riconoscimento facciale. Android può essere personalizzato per supportare altre modalità biometriche (ad esempio l'iride). Tuttavia, l'integrazione biometrica dipenderà dalla sicurezza biometrica, non dalla modalità. Per maggiori dettagli sulle specifiche di sicurezza biometrica, vedi Misurazione della sicurezza dello sblocco biometrico.

Fonte

Android 12

  • Introduce l'API BiometricManager.Strings, che fornisce stringhe localizzate per le app che utilizzano BiometricPrompt per l'autenticazione. Queste stringhe sono pensate per essere specifiche per il dispositivo e fornire maggiori dettagli sui tipi di autenticazione che possono essere utilizzati.
  • Include il supporto del sensore di impronte digitali integrato nel display (UDFPS).

Android 11

  • Introduce l'interfaccia BiometricManager.Authenticators, che fornisce costanti che gli sviluppatori possono utilizzare per specificare i tipi di autenticazione accettati dalle loro app.
  • Aggiunge l'ACTION_BIOMETRIC_ENROLL intent action, che gli sviluppatori possono utilizzare per indirizzare l'utente a registrare un metodo di autenticazione che soddisfi i requisiti delle loro app.
  • Aggiunge il AuthenticationResult#getAuthenticationType() metodo, che gli sviluppatori possono utilizzare per verificare se l'utente ha eseguito l'autenticazione utilizzando una credenziale biometrica o una credenziale del dispositivo.
  • Fornisce ulteriore supporto per le chiavi auth-per-use all'interno della classe BiometricPrompt.

Android 10

  • Introduce la BiometricManager classe che gli sviluppatori possono utilizzare per eseguire query sulla disponibilità dell'autenticazione biometrica.
  • Include l'integrazione dell'autenticazione tramite impronta e volto per BiometricPrompt

Android 9

  • Include l'integrazione dell'impronta solo per BiometricPrompt.
  • Depreca la classe FingerprintManager. Se le app di sistema e in bundle utilizzano questa classe, aggiornale in modo che utilizzino BiometricPrompt e BiometricManager.
  • Sono stati aggiornati i test di verifica CTS FingerprintManager per testare BiometricPrompt utilizzando BiometricPromptBoundKeysTest.

Implementazione

Per garantire agli utenti e agli sviluppatori un'esperienza biometrica ottimale, integra il tuo stack biometrico con le API BiometricPrompt, BiometricManager e ACTION_BIOMETRIC_ENROLL. I dispositivi con sensori biometrici devono rispettare questi requisiti di robustezza.Inoltre, tutte le implementazioni devono superare il modulo CTS CtsBiometricsTestCases.

Per integrare il tuo stack biometrico con l'API ACTION_BIOMETRIC_ENROLL:

  1. Modifica BiometricEnrollActivity per presentare il flusso di registrazione. Tieni presente che la tua biometria può essere presentata solo se soddisfa il livello di sicurezza richiesto. Se il dispositivo ne supporta più di uno, questa azione dovrebbe presentare un elenco tra cui l'utente può scegliere.
Architettura di BiometricPrompt
Figura 1. Architettura BiometricPrompt

Linee guida per l'implementazione dell'HAL

Segui queste linee guida per l'HAL biometrico per assicurarti che i dati biometrici non vengano divulgati e vengano rimossi quando un utente viene rimosso da un dispositivo:

  • Assicurati che i dati biometrici grezzi o i derivati (come i modelli) non siano mai accessibili dall'esterno dell'ambiente sicuro e isolato (come il TEE o Secure Element). Tutti i dati archiviati devono essere criptati con una chiave specifica del dispositivo nota solo al Trusted Execution Environment (TEE). Se l'hardware lo supporta, limita l'accesso all'ambiente isolato sicuro e proteggilo con una norma SELinux. Rendi il canale di comunicazione (ad esempio SPI, I2C) accessibile solo all'ambiente isolato sicuro con una policy SELinux esplicita su tutti i file del dispositivo.
  • L'acquisizione, la registrazione e il riconoscimento biometrici devono avvenire all'interno dell'ambiente sicuro e isolato per prevenire violazioni dei dati e altri attacchi. Questo requisito si applica solo alle biometrie di classe 3 (precedentemente forte) e classe 2 (precedentemente debole).
  • Per proteggere dagli attacchi di riproduzione, firma i modelli biometrici con una chiave privata specifica per il dispositivo. Per l'Advanced Encryption Standard (AES), firma almeno un modello con il percorso assoluto del file system, il gruppo e l'ID biometrico in modo che i file modello non siano utilizzabili su un altro dispositivo o da chiunque altro che non sia l'utente che li ha registrati sullo stesso dispositivo. Ad esempio, impedire la copia dei dati biometrici di un utente diverso sullo stesso dispositivo o di un altro dispositivo.
  • Se devi archiviare i dati al di fuori del TEE, utilizza il percorso del file system fornito da setActiveUser() HIDL method o fornisci un altro modo per cancellare tutti i dati dei modelli utente quando l'utente viene rimosso. Il motivo è proteggere la divulgazione dei dati utente. I dispositivi che non utilizzano questo percorso devono eseguire la pulizia dopo la rimozione dell'utente. È richiesto dal CDD che i dati biometrici e i file derivati vengano archiviati in forma criptata, soprattutto se non si trovano in TEE. Se ciò non è fattibile a causa dei requisiti di archiviazione dell'ambiente isolato sicuro, aggiungi hook per garantire la rimozione dei dati quando l'utente viene rimosso o il dispositivo viene resettato. Vedi LockSettingsService.removeBiometricsForUser()

Personalizzazione

Se il tuo dispositivo supporta più dati biometrici, l'utente dovrebbe essere in grado di specificarne uno predefinito nelle impostazioni. L'implementazione di BiometricPrompt deve preferire la biometria di classe 3 (precedentemente forte) come impostazione predefinita, a meno che l'utente non la sostituisca esplicitamente, nel qual caso deve essere visualizzato un messaggio di avviso che spieghi i rischi associati alla biometria (ad esempio, Una tua foto potrebbe sbloccare il dispositivo)

Stringhe di autenticazione specifiche per dispositivo

A partire da Android 12, le stringhe di autenticazione contestuale vengono rese disponibili agli sviluppatori tramite l'API BiometricManager.Strings. Puoi personalizzare i valori delle risorse restituiti da questa API per implementare stringhe specifiche del dispositivo. In questo caso, assicurati che le nuove stringhe vengano tradotte per tutte le impostazioni internazionali supportate dal dispositivo. Inoltre, assicurati che le seguenti proprietà vengano mantenute:


Metodo

Scopo della stringa

Tipi di autenticazione da includere

Se sono possibili sia la biometria sia il blocco schermo

getButtonLabel()

Etichetta di un pulsante che attiva BiometricPrompt

Solo i tipi Registrato (se possibile) che soddisfano i requisiti dell'autenticatore

Utilizza la stringa solo biometrica (ad esempio, "Usa l'impronta")

getPromptMessage()

Messaggio mostrato in BiometricPrompt durante l'autenticazione

Solo i tipi Registrato (se possibile) che soddisfano i requisiti dell'autenticatore

Utilizza la stringa combinata di dati biometrici e blocco schermo (ad es. "Usa la tua impronta o il tuo PIN per continuare")

getSettingName()

Nome di un'impostazione che attiva BiometricPrompt per l'autenticazione

Tutti i tipi supportati dal dispositivo (anche se non registrati) che soddisfano i requisiti dell'autenticatore

Utilizza la stringa combinata per i dati biometrici e il blocco schermo (ad esempio, "Usa l'impronta o il blocco schermo")

Ad esempio, considera un dispositivo con un sensore del volto di Classe 2 con un volto registrato, un PIN registrato e un sensore di impronte di Classe 3 senza impronte registrate. La tabella seguente fornisce stringhe di esempio per ogni combinazione di autenticatori consentiti e metodo BiometricManager.Strings richiamato:


Autenticatori consentiti

getButtonLabel()

getPromptMessage()

getSettingName()

Biometria di classe 3 (BIOMETRIC_STRONG)

"Usa l'impronta"
(Solo l'impronta soddisfa i requisiti dell'autenticatore)

"Usa l'impronta per continuare"
(Solo l'impronta soddisfa i requisiti dell'autenticatore)

"Usa l'impronta"
(Solo l'impronta soddisfa i requisiti dell'autenticatore)

Biometria di classe 2 (BIOMETRIC_WEAK)

"Usa il volto"
(Il volto e l'impronta soddisfano i requisiti; è registrato solo il volto)

"Usa il tuo volto per continuare"
(Il volto e l'impronta soddisfano i requisiti; è registrato solo il volto)

"Usa il volto o l'impronta"
(Il volto e l'impronta soddisfano i requisiti; il dispositivo supporta entrambi)

Blocco schermo (DEVICE_CREDENTIAL)

"Utilizza PIN"
(Qualsiasi blocco schermo soddisfa i requisiti; il PIN è registrato)

"Inserisci il PIN per continuare"
(Qualsiasi blocco schermo soddisfa i requisiti; il PIN è registrato)

"Usa blocco schermo"
(Qualsiasi blocco schermo soddisfa i requisiti)

Biometria di Classe 3 O blocco schermo

"Utilizza PIN"
(L'impronta e qualsiasi blocco schermo soddisfano i requisiti; è registrato solo il PIN)

"Inserisci il PIN per continuare"
(L'impronta e qualsiasi blocco schermo soddisfano i requisiti; è registrato solo il PIN)

"Usa l'impronta o il blocco schermo"
(l'impronta e qualsiasi blocco schermo soddisfano i requisiti)

Biometria di Classe 2 O blocco schermo

"Usa il volto"
(Il volto, l'impronta e qualsiasi blocco schermo soddisfano i requisiti; il volto è registrato e sostituisce il PIN)

"Per continuare, usa il tuo volto o il PIN"
(Il volto, l'impronta e qualsiasi blocco schermo soddisfano i requisiti; il volto e il PIN sono registrati)

"Usa i dati biometrici o il blocco schermo"
(il volto, l'impronta e qualsiasi blocco schermo soddisfano i requisiti)

Convalida

L'implementazione biometrica deve superare i seguenti test:

  • CTS BiometricManager
  • CTS BiometricPrompt (sanity, in-depth testing relies on verifier)
  • Sezione CtsVerifier Biometric Test : Deve essere superata singolarmente con ogni modalità supportata dal dispositivo

Inoltre, se il tuo dispositivo supporta una biometria con un'interfaccia HIDL AOSP ([email protected], [email protected], face1.0), deve superare il test VTS pertinente (fingerprint, face)