0

認証アプリケーションがありますが、その安全性がわかりません。

これがアルゴリズムです。

1) clientToken は、SHA512 ハッシュを使用して新しい GUID を生成することによって生成されます。約 1000 個の ClientsToken が生成され、データベースに保存されています。

私のWebサービスを呼び出す呼び出し元がclientTokenを提供する必要があるたびに、clienttokenがデータベースに存在しない場合、それは有効なクライアントではありません。

問題は、ブルート フォースで既存の ClientToken を取得するのにどれくらいの時間がかかるかということです。

4

1 に答える 1

1

GUID は 128 ビットの値であり、6 ビットは一定に保持されるため、合計 122 ビットを使用できます。これはハッシュへの入力であるため、アプリケーションには 2^512 の一意のハッシュはありません。これは、チェックするおおよそ 5.3*10^36 の値です。

攻撃者が 1 秒あたり 1,000,000 (10^6) ハッシュを計算できるとします (SHA-512 の妥当性はわかりませんが、このサイズでは、数桁はそれほど影響しません)。これは、スペースを確認するのに約 5.3*10^30 秒かかります (参考までに、これはすべての星が暗くなる時間をはるかに超えています)。また、数十億のクライアントを持っていない限り、誕生日の攻撃はおそらくこれから桁違いに多くのことを取り除くことはありません.

しかし、楽しみのために、攻撃者がチェックするハッシュの数を半分に減らす (または、チェックするスペースの削減と速度の向上の組み合わせ) ことを可能にする何らかのトリックを持っているとしましょう。あなたのGUIDジェネレーター、またはあなたが持っているもので。衝突が見つかるまでには、まだ 1 億年を優に超えています。

あなたは安全を超えており、やや行き過ぎの領域に入っていると思います。また、GUID をハッシュしても実際には何も行われないこと、および GUID はおそらく安全な乱数ジェネレーターを介して生成されないことに注意してください。実際には、プラットフォームが使用する安全な乱数ジェネレーターを介して 128 ビット (16 バイト) のランダム性を生成し、それを共有シークレットとして使用する方が少し良いでしょう。

于 2013-09-25T16:02:03.920 に答える