想定される知識
ハッシュ、ソルティング、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