PHP5.3以降のパスワードハッシュにbcryptを使用しています
bcryptは、アイテムごとに結果のハッシュに組み込まれるランダムなソルトを使用することを理解しています。これにより、各ハッシュのクラッキングが困難になり、クラッキングが防止されます
私が知らないのは、追加のアプリケーションレベルのグローバルシークレットキーを使用する正当な理由がまだ存在するかどうかです。
たとえば、パスワード文字列をハッシュするだけでなく、たとえば「password1」をbcrypt生成システムに組み込まれているランダムソルトを使用してbcryptハッシュにハッシュします(ここではhttps://gist.github.com/1053158):$ 2a $ 08 $ mjQAZ5cZi5B9u6zpUU4mGuRcvtxr1K.9ncYpxCdG.YhlD8yFG2mXK
定数を作成することもできます。例: "@#$%$%&BDFGG @ $%BNG $ Y ^ $%SEHYSZTHN $%"、その定数をアプリケーションに(アプリケーションのソースコードまたはアプリケーションの構成ファイルに)入れます。 、そしてそれをハッシュする任意の文字列に追加します。したがって、「password1」+「@#$%$%&BDFGG @ $%BNG $ Y ^ $%SEHYSZTHN $%」->は、「password1」のみとは異なるハッシュにハッシュされます。$ 2a $ 08 $ xFgULsrpoIYlbxp1IG3H8.kdVggyhm4aTQXrP2Ptu25nMBUjBdrrK
明らかに、アプリケーション自体のコンテキストでは、これはあまり役に立ちません。誰かが実行中のシステムでパスワード「password1」を試してみると、乗車のためにグローバル秘密鍵を自動的に取得するため、成功します。しかし、データベースを持っているか、データベースにしかアクセスできない場合は、グローバル秘密鍵が追加の障害になる可能性がありますか?なぜなら、グローバル秘密鍵を知らないので、単に「password1」を解読するのではなく、「password1 @#$%$%&BDFGG @ $%BNG $ Y ^ $%SEHYSZTHN $%」を解読する必要があるからです。
私が想像できるいくつかの潜在的な利点が存在する可能性があります。
- これは、侵害されたデータベースだけを使用してハッシュを解読するのを本当に妨げる可能性がありますか?
そして、存在する可能性のあるいくつかの漠然とした欠点:
- これにより、ハッシュされるすべての文字列に共通のスレッドが導入され、既知の場合はハッシュを解読しやすくなる可能性があります。
- データの脆弱性が高まります。サーバーの移行中などにグローバルシークレットキーが失われた場合、データはゴミ箱になります。