La biométrie offre un moyen plus pratique, mais potentiellement moins sécurisé, de confirmer votre identité avec un appareil. Dans le modèle d'authentification à plusieurs niveaux, l'authentification primaire (c'est-à-dire les modalités basées sur des facteurs de connaissance telles que le code PIN, le modèle et le mot de passe) offre le plus haut niveau de sécurité. La biométrie fait partie du niveau secondaire d’authentification, offrant un équilibre entre commodité et sécurité. Le CDD Android définit trois classes de force biométrique : classe 3 (anciennement forte), classe 2 (anciennement faible) et classe 1 (anciennement commodité). Chaque classe a un ensemble de prérequis, de privilèges et de contraintes – veuillez consulter le CDD ci-dessus pour plus de détails. Les trois classes sont autorisées à s'intégrer à lockscreen, 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'ils prennent en charge.
Authentificateur | Écran verrouillé | Intégration 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 |
DEVICE_CREDENTIAL | Oui | Oui | Oui | Oui |
Le framework Android inclut la prise en charge de l'authentification biométrique par visage 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 des modalités. Pour plus de détails sur les spécifications de sécurité biométrique, consultez Mesurer la sécurité du déverrouillage biométrique .
Source
Android 12
- Présente l'API BiometricManager.Strings , qui fournit des chaînes localisées pour les applications qui utilisent BiometricPrompt pour l'authentification. Ces chaînes sont destinées à tenir compte du périphérique et à fournir plus de précisions sur le(s) type(s) d'authentification pouvant être utilisés.
- Inclut la prise en charge du capteur d'empreintes digitales sous l'écran (UDFPS).
Android 11
- Présente 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'intention
ACTION_BIOMETRIC_ENROLL
, que les développeurs peuvent utiliser pour demander à l'utilisateur d'inscrire 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'un identifiant biométrique ou d'un identifiant de périphérique. - Fournit une prise en charge supplémentaire pour les clés d’authentification par utilisation au sein de la classe BiometricPrompt.
Android 10
- Présente 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 faciale pour
BiometricPrompt
Android 9
- Inclut l'intégration des empreintes digitales uniquement pour
BiometricPrompt
. - Déprécie la classe FingerprintManager. Si vos applications groupées et système utilisent cette classe, mettez-les à jour pour utiliser
BiometricPrompt
etBiometricManager
à la place. - Mise à jour des tests du vérificateur
FingerprintManager
CTS pour testerBiometricPrompt
à l'aide deBiometricPromptBoundKeysTest
.
Mise en œuvre
Pour garantir que les utilisateurs et les développeurs bénéficient d'une expérience biométrique transparente, intégrez votre pile biométrique aux API BiometricPrompt
, BiometricManager
et ACTION_BIOMETRIC_ENROLL
. Les appareils dotés de capteurs biométriques doivent respecter ces exigences de résistance . De plus, toutes les implémentations doivent réussir le module CtsBiometricsTestCases CTS.
Pour intégrer votre pile biométrique à l'API ACTION_BIOMETRIC_ENROLL :
- Modifiez BiometricEnrollActivity pour présenter votre flux d’inscription. Notez que votre biométrie ne peut être présentée que si elle répond à la force demandée. Si votre appareil en prend en charge plusieurs, cette action doit présenter une liste parmi laquelle l'utilisateur peut choisir.
![Architecture BiometricPrompt](https://source.android.com/static/docs/security/images/biometric-stack.png?authuser=6&hl=fr)
Directives de mise en œuvre de HAL
Suivez ces directives biométriques HAL pour garantir que les données biométriques ne sont pas divulguées et sont supprimées lorsqu'un utilisateur est supprimé d'un appareil :
- Assurez-vous que les données biométriques brutes ou leurs dérivés (tels que les modèles) ne sont jamais accessibles depuis l'extérieur de l'environnement isolé sécurisé (tel que le TEE ou Secure Element). Toutes les données stockées doivent être cryptées avec une clé spécifique à l'appareil connue uniquement du TEE (Trusted Execution Environment). Si le matériel le prend en charge, limitez l'accès du matériel à l'environnement isolé sécurisé et protégez-le avec une politique SELinux. Rendre le canal de communication (par exemple, SPI, I2C) accessible uniquement à l'environnement isolé sécurisé avec une politique 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é pour empêcher les violations de données et autres attaques. Cette exigence s’applique uniquement aux données biométriques de classe 3 (anciennement Forte) et de Classe 2 (anciennement Faible) .
- Pour vous protéger contre les attaques par relecture, signez les modèles biométriques avec une clé privée spécifique à l'appareil. Pour Advanced Encryption Standard (AES), signez au minimum un modèle avec le chemin absolu du système de fichiers, le groupe et l'ID biométrique de sorte que les fichiers modèles soient inutilisables sur un autre appareil ou pour toute personne autre que l'utilisateur qui les a inscrits 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 du système de fichiers fourni par la
setActiveUser() HIDL method
ou fournissez un autre moyen d'effacer toutes les données du modèle utilisateur lorsque l'utilisateur est supprimé. La raison est de protéger les fuites de données utilisateur. Les appareils qui n'utilisent pas ce chemin doivent être nettoyés 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 cryptés - surtout s'ils ne sont pas dans TEE. Si cela est impossible en raison des exigences de stockage de l'environnement isolé sécurisé, ajoutez des hooks pour garantir la suppression des données lorsque l'utilisateur est supprimé ou l'appareil est effacé. Voir LockSettingsService.removeBiometricsForUser()
Personnalisation
Si votre appareil prend en charge plusieurs données biométriques, l'utilisateur doit pouvoir spécifier une valeur par défaut dans les paramètres. Votre implémentation BiometricPrompt
doit privilégier la biométrie de classe 3 (anciennement Strong) par défaut, à moins que l'utilisateur ne la remplace explicitement. Un message d'avertissement doit alors s'afficher expliquant 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. Si vous le faites, assurez-vous que toutes les nouvelles chaînes sont traduites pour tous les paramètres régionaux pris en charge par le périphérique. Assurez-vous également que les propriétés suivantes sont préservées :
Méthode | Objectif de la chaîne | Type(s) d'authentification à inclure | Si les données biométriques et le verrouillage de l'écran sont tous deux possibles |
---|---|---|---|
getButtonLabel() | Étiquette pour un bouton qui déclenche BiometricPrompt | Types inscrits uniquement (si possible) qui satisfont aux exigences de l'authentificateur | Utilisez une chaîne uniquement biométrique (telle que « Utiliser l'empreinte digitale ») |
getPromptMessage() | Message affiché sur BiometricPrompt lors de l'authentification | Types inscrits uniquement (si possible) qui satisfont aux exigences de l'authentificateur | Utilisez une chaîne combinée biométrique et de verrouillage d'écran (par exemple "Utilisez votre empreinte digitale ou votre code PIN pour continuer") |
getSettingName() | Nom d'un paramètre qui active BiometricPrompt pour l'authentification | Tous les types pris en charge par l'appareil (même s'il n'est pas enregistré) qui satisfont aux exigences de l'authentificateur | Utiliser une chaîne combinée de données biométriques et de verrouillage d'écran (telle que « Utiliser une empreinte digitale ou un verrouillage d'écran ») |
Par exemple, considérons un appareil doté d'un capteur de visage de classe 2 avec un visage enregistré , un code PIN enregistré et un capteur d'empreintes digitales 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éthode BiometricManager.Strings invoquée :
Authentificateurs autorisés | getButtonLabel() | getPromptMessage() | getSettingName() |
---|---|---|---|
Biométrique de classe 3 ( BIOMETRIC_STRONG ) | "Utiliser l'empreinte digitale" (Seules les empreintes digitales satisfont aux exigences de l'authentificateur) | "Utilisez votre empreinte digitale pour continuer" (Seules les empreintes digitales satisfont aux exigences de l'authentificateur) | "Utiliser l'empreinte digitale" (Seules les empreintes digitales satisfont aux exigences de l'authentificateur) |
Biométrique de classe 2 ( BIOMETRIC_WEAK ) | "Utiliser le visage" (Le visage et les empreintes digitales satisfont aux exigences ; seul le visage est enregistré) | "Utilise ton visage pour continuer" (Le visage et les empreintes digitales satisfont aux exigences ; seul le visage est enregistré) | "Utiliser le visage ou l'empreinte digitale" (Le visage et les empreintes digitales répondent aux exigences ; l'appareil prend en charge les deux) |
Verrouillage de l'écran ( DEVICE_CREDENTIAL ) | "Utiliser le code PIN" (Tout verrouillage d'écran répond aux exigences ; le code PIN est enregistré) | "Entrez votre code PIN pour continuer" (Tout verrouillage d'écran répond aux exigences ; le code PIN est enregistré) | "Utiliser le verrouillage de l'écran" (Tout verrouillage d'écran répond aux exigences) |
Verrouillage d'écran biométrique OU de classe 3 | "Utiliser le code PIN" (Les empreintes digitales et tout verrouillage d'écran satisfont aux exigences ; seul le code PIN est enregistré) | "Entrez votre code PIN pour continuer" (Les empreintes digitales et tout verrouillage d'écran satisfont aux exigences ; seul le code PIN est enregistré) | "Utiliser l'empreinte digitale ou le verrouillage de l'écran" (Les empreintes digitales et tout verrouillage d'écran satisfont aux exigences) |
Verrouillage d'écran biométrique OU de classe 2 | "Utiliser le visage" (Le visage, les empreintes digitales et tout verrouillage d'écran satisfont aux exigences ; le visage est enregistré et remplace le code PIN) | "Utilisez votre visage ou votre code PIN pour continuer" (Le visage, les empreintes digitales et tout verrouillage d'écran satisfont aux exigences ; le visage et le code PIN sont enregistrés) | "Utiliser la biométrie ou le verrouillage de l'écran" (Le visage, les empreintes digitales et tout verrouillage d'écran satisfont aux exigences) |
Validation
Votre implémentation biométrique doit réussir les tests suivants :
- CTS BiometricManager
- CTS BiometricPrompt (la santé mentale, les tests approfondis reposent sur le vérificateur)
- Section de test biométrique CtsVerifier : doit réussir individuellement avec chaque modalité prise en charge par l'appareil.
De plus, si votre appareil prend en charge une biométrie dotée d'un AOSP HIDL ( empreinte digitale@2.1 , empreinte digitale@2.2 , face1.0 ), il doit réussir son test VTS correspondant ( empreinte digitale , visage ).