2011-09-17 19 views
5

私はムーアの法則に追いつく能力があるため、パスワードをハッシュするためにbcryptを使うことを勧めてきました。bcryptはムーアの法則にどのように対応していますか?

明らかに、この理由は、攻撃者がSHA256のような汎用のハッシュ関数によって生成されたハッシュよりも、暗号化されたハッシュをクラックするのに時間がかかるためです。

どうすれば可能ですか?ムーアの法則にもかかわらず、アルゴリズムを故意に遅くするにはどうすればよいですか?

+1

Bcryptは、プロセッサが高速化するにつれてハッシュを生成するコストを増加させるために増加させることができる作業要素を採用していると私は信じています。 –

答えて

5

bcryptは、「作業係数」というパラメータで設定可能です。内部的には、ハッシングに似た操作を何回も連続して実行します。 「多くの」部分は、数十億まで構成可能な部分です。ですから、ムーアの法則に対処するには、その設定を変えてください。必要に応じて遅くすることができる別の機能はPBKDF2です(「反復回数」パラメータを参照)。

パスワードハッシングを遅くするという点は、攻撃者にとっては困難なことですが、「正直なシステム」についても機械的に遅くなります。それはトレードオフです。詳細は、this answer(security.stackexchangeを参照)を参照してください。

+0

この質問に対するあなたの入力は非常に高く評価されます:http://stackoverflow.com/questions/7479442/high-quality-simple-random-password-generator/ – quantumSoup

5

攻撃者はすべて216,553 english wordsを試してみたいです。

the common variationsの努力の別の12ビットは、887,001,088(2 )の可能なパスワードのリストを与えると言うことができます。

BCryptは約4,342,912 (i.e. 222) operations to calculate one hash (at cost=12)となります。

今日、コアは約2 サイクル/秒を提供します。最先端技術は、プロセッサ当たり8 = 2 コアであり、合計2 * 231 = 2 サイクル/秒である。サーバは通常4つのプロセッサを有し、合計を2に増やす。 * 2 = 2 サイクル/秒。 1ハッシュを計算するサイクル* 2 可能な(共通の)パスワード= 2 すべての(共通の)パスワードを実行するサイクル。

これは、すべて共通のパスワードを介して実行する2 /2 = 2 秒(9時間)について、サーバ4プロセッサ、オクトコアを取ることを意味します。

実際には私のパスワードは一般的ではなく、約44ビットを使用します。 2 パスワード* 2 パスワードあたりのサイクル= 2 珍しいパスワードをすべて試してください。 2 /2 サイクル/秒= 2 (34歳)が私のパスワードを見つける。

ムーアの法則によれば、処理能力は18ヶ月ごとに2倍になります。

  • 今日:私の珍しいパスワードを見つけるために34年
  • 1.5年:17年
  • 3年:8.5年
  • 4.5:4.25年
  • 6年:2.125年
  • 7.5年:1年
  • 9年:6ヶ月
  • 10.5年:3ヶ月
  • 12歳:6週間
  • 13.5年:3週間
  • 15年:10日
  • 17.5歳:5日
  • 19年:63時間
  • 20.5歳:31時間

これは今やです。bcryptはムーアの法則に反しています。

はにから コスト要因を増やし、それが ダブル時間が関与します。

関連する問題