0

他の数人との議論の中で、私は次の議論を読みました。

  • sha512(salt + ユーザー名 + パスワード) はダメです。
  • sha512(ユーザー名 + パスワード) の方が悪く、
  • sha512(パスワード) はばかげています。

私も部分的に同意しますが、本当に最高のセキュリティとは何でしょうか? SHA512 などの遅いハッシュ方法と一緒にユーザー固有のソルトを使用するよりも安全なものはありますか? 本当の行き方は?議論してください!

タイトルが悪いと思ったら編集してください。

4

3 に答える 3

0
  1. パスワードごとにランダムなソルトを生成します。
  2. MD5 や SHA-1 も避けてください。
  3. 低速ハッシュ アルゴリズムを使用します。SHA-256 は今のところ良い選択のようです。
  4. パスワードの保存は、独自の (全体的な) アルゴリズムを持つことに利点があるまれなケースの 1 つです。レインボー テーブルを持つ攻撃者を考えてみましょう。パスワード格納アルゴリズムが、生成された値を変更するのに十分なほどレインボー テーブルの生成に使用されたものと異なる場合、そのレインボー テーブルは役に立ちません。攻撃者は、アルゴリズムを知ってから、新しいテーブルを生成する必要があります。低速ハッシュ アルゴリズムを選択すると、新しいテーブルの生成に非常にコストがかかります。

「全体的な」アルゴリズムとは、平文のパスワードを保存された値に変換する方法の完全な定義を意味します。例SHA-256("mypassword" + "[[" + 40-char-random-alphanum-salt + "]]")。角括弧の代わりに山括弧を使用するように変更すると、保存されたパスワードを悪用するために必要なレインボー テーブルが変更されます。独自のハッシュ アルゴリズムを作成することを推奨しているわけではないことに注意してください。それでも、暗号的に安全なハッシュ アルゴリズムを選択する必要があります。

MD5 の作成者によるこの記事を参照してください。彼は、私が上で繰り返した 2 つの要点を述べています。1) 高速ハッシュ アルゴリズムを使用する場合、要点を見逃していること、および 2) 全体的なアルゴリズムの再利用により、レインボー テーブルの再利用が可能になることです。

于 2012-06-08T19:35:47.003 に答える
0

最近の LinkedIn のリークについて話し合っているときに、誰かがbcrypt に関するこのリンクを持ち出しました。私は同意すると思います...係数に応じて計算時間を指数関数的に増加させる関数を使用する必要があります。それが、クラスターや GPU を使用してハッシュ計算を行おうとする人々に打ち勝つ唯一の方法です。

于 2012-06-07T00:13:22.850 に答える
0

私の理解では、(計算コストのための)繰り返しのハッシュと適切なランダムソルトは、真剣に決定された暗号攻撃者を除くすべてを打ち負かすはずです.

データベース内およびネットワーク上でパスワードをハッシュすることで、スヌーパーや侵入した攻撃者がプレーンテキストを回復可能 (および他の場所で使用可能) にすることを回避できます。

基本的に、これは多かれ少なかれ、Wordpress 認証で使用されるスキームです。

var SALT = 64 random characters;
var NUM_HASHES = about 1000;    // can be randomized
var hashedResult = inputPassword;
for (int i = 0; i < NUM_HASHES; i++) {
  var dataToHash = SALT + hashedResult;
  hashedResult = secureHash( dataToHash);
}
//... can now store or send.

このランダム ソルトとループ ハッシュの使用は、レインボー テーブルまたは単一レベルの「ハッシュ衝突」、「ハッシュの弱点」攻撃を打ち負かします。ハッシュ関数の1000回の反復による各キーの完全なキースペースのブルートフォースのみが、それを打ち負かすと考えられています:)

于 2012-06-07T00:15:26.770 に答える