5

私はこのライブラリを使用しています: https://github.com/scottyab/safetynethelper
Android 開発者サイトとリポジトリのドキュメントを読みました。すべて正常に動作しますが、何かがはっきりしません。アプリ自体でナンスを作成するよりも、サーバーからナンスを取得する方が安全であることが示されています。また、SafetyNet API からの応答をサーバーに渡す方がよい理由

4

1 に答える 1

6

ほとんどの場合、SafetyNet Attestation API は、サーバーと通信しているデバイスとアプリを信頼するかどうかを決定するために使用されます。

そのため、実際には Android アプリ内で JWS 応答をチェックする必要はありません。そうしないと、攻撃者がアプリを単純に変更して、配置した検証ロジックを削除する可能性があります。これが、応答をサーバーに渡し、そこで決定を下す方が良い理由です (サーバーを信頼します)。

サーバー上で応答を確認し、すべてが正常に見える場合は、サインインや特定のデータのダウンロードを許可するなど、保護しようとしているアクションを許可します。

サーバーから提供されるノンスがより安全なのはなぜですか? アプリで生成されたナンス (つまり、基本的にランダムで、ユーザーにはわからない) は、攻撃者によって自由に変更される可能性があります。ノンスをコントロールしたがいい!このようにして、サーバーで JWS 応答を検証するときに、ナンスが正しいことを確認できます。

サーバーで nonce を生成するための適切な方法は、セッション ID をハッシュするか、ユーザー ID とタイムスタンプの組み合わせをハッシュすることです。

于 2016-12-15T04:48:37.107 に答える