La biometria offre un modo più conveniente, ma potenzialmente meno sicuro, per confermare la tua identità con un dispositivo. Con il modello di autenticazione a più livelli, l'autenticazione primaria (ovvero modalità basate su fattori di conoscenza come PIN, sequenza e password) fornisce il livello di sicurezza più elevato. I dati biometrici sono nel livello secondario di autenticazione, offrendo un equilibrio tra praticità e sicurezza. L' Android CDD definisce tre classi di forza biometrica: Classe 3 (precedentemente Forte), Classe 2 (precedentemente Debole) e Classe 1 (precedentemente Convenienza). Ogni classe ha una serie di prerequisiti, privilegi e vincoli: consulta il CDD sopra per maggiori dettagli. Tutte e tre le classi possono integrarsi con la schermata di blocco, ma solo gli autenticatori Strong e Weak possono integrarsi con le API android.hardware.biometrics. Questa tabella descrive ogni autenticatore e le funzionalità che supportano.
Autenticatore | Blocca schermo | Integrazione BiometricPrompt | Keystore (chiave basata sul tempo) | Keystore (chiave basata sull'operazione) |
---|---|---|---|---|
BIOMETRIC_STRONG (Classe 3) | sì | sì | sì | sì |
BIOMETRIC_WEAK (Classe 2) | sì | sì | No | No |
BIOMETRICO_CONVENIENZA (Classe 1) | sì | No | No | No |
DEVICE_CREDENTIAL | sì | sì | sì | sì |
Il framework Android include il supporto per l'autenticazione biometrica del volto e dell'impronta digitale. Android può essere personalizzato per supportare altre modalità biometriche (come Iris). Tuttavia, l'integrazione biometrica dipenderà dalla sicurezza biometrica, non dalla modalità. Per maggiori dettagli sulle specifiche di sicurezza biometrica, vedere Misurazione della sicurezza di sblocco biometrico .
Fonte
Android 12
- Introduce l'API BiometricManager.Strings , che fornisce stringhe localizzate per le app che usano BiometricPrompt per l'autenticazione. Queste stringhe sono concepite per essere in grado di riconoscere il dispositivo e fornire una maggiore specificità su quali tipi di autenticazione possono essere utilizzati.
- Include il supporto per il sensore di impronte digitali sotto il display (UDFPS).
Android 11
- Introduce l' interfaccia BiometricManager.Authenticators , che fornisce costanti che gli sviluppatori possono usare per specificare i tipi di autenticazione accettati dalle loro app.
- Aggiunge l'azione dell'intento
ACTION_BIOMETRIC_ENROLL
, che gli sviluppatori possono utilizzare per indirizzare l'utente a registrare un metodo di autenticazione che soddisfi i requisiti delle proprie app. - Aggiunge il metodo
AuthenticationResult #getAuthenticationType ()
, che gli sviluppatori possono utilizzare per verificare se l'utente si è autenticato utilizzando una credenziale biometrica o una credenziale del dispositivo. - Fornisce supporto aggiuntivo per chiavi auth-per-use all'interno della classe BiometricPrompt.
Android 10
- Introduce la classe
BiometricManager
che gli sviluppatori possono usare per interrogare la disponibilità dell'autenticazione biometrica. - Include l'integrazione dell'autenticazione dell'impronta digitale e del volto per
BiometricPrompt
Android 9
- Include l'integrazione dell'impronta digitale solo per
BiometricPrompt
. - Depreca la classe FingerprintManager. Se le tue app in bundle e di sistema utilizzano questa classe, aggiornale per utilizzare invece
BiometricPrompt
eBiometricManager
. - Aggiornati i test del verificatore CTS
FingerprintManager
per testareBiometricPrompt
usandoBiometricPromptBoundKeysTest
.
Implementazione
Per garantire che utenti e sviluppatori abbiano un'esperienza biometrica senza interruzioni, integra il tuo stack biometrico con le API BiometricPrompt
, BiometricManager
e ACTION_BIOMETRIC_ENROLL
. I dispositivi con sensori biometrici devono rispettare questi requisiti di resistenza . Inoltre, tutte le implementazioni devono superare il modulo CTSBiometricsTestCases CTS.
Per integrare il tuo stack biometrico con l'API ACTION_BIOMETRIC_ENROLL:
- Modifica BiometricEnrollActivity per presentare il flusso di registrazione. Nota che il tuo biometrico può essere presentato solo se soddisfa la forza richiesta. Se il tuo dispositivo ne supporta più di uno, questa azione dovrebbe presentare un elenco da cui l'utente può scegliere.

Linee guida di attuazione HAL
Segui queste linee guida HAL biometriche per assicurarti che i dati biometrici non vengano trapelati e vengano rimossi quando un utente viene rimosso da un dispositivo:
- Assicurati che i dati biometrici grezzi o derivati (come i modelli) non siano mai accessibili dall'esterno dell'ambiente isolato sicuro (come TEE o Secure Element). Tutti i dati archiviati devono essere crittografati con una chiave specifica del dispositivo nota solo al TEE (Trusted Execution Environment). Se l'hardware lo supporta, limitare l'accesso hardware all'ambiente isolato sicuro e proteggerlo con una politica SELinux. Rendi il canale di comunicazione (ad esempio, SPI, I2C) accessibile solo all'ambiente isolato sicuro con una politica SELinux esplicita su tutti i file del dispositivo.
- L'acquisizione, la registrazione e il riconoscimento biometrici devono avvenire all'interno di un ambiente isolato sicuro per prevenire violazioni dei dati e altri attacchi. Questo requisito si applica solo ai dati biometrici di Classe 3 (ex Forte) e Classe 2 (ex Debole) .
- Per proteggerti dagli attacchi di riproduzione, firma i modelli biometrici con una chiave privata specifica per il dispositivo. Per Advanced Encryption Standard (AES), firmare almeno un modello con il percorso del file system assoluto, il gruppo e l'ID biometrico in modo tale che i file del modello non siano utilizzabili su un altro dispositivo o per chiunque non sia l'utente che li ha registrati sullo stesso dispositivo . Ad esempio, impedire la copia dei dati biometrici da un utente diverso sullo stesso dispositivo o da un altro dispositivo.
- Se è necessario archiviare dati al di fuori del TEE, utilizzare il percorso del file system fornito dal
setActiveUser() HIDL method
o fornire un altro modo per cancellare tutti i dati del modello utente quando l'utente viene rimosso. Il motivo è proteggere la fuga di dati degli utenti. I dispositivi che non utilizzano questo percorso devono essere ripuliti dopo la rimozione dell'utente. CDD richiede che i dati biometrici e i file derivati siano archiviati crittografati, soprattutto se non in TEE Se ciò non è fattibile a causa dei requisiti di archiviazione dell'ambiente isolato sicuro, aggiungere hook per garantire la rimozione dei dati quando l'utente viene rimosso o il dispositivo viene cancellato. Vedere LockSettingsService.removeBiometricsForUser()
Personalizzazione
Se il tuo dispositivo supporta più dati biometrici, l'utente dovrebbe essere in grado di specificare un valore predefinito nelle impostazioni. La tua implementazione di BiometricPrompt
dovrebbe preferire la classe 3 (ex Strong) biometrica come impostazione predefinita a meno che l'utente non la ignori esplicitamente, quindi deve essere visualizzato un messaggio di avviso che spieghi i rischi associati alla biometria (ad esempio, una tua foto potrebbe sbloccare il tuo dispositivo )
Stringhe di autenticazione specifiche del dispositivo
A partire da Android 12, le stringhe di autenticazione contestuale 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 tal caso, assicurati che tutte le nuove stringhe vengano tradotte per tutte le impostazioni locali supportate dal dispositivo. Inoltre, assicurati che le seguenti proprietà siano mantenute:
Metodo | Scopo della stringa | Tipo/i di autenticazione da includere | Se sono possibili entrambi i dati biometrici e il blocco schermo |
---|---|---|---|
getButtonLabel() | Etichetta per un pulsante che attiva BiometricPrompt | Solo tipi registrati (se possibile) che soddisfano i requisiti dell'autenticatore | Usa una stringa solo biometrica (come "Usa impronta digitale") |
getPromptMessage() | Messaggio visualizzato su BiometricPrompt durante l'autenticazione | Solo tipi registrati (se possibile) che soddisfano i requisiti dell'autenticatore | Utilizza una stringa di blocco dello schermo e biometrica combinata (ad es. "Utilizza l'impronta digitale o il PIN per continuare") |
getSettingName() | Nome di un'impostazione che abilita BiometricPrompt per l'autenticazione | Tutti i tipi supportati dal dispositivo (anche se non registrati) che soddisfano i requisiti dell'autenticatore | Usa una stringa di blocco dello schermo e biometrica combinata (ad esempio "Utilizza l'impronta digitale o il blocco dello schermo") |
Si consideri, ad esempio, un dispositivo dotato di 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 ciascuna combinazione di autenticatori consentiti e metodo BiometricManager.Strings richiamato:
Autenticatori consentiti | getButtonLabel() | getPromptMessage() | getSettingName() |
---|---|---|---|
Classe 3 biometrico ( BIOMETRIC_STRONG ) | "Usa impronta digitale" (Solo l'impronta digitale soddisfa i requisiti dell'autenticatore) | "Utilizza la tua impronta digitale per continuare" (Solo l'impronta digitale soddisfa i requisiti dell'autenticatore) | "Usa impronta digitale" (Solo l'impronta digitale soddisfa i requisiti dell'autenticatore) |
Classe 2 biometrico ( BIOMETRIC_WEAK ) | "Usa la faccia" (Il volto e l'impronta digitale soddisfano i requisiti; viene registrato solo il volto) | "Usa la tua faccia per continuare" (Il volto e l'impronta digitale soddisfano i requisiti; viene registrato solo il volto) | "Usa il viso o l'impronta digitale" (Il volto e l'impronta digitale soddisfano i requisiti; il dispositivo supporta entrambi) |
Blocco schermo ( DEVICE_CREDENTIAL ) | "Usa PIN" (Qualsiasi blocco schermo soddisfa i requisiti; il PIN è registrato) | "Inserisci il tuo PIN per continuare" (Qualsiasi blocco schermo soddisfa i requisiti; il PIN è registrato) | "Usa blocco schermo" (Qualsiasi blocco schermo soddisfa i requisiti) |
Blocco schermo OPPURE biometrico di classe 3 | "Usa PIN" (L'impronta digitale e l'eventuale blocco dello schermo soddisfano i requisiti; viene registrato solo il PIN) | "Inserisci il tuo PIN per continuare" (L'impronta digitale e l'eventuale blocco dello schermo soddisfano i requisiti; viene registrato solo il PIN) | "Usa impronta digitale o blocco schermo" (L'impronta digitale e qualsiasi blocco dello schermo soddisfano i requisiti) |
Blocco schermo OPPURE biometrico di classe 2 | "Usa la faccia" (Il volto, l'impronta digitale e qualsiasi blocco schermo soddisfano i requisiti; il volto è registrato e sostituisce il PIN) | "Utilizza il tuo volto o il PIN per continuare" (Il volto, l'impronta digitale e qualsiasi blocco schermo soddisfano i requisiti; il volto e il PIN sono registrati) | "Utilizza dati biometrici o blocco schermo" (Il volto, l'impronta digitale e qualsiasi blocco dello schermo soddisfano i requisiti) |
Convalida
La tua implementazione biometrica deve superare i seguenti test:
- Responsabile biometrico CTS
- CTS BiometricPrompt (sanità mentale, test approfonditi si basano sul verificatore)
- Sezione Test biometrico CtsVerifier: deve essere superato individualmente con ciascuna modalità supportata dal dispositivo
Inoltre, se il tuo dispositivo supporta un dispositivo biometrico che ha un HIDL AOSP ( fingerprint@2.1 , fingerprint@2.2 , face1.0 ), deve superare il relativo test VTS ( fingerprint , face )