web-dev-qa-db-ja.com

MD5で隠し整数を安全に表示する

私が研究しているシステムでは、次のメカニズムを使用しています。19桁の整数はMD5アルゴリズムによってハッシュされ、整数のソルトは、最初の2を推測しようとすることに関連する不可逆的なアクションを実行する前に、ユーザーに簡単に見えるように表示されます。上記の数字の桁。

私の直感は、これは安全ではないということです。特定の実装ごとに10 ^ 19の結果が得られ、単一のエントリの2分の有効期間、および最新のGPUの機能があるため、これをロールアウトしてもいいとは思いません。

私のパーソナルコンピュータから少しハイエンドのグラフィックカードを使って、hashcatマスクブルートフォースを使用しようとしたところ、2分を超える時間の非常に安心できる結果が得られましたが、直感は、私が欠けているものを示唆しているようです。

私ですか?

6
Ivan T.

この非常にハイエンドのGPUクラッカーは200GH/sを実行します。

https://Gist.github.com/epixoip/a83d38f412b4737e99bbef804a270c4

これは、1秒あたり2,000億ハッシュ(2e11ハッシュ/秒)です。 1e19の可能な数値の検索スペースを使用すると、パラメータースペースを徹底的に検索するには、最大500,000秒(約1.5年)かかります。もちろん、平均してその時間の半分で一致が見つかります。

つまり、MD5は高速なアルゴリズムであり、通常はブルートフォースが簡単であることを意味します。ただし、この場合、検索スペースのサイズが大きいと、その多くが無効になります。

しかし、成功したユーザーに何が起こるかによっては、MD5はまだ最良の選択ではないかもしれません。トップエンドのハッシュリグは、約200,000倍遅すぎます。それは多くのように思えますが、基本的には「私のハードウェアが200,000倍高速になるまでどれくらいかかるのか」と質問しています。コンピュータハードウェアの成長ペースは鈍化していますが、そのギャップがわずか数年で大幅に縮小することを期待することは非現実的ではありません。

最後に、プレイメージ耐性の弱点についても考慮する必要があります。私はしばらくMD5のステータスを「チェックイン」していませんが、最後にMD5がまだイメージ前耐性を持っていると聞きました。 MD5の暗号化セキュリティの他の側面は壊れています(ここでは関係ありませんが、衝突耐性はなくなりました)。したがって、MD5はまだイメージ前の耐性がありますが、それはいつでも変わる可能性があります。プリイメージ耐性がないと、攻撃者は実際に数値を総当たりすることなく、数値と同じハッシュを与えるペイロードを見つける手法を思いつく可能性があります。

つまり、現時点では安全です。安全マージンはおそらくそれほど高くありません。あなたが行動を起こす必要があるかどうかは、これの反対側で何を確保しているかに依存します。

9
Conor Mancone