Biométrie

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 par niveaux, l'authentification principale (c'est-à-dire les modalités basées sur le facteur de connaissance, telles que le code, le schéma et le mot de passe) offre le plus haut niveau de sécurité. La biométrie fait partie du niveau d'authentification secondaire, qui offre un équilibre entre praticité et sécurité. Le CDD Android définit trois classes de sécurité biométrique : classe 3 (anciennement "Forte"), classe 2 (anciennement "Faible") et classe 1 (anciennement "Commodité"). Chaque classe possède un ensemble de prérequis, de droits et de contraintes. Pour en savoir plus, veuillez consulter le CDD ci-dessus. Les trois classes sont autorisées à s'intégrer à l'écran de verrouillage, mais seules 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 une opération)
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 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 (comme l'iris). Toutefois, 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

  • Présentation 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 conçues pour être adaptées aux appareils et fournir plus de spécificité sur les types d'authentification qui peuvent être utilisés.
  • Inclut la prise en charge du lecteur d'empreinte digitale sous l'écran (UDFPS).

Android 11

  • Présentation 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.
  • Ajout de l'action d'intent ACTION_BIOMETRIC_ENROLL, que les développeurs peuvent utiliser pour inviter l'utilisateur à enregistrer une méthode d'authentification répondant aux exigences de leurs applications.
  • Ajout de 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 assistance supplémentaire pour les clés auth-per-use dans la classe BiometricPrompt.

Android 10

  • Présentation 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 reconnaissance faciale pour BiometricPrompt

Android 9

  • Inclut l'intégration d'empreintes digitales uniquement pour BiometricPrompt.
  • La classe FingerprintManager est obsolète. Si vos applications groupées et système utilisent cette classe, mettez-les à jour pour qu'elles utilisent plutôt BiometricPrompt et BiometricManager.
  • Mise à jour des tests du vérificateur CTS FingerprintManager pour tester BiometricPrompt à l'aide de BiometricPromptBoundKeysTest.

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 doté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 :

  1. Modifiez BiometricEnrollActivity pour présenter votre parcours d'inscription. Notez que vos données biométriques ne peuvent être présentées que si elles répondent au niveau de sécurité requis. Si votre appareil est compatible avec plusieurs d'entre elles, cette action doit présenter une liste parmi laquelle l'utilisateur peut choisir.
Architecture BiometricPrompt
Figure 1. Architecture BiometricPrompt

Consignes d'implémentation HAL

Suivez ces consignes concernant le HAL biométrique 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 leurs dérivés (tels que les modèles) ne sont jamais accessibles en dehors de l'environnement isolé sécurisé (comme le TEE ou l'élément sécurisé). Toutes les données stockées doivent être chiffrées avec une clé spécifique à l'appareil, connue uniquement de l'environnement d'exécution sécurisé (TEE). Si le matériel le permet, limitez l'accès au matériel à l'environnement isolé sécurisé et protégez-le avec une règle SELinux. Rendez le canal de communication (par exemple, SPI, I2C) accessible uniquement à 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 l'environnement isolé et sécurisé pour éviter les fuites de données et autres attaques. Cette exigence ne s'applique qu'aux données biométriques de classe 3 (anciennement "forte") 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 la norme AES (Advanced Encryption Standard), signez au minimum un modèle avec le chemin d'accès absolu au système de fichiers, le groupe et l'ID biométrique de sorte que les fichiers de modèle soient inutilisables 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 à partir d'un autre appareil.
  • Si vous devez stocker des données en dehors du TEE, utilisez le chemin du système de fichiers fourni par setActiveUser() HIDL method ou fournissez un autre moyen d'effacer toutes les données de modèle utilisateur lorsque l'utilisateur est supprimé. Cela permet d'éviter toute fuite de données utilisateur. Les appareils qui n'utilisent pas ce chemin d'accès doivent effectuer un nettoyage une fois l'utilisateur supprimé. 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 se trouvent pas dans le TEE. Si cela n'est pas possible en raison des exigences de stockage de l'environnement isolé sécurisé, ajoutez des hooks pour vous assurer que les données sont supprimées lorsque l'utilisateur est supprimé ou que l'appareil est effacé. Voir LockSettingsService.removeBiometricsForUser()

Personnalisation

Si votre appareil prend en charge plusieurs données biométriques, l'utilisateur doit pouvoir en spécifier une par défaut dans les paramètres. Votre implémentation BiometricPrompt doit privilégier la biométrie de classe 3 (anciennement "forte") comme valeur par défaut, sauf si l'utilisateur la remplace explicitement. Dans ce cas, un message d'avertissement doit 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. Si c'est le cas, assurez-vous que toutes les nouvelles chaînes sont traduites pour toutes les langues prises en charge par l'appareil. Assurez-vous également que les propriétés suivantes sont conservées :


Méthode

Objectif de la chaîne

Types d'authentification à inclure

Si la biométrie et le verrouillage de l'écran sont tous deux possibles

getButtonLabel()

Libellé d'un bouton qui déclenche BiometricPrompt

Types Enrolled uniquement (si possible) qui répondent aux exigences de l'authentificateur

Utilisez la chaîne biometric-only (par exemple, "Utiliser l'empreinte digitale").

getPromptMessage()

Message affiché sur BiometricPrompt lors de l'authentification

Types Enrolled 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 pris en charge par l'appareil (même s'ils ne sont pas enregistrés) 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, "Utiliser l'empreinte digitale ou le verrouillage de l'écran")

Prenons l'exemple d'un appareil doté d'un capteur facial de classe 2 avec un visage enregistré, un code enregistré et un capteur d'empreinte digitale de classe 3 sans empreinte digitale enregistrée. Le tableau suivant fournit des exemples de chaînes pour chaque combinaison d'authentificateurs autorisés et de méthode BiometricManager.Strings appelée :


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)

"Utilisez votre empreinte digitale pour continuer"
(Seule l'empreinte digitale satisfait 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 la reconnaissance faciale"
(La reconnaissance faciale et l'empreinte digitale répondent aux exigences, mais seule la reconnaissance faciale est enregistrée)

"Utilisez 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"
(Tout verrouillage de l'écran répond aux exigences ; le code est enregistré)

"Saisissez votre code pour continuer"
(N'importe quel verrouillage de l'écran répond aux exigences ; le code est enregistré)

"Utiliser le verrouillage de l'écran"
(N'importe quel verrouillage de l'écran répond aux exigences)

Déverrouillage 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 écran de verrouillage 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)

Identifiant biométrique de classe 2 OU verrouillage de l'écran

"Utiliser la reconnaissance faciale"
(La reconnaissance faciale, l'empreinte digitale et tout verrouillage de l'écran satisfont aux exigences. La reconnaissance faciale est enregistrée et remplace le code)

"Utilisez votre visage ou votre code pour continuer"
(La reconnaissance faciale, l'empreinte digitale et toute méthode de 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 (tests de cohérence et tests approfondis reposent sur le vérificateur)
  • Section "CtsVerifier Biometric Test" : Doit être réussie individuellement avec chaque modalité prise en charge par l'appareil

De plus, si votre appareil est compatible avec une méthode biométrique disposant d'une interface HIDL AOSP ([email protected], [email protected], face1.0), il doit réussir le test VTS correspondant (fingerprint, face).