Biometria

La biometria offre un modo più comodo, ma potenzialmente meno sicuro, per confermare la tua identità con un dispositivo. Nel modello di autenticazione a livelli, l'autenticazione principale (ovvero le modalità basate sul fattore di conoscenza, come PIN, sequenza e password) fornisce il livello di sicurezza più elevato. La biometria si trova nel livello secondario di autenticazione e offre un equilibrio tra comodità e sicurezza. Il CDD di Android definisce tre classi di forza biometrica: Classe 3 (in precedenza Forte), Classe 2 (in precedenza Debole) e Classe 1 (in precedenza Comoda). Ogni classe ha un insieme di prerequisiti, privilegi e vincoli. Per maggiori dettagli, consulta il CDD sopra. Tutte e tre le classi possono essere integrate con la schermata di blocco, ma solo gli autenticatori Forte e Debole possono essere integrati con le API android.hardware.biometrics. Questa tabella descrive ogni autenticatore e le funzionalità che supporta.

Autenticatore 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 volto. 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, consulta Misurare la sicurezza dello sblocco biometrico.

Origine

Android 12

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

Android 11

Android 10

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

Android 9

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

Implementazione

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

Per integrare lo stack biometrico con l'API ACTION_BIOMETRIC_ENROLL:

  1. Modifica BiometricEnrollActivity per presentare il flusso di registrazione. Tieni presente che la biometria può essere presentata solo se soddisfa la forza richiesta. Se il dispositivo ne supporta più di una, questa azione deve presentare un elenco da cui l'utente può scegliere.
Architettura di BiometricPrompt
Figura 1. Architettura di 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 che vengano rimossi quando un utente viene rimosso da un dispositivo:

  • Assicurati che i dati biometrici grezzi o i derivati (ad esempio i modelli) non siano mai accessibili dall'esterno dell'ambiente isolato sicuro (ad esempio 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 hardware 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 norma SELinux esplicita su tutti i file del dispositivo.
  • L'acquisizione, la registrazione e il riconoscimento biometrici devono avvenire all'interno dell'ambiente isolato sicuro per prevenire violazioni dei dati e altri attacchi. Questo requisito si applica solo alle biometrie di Classe 3 (in precedenza Forte) e Classe 2 (in precedenza Debole).
  • Per proteggerti dagli attacchi di riproduzione, firma i modelli biometrici con una chiave privata specifica del 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, impedisci la copia dei dati biometrici di un utente diverso sullo stesso dispositivo o su un altro dispositivo.
  • Se devi archiviare i dati al di fuori del TEE, utilizza il percorso del file system fornito dal 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 liberare spazio dopo la rimozione dell'utente. Il CDD richiede che i dati biometrici e i file derivati vengano archiviati in forma criptata, soprattutto se non si trovano nel 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 cancellato. Consulta LockSettingsService.removeBiometricsForUser()

Personalizzazione

Se il dispositivo supporta più biometrie, l'utente deve essere in grado di specificarne una predefinita nelle impostazioni. L'implementazione di BiometricPrompt deve preferire la biometria di Classe 3 (in precedenza Forte) come predefinita, a meno che l'utente non la sostituisca esplicitamente. In questo caso, deve essere visualizzato un messaggio di avviso che spiega i rischi associati alla biometria (ad esempio, Una tua foto potrebbe sbloccare il dispositivo).

Stringhe di autenticazione specifiche del dispositivo

A partire da Android 12, le stringhe di autenticazione contestuali sono 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 tutte le nuove stringhe siano 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 registrati (se possibile) che soddisfano i requisiti dell'autenticatore

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

getPromptMessage()

Messaggio visualizzato in BiometricPrompt durante l'autenticazione

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

Utilizza la stringa combinata di biometria e blocco schermo (ad es. "Usa l'impronta o il 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 di biometria e blocco schermo (ad esempio, "Usa l'impronta o il blocco schermo")

Ad esempio, considera un dispositivo con un sensore facciale di Classe 2 con un volto registrato, un PIN registrato e un sensore di impronte digitali di Classe 3 senza impronte digitali 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; solo il volto è registrato)

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

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

Blocco schermo (DEVICE_CREDENTIAL)

"Usa il 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 il blocco schermo"
(Qualsiasi blocco schermo soddisfa i requisiti)

Biometria di Classe 3 O blocco schermo

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

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

"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)

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

"Usa la biometria 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 (i test di base e approfonditi si basano sul verificatore)
  • Sezione Test biometrici di CtsVerifier : deve superare individualmente ogni modalità supportata dal dispositivo

Inoltre, se il dispositivo supporta una biometria con un HIDL AOSP (fingerprint@2.1, fingerprint@2.2, face1.0), deve superare il test VTS pertinente (impronta, volto)