Biometrische Daten bieten eine bequemere, aber möglicherweise weniger sichere Möglichkeit, Ihre Identität mit einem Gerät zu bestätigen. Unter dem abgestuften Authentifizierungsmodell bietet die primäre Authentifizierung (d. h. wissensbasierte Modalitäten wie PIN, Muster und Passwort) die höchste Sicherheitsstufe. Biometrische Daten befinden sich auf der sekundären Ebene der Authentifizierung und bieten ein Gleichgewicht zwischen Komfort und Sicherheit. Die Android CDD definiert drei Klassen der biometrischen Stärke: Klasse 3 (früher stark), Klasse 2 (früher schwach) und Klasse 1 (früher Convenience). Jede Klasse hat eine Reihe von Voraussetzungen, Privilegien und Einschränkungen – weitere Einzelheiten finden Sie in der CDD oben. Alle drei Klassen dürfen in den Sperrbildschirm integriert werden, aber nur starke und schwache Authentifikatoren dürfen in die android.hardware.biometrics-APIs integriert werden. Diese Tabelle beschreibt jeden Authentifikator und die von ihm unterstützten Funktionen.
Authentifikator | Sperrbildschirm | BiometricPrompt-Integration | Keystore (zeitbasierter Schlüssel) | Keystore (operationsbasierter Schlüssel) |
---|---|---|---|---|
BIOMETRIC_STRONG (Klasse 3) | Ja | Ja | Ja | Ja |
BIOMETRIE_SCHWACH (Klasse 2) | Ja | Ja | Nein | Nein |
BIOMETRISCHER_KOMFORT (Klasse 1) | Ja | Nein | Nein | Nein |
DEVICE_CREDENTIAL | Ja | Ja | Ja | Ja |
Das Android-Framework umfasst Unterstützung für die biometrische Authentifizierung per Gesicht und Fingerabdruck. Android kann angepasst werden, um andere biometrische Modalitäten (z. B. Iris) zu unterstützen. Die biometrische Integration wird jedoch von der biometrischen Sicherheit und nicht von der Modalität abhängen. Weitere Einzelheiten zu biometrischen Sicherheitsspezifikationen finden Sie unter Messen der biometrischen Entsperrsicherheit .
Quelle
Android 12
- Führt die BiometricManager.Strings- API ein, die lokalisierte Zeichenfolgen für Apps bereitstellt, die BiometricPrompt zur Authentifizierung verwenden. Diese Zeichenfolgen sollen gerätebewusst sein und genauer angeben, welche Authentifizierungstypen verwendet werden können.
- Enthält Unterstützung für den Fingerabdrucksensor unter dem Display (UDFPS).
Android 11
- Führt die BiometricManager.Authenticators-Schnittstelle ein, die Konstanten bereitstellt, mit denen Entwickler die von ihren Apps akzeptierten Authentifizierungstypen angeben können.
- Fügt dieAbsichtsaktion
ACTION_BIOMETRIC_ENROLL
, mit der Entwickler den Benutzer anweisen können, eine Authentifizierungsmethode zu registrieren, die den Anforderungen ihrer Apps entspricht. - Fügt die Methode
AuthenticationResult #getAuthenticationType ()
, mit der Entwickler überprüfen können, ob sich der Benutzer mit biometrischen Anmeldeinformationen oder Geräte-Anmeldeinformationen authentifiziert hat. - Bietet zusätzliche Unterstützung für Authentifizierungsschlüssel innerhalb der BiometricPrompt-Klasse.
Android 10
- Führt die
BiometricManager
-Klasse ein, mit der Entwickler die Verfügbarkeit der biometrischen Authentifizierung abfragen können. - Beinhaltet die Integration von Fingerabdruck- und Gesichtsauthentifizierung für
BiometricPrompt
Android 9
- Beinhaltet die Integration von Fingerabdrücken nur für
BiometricPrompt
. - Verwirft die FingerprintManager-Klasse. Wenn Ihre gebündelten und System-Apps diese Klasse verwenden, aktualisieren Sie sie so, dass sie stattdessen
BiometricPrompt
undBiometricManager
verwenden. - Die
FingerprintManager
CTS Verifier-Tests wurden aktualisiert, umBiometricPrompt
mitBiometricPromptBoundKeysTest
zu testen.
Implementierung
Um sicherzustellen, dass Benutzer und Entwickler ein nahtloses biometrisches Erlebnis haben, integrieren Sie Ihren biometrischen Stapel mit den APIs BiometricPrompt
, BiometricManager
und ACTION_BIOMETRIC_ENROLL
. Geräte mit biometrischen Sensoren müssen diese Festigkeitsanforderungen erfüllen . Darüber hinaus müssen alle Implementierungen das CTS-Modul CtsBiometricsTestCases bestehen.
So integrieren Sie Ihren biometrischen Stack mit der API ACTION_BIOMETRIC_ENROLL:
- Ändern Sie die BiometricEnrollActivity , um Ihren Registrierungsfluss darzustellen. Beachten Sie, dass Ihre Biometrie nur angezeigt werden kann, wenn sie die angeforderte Stärke erfüllt. Wenn Ihr Gerät mehr als eine unterstützt, sollte diese Aktion eine Liste anzeigen, aus der der Benutzer auswählen kann.

