4

ASP Classic のパスワードの最も遅い (したがって最適な) ハッシュ アルゴリズムは何ですか?

編集:知らない人のために、パスワードをハッシュするときは、レインボーテーブルスタイルの攻撃を遅らせるために、速いハッシュよりも遅いハッシュが好まれます.

EDIT2: はい、もちろん、速度だけがハッシュ選択の有効な懸念事項ではありません。私の質問は、パスワードをハッシュするときに他のすべてのものが等しいと仮定しています。最も遅いハッシュ方法が優先されます。衝突/リバース エンジニアリングももちろん懸念事項ですが、パスワードで使用する一般的なハッシュ アルゴリズムを比較する際に考慮すべき最も重要な要素であるため、この質問では速度を優先しています。

ありがとう!

4

7 に答える 7

12

遅いハッシュ関数を探しているという理由で、多くの人が質問者を非難しているようです。実際、他のすべての側面が等しい場合、低速のハッシュ関数は高速のハッシュ関数よりも安全です。これは、ハッシュ関数が遅いほど、レインボー テーブルの生成が遅くなり、パスワードに対する総当り攻撃や辞書攻撃が遅くなるためです

http://www.securityfocus.com/blogs/262のThomas Ptacek から、このCoding Horror 記事で参照されているように:

問題は、MD5 が高速であることです。SHA1 や SHA256 などの最新の競合他社も同様です。ハッシュはほとんどすべての暗号システムの構成要素であり、通常はパケットごとまたはメッセージごとに要求実行されるため、速度は最新の安全なハッシュの設計目標です。

速度は、パスワード ハッシュ関数で望ましくないものです。

最新のパスワード スキームは、インクリメンタル パスワード クラッカーによって攻撃されます。

インクリメンタル クラッカーは、クラックされた可能性のあるすべてのパスワードを事前に計算するわけではありません。各パスワード ハッシュを個別に検討し、PHP ログイン ページと同じ方法で、パスワード ハッシュ関数を介して辞書をフィードします。Ophcrack のようなレインボー テーブル クラッカーは、スペースを使用してパスワードを攻撃します。John the Ripper、Crack、LC5 などのインクリメンタル クラッカーは、時間 (統計と計算) を処理します。

パスワード攻撃ゲームは、パスワード X をクラックするのにかかった時間でスコアが付けられます。レインボー テーブルでは、必要なテーブルのサイズと検索速度によって時間は異なります。インクリメンタル クラッカーの場合、時間はパスワード ハッシュ関数をどれだけ速く実行できるかによって異なります。

パスワード ハッシュ関数を最適化すればするほど、パスワード ハッシュ関数が速くなり、スキームが弱くなります。MD5 と SHA1 は、DES のような従来のブロック暗号でさえ、高速になるように設計されています。MD5、SHA1、および DES は脆弱なパスワード ハッシュです。最新の CPU では、DES や MD5 などの未加工の暗号化ビルディング ブロックをビットスライス、ベクトル化、および並列化して、パスワード検索を超高速にすることができます。ゲームオーバー FPGA の実装にかかる費用はわずか数百ドルです。

PHP MD5 ドキュメントに関する一部のコメントでは、速度の優先についても議論されています。

あなたの質問に答えるには、BCrypt が適しているようです。ただし、ASP Classic の実装は見つかりませんでした。それが本当なら、SHA512 のような通常のハッシュ関数に固執します。

于 2008-10-31T14:37:27.287 に答える
5

遅い部分は無視して、代わりに「良い」部分に進みます。

SHA-512 とソルトを使用して、辞書攻撃とレインボー テーブル攻撃を無効にすることをお勧めします。SHA-512 に既知の脆弱性はないと思います。

于 2008-10-31T14:32:13.477 に答える
3

ブルート フォース攻撃を打ち負かそうとしている場合は、ハッシング (またはハッシュ比較) メカニズムの速度に依存して攻撃が成功するまでの時間を長くするよりも、失敗した試みのウィンドウ/カウントを強制する方が適切です。失敗ウィンドウ内で特定の回数の試行が失敗した後にアカウントをロックアウトし、かなりの時間が経過した後にのみ新しい試行が行われるようにします。

