web-dev-qa-db-ja.com

MD5が1996年以来クラックされているのに、なぜ人々はまだMD5を使用/推奨しているのですか?

1996年にその安全性が証明されていたとしても、パスワードをハッシュする一般的に推奨される方法です。

したがって、将来的には、MD5は、衝突に強いハッシュ関数が必要とされる署名スキームなどのアプリケーションには実装しないことをお勧めします。現在のノウハウによれば、MD5に代わる推奨事項はSHA-1とRIPEMD-160です。

(最近の攻撃後のMD5のステータス、CryptoBytes、RSA Laboratories、VOLUME 2、NUMBER 2 — SUMMER 1996)

この調査の後、およびその欠陥に関する今後のすべての論文でさえ、それはWebアプリケーションのパスワードハッシュ機能として推奨されています。

一部の証明機関のデジタル署名でも使用されます( http://rmhrisk.wpengine.com/?p=6 に従って)

セキュリティ上の理由から、このメッセージダイジェストアルゴリズムがまだ禁止されていない理由は何ですか?


リンク、それらを見つけるのに数分かかりました

57
Marek Sebera

@DWからの良い答えを補足するために:パスワードハッシュの場合、MD5は他のどのハッシュ関数よりも壊れていません(それでもそれを使用しないでください)


全体像: MD5暗号化ハッシュ関数 であり、そのため、次の3つの特性を満たすことが期待されます。

  • プレイメージへの耐性:xが指定されている場合、mを見つけることは不可能ですMD5(m)= x
  • second-preimagesへの耐性:mが指定されているため、見つけることができませんm 'とは異なりますmそしてMD5(m)= MD5(m ')となります。
  • 衝突への耐性:互いに区別してmm 'を見つけることは不可能です、およびMD5(m)= MD5(m ')のようになります。

MD5はcollisionsに関して完全に壊れていますが、プリイメージまたはセカンドプリイメージについては違います。さらに、1996年の攻撃(Dobbertinによる)はMD5をまったく壊しませんでした。これは「圧縮機能の衝突」、つまりMD5の内部要素の1つに対する攻撃でしたが、完全な機能ではありませんでした。暗号学者はそれを警告フラグとみなし、2004年に公開された実際の衝突攻撃(Wangによる)はDobbertinの調査結果から構築されたため、それらは正しかった。しかしMD5は1996年ではなく2004年にのみ破壊され、それは衝突攻撃でした。

