Zum Schutz Ihres Authentifizierungssystems in Android sollten Sie sich von einem passwortbasiertes Modell, insbesondere bei vertraulichen Konten wie dem Bank und E-Mail-Konten. Einige Apps, die Ihre Nutzer installieren, verfügen möglicherweise nicht über die und versuchen Sie, Ihre Nutzer durch Phishing zu bringen.
Gehen Sie außerdem nicht davon aus, dass nur autorisierte Nutzer das Gerät verwenden. Telefondiebstahl ist ein häufiges Problem und Angreifer zielen auf entsperrte Geräte ab, um direkt davon zu profitieren. von Nutzerdaten oder Finanz-Apps. Wir empfehlen, für alle sensiblen Apps eine angemessene Zeitüberschreitung bei der Authentifizierung (15 Minuten?) mit biometrischer Überprüfung und vor vertraulichen Aktionen wie Geldbeträgen eine zusätzliche Authentifizierung erfordern Übertragungen.
Dialogfeld für biometrische Authentifizierung
Die Biometrics-Bibliothek bietet eine Reihe von Funktionen, um einen Prompt anzuzeigen, der die biometrische Authentifizierung wie Gesichtserkennung oder Fingerabdruckerkennung. Biometrische Aufforderungen können jedoch so konfiguriert werden, dass sie auf das LSKF zurückgreifen. bekannte Risiken beim Surfen auf der Schulter sollten. Für sensible Apps empfehlen wir ohne biometrischen Fallback auf PINs zu arbeiten, und nach Nutzer können warten, sich mit einem Passwort neu anmelden oder Konten zurücksetzen. Konto wurde zurückgesetzt Faktoren, die auf dem Gerät nicht leicht zugänglich sind (Best Practice) unten).
So trägt dies zum Schutz vor Betrug und Smartphone-Diebstahl bei
Ein bestimmter Anwendungsfall, der bei der Betrugsprävention hilfreich sein kann, ist, biometrische Authentifizierung in Ihrer App vor einer Transaktion. Wenn Ihre Nutzer eine Finanztransaktion tätigen möchten, wird das biometrische Dialogfeld angezeigt, Prüfen Sie, ob es sich tatsächlich um den vorgesehenen Nutzer handelt, der die Transaktion durchführt. Dieses Best Practice verhindern, dass ein Angreifer ein Gerät stiehlt, ob der Angreifer den LSKF kennt oder nicht, da er prüfen muss, ob er des Geräteeigentümers.
Für zusätzliche Sicherheitsebenen empfehlen wir App-Entwicklern, Klasse 3 anzufordern
Biometrische Authentifizierung und CryptoObject
für Banking und
Finanztransaktionen.
Implementierung
- Achte darauf, die androidx.biometric-Bibliothek anzugeben.
- Dialogfeld für biometrische Anmeldung in die Aktivität oder das Fragment einschließen, die bzw. das enthält die Logik für die Nutzerauthentifizierung.
Kotlin
private var executor: Executor? = null private var biometricPrompt: BiometricPrompt? = null private var promptInfo: BiometricPrompt.PromptInfo? = null fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) executor = ContextCompat.getMainExecutor(this) biometricPrompt = BiometricPrompt(this@MainActivity, executor, object : AuthenticationCallback() { fun onAuthenticationError( errorCode: Int, @NonNull errString: CharSequence ) { super.onAuthenticationError(errorCode, errString) Toast.makeText( getApplicationContext(), "Authentication error: $errString", Toast.LENGTH_SHORT ) .show() } fun onAuthenticationSucceeded( @NonNull result: BiometricPrompt.AuthenticationResult? ) { super.onAuthenticationSucceeded(result) Toast.makeText( getApplicationContext(), "Authentication succeeded!", Toast.LENGTH_SHORT ).show() } fun onAuthenticationFailed() { super.onAuthenticationFailed() Toast.makeText( getApplicationContext(), "Authentication failed", Toast.LENGTH_SHORT ) .show() } }) promptInfo = Builder() .setTitle("Biometric login for my app") .setSubtitle("Log in using your biometric credential") .setNegativeButtonText("Use account password") .build() // Prompt appears when user clicks "Log in". // Consider integrating with the keystore to unlock cryptographic operations, // if needed by your app. val biometricLoginButton: Button = findViewById(R.id.biometric_login) biometricLoginButton.setOnClickListener { view -> biometricPrompt.authenticate( promptInfo ) } }
Java
private Executor executor; private BiometricPrompt biometricPrompt; private BiometricPrompt.PromptInfo promptInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); executor = ContextCompat.getMainExecutor(this); biometricPrompt = new BiometricPrompt(MainActivity.this, executor, new BiometricPrompt.AuthenticationCallback() { @Override public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) { super.onAuthenticationError(errorCode, errString); Toast.makeText(getApplicationContext(), "Authentication error: " + errString, Toast.LENGTH_SHORT) .show(); } @Override public void onAuthenticationSucceeded( @NonNull BiometricPrompt.AuthenticationResult result) { super.onAuthenticationSucceeded(result); Toast.makeText(getApplicationContext(), "Authentication succeeded!", Toast.LENGTH_SHORT).show(); } @Override public void onAuthenticationFailed() { super.onAuthenticationFailed(); Toast.makeText(getApplicationContext(), "Authentication failed", Toast.LENGTH_SHORT) .show(); } }); promptInfo = new BiometricPrompt.PromptInfo.Builder() .setTitle("Biometric login for my app") .setSubtitle("Log in using your biometric credential") .setNegativeButtonText("Use account password") .build(); // Prompt appears when the user clicks "Log in". // Consider integrating with the keystore to unlock cryptographic operations, // if needed by your app. Button biometricLoginButton = findViewById(R.id.biometric_login); biometricLoginButton.setOnClickListener(view -> { biometricPrompt.authenticate(promptInfo); }); }
Best Practices
Wir empfehlen Ihnen, mit dem Codelab zu beginnen, um mehr über biometrische Verfahren zu erfahren.
Je nach Anwendungsfall können Sie den Dialog mit oder ohne eine explizite Nutzeraktion. Um Betrug zu vermeiden, sollten Sie das biometrische Verfahren Dialogfeld mit expliziter Nutzeraktion für jede Transaktion. Uns ist bewusst, dass Authentifizierung hinzufügen, kann zu Reibung im UX-Design führen, aber aufgrund der Beschaffenheit des die bei einer Banktransaktion verarbeiteten Informationen und die biometrischen ist die Authentifizierung einfacher als andere Authentifizierungsmethoden, notwendig, um diese Navigationsebene hinzuzufügen.
Weitere Informationen zur biometrischen Authentifizierung
Passkeys
Passkeys sind eine sichere und einfache Alternative zu Passwörtern. Passkeys verwenden Public-Key-Kryptografie, mit der sich Ihre Nutzer in Apps und Websites anmelden können die Displaysperre ihres Geräts, z. B. einen Fingerabdruck oder ein Gesicht, zu verwenden Anerkennung. So müssen sie sich keine Passwörter mehr merken und und bietet eine deutlich verbesserte Sicherheit.
Passkeys erfüllen die Anforderungen für die Multi-Faktor-Authentifizierung in nur einem Schritt ein Passwort und OTP-Codes ersetzen, um einen zuverlässigen Schutz Phishing-Angriffe zu verhindern und die Nutzer mühsam durch SMS- oder App-basierte Passwörter. Da Passkeys standardisiert sind, ermöglicht eine einzige Implementierung eine ohne Passwort für alle Nutzer Geräten, Browsern und Betriebssysteme.
Auf Android-Geräten werden Passkeys über den Credential Manager Jetpack unterstützt die die wichtigsten Authentifizierungsmethoden vereinheitlicht, darunter Passkeys, Passwörter und die Anmeldung im zusammengeschlossenen Netzwerk (z. B. „Über Google anmelden“).
So trägt dies zur Eindämmung von Betrug bei
Passkeys schützen Sie vor Phishing-Angriffen, da sie nur auf Ihren registrierten Apps und Websites.
Die Hauptkomponente eines Passkeys ist ein kryptografischer privater Schlüssel. In der Regel der private Schlüssel ausschließlich auf Ihren Geräten wie Laptops oder Mobiltelefonen gespeichert ist, und wird von Anmeldedaten-Anbietern (auch bekannt als Passwort z. B. den Google Passwortmanager. Nur der entsprechende öffentliche Schlüssel wird werden vom Onlinedienst gespeichert, wenn ein Passkey erstellt wird. Während der Anmeldung verwendet den privaten Schlüssel, um eine Identitätsbestätigung über den öffentlichen Schlüssel zu signieren. Dies kann nur von einem Ihrer Geräte stammen. Damit dies geschieht, müssen Sie Gerät oder Anmeldedatenspeicher entsperren, um nicht autorisierte Anmeldungen zu verhindern (z. B. von einem gestohlenen Smartphone).
Um unbefugten Zugriff im Falle eines gestohlenen, entsperrten Geräts zu verhindern, Passkeys müssen mit einem sinnvollen Zeitlimit für die Authentifizierung gekoppelt sein. Eine Angreifer, die ein Gerät stehlen, sollten nicht in der Lage sein, eine Anwendung nur zu nutzen, da der vorherige Nutzer angemeldet war. Stattdessen sollten die Anmeldedaten in regelmäßigen Abständen (z. B. alle 15 Minuten) ablaufen. Nutzer sollten müssen ihre Identität durch erneutes Authentifizieren der Displaysperre bestätigen.
Wenn Ihr Smartphone gestohlen wird, schützen Sie sich mit Passkeys, denn Diebe können Ihr Smartphone nicht stehlen Passwörter, die auf anderen Geräten verwendet werden können – Passkeys sind gerätespezifisch. Wenn Sie Google Passwortmanager verwendet und dein Smartphone gestohlen wurde, kannst du dich in deinem Google Passwortmanager Über ein anderes Gerät (z. B. einen Computer) ein Konto erstellen und sich per Remote-Zugriff vom gestohlenes Smartphone. Dadurch wird der Google Passwortmanager auf dem gestohlenen Smartphone nicht verwendbar, einschließlich gespeicherter Passkeys.
Im schlimmsten Fall werden Passkeys nur verwendet, wenn das gestohlene Gerät wiederhergestellt wird. der Anmeldedatenanbieter erstellt und synchronisiert hat, werden mit dem neuen Gerät synchronisiert. den Passkey. Beispiel: Der Nutzer hat den Google Passwortmanager erstellen Sie den Passkey. Dann können sie auf einem neuen Gerät darauf zugreifen, indem sie Zugriff auf ihr Google-Konto mit der Displaysperre aus der vorherigen .
Weitere Informationen finden Sie in der Sicherheit von Passkeys im Google Passwortmanager.
Implementierung
Passkeys werden auf Geräten mit Android 9 (API-Level 28) oder höher unterstützt. Passwörter und die Funktion „Über Google anmelden“ werden ab Android 4.4 unterstützt. Bis So richten Sie Passkeys ein:
- Im Codelab für Anmeldedaten-Manager kannst du dich mit der Implementierung von Passkeys vertraut machen.
- Lies dir die Designrichtlinien für Passkeys durch. In diesem Dokument erfahren Sie, welche Abläufe für Ihren Anwendungsfall empfohlen werden.
- Lies dir die Informationen zum Credential Manager durch. Eine Anleitung dazu findest du in diesem Leitfaden.
- Plane die Implementierung des Anmeldedaten-Managers und der Passkeys für deine App. Planen Sie, die Unterstützung für Digital Asset Links hinzuzufügen.
In unserer Entwicklerdokumentation finden Sie weitere Informationen zum Erstellen, Registrieren und mit Passkeys authentifizieren.
Zurücksetzen des sicheren Kontos
Ein nicht autorisierter Angreifer, der Zugriff auf ein entsperrtes Gerät hat, beispielsweise wenn ein Smartphone versuchen, auf sensible Apps zuzugreifen, insbesondere auf Banking- oder Bargeld-Apps. Wenn die App eine biometrische Verifizierung implementiert, würde der Angreifer versuchen, die App zurückzusetzen das Konto, auf das Sie zugreifen möchten. Es ist wichtig, dass Sie sich nicht nur Informationen, die auf dem Gerät leicht zugänglich sind, z. B. ein OTP per E-Mail oder SMS Links zurücksetzen.
Im Folgenden finden Sie gängige Best Practices, die Sie beim Zurücksetzen Ihrer App anwenden können. Ablauf:
- Gesichtserkennung und OTP
- Sicherheitsfragen
- Wissensfaktor (z. B. Mädchenname der Mutter, Geburtsort oder Favorit Song)
- Bestätigung per Ausweis
SMS Retriever-API
Mit der SMS Retriever API können Sie SMS-basierte Nutzerbestätigungen in Ihrem
Android-App automatisch. Auf diese Weise müssen die Nutzenden nicht
Bestätigungscodes manuell eingeben. Außerdem fragt diese API den Nutzer nicht nach
für zusätzliche, potenziell gefährliche App-Berechtigungen wie RECEIVE_SMS
oder
READ_SMS
. SMS sollten jedoch nicht als einzige Nutzerbestätigung verwendet werden,
und vor unbefugtem lokalen Zugriff auf das Gerät zu schützen.
So trägt dies zur Eindämmung von Betrug bei
Einige Nutzer verwenden SMS-Codes als einzigen Authentifizierungsfaktor, der eine einen einfachen Einstiegspunkt für Betrugsversuche zu finden.
Mit der SMS Retriever API kann die App den SMS-Code direkt abrufen, ohne Nutzerinteraktionen und können einen Schutz vor Betrug bieten.
Implementierung
Die Implementierung der SMS Retriever API besteht aus zwei Teilen: Android und Server.
Android: (Anleitung)
- Ermitteln Sie die Telefonnummer des Nutzers.
- Starten Sie den SMS-Abrufclient.
- Senden Sie die Telefonnummer an Ihren Server.
- Bestätigungs-E-Mails erhalten.
- Senden Sie das OTP an Ihren Server.
Server: (Anleitung)
- Erstellen Sie eine Bestätigungsnachricht.
- Senden Sie die Bestätigungsnachricht per SMS.
- Prüfen Sie das OTP, wenn es zurückgegeben wird.
Best Practices
Sobald die App integriert ist und die Telefonnummer des Nutzers mit der SMS Retriever API versucht, das OTP abzurufen. Wenn sie erfolgreich ist, ist das eine starke signalisiert, dass die SMS automatisch auf dem Gerät empfangen wurde. Falls nicht, und der Nutzer das OTP manuell eingeben muss, dass der Nutzer möglicherweise in betrügerischer Absicht gerät.
SMS sollten nicht als einziger Mechanismus zur Nutzerbestätigung verwendet werden, da dadurch Platz bleibt vor lokalen Angriffen, z. B. wenn ein Angreifer ein entsperrtes Gerät raubt oder SIM Klonangriffen. Es wird empfohlen, nach Möglichkeit das biometrische Verfahren zu verwenden. An auf denen keine biometrischen Sensoren verfügbar sind, sich auf mindestens einen Faktor beziehen, der sich nicht ohne Weiteres vom aktuellen Gerät abrufen lässt.
Weitere Informationen
Weitere Informationen zu den Best Practices finden Sie in den folgenden Ressourcen:
- Unsere Android-Dokumentation zur Sicherheit
- Dokumentation zur Play Integrity API
- Änderungen bei Android 15
- Best Practices der Monzo Bank zum Schutz vor Betrugsanrufen