HAL-Implementierungsrichtlinien
Befolgen Sie diese biometrischen HAL-Richtlinien, um sicherzustellen, dass biometrische Daten nicht durchsickern und entfernt werden, wenn ein Benutzer von einem Gerät entfernt wird:
- Stellen Sie sicher, dass biometrische Rohdaten oder abgeleitete Daten (z. B. Vorlagen) niemals von außerhalb der sicheren, isolierten Umgebung (z. B. TEE oder Secure Element) zugänglich sind. Alle gespeicherten Daten müssen mit einem gerätespezifischen Schlüssel verschlüsselt werden, der nur dem TEE (Trusted Execution Environment) bekannt ist. Wenn die Hardware dies unterstützt, beschränken Sie den Hardwarezugriff auf die sichere isolierte Umgebung und schützen Sie ihn mit einer SELinux-Richtlinie. Machen Sie den Kommunikationskanal (z. B. SPI, I2C) nur für die sichere, isolierte Umgebung mit einer expliziten SELinux-Richtlinie für alle Gerätedateien zugänglich.
- Erfassung, Registrierung und Erkennung biometrischer Daten müssen in einer sicheren, isolierten Umgebung erfolgen, um Datenschutzverletzungen und andere Angriffe zu verhindern. Diese Anforderung gilt nur für biometrische Klasse 3 (früher stark) und Klasse 2 (früher schwach) .
- Signieren Sie zum Schutz vor Replay-Angriffen biometrische Vorlagen mit einem privaten, gerätespezifischen Schlüssel. Signieren Sie für Advanced Encryption Standard (AES) mindestens eine Vorlage mit dem absoluten Dateisystempfad, der Gruppe und der biometrischen ID, sodass Vorlagendateien auf einem anderen Gerät oder für andere Personen als den Benutzer, der sie auf demselben Gerät registriert hat, nicht funktionsfähig sind . Verhindern Sie beispielsweise das Kopieren biometrischer Daten eines anderen Benutzers auf demselben Gerät oder von einem anderen Gerät.
- Wenn Sie Daten außerhalb des TEE speichern müssen, verwenden Sie den Dateisystempfad, der von der
setActiveUser() HIDL method
oder stellen Sie eine andere Möglichkeit bereit, um alle Benutzervorlagendaten zu löschen, wenn der Benutzer entfernt wird. Der Grund ist, das Durchsickern von Benutzerdaten zu verhindern. Geräte, die diesen Pfad nicht verwenden, müssen bereinigt werden, nachdem der Benutzer entfernt wurde. Laut CDD müssen biometrische Daten und abgeleitete Dateien verschlüsselt gespeichert werden – insbesondere, wenn sie nicht in TEE enthalten sind wird gewischt. Siehe LockSettingsService.removeBiometricsForUser()
Anpassung
Wenn Ihr Gerät mehrere biometrische Daten unterstützt, sollte der Benutzer in der Lage sein, einen Standard in den Einstellungen festzulegen. Ihre BiometricPrompt
Implementierung sollte die Biometrie der Klasse 3 (früher stark) als Standard bevorzugen, es sei denn, der Benutzer setzt sie explizit außer Kraft, dann muss eine Warnmeldung angezeigt werden, die die mit der Biometrie verbundenen Risiken erläutert (z. B. Ein Foto von Ihnen kann Ihr Gerät entsperren) . )
Gerätespezifische Authentifizierungszeichenfolgen
Ab Android 12 werden kontextbezogene Authentifizierungszeichenfolgen Entwicklern über die BiometricManager.Strings- API zur Verfügung gestellt. Sie können die von dieser API zurückgegebenen Ressourcenwerte anpassen, um gerätespezifische Zeichenfolgen zu implementieren. Stellen Sie in diesem Fall sicher, dass alle neuen Zeichenfolgen für alle Gebietsschemata übersetzt werden, die das Gerät unterstützt. Stellen Sie außerdem sicher, dass die folgenden Eigenschaften erhalten bleiben:
Methode | String-Zweck | Authentifizierungstyp(en), die eingeschlossen werden sollen | Wenn sowohl Biometrie(n) als auch Bildschirmsperre möglich sind |
---|---|---|---|
getButtonLabel() | Bezeichnung für eine Schaltfläche, die BiometricPrompt auslöst | Nur registrierte Typen (wenn möglich), die die Authentifizierungsanforderungen erfüllen | Nur biometrische Zeichenkette verwenden (z. B. „Fingerabdruck verwenden“) |
getPromptMessage() | Nachricht, die während der Authentifizierung auf BiometricPrompt angezeigt wird | Nur registrierte Typen (wenn möglich), die die Authentifizierungsanforderungen erfüllen | Verwenden Sie eine Kombination aus Biometrie und Bildschirmsperre (z. B. „Verwenden Sie Ihren Fingerabdruck oder Ihre PIN, um fortzufahren“) |
getSettingName() | Name einer Einstellung, die BiometricPrompt für die Authentifizierung aktiviert | Alle Typen, die vom Gerät unterstützt werden (auch wenn es nicht registriert ist), die die Authentifizierungsanforderungen erfüllen | Kombinierte Zeichenfolge für biometrische Daten und Bildschirmsperre verwenden (z. B. „Fingerabdruck oder Bildschirmsperre verwenden“) |
Betrachten Sie beispielsweise ein Gerät mit einem Klasse-2-Gesichtssensor mit einem registrierten Gesicht , einer registrierten PIN und einem Klasse-3-Fingerabdrucksensor ohne registrierte Fingerabdrücke . Die folgende Tabelle enthält Beispielzeichenfolgen für jede Kombination aus zulässigen Authentifikatoren und aufgerufener BiometricManager.Strings -Methode:
Zugelassene Authentifikatoren | getButtonLabel() | getPromptMessage() | getSettingName() |
---|---|---|---|
Biometrische Klasse 3 ( BIOMETRIC_STRONG ) | "Fingerabdruck verwenden" (Nur der Fingerabdruck erfüllt die Authentifizierungsanforderungen) | "Verwenden Sie Ihren Fingerabdruck, um fortzufahren" (Nur der Fingerabdruck erfüllt die Authentifizierungsanforderungen) | "Fingerabdruck verwenden" (Nur der Fingerabdruck erfüllt die Authentifizierungsanforderungen) |
Biometrische Klasse 2 ( BIOMETRIC_WEAK ) | „Gesicht benutzen“ (Gesicht und Fingerabdruck erfüllen die Anforderungen; nur Gesicht wird registriert) | "Benutze dein Gesicht, um fortzufahren" (Gesicht und Fingerabdruck erfüllen die Anforderungen; nur Gesicht wird registriert) | „Gesicht oder Fingerabdruck verwenden“ (Gesicht und Fingerabdruck erfüllen Anforderungen; Gerät unterstützt beides) |
Bildschirmsperre ( DEVICE_CREDENTIAL ) | „PIN verwenden“ (Jede Bildschirmsperre erfüllt die Anforderungen; PIN ist registriert) | "Geben Sie Ihre PIN ein, um fortzufahren" (Jede Bildschirmsperre erfüllt die Anforderungen; PIN ist registriert) | "Bildschirmsperre verwenden" (Jede Bildschirmsperre erfüllt die Anforderungen) |
Biometrische OP -Bildschirmsperre der Klasse 3 | „PIN verwenden“ (Fingerabdruck und alle Bildschirmsperren erfüllen die Anforderungen; nur die PIN wird registriert) | "Geben Sie Ihre PIN ein, um fortzufahren" (Fingerabdruck und alle Bildschirmsperren erfüllen die Anforderungen; nur die PIN wird registriert) | "Fingerabdruck oder Bildschirmsperre verwenden" (Fingerabdruck und alle Bildschirmsperren erfüllen die Anforderungen) |
Biometrische OP -Bildschirmsperre der Klasse 2 | „Gesicht benutzen“ (Gesicht, Fingerabdruck und alle Bildschirmsperren erfüllen die Anforderungen; Gesicht ist registriert und ersetzt PIN) | "Verwenden Sie Ihr Gesicht oder Ihre PIN, um fortzufahren" (Gesicht, Fingerabdruck und alle Bildschirmsperren erfüllen die Anforderungen; Gesicht und PIN sind registriert) | "Biometrie oder Bildschirmsperre verwenden" (Gesicht, Fingerabdruck und alle Bildschirmsperren erfüllen die Anforderungen) |
Validierung
Ihre biometrische Implementierung muss die folgenden Tests bestehen:
- CTS BiometricManager
- CTS BiometricPrompt (Zuverlässigkeit, eingehende Tests hängen vom Verifizierer ab)
- Biometrischer CtsVerifier- Testabschnitt : Muss mit jeder Modalität, die das Gerät unterstützt, einzeln bestanden werden
Wenn Ihr Gerät darüber hinaus eine Biometrie mit AOSP HIDL ( Fingerabdruck@2.1 , Fingerabdruck@2.2 , Gesicht1.0 ) unterstützt, muss es den entsprechenden VTS-Test ( Fingerabdruck , Gesicht ) bestehen.