Biométrie

La biométrie offre un moyen plus pratique, mais potentiellement moins sûr, de confirmer votre identité avec un appareil. Dans le cadre du modèle d'authentification à plusieurs niveaux, l'authentification principale (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 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é. Le CDD Android définit trois classes de force biométrique : la classe 3 (anciennement forte), la classe 2 (anciennement faible) et la classe 1 (anciennement pratique). 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 à l'écran de verrouillage, 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.

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
COMMODITÉ_BIOMÉTRIQUE
(Classe 1)
Oui Non Non Non
DEVICE_CREDENTIAL Oui Oui Oui Oui (1)
  1. Cette fonctionnalité a été ajoutée dans Android 11, voir ceci pour plus de détails

Le cadre Android inclut la prise en charge de l'authentification biométrique du visage et des empreintes digitales. 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 plus de détails sur les spécifications de sécurité biométrique, voir Mesurer la sécurité de déverrouillage biométrique .

La source

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 dans 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 des empreintes digitales et du visage pour BiometricPrompt

Androïde 9

  • Inclut l'intégration des empreintes digitales uniquement pour BiometricPrompt .
  • Obsolète la classe FingerprintManager. Si vos applications groupées et système utilisent cette classe, mettez-les à jour pour utiliser à la place BiometricPrompt et BiometricManager .
  • Mise à jour des tests du vérificateur FingerprintManager CTS pour tester BiometricPrompt à l'aide de BiometricPromptBoundKeysTest .

Mise en œuvre

Pour vous assurer 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 .
Pour intégrer votre stack biométrique avec les BiometricManager APIs BiometricPrompt et BiometricManager :

  1. Assurez-vous que votre <Modality>Service est correctement enregistré auprès de BiometricService via la méthode IBiometricService#registerAuthenticator et implémente l'interface IBiometricAuthenticator . Les modalités communes (empreintes digitales, visage) s'étendent à partir d'une superclasse commune. Si vous avez besoin d'intégrer une modalité non prise en charge, suivez l'exemple d' empreinte digitale / faciale et les directives CDD pour la biométrie.
  2. Assurez-vous que votre nouvelle modalité est correctement prise en charge dans SystemUI . Il existe des interfaces utilisateur BiometricPrompt par défaut pour les empreintes digitales et le visage. Cela devrait inclure toutes les modifications de mise en page ou de thème requises pour votre appareil. C'est-à-dire les changements de disposition correspondants pour un capteur d'empreintes digitales à l'écran.

Pour intégrer votre pile biométrique à l'API ACTION_BIOMETRIC_ENROLL :

  1. Modifiez le 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 dans laquelle l'utilisateur peut choisir.
Architecture BiometricPrompt
Figure 1. Architecture BiometricPrompt

Directives de mise en œuvre de HAL

Suivez ces directives HAL biométriques pour vous assurer 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 dérivées (telles 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 matériel à l'environnement isolé sécurisé et protégez-le avec une politique SELinux. Rendez 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 périphérique.
  • L'acquisition, l'inscription et la reconnaissance biométriques doivent avoir lieu à l'intérieur de l'environnement isolé sécurisé pour empêcher les violations de données et autres attaques. Cette exigence s'applique uniquement à la biométrie de classe 3 (anciennement forte) et de classe 2 (anciennement faible) .
  • Pour vous protéger contre les attaques par répétition, 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 de modèle soient inopérants 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 avez besoin de 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 chiffrés - en particulier 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 crochets pour garantir la suppression des données lorsque l'utilisateur est supprimé ou l'appareil est essuyé. 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 préférer la biométrie de classe 3 (anciennement forte) par défaut, sauf si l'utilisateur la remplace explicitement, puis un message d'avertissement doit être affiché expliquant les risques associés à la biométrie (par exemple, une photo de vous peut déverrouiller votre appareil )

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 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 qui a un AOSP HIDL ( empreinte digitale@2.1 , empreinte digitale@2.2 , face1.0 ), il doit réussir son test VTS correspondant ( empreinte digitale , visage )