22

Google が提供する Android 指紋サンプルを確認しました。

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

私はセキュリティ標準に慣れていないため、次のことを理解できません。

  1. Keystore、key、CryptoObject などを使用する必要があるのはなぜですか? 単純に、指紋マネージャーにユーザーの認証を依頼すると、単純にステータス (成功/失敗) を返すことができます。
  2. 認証ごとに毎回新しいキーを生成する必要がありますか?
4

3 に答える 3

16

Keystore、key、CryptoObject などを使用する必要があるのはなぜですか? 単純に、指紋マネージャーにユーザーの認証を依頼すると、単純にステータス (成功/失敗) を返すことができます。

その必要はありません。CryptoObject値を渡すだけで、なしで指紋認証を行うことができnullます。その後、キーストアやその他のものをいじる必要はありません。

指紋認証コンテキストでの の唯一の用途は、CryptoObject前回ユーザーが指紋で認証されてから新しい指紋が追加されたかどうかを知ることです。

認証ごとに毎回新しいキーを生成する必要がありますか?

新しい指紋が追加された場合は、ユーザーの身元を確認するためにパスワードを要求し、新しい鍵を生成する必要があります (新しい指紋が追加されたときに鍵が無効になったため)。

繰り返しますが、これらをいじる必要はありません。null CryptoObject

視点の問題

指紋認証には CryptoObject は必要ありません。実際には、まったく逆です。

Android で暗号化操作を行う場合、 CipherSignatureMac (およびその他)のいずれかのオブジェクトを使用できます。これら 3 つのうちの 1 つを使用して、 CryptoObjectを構築できます。

これらのオブジェクトのキーを生成するとき、ユーザーが以前に指紋を介して認証された場合にのみsetUserAuthenticationRequired(boolean)有効なキーを取得することを管理するという名前のメソッドがあります。

したがって、たとえばクライアント/サーバー通信の場合、クライアントがキーを使用できる場合、それは彼が指紋を介して認証され、彼の身元がわかっていることを意味します。

そうは言っても、私のライブラリをチェックすると、全体がずっと簡単になります:

https://github.com/OmarAflak/Fingerprint

于 2017-07-11T14:29:01.767 に答える
1

あなたの質問の1つに対する答え、

エイリアスを使用してキーを作成し、エイリアスを使用してキーを取得します。alias はキーのキーです。アプリ サンドボックス用に保存されたエイリアスのリストがあります。同じエイリアスでキーを生成しようとする後続の試行でキーを取得します。

于 2016-10-20T12:16:22.843 に答える