衝突はパスワードハッシュのセキュリティには関係ありません。パスワードハッシュのハッシュ関数のほとんどの使用法は、プリイメージの耐性または他のプロパティに依存します(たとえば、ハッシュ関数が [〜#〜] hmac [〜#〜]内で使用された場合にどの程度うまく機能するか 、何か上記のプロパティに還元することはできません)。 MD5は実際にはプリイメージに関して「弱体化」されていますが、理論的には攻撃コストが数十億億倍にもなり、実際に試してみるにはコストがかかりすぎるためです(したがって、プリイメージに関してMD5は「本当に」壊れていません。実用的な方法ではありません)。

しかし、とにかくMD5を使用しないでください。暗号の脆弱性のためではなく、MD5がnsaltedおよびvery fastであるためです。それはまさに、パスワードハッシュ関数に望まないことです。パスワードハッシュに「MD5を推奨する」人々は、これ以上何も知らず、常に心に留めておくべき真実の証です。インターネット上で見つけたすべてのものが正確で信頼できるわけではありません。パスワードハッシュのためのより良いソリューションが知られており、10年以上使用され、展開されています。詳細とポインタについては this answer を参照してください。

76
Thomas Pornin

「禁止」とはどういう意味ですか? MD5の使用を「禁止」するのは誰ですか? ROT13や他の安全でない暗号化スキームを使用する人々を逮捕する一部の国際暗号警官がいるようではありません。

または、もう少し深刻になります。暗号学者は、新しいシステムでMD5を回避することをすでに推奨しており、既存のシステムをMD5から移行することを推奨しています。暗号技術者がこれについて何ができると思うか、私にはわかりません。

MD5は「パスワードをハッシュする一般的に推奨される方法」であると主張していますが、この主張の証拠は提供されていません。その主張は正しいとは思いません。それは私の経験ではありません。

結論としては、暗号化コミュニティisはこのトピックに関して1つの声ですでにかなりはっきりと話しています。そして、ほとんどの人々areはすでにMD5から移行しています。 MD5が引き続き使用されるケースは例外であり、標準ではありません。

編集(6/17):ハッシュにMD5を使用することについて言及するリンクをいくつか追加したようです。彼らが証明することはすべて、私が聞いたことがない人々が混乱しているということです。だから何?とにかく、セキュリティ/暗号化コミュニティで肯定的な評判を確立していない人々からの助言に懐疑的になっているはずです。また、コミュニティに参加していない一部の人々が混乱しているという事実について、セキュリティ/暗号化コミュニティを批判する方法を理解していません。正確には何をすべきか?私たちはすでにそれを行うための正しい方法についての知識を拡大するためにできることはすべてしています。私はあなたが本当に間違った人々に責任を負っているように感じます。

とにかく、なぜMD5をまだ推奨している人がいるのかという質問に答えるなら、そうですね、それはおそらく、そうした人たちは何もよく知らないためでしょう。この件について他の人が何を言うことができるのか、または他の人が何を言うのを期待しているのかわかりません。

28
D.W.

あなたが見ているのはウェブのロングテールだと思います。パスワードハッシュ用にMD5を推奨する2006年の記事(例: http://www.pixel2life.com/publish/tutorials/118/understanding_md5_password_encryption/ )-参照日から10年経っています。

ただし、ピアレビューされた暗号化ジャーナルの最先端の研究から何かを得て、暗号化ジャーナルを読んでおらず、その分野の専門家でさえない日常の実践者に実践を勧める時間について話している。おそらく起こったのは、1990年に誰もがMD5がパスワードに適していることを「知っていた」ため、MD5がパスワードに適していると他の人に言ったからです。 1990年代後半から、一部の人々はMD5はパスワードに悪いと言っていましたが、ほとんどの人はパスワードに適していることを「知っていた」ので、これはまだ他の人に助言したものです。

最近では、bcryptがそれらの推奨事項を表示し始めているパスワードに適していることを「知っている」人々の十分な数の体がありますが、 MD5がパスワードに適しているという記事は、まだ検索エンジンのインデックスから消えていません。時間が経つにつれ、そうなるでしょう。

つまり、10年の間にここに戻って、「なぜbcrypt作業係数10の使用を推奨しているのですか?ジャーナルは、少なくとも150を使用する必要があると言いますか?」...

Poul Henning-Kampは、もともとUNIX crypt()関数をDES= MD5に移動しました。 彼はここで説明します 人々がMD5を使用しているという事実は、彼がうまくいかなかったことを示しています彼がやろうとしていたことを説明してください。MD5をシボレスとしてインストールするのではなく、パスワードハッシュをより複雑にします。

8
user185

MD5にはいくつかの用途があります

整合性チェック

ダウンロードまたは受信したファイルがオリジナルであることを確認するには、ファイルのハッシュを確認します。同じチェックサムを持つファイルを簡単に作成できることが示されています。

MD5での衝突は 生成が容易 です。 MD5は、この目的には使用しないでください

ISOやその他のものをダウンロードしている間、人々はまだMD5チェックサムを提案しますが、多くの場合SHAチェックサムも与えます。これは、MD5がはるかに高速で通常実装されているため説明できます。

パスワードチェック

パスワードをクリアテキストで保存する代わりに、パスワードのハッシュを保存します。一部のWebサイトでは、まだMD5を使用しています。ここでの問題は、衝突を見つけることではなく、レインボーテーブルまたはMD5チェックサムの巨大なデータベースをチェックすることです。

非常に迅速に何百万ものMD5チェックサムを生成できるので、自分のPCでパスワードをブルートフォースすることができます。そのため、パスワードのハッシュにMD5を使用しないでください。ただし、ほとんどの場合、 a salt を追加する必要があります。

非常に複雑なパスワード(特殊文字を含む)があり、保存されているパスワードごとに一意の複雑なソルトがある場合、MD5を使用してもそれほど問題にはなりません。私はそうすべきではない(そうすべきではない)とは言いませんが、パスワードがブルートフォースになりにくく、レインボーテーブルの使用がソルトによって阻止される場合、MD5を使用することは大きなセキュリティ問題ではありません。もちろん、あなたのウェブサイトでは、ユーザーに複雑なパスワードを強制するのは簡単ではありません(そして高く評価されています)。そのため、ユーザーが12345を登録すると、どのハッシュ関数を使用しても壊れます。

人々が今でもそれを使用している理由は、それがおそらく最も知られているハッシュ関数であり、数年前もまだ受け入れられていたためと思われます。暗号の知識があまりない人でも使えます。

6
Martin Trigaux

お勧めだとは思いません。 Wikipedia は、MD5は壊れていると見なされ、SHA-2またはSHAファミリを置き換えることをお勧めします。また、 Devise もご覧ください。 a Ruby承認を処理するgem。異なるタイプのエンクリプターを持っています。

3
Travis Pessetto

この調査の後で、そしてそれについてのすべての今後の論文でさえ、それ以来password hashing関数としてWebアプリケーションで推奨されています。

はいそして?

パスワードハッシュは時間の浪費です。

MD5 ^ n(MD5反復n回)は、SHA1 ^ m(time(MD5^n) >= time(SHA1^m)などのmの場合)と同じくらい優れています- 時間の無駄

明らかなMD5 o MD5^(n-1)よりも高速な方法でMD5 ^ nを計算する方法は誰も提案していません。それをするためのアイデアの始まりすらありません。

ここでは何も壊れていません。

Time.spaceの浪費については、scryptを検討する必要があります。

2
curiousguy

これはMD5に関する公式情報です MD5は衝突攻撃に対して脆弱です より高いセキュリティのためにSHA-2を検討する必要があります。ユーザーがMD5を使用するのを止めることはできませんが、非公開にしたいデータについてはそうです。

ハッシュアルゴリズムのパフォーマンス

「ハッシュアルゴリズムのパフォーマンス」の図に示すように、SHA256はMD5よりもはるかに高速です。

これは考慮すべき優れたリソースです。著者はLinkedInから漏えいしたパスワードを調べます。queue(。)acm(。)org/detail.cfm?id = 2254400&ref = fullrssは、パスワードを保護する方法についてもいくつか示しています。

1
user1652382

パスワードのハッシュとRainbowテーブルの使用の問題は、根本的な弱点を介して悪用されるWebサーバーのセキュリティにかかっています。

まず、これらのすべてのWebサイトは、パスワードが安全かどうかを確認するための簡単なテストを提供することを目的としています...うーん、これらのサイトをフィッシングと見なすことができ、これらのサイトに巻き込まれているすべての人々がRainbowテーブルに餌を与えています。それは問題の一部です。

2つ目は、Webホスティングサービスを利用してお金を稼ぎ、Webサーバーのセキュリティを忘れる人です。これらのホストは壁に立てかけてIMHOを撃つ必要があります。ユーザーログインのセキュリティの一部は、既知のエクスプロイトの使用を阻止するために最新のWebサーバーと基盤となるテクノロジー。

3つ目は、MD5は耐衝突性ではない、または私ができる限り堅牢であることを好む一方で、人々が厚い頭に入ると、悪用可能なシステムを実行しているWebホストがない限り、ユーザーアカウントがハッキングされることは依然として難しいということです。 、あなたのウェブコーディングは堅牢ではなく、あなたはあなたのパスワードのセキュリティをチェックすると主張するサイトを使用することによってあなた自身を公開します。

前述のシステムとソフトウェアが悪用可能でない限り、大部分のMD5 +ソルト値は、ユーザーがWebフォーラムにログインするのに十分なセキュリティです。脆弱性を悪用したシステムができたら、ソルティングシステムを使用しない既知のハッシュ値のクエリを実行すると、4番目の脆弱性、つまりエンドユーザーが明らかになります。

4番目はエンドユーザーです。Webセキュリティは、最終的には最も弱いリンクと同じくらい強力です。多くの場合、エンドユーザーはそれと同じように見えます。管理者は、システムのエンドユーザーであり、同様に脆弱であることを覚えておく必要があります。簡単に壊れるルーズなプログラミングやソフトウェア、貧弱なパスワードセキュリティを採用し、そのADMINログインの変更に失敗したり、現在も管理者ログイン名を管理者として保持し、スーパーユーザーアカウントを使用することを主張するソフトウェアを使用して、システムセキュリティを危険にさらしています。

言うまでもなく、MD5はクラックされず、弱いユーザー、弱いソフトウェア、および人々がテクノロジーを理解できないことによってリバースエンジニアリングされます。 MD5がクラックされている場合、SHAおよびAESなども同様です...

0
Mark Giblin