これにより、既知の (管理) アカウントに対する DOS 攻撃を受けやすくなる可能性がありますが、特定のアカウントをロックアウト ポリシーから除外するか、セキュリティの質問/回答を使用してロックアウトされたアカウントにログオンする別の方法を用意することができます。リセット期間が経過する前のアカウント。

[編集] 攻撃者がハッシュ化されたパスワードを取得し、同じ値にハッシュする適切な一致を見つけるレインボー攻撃を打ち負かすために、各ユーザーのハッシュ化されたパスワードに固有のランダム ソルトと、データではなくアルゴリズム。例えば:

  testHash = computeHash( user.salt + "98hloj5674" + password );
  if (testHash == user.hashedPassword)
  {
      valid = true;
  }

ユーザーのソルトとハッシュアルゴリズムを知っていても、アルゴリズムに固定ソルトが追加されているため、攻撃者のレインボーテーブルの値はハッシュされたパスワードにマップされないため、これによりレインボーテーブルが無効になります。

ASP Classic では、固定ソルトがユーザーに見えないようにするために、ページではなくライブラリでこれを行う必要があります。

于 2008-10-31T14:29:15.010 に答える
2
Dim sPassword, sSalt
sPassword = "Lorem"
sSalt = "Ipsum"
With CreateObject("CAPICOM.HashedData")
  .Algorithm = 0 ' CAPICOM_HASH_ALGORITHM_SHA1
  .Hash sPassword & sSalt
  Response.Write "Here is your hash: " & .Value
End With

Capicom のドキュメント

アルゴリズムは次のいずれかです。

CAPICOM_HASH_ALGORITHM_SHA1      = 0
CAPICOM_HASH_ALGORITHM_MD2       = 1
CAPICOM_HASH_ALGORITHM_MD4       = 2
CAPICOM_HASH_ALGORITHM_MD5       = 3
CAPICOM_HASH_ALGORITHM_SHA_256   = 4 - Not supported on Windows XP or 2000
CAPICOM_HASH_ALGORITHM_SHA_384   = 5 - Not supported on Windows XP or 2000
CAPICOM_HASH_ALGORITHM_SHA_512   = 6 - Not supported on Windows XP or 2000
于 2009-01-21T00:37:36.157 に答える
0

個人的には、すべてのハッシュ ニーズに対してWhirlpool アルゴリズムを好みます。512 ビット出力を生成するため、SHA-512 と同等のスペース要件があります。残念ながら、一方が他方よりも安全かどうかについて、私は正式に話すことはできませんが、この Whirlpool の 3 番目のバージョンには目立った弱点はないようです。

リファレンス実装はパブリック ドメインにあります。これは、さまざまなツールや言語でデフォルトで実装されていることはめったにないため、これは良いことです。

(Whirlpool よりも SHA を優先すべき正当な理由を誰かが知っている場合は、お知らせください。)

于 2008-10-31T22:57:20.227 に答える
0

実際、最良のハッシュ関数は、コリジョンを生成せず、レインボー テーブル攻撃の疑いがない関数です。

つまり、Salt を追加し (ユーザーごとに異なる Salt を使用することをお勧めします)、SHA2 ハッシュ関数を使用することを考えます (または RIPE-MD を使用することを考えてください。あまり詳しくは調べていません)。

SHA-256 の実装の 1 つがここにあります (「一方向暗号化」と呼ばれる方法が気に入っています):
http://www.freevbcode.com/ShowCode.Asp?ID=2565

まだテストしていませんが、Classic ASP の SHA2 実装は確かにあります。

于 2008-10-31T14:31:56.767 に答える
-5

最も遅いメソッドの疑似コード:

function hashPassword(password)
    sleep for 10 seconds
    return password
end function

これは確かに最も安全ではありません(またはまったく安全ではありません)が、遅いです...

(遅くすることは答えではないことを指摘しているだけです...)

于 2008-10-31T14:27:45.433 に答える