3

次の動作を持つ暗号化メソッドがあります。パスワードの各文字は、その文字の ASCII 値を取得し、バイトを一方向にシフトしてから逆方向にシフトするメソッドを通過し、次を返します。

$shifted_left.$original_char.$shifted_right.

ハッシュされる前のパスワードの例:

àp8Âa0æs9æs9îw;Þo7är9Èd2Îg3Þo7Êe2æs9Ðh4Êe2är9Êe2d2

この後、元のパスワードの各文字を通過して形成された結果の文字列は、BCrypt を使用してハッシュされます。これらのジャンク文字でパスワードを囲むことで、パスワードの強度が向上したり、レインボー テーブル/辞書攻撃によるクラックからパスワードを保護したりできますか?

4

2 に答える 2

3

一般的にはい、おそらく誰もレインボーテーブルを作成したことのないかなりユニークなアルゴリズムがあるため、事前に計算されたレインボーテーブルを防ぎます。

ただし、同じパスワードは引き続き同じハッシュにハッシュされます。したがって、すべてのパスワード ハッシュをブルート フォースしようとする攻撃者は、すべてのユーザーに対して同じパスワードを 1 回クラックするだけでよいため、簡単に実行できます。

したがって、ユーザー固有のソルトを使用することをお勧めします。また、すでに強力なハッシュ アルゴリズムでユーザー固有のソルトを使用している場合は、ビット シフト ダンスを実行するかどうかは問題ではありません。

于 2012-07-12T07:04:58.220 に答える
2

攻撃者がデータベースとコードを制御している場合、スクランブル文字を追加してもまったく役に立ちません (無視できる操作にすぎません)。彼がコードのないデータベース (SQL インジェクション) しか持っていない場合、彼はbcrypt ハッシュを認識し、bcrypt でブルート フォースを実行できるようになりますが、スクランブリングのために脆弱なパスワードはありません。スクランブルされたテキストがクラックするためのパスワードになるようなものなので、辞書は役に立ちません。

これは隠蔽によるセキュリティですが、コードが不明である限り有効です。一意のソルトで bcrypt を使用する前に、ハードコードされた修正ソルト (キー) を追加することで、同じ効果をより簡単に得ることができます。

PS bcrypt で使用される独自のソルトは、パスワードのスクランブリングではなく、レインボー テーブルに対して役立ちます。大きなレインボー テーブルには、スクランブルされたパスワードのようなランダムな組み合わせが含まれている場合もあります。

于 2012-07-12T07:50:11.053 に答える