5

想定される知識
ハッシュ、ソルティング、PBKDF [1-2]

問題
PBKDF2のようなスケーリングされたハッシュ/ソルティングアルゴリズムを使用してデータベースにパスワードを保存しています。「ねえ、パスワードを20000回ハッシュすれば、ブルートフォース攻撃に対して十分に安全なはずだ」と思いました。そしてその真実。より良いコンピュータが出てくる来年まで。

考えられる解決策

暗号化キーの長さとソルトの長さ(このソリューションにも組み込むことができます)の問題は別として、N日ごとにデータベース内のすべてのパスワードを再ハッシュするとどうなるかと思いました。つまり、2万回ハッシュされ、1週間後、さらに500回ハッシュされ、合計で20,500回ハッシュされます。ハッシュされた回数をデータベースのどこかに保存します。アイデアは、技術が進歩するにつれてハッシュ数を増やすことです。

既存の同様の実装
BCryptは、パスワードのハッシュにかかる時間を増やすための作業要素を導入しています
。PBKDF2は、同じことを行うために多数の反復を使用します。これは、Mac OS-X、Windows、およびLinuxでファイルレベルの暗号化に使用されます。Wi-Fiネットワークもその実装を使用します。

誰かがこれに関する問題を見ることができますか?これはすでに試されていますか?事前にハッシュされたパスワードを受け入れ、それを「N」回再ハッシュするアルゴリズムはありますか?

編集
問題は、複数のハッシュが安全かどうかではありません(これは試行され、テストされています)。問題は、ユーザーにパスワードを再設定させずにセキュリティを強化するための再ハッシュに関するものです。

解決策: JVestryとの話し合いの礼儀

したがって、ハッカーはデータベースの古いコピーを使用してパスワードを解読できるため、「N」日ごとにすべてのパスワードを再ハッシュするのは時間の無駄です。ただし、時間の経過とともにハッシュ数を増やすという概念をパスワード更新ポリシーと組み合わせると、その概念は適切です。

実装
すべてのパスワードは30日ごとに期限切れになります。それらが更新されると、それらのハッシュカウンターが増加します。したがって、昨日のパスワードリセットは、20日前のパスワードセットよりも解読が困難になります。ハッシュカウンターは、保存することも、最終変更日を使用してアルゴリズムから導出することもできます。

ありがとう!

TTD

4

2 に答える 2

3
Can anyone see a problem with this?

はい。あなたが毎週塩で再ハッシュするだろうと仮定すると(私はあなたが意味していると私は信じています)、まだ問題があります。誰かがx週にハッシュされたパスワードにアクセスできるようになった場合、x + n週にそれ以上ハッシュしても、追加のセキュリティは提供されません。

ハッカーは、x週目に非常に多くの反復に取り組む必要があります。キーが壊れたら、彼/彼女はあなたが毎週するようにそれをもう少しハッシュする必要があります。これは非常に簡単で、完全に見過ごされます。

再ハッシュする場合は、新しいソルトを使用して、最初から繰り返して実行します。あなたのショートカットは余分な安全性をもたらしません。

于 2011-08-19T01:16:09.043 に答える
2

これにより、ブルートフォース攻撃が困難になりますが、ログインプロセスが遅くなります。

より多くの塩を使用する方が良いです。

于 2011-08-19T00:37:31.013 に答える