web-dev-qa-db-ja.com

ソルトMD5またはソルトSHAは安全と見なされていますか?

Bcryptやscryptなどを使用する必要がありますか?ハッシュはデータベースに格納するには非常に長いです。ソルトMD5またはSHA=を使用しても問題はありませんか?

5
user49654

MD5とSHA-1は強調パスワードを保存するための不適切な選択肢です。問題は衝突耐性ではありません。それはそれらが非常に高速になるように設計されているということです。最近のGPUは、ハッシュのリストを総当たりで実行する場合、1秒あたり数十億以上のパスワードを試行できます。これにより、最大8日間で、可能なすべての8文字の英数字パスワードが細断されます。 GPUは1つだけです。

Bcryptとscryptの利点は、任意に多くのリソースを消費できることです。 bcryptには構成可能なCPU要件があり、scryptには構成可能なCPUおよびメモリ要件があります。これらの作業要素を増やすことにより、攻撃者がデータベース内の単一のパスワードでさえ試みるのに要する労力を劇的に増やすことができます。

長さに関しては:2014年です。ストレージは基本的に非常に安価です。レコードごとに40バイトを節約することは、既知の貧弱なパスワードハッシュアルゴリズムを選択するための許容できる言い訳にはなりません。あなたが取り組んでいるどんなプロジェクトでも、確かにこれよりも限られた開発リソースを費やす価値のあるタスクがあります。

10
Stephen Touset

実際、「塩漬けMD5」や「塩漬けSHA-1」などはありません。 MD5 および SHA-1 は明確に定義されたハッシュ関数であり、(ほぼ)任意の長さのビットのシーケンスを入力として受け取り、固定長のビットのシーケンスを出力します(それぞれ128ビットと160ビット)。 MD5とSHA-1の定義にはどこにも塩はありません。さらに、パスワードも必要ありません。

「ソルトMD5」または「ソルトSHA-1」と呼ばれるものは、実際には新しい暗号化構造であり、いくつかのエンコーディング規則(パスワードをビットシーケンスに変換する)とソルト値(別の文字またはビットシーケンス)を1つにまとめています。ハッシュ関数の(またはいくつかの)呼び出し。それを行うには多くの可能な方法があり、標準はありません。せいぜい、一般的な用語「MD5 with some salt」の下でグループ化できるデザインのファミリーを持つことができます。暗号的には、これらの構造は互いに同等である必要はありません。一部はかなり貧しいかもしれません。

特定の「塩分を加えたMD5」で問題が発生しないと仮定しても、MD5(またはSHA-1)の主な問題が発生します。それはspeed。速度とは、攻撃者が1秒間に多くの潜在的なパスワードを試行できることを意味します。数値は毎秒10億単位です(ベンチマーク there )。ソルトされたMD5またはSHA-1で「逃れる」場合は、より多くのパスワードentropyでその速度と戦う必要があります。パスワードの長さではありません。長さはセキュリティと大まかにのみ相関します。文字を追加しても効果はありません。攻撃者が知らない文字を追加することが役立ちます。

現実的には、ソルト処理されたMD5またはSHA-1を回避する必要がある場合は、各パスワードで少なくとも60ビットのエントロピーを取得する必要があります。これは非現実的です。平均的なユーザーは、そのようなパスワードを生成したり覚えたりしません。せいぜい、ユーザーが30ビットのエントロピーを達成できれば、自分は幸せだと考えることができます。つまり、ソルト処理されたMD5またはSHA-1を使用すると、必要なセキュリティレベルが10億倍も下回ります。これらは低いオッズです。類推すると、これは、全軍が野球のバットで武装した1人の兵士で構成されている場合に、アメリカに軍事侵略しようとするのと同じです。 スタローン失敗Chuck Norris であっても、それは困難なことです。

これらの答えを読んでください:

そして、新しいディスクを買いに行きます!私の最初の実際のハードディスク(1991年に戻った)のサイズは40メガバイトで、50万人を超えるユーザーのbcryptハッシュを格納するのに適していました。サーバーは23年前のハードウェアであり、50万人を超えるユーザーがいますか?その場合は、勇気を出して敬礼します。医療援助を受けて、庇護室で寝ることをお勧めします。それ以外の場合、「ハッシュははるかに大きい」という議論は、それを言う良い方法はなく、本当に愚かです。


OK、ソルト付きMD5またはSHA-1の使用を回避する確実な方法があります。面白くなく、退屈なデータがないため、攻撃者がサーバーを攻撃することさえないサーバーがあれば十分です。結局のところ、怠惰はまだ宇宙で最強の力です。

5
Tom Leek

いいえ、MD5やSHAを使いこなすことはできません。このトピックは本当に議論されています。

MD5やSHA=などのすべての汎用ハッシュアルゴリズムは、速度を重視して設計されているため、ブルートフォース攻撃に対して非常に脆弱です。たとえば、HD 6990のような古いGPUは、約10を計算できます。 1秒あたり10億MD5ハッシュおよび1秒あたり40億SHA-1ハッシュ oclHashcatを使用

まともなパスワードであっても、このような攻撃に耐えられないことは簡単にわかります。たとえば、MD5を使用している場合、6文字の英数字を含むすべてのパスワードのスペース全体を検索するには、6秒しかかかりません。そして、8文字でも6時間しかかかりません。塩を加えてもこれは変わりません。ソルトは攻撃者に各ハッシュの後に個別に行くことを強制しますが、これはパフォーマンスを考えればほとんど違いがありません。

パスワードをハッシュするとき、スピードは必要ありません。逆に、手順は非常に高価で遅くなるはずです。そのため、bcryptやscryptなどの特殊なパスワードハッシュアルゴリズムが必要です。

1
Fleche