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 (1)
  1. Diese Funktion wurde in Android 11 hinzugefügt, siehe hier für Details

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 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 .
So integrieren Sie Ihren biometrischen Stapel mit den BiometricPrompt und BiometricManager APIs :

  1. Stellen Sie sicher, dass Ihr <Modality>Service über die IBiometricService#registerAuthenticator-Methode ordnungsgemäß bei BiometricService registriert ist und die IBiometricAuthenticator -Schnittstelle implementiert. Gemeinsame Modalitäten (Fingerabdruck, Gesicht) gehen von einer gemeinsamen Oberklasse aus. Wenn Sie eine nicht unterstützte Modalität integrieren müssen, befolgen Sie das Fingerabdruck- / Gesichtsbeispiel und die CDD-Richtlinien für Biometrie.
  2. Stellen Sie sicher, dass Ihre neue Modalität in SystemUI ordnungsgemäß unterstützt wird. Es gibt standardmäßige BiometricPrompt -Benutzeroberflächen für Fingerabdrücke und Gesichter. Dies sollte alle Layout- oder Designänderungen beinhalten, die für Ihr Gerät erforderlich sind. Dh entsprechende Layout-Änderungen für einen In-Display-Fingerabdrucksensor.

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) . )

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.