it-swarm.com.de

Warum wird ein Kryptoobjekt für die Authentifizierung per Android-Fingerabdruck benötigt?

Ich habe das von Google bereitgestellte Android-Fingerabdruckmuster durchgesehen.

https://github.com/googlesamples/Android-FingerprintDialog

Da mir Sicherheitsstandards neu sind, kann ich Folgendes nicht verstehen.

  1. Warum brauchen wir Keystore, Key, CryptoObject ... etc? Einfach Es könnte sein, dass Sie den Fingerabdruck-Manager bitten, den Benutzer zu authentifizieren, und er kann einfach den Status zurückgeben (erfolgreich/fehlgeschlagen).
  2. Muss ich bei jeder Authentifizierung einen neuen Schlüssel generieren?
13

Warum brauchen wir Keystore, Key, CryptoObject ... etc? Einfach Es könnte sein, dass Sie den Fingerabdruck-Manager bitten, den Benutzer zu authentifizieren, und er kann einfach den Status zurückgeben (erfolgreich/fehlgeschlagen).

Das musst du nicht. Sie können die Authentifizierung von Fingerabdrücken ohne einen CryptoObjectdurchführen. Übergeben Sie einfach einen nullname__-Wert. Dann müssen Sie sich nicht mit Keystore und anderen Dingen herumschlagen.

Die einzige Verwendung von CryptoObjectin einem Fingerabdruck-Authentifizierungskontext besteht darin, zu wissen, ob ein neuer Fingerabdruck hinzugefügt wurde, seit der Benutzer sich das letzte Mal über einen Fingerabdruck authentifiziert hat.

Muss ich bei jeder Authentifizierung einen neuen Schlüssel generieren?

Wenn ein neuer Fingerabdruck hinzugefügt wird , müssen Sie ein Kennwort eingeben, um die Identität des Benutzers zu überprüfen, und anschließend neue Schlüssel generieren (da diese ungültig wurden, als der neue Fingerabdruck hinzugefügt wurde).

Auch hier müssen Sie sich nicht damit anlegen, wenn Sie einen nullCryptoObjectübergeben.

Eine Frage der Sicht

Die Authentifizierung per Fingerabdruck erfordert kein CryptoObject, im Gegenteil.

Wenn Sie kryptografische Operationen unter Android ausführen, können Sie eines der folgenden Objekte verwenden: Verschlüsselung , Signatur , Mac (und andere). Mit einem dieser drei Befehle kann ein CryptoObject erstellt werden.

Wenn Sie Schlüssel für diese Objekte generieren, gibt es eine Methode namens setUserAuthenticationRequired(boolean), die es schafft, die Schlüsselgültigkeiten only abzurufen, wenn sich der Benutzer zuvor per Fingerabdruck authentifiziert hat.

Wenn der Client beispielsweise bei einer Client/Server-Kommunikation die Schlüssel verwenden kann, bedeutet dies, dass er sich über einen Fingerabdruck authentifiziert und seine Identität bekannt ist.

Trotzdem möchten Sie vielleicht in meiner Bibliothek nachsehen, was das Ganze viel einfacher macht:

https://github.com/OmarAflak/Fingerprint

12
Omar Aflak

Warum brauchen wir Keystore, Key, CryptoObject ... etc? Einfach Es könnte sein, dass Sie den Fingerabdruck-Manager bitten, den Benutzer zu authentifizieren, und er kann einfach den Status zurückgeben (erfolgreich/fehlgeschlagen).

Das habe ich mir auch gedacht, als ich zum ersten Mal über Fingerabdrücke für Android gelesen habe. Durch meine Recherchen kann ich das CryptoObject für Sie in einfachem Englisch zusammenfassen. Dies ist genau das, wonach Sie suchen, da technische Beschreibungen nicht zum Verständnis von Konzepten beitragen:

Das CryptoObject wird durch einen Schlüssel in Ihrem Android-Keystore erstellt, der von Natur aus als "sicher" gilt [1]. Wenn ein CryptoObject an den Fingerabdruck-Manager übergeben wird, verfügt der Manager über einen Anker, der bestätigt, dass die Fingerabdruck-Authentifizierungsergebnisse nicht manipuliert wurden. Dies ist theoretisch möglich [2].

Stellen Sie sich das so vor: Wenn Sie null übergeben, vertraut der Fingerabdruck-Manager blind den Ergebnissen eines Fingerabdruck-Übereinstimmungsergebnisses. Wenn Sie ein Crypto-Objekt übergeben, das durch einen Schlüssel erstellt wird, auf den nur Ihre Anwendung aufgrund des Keystores zugreifen kann, haben die zurückkommenden Ergebnisse wahrscheinlich dieses CryptoObject, das nur Ihre App erfolgreich identifizieren kann. Hier ist ein weiteres Zitat, das mehr gesunden Menschenverstand macht.

"Das CryptoObject macht den Prozess sicherer, denn wenn dieses Objekt nicht vom KeyStore gesichert wird, schlägt es immer fehl." [3]

Das Bild in [4] gibt Ihnen auch eine Idee.

[1] https://developer.Android.com/training/articles/keystore

[2] https://docs.Microsoft.com/en-us/xamarin/Android/platform/fingerprint-authentication/creating-a-cryptoobject

[3] https://medium.com/@manuelvicnt/Android-fingerprint-authentication-f8c7c76c50f8

[4] https://infinum.co/the-capsized-eight/Android-fingerprint-security

1
Bqin1

Die Antwort auf eine Ihrer Fragen,

Wir erstellen einen Schlüssel mit dem Alias ​​und rufen den Schlüssel mithilfe des Alias ​​ab. Alias ​​ist der Schlüssel des Schlüssels. Es wird eine Liste der für die App-Sandbox gespeicherten Aliasnamen angezeigt. Bei nachfolgenden Versuchen, den Schlüssel mit demselben Alias ​​zu generieren, wird der Schlüssel abgerufen.

1
Isanaka