MASTG-TEST-0327 イベントバウンド型生体認証用の API への参照 (References to APIs for Event-Bound Biometric Authentication)

概要

このテストでは、アプリがイベントバウンド型生体認証 (生体認証 (Biometric Authentication)) を実装して機密リソース (トークン、キーなど) にアクセスしているかどうかをチェックします。認証の成功は、機密操作に暗号的にバインドされてユーザーの存在を必要とするのではなく、コールバック結果にのみ依存します。

Android では、BiometricPrompt.authenticate()CryptoObject ありarrow-up-right または CryptoObject なしarrow-up-right で呼び出すことができます。CryptoObject なしで 使用する場合、アプリは onAuthenticationSucceededarrow-up-right コールバックを使用して認証が成功したかどうかを判断します (イベントバウンド)。これは、生体検証に成功せずにコールバックを上書きすることでロジックを操作される可能性があります。

一方、CryptoObject が使用される場合 (暗号バウンド)、アプリはユーザー認証を必要とする暗号オブジェクト (Cipher, Signature, Mac など) を渡します。これは、認証が単なる一回限りのブール値ではなく、安全なデータ取得パス (アウトオブプロセス) の一部となり、認証のバイパスが大幅に困難になります。

手順

  1. 静的解析 (Android での静的解析 (Static Analysis on Android)) ツールを実行して、関連する API のインスタンスを識別します。

結果

出力には関連する API が使用されている場所のリストを含む可能性があります。

評価

以下の場合、保護する価値のある機密操作ごとに、このテストは不合格です。

  • BiometricPrompt.authenticateCryptoObject なしarrow-up-right で使用されている。

  • 生体認証と組み合わせて setUserAuthenticationRequired(true) での鍵生成の呼び出しがない。デフォルトでは、ユーザーが認証されているかどうかに関係なく、鍵の使用が認可されるため。

以下の場合、保護する価値のある機密操作ごとに、このテストは合格です。

  • BiometricPrompt.authenticateCryptoObject ありarrow-up-right で、つまり機密操作に Android KeyStore から適切に構成された暗号鍵を用いて、使用されている。

  • setUserAuthenticationRequired(true) での鍵生成の呼び出しがあり、鍵は生体認証が成功した後にのみ使用できるようにし、認証を暗号操作にバインドしている。

Last updated