web-dev-qa-db-ja.com

ハッシュされたSHA-256 / 512ハッシュは、ハッシュとその塩が公開されている場合でも安全ですか?

シナリオ:各パスワードのソルトを含む、ハッシュされたパスワードとソルトされたパスワードのデータベースが悪意のあるユーザーによって盗まれる。パスワードは6〜10文字で、技術者以外のユーザーが選択します。

この悪意のあるユーザーはこれらのパスワードを解読できますか?

私の理解では、MD5とSHA-1はもはや安全ではありません。GPU支援のパスワード回復ツールは、GPUごとに毎秒数十億のこれらのハッシュを計算できるからです。

SHA-256またはSHA-512はどうですか?彼らは現在安全ですか?数年後はどうですか?

51
Seppo Erviälä

質問は、何回のハッシュが実行されるかについては述べていません。そして、全体の答えはその点にかかっています。

反復を1回だけ使用する場合、すべてのハッシュ関数は安全ではありません。ハッシュ関数は、SHA-1、SHA-2ファミリのいずれであっても、何千回も繰り返す必要があります。強力なハードウェアの低コストを考えると、10,000回の反復を最低限と見なします。100,000回の反復は不合理ではありません。

短いパスワードも安全ではありません。価値の低いターゲットであっても、8文字以上にする必要があります(ユーザーが複数のアプリケーションで同じパスワードを再利用するため)。

150ドルのグラフィックカードを使用すると、毎秒 6億8,000万回のSHA-1ハッシュ計算を実行できます。 ハッシュのラウンドを1つだけ使用する場合は、all 6文字のパスワードは15分強でテストできます(これは94の印刷可能なすべてのASCII文字が使用されていると想定しています)。追加の文字ごとに時間を乗算します94、つまり、この設定では7文字で1日、8文字で103日が必要です。このシナリオは、14歳のGPUを使用しており、実際の金銭を持つ組織犯罪者ではありません。

ここで、複数の反復を実行した場合の影響について検討します。ハッシュの1,000回の反復が実行される場合、6文字のパスワードスペースは15分ではなくほぼ12日かかります。 7文字のスペースには3年かかります。 20,000回の反復が使用される場合、これらの数はそれぞれ最大8か月と60年になります。この時点では、短いパスワードでも徹底的に検索することはできません。攻撃者は、「最もありそうな」パスワードの辞書にフォールバックする必要があります。

61
erickson

塩は公開されていると見なすことができます 実際には定義による

使用するハッシュとその「安全性」については、NISTが米国政府機関に対して行う勧告に固執します。 ウィキペディアの記事 はこう言っています:

SHA-1は政府のほとんどの用途で廃止されています。米国国立標準技術研究所は、次のように述べています。「連邦機関すべきできるだけ早く衝突耐性を必要とし、ハッシュのSHA-2ファミリを使用する必要があるアプリケーションでSHA-1の使用を停止する2010年以降のこれらのアプリケーションの機能」

さまざまなアルゴリズムの安全性や安全性について推測することはできますが、米国政府が独自に使用するのに十分であると考える仕様を持っているのに、なぜ煩わしいのでしょうか。

[編集]

ところで、あなたの質問は、これらの分析がどのように行われるかについての誤解を反映しているようです。 muchはハッシュ関数にそのビット数よりも多くあります。

SHA-1のような160ビットハッシュをブルートフォースにするには、2 ^ 160の労力が必要です。どれだけの「GPU」を投げても、それは起こりません。実際、それはおそらく宇宙の生涯では起こらないでしょう。 (本当のことですが、力ずくで衝突させるには、2 ^ 80の労力しか必要ありません。ただし、2 ^ 80も必要ですstorage。頑張ってください。)

MD5とSHA-1が「安全でない可能性がある」と見なされる理由は、各アルゴリズムで弱点が発見されており、総当たりの作業よりもはるかに作業量が少なくなる可能性があるためです。新しいアルゴリズム(SHA-2など)に切り替える理由は、これらの既知の弱点を回避するためです。 256ビットを使用する理由は、nknownの弱点に対するバッファーを提供するためです。 「GPU」とは何の関係もありません。ブルートフォース攻撃に対抗するには、160ビットで十分です。

ちなみに、同様のステートメントは、すべての暗号化に当てはまります。

さて、NSAの人々があなたや私よりもこのことについて知っていることをどれだけ多く誇張することは不可能です。彼らはNISTを介して米国政府機関と米国産業に推奨をします。それ自体が主要な世界政府であり、NISTの推奨事項は十分すぎるほどです。そうでないことを告げようとする自称「専門家」は無視してください; NSAは、あなたができることよりも優れています想像してみてください。

あなたの敵対者isが主要な世界政府である場合、SOの誰もあなたを助ける資格がありません。そして、あなたはどのハッシュ関数を使用するよりもはるかに大きな問題を抱えています。

[編集2]

もちろん、あなたはすでに PKCS#5 ( "PBKDF2"としても知られている)のような標準のパスワードハッシュスキームの一部としてこの関数をすでに使用していると想定しています。使用する。

PBKDF2は最低1000回の反復を推奨しますが、好きなように選択できます。攻撃者のブルートフォースの労力はその数に比例して増加するため、1000に対して10000回の反復は、各パスワードのブルートフォースに10倍長くかかることを意味します。

17
Nemo

攻撃者がソルトを知っている場合、彼/彼女はソルト値に基づいて新しいレインボーテーブルを計算できます。

使用するアルゴリズムによって異なります。 Coda Hale によると、MD5およびSHAハッシュアルゴリズムのファミリは汎用であり、速度を目的としています。要するに、これらは十分ではないと結論します辞書の攻撃を防ぐためであり、パスワードのクラックに伴うセットアップ時間が長くなり、攻撃者の速度が大幅に低下するため、bcryptを使用する方法です bcrypt に関する別の興味深い記事を次に示します。

SHA-256またはSHA-512はどうですか?彼らは現在安全ですか?数年後はどうですか?

注意してください、この議論には二つの側面があります。 bcrypt側とSHA-256以上があります。 SHA家族側の人々を信じているなら、SHA-256で数年以上安全であると信じています。塩を含むSHA-1はまだ十分に良いですが、安全を確保したい場合は、SHA-256を使用します。MD5には「十分に信頼できない」と証明されるまでにまだ5〜10年あるとのフォーラムもあります。残念ながら、リンクを投稿することはできません私はすでに私の最大数の2に達しているためです。

個人的には、SHA-256とソルトを使用していますが、bcryptについてさらに読んで再評価する必要があります。うまくいけば、これは役立ちます。これは、調査に数え切れないほどの時間を費やすことができる種類の質問ですが、それでも興味深いものです。

1
SantosLHalper