Les données biométriques constituent un moyen plus pratique, mais potentiellement moins sécurisé, de confirmer votre identité à l'aide d'un appareil. Dans le modèle d'authentification à niveaux, l'authentification primaire (c'est-à-dire les modalités basées sur des facteurs de connaissance tels que le code, le schéma et le mot de passe) offre le niveau de sécurité le plus élevé. La biométrie se situe au niveau secondaire de l'authentification, offrant un équilibre entre commodité et sécurité. La CDD Android définit trois classes de robustesse biométrique: la classe 3 (anciennement "Forte"), la classe 2 (anciennement "Faible") et la classe 1 (anciennement "Commodité"). Chaque classe est associée à un ensemble de prérequis, de droits et de contraintes. Pour en savoir plus, consultez le cahier des charges ci-dessus. Les trois classes sont autorisées à s'intégrer au verrouillage de l'écran, mais seuls les authentificateurs forts et faibles sont autorisés à s'intégrer aux API android.hardware.biometrics. Ce tableau décrit chaque authentificateur et les fonctionnalités qu'il prend en charge.
Authenticator | Écran de verrouillage | Intégration de BiometricPrompt | Keystore (clé basée sur le temps) | Keystore (clé basée sur les opérations) |
---|---|---|---|---|
BIOMETRIC_STRONG (classe 3) | Oui | Oui | Oui | Oui |
BIOMETRIC_WEAK (classe 2) | Oui | Oui | Non | Non |
BIOMETRIC_CONVENIENCE (classe 1) |
Oui | Non | Non | Non |
IDENTIFIANT_DE_L'APPAREIL | Oui | Oui | Oui | Oui |
Le framework Android est compatible avec l'authentification biométrique par reconnaissance faciale et par empreinte digitale. Android peut être personnalisé pour prendre en charge d'autres modalités biométriques (telles que Iris). Cependant, l'intégration biométrique dépendra de la sécurité biométrique, et non de la modalité. Pour en savoir plus sur les spécifications de sécurité biométrique, consultez Mesurer la sécurité du déverrouillage biométrique.
Source
Android 12
- Introduction de l'API BiometricManager.Strings, qui fournit des chaînes localisées pour les applications qui utilisent BiometricPrompt pour l'authentification. Ces chaînes sont censées être compatibles avec les appareils et fournir des informations plus spécifiques sur les types d'authentification pouvant être utilisés.
- Prise en charge du lecteur d'empreinte digitale sous l'écran (UDFPS).
Android 11
- Introduction de l'interface BiometricManager.Authenticators, qui fournit des constantes que les développeurs peuvent utiliser pour spécifier les types d'authentification acceptés par leurs applications.
- Ajoute l'action d'intent
ACTION_BIOMETRIC_ENROLL
, que les développeurs peuvent utiliser pour inviter l'utilisateur à enregistrer une méthode d'authentification qui répond aux exigences de leurs applications. - Ajoute la méthode
AuthenticationResult#getAuthenticationType()
, que les développeurs peuvent utiliser pour vérifier si l'utilisateur s'est authentifié à l'aide d'identifiants biométriques ou d'identifiants d'appareil. - Fournit une prise en charge supplémentaire des clés auth-per-use dans la classe BiometricPrompt.
Android 10
- Introduction de la
classe
BiometricManager
que les développeurs peuvent utiliser pour interroger la disponibilité de l'authentification biométrique. - Inclut l'intégration de l'authentification par empreinte digitale et par reconnaissance faciale pour
BiometricPrompt
Android 9
- Inclut l'intégration de l'empreinte digitale uniquement pour
BiometricPrompt
. - Abandon de la classe FingerprintManager. Si vos applications groupées et système utilisent cette classe, mettez-les à jour pour qu'elles utilisent
BiometricPrompt
etBiometricManager
à la place. - Mise à jour des tests de vérification du CTS
FingerprintManager
pour testerBiometricPrompt
à l'aide deBiometricPromptBoundKeysTest
.
Implémentation
Pour que les utilisateurs et les développeurs bénéficient d'une expérience biométrique fluide, intégrez votre pile biométrique aux API BiometricPrompt
, BiometricManager
et ACTION_BIOMETRIC_ENROLL
. Les appareils équipés de capteurs biométriques doivent respecter ces exigences de robustesse.De plus, toutes les implémentations doivent réussir le module CTS CtsBiometricsTestCases.
Pour intégrer votre pile biométrique à l'API ACTION_BIOMETRIC_ENROLL:
- Modifiez BiometricEnrollActivity pour présenter votre parcours d'inscription. Notez que votre biométrie ne peut être présentée que si elle répond au niveau de précision demandé. S'il est compatible avec plusieurs appareils, cette action doit présenter une liste que l'utilisateur peut choisir.
Consignes d'implémentation de HAL
Suivez ces consignes HAL biométriques pour vous assurer que les données biométriques ne sont pas divulguées et qu'elles sont supprimées lorsqu'un utilisateur est supprimé d'un appareil:
- Assurez-vous que les données biométriques brutes ou les dérivées (telles que les modèles) ne sont jamais accessibles en dehors de l'environnement isolé sécurisé (tel que le TEE ou l'élément sécurisé). Toutes les données stockées doivent être chiffrées à l'aide d'une clé spécifique à l'appareil connue uniquement par l'environnement d'exécution sécurisé (TEE). Si le matériel le permet, limitez l'accès matériel à l'environnement isolé sécurisé et protégez-le avec une règle SELinux. Limitez l'accès au canal de communication (par exemple, SPI, I2C) à l'environnement isolé sécurisé avec une règle SELinux explicite sur tous les fichiers de l'appareil.
- L'acquisition, l'enregistrement et la reconnaissance biométriques doivent avoir lieu dans un environnement isolé et sécurisé afin d'éviter les violations de données et d'autres attaques. Cette exigence ne s'applique qu'aux systèmes biométriques de classe 3 (anciennement "fort") et de classe 2 (anciennement "faible").
- Pour vous protéger contre les attaques par rejeu, signez les modèles biométriques avec une clé privée spécifique à l'appareil. Pour le chiffrement avancé (AES, Advanced Encryption Standard), signez au minimum un modèle avec le chemin d'accès au système de fichiers absolu, le groupe et l'ID biométrique, de sorte que les fichiers de modèle ne soient pas utilisables sur un autre appareil ou par toute personne autre que l'utilisateur qui les a enregistrés sur le même appareil. Par exemple, empêchez la copie des données biométriques d'un autre utilisateur sur le même appareil ou depuis un autre appareil.
- Si vous devez stocker des données en dehors du TEE, utilisez le chemin d'accès au système de fichiers fourni par
setActiveUser() HIDL method
ou fournissez un autre moyen d'effacer toutes les données du modèle utilisateur lorsque l'utilisateur est supprimé. Cela permet d'éviter les fuites de données utilisateur. Les appareils qui n'utilisent pas ce chemin doivent nettoyer après la suppression de l'utilisateur. Le CDD exige que les données biométriques et les fichiers dérivés soient stockés de manière chiffrée, en particulier s'ils ne sont pas dans le TEE. Si cela n'est pas possible en raison des exigences de stockage de l'environnement isolé sécurisé, ajoutez des crochets pour vous assurer de la suppression des données lorsque l'utilisateur est supprimé ou que l'appareil est effacé. Voir LockSettingsService.removeBiometricsForUser()
Personnalisation
Si votre appareil est compatible avec plusieurs méthodes biométriques, l'utilisateur doit pouvoir spécifier une méthode par défaut dans les paramètres. Votre implémentation de BiometricPrompt
doit privilégier la biométrie de classe 3 (anciennement forte) par défaut, sauf si l'utilisateur la remplace explicitement. Un message d'avertissement doit alors s'afficher pour expliquer les risques associés à la biométrie (par exemple, Une photo de vous peut déverrouiller votre appareil).
Chaînes d'authentification spécifiques à l'appareil
À partir d'Android 12, les chaînes d'authentification contextuelles sont mises à la disposition des développeurs via l'API BiometricManager.Strings. Vous pouvez personnaliser les valeurs de ressources renvoyées par cette API pour implémenter des chaînes spécifiques à l'appareil. Dans ce cas, assurez-vous que les nouvelles chaînes sont traduites dans tous les paramètres régionaux compatibles avec l'appareil. Assurez-vous également que les propriétés suivantes sont conservées:
Méthode |
Finalité de la chaîne |
Type(s) d'authentification à inclure |
Si les paramètres biométriques et le verrouillage de l'écran sont tous les deux possibles |
---|---|---|---|
getButtonLabel() |
Libellé d'un bouton qui déclenche BiometricPrompt |
Types enregistrés uniquement (si possible) qui répondent aux exigences de l'authentificateur |
Utilisez une chaîne biométrique uniquement (par exemple, "Utiliser l'empreinte numérique") |
getPromptMessage() |
Message affiché sur BiometricPrompt lors de l'authentification |
Types d'inscrits uniquement (si possible) qui répondent aux exigences de l'authentificateur |
Utilisez une chaîne combinée pour la biométrie et le verrouillage de l'écran (par exemple, "Utilisez votre empreinte digitale ou votre code pour continuer"). |
getSettingName() |
Nom d'un paramètre qui active BiometricPrompt pour l'authentification |
Tous les types compatibles avec l'appareil (même s'ils ne sont pas enregistrés) qui répondent aux exigences de l'authentificateur |
Utiliser une chaîne biométrique combinée et une chaîne de verrouillage de l'écran (par exemple, "Utiliser l'empreinte digitale ou le verrouillage de l'écran") |
Prenons l'exemple d'un appareil doté d'un lecteur de visage de classe 2 avec un visage enregistré, un code enregistré et un lecteur d'empreinte digitale de classe 3 sans empreintes digitales enregistrées. Le tableau suivant fournit des exemples de chaînes pour chaque combinaison d'authentificateurs autorisés et de méthodes BiometricManager.Strings appelées:
Authentificateurs autorisés |
getButtonLabel() |
getPromptMessage() |
getSettingName() |
---|---|---|---|
Biométrie de classe 3 (BIOMETRIC_STRONG) |
"Utiliser l'empreinte digitale" (Seule l'empreinte digitale répond aux exigences de l'authentificateur) |
"Utiliser votre empreinte digitale pour continuer" (Seule l'empreinte digitale répond aux exigences de l'authentificateur) |
"Utiliser l'empreinte digitale" (Seule l'empreinte digitale répond aux exigences de l'authentificateur) |
Biométrie de classe 2 (BIOMETRIC_WEAK) |
"Utiliser le visage" (Le visage et l'empreinte digitale répondent aux exigences, mais seule la reconnaissance faciale est enregistrée) |
"Utiliser votre visage pour continuer" (La reconnaissance faciale et l'empreinte digitale répondent aux exigences, mais seule la reconnaissance faciale est enregistrée) |
"Utiliser la reconnaissance faciale ou l'empreinte digitale" (La reconnaissance faciale et l'empreinte digitale répondent aux exigences ; l'appareil est compatible avec les deux) |
Verrouillage de l'écran (DEVICE_CREDENTIAL) |
"Utiliser le code" (Le verrouillage de l'écran répond aux exigences ; le code est enregistré) |
"Saisissez votre code pour continuer" (Tout verrouillage de l'écran répond aux exigences ; le code est enregistré) |
"Utiliser le verrouillage de l'écran" (N'importe quel verrouillage d'écran répond aux exigences) |
Identifiant biométrique de classe 3 OU verrouillage de l'écran |
"Utiliser le code" (L'empreinte digitale et tout verrouillage de l'écran répondent aux exigences. Seul le code est enregistré.) |
"Saisissez votre code pour continuer" (L'empreinte digitale et tout verrouillage de l'écran répondent aux exigences. Seul le code est enregistré.) |
"Utiliser l'empreinte digitale ou le verrouillage de l'écran" (L'empreinte digitale et tout verrouillage de l'écran répondent aux exigences) |
Système biométrique de classe 2 OU verrouillage de l'écran |
"Utiliser le visage" (Le visage, l'empreinte digitale et tout verrouillage de l'écran répondent aux exigences. Le visage est enregistré et remplace le code.) |
"Utilisez votre visage ou votre code pour continuer" (La reconnaissance faciale, l'empreinte digitale et tout verrouillage de l'écran répondent aux exigences. La reconnaissance faciale et le code sont enregistrés.) |
"Utiliser la biométrie ou le verrouillage de l'écran" (la reconnaissance faciale, l'empreinte digitale et tout verrouillage de l'écran répondent aux exigences) |
Validation
Votre implémentation biométrique doit réussir les tests suivants:
- CTS BiometricManager
- CTS BiometricPrompt (vérification, les tests approfondis reposent sur le vérificateur)
- Section "Test biométrique CtsVerifier" : doit être transmise individuellement avec chaque modalité compatible avec l'appareil.
En outre, si votre appareil prend en charge une biométrie avec un HIDL AOSP (fingerprint@2.1, fingerprint@2.2, face1.0), il doit réussir le test VTS correspondant (fingerprint, face).