Biometrie

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 und BiometricManager verwenden.
  • Die FingerprintManager CTS Verifier-Tests wurden aktualisiert, um BiometricPrompt mit BiometricPromptBoundKeysTest 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:

  1. Ä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.
BiometricPrompt-Architektur
Abbildung 1. BiometricPrompt-Architektur

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.