今日、誰もどんな用途でもmd5を守る勇気はありません、そしてもちろん彼らはそうすべきではありません!
ただし、一般的なソフトウェアの多くは、パスワードハッシュなどのアプリケーションでまだmd5を使用しています(ただし、シンプルでプレーンなmd5ではなく、おそらくソルト+キーストレッチなどの高度な手法を使用しています)。たとえば、Drupal CMSはmd5を使用しており、他の多くのプログラムがまだmd5を使用していることを知っている限り、Apacheが使用していると思います。たぶん。)
どうしてこれなの?耐えられますか?
これらは、長年にわたる開発と情報に基づいた開発者がいる、プロフェッショナルで人気のあるプログラムのようです。
MD5の残りのほとんどの使用法は、よく知らない開発者によるものです。あなたがこのサイトを頻繁に読んでいる場合、すぐに使用する「デフォルト」のハッシュ関数がSHA-256であることがわかります。それが暗号学者や標準化団体が推奨することです。しかし、MD5を使用したり、MD5を提案したり、MD5について質問したり、ガイダンスを探している人々の明らかに無限のストリームに気付くでしょう。この意味は:
ほとんどの開発者はdevelopmentを行い、セキュリティについては熟練していません(そして、ほとんど気にしません)。 「通常の」開発方法(つまり、ほとんどの開発者の作業方法)は次のとおりです。
Webサイトと関連アプリケーションの95%(少なくとも)がそのように開発されていることは不思議ではありません。しかし、WebはMD5でいっぱいです。したがって、ほとんどのアプリケーションもMD5でいっぱいになります。また、上記の4番目のポイントのため、WebはMD5でさらにいっぱいになります。
ほとんどの場合、MD5を置き換える緊急性はありません。MD5は collisions に関して完全に壊れていますが、まだ(ほぼ)preimagesの新品同様です。また、 [〜#〜] hmac [〜#〜] と派生物( PBKDF2 を含む)で使用することは依然として問題ないようです。衝突は多くの場合問題ではありません(これにはパスワードハッシュが含まれます。パスワードハッシュのMD5の問題は衝突ではなくspeedです)。そのため、MD5はその素晴らしさをはるかに超えており、新しいアプリケーションに使用することはできませんが、MD5の既存の使用法の多くは依然としてかなり堅牢であり、緊急アップデートを保証していません。パニックにならない。
古い習慣は死ぬ。 md5が壊れていることに気づいていない、または気にしない人もいます。 md5の使用が脆弱ではない場合もあります。 md5は、データの整合性のために使用したり、乱数を生成したりできます。
MD5はまだチェックサムの計算とデータの検証に使用されていると思います。しかし、MD5とSHA-1はパスワードのハッシュに適した候補ではありません。それらは計算が速く、衝突を見つけることはもはやタスクのそれほど難しくありません。
古いソフトウェアは、互換性の理由からMD5を保持する場合もあります。つまり古いバージョンのソフトウェアは、データおよび/または通信プロトコルでMD5を使用していました(無知のため、またはソフトウェアの作成時にMD5がまだ安全であると見なされていたため)。現在、新しいバージョンでは、少なくとも下位互換性のためにMD5をサポートする必要があります。
また、より新しいハッシュをサポートするためにファイル形式や通信プロトコルをアップグレードするコストを回避したり、古いバージョンのソフトウェアの上位互換性を明示的に保持したりすることもできます。
ユースケースでの衝突を気にしない場合でも、MD5は完全に問題ありません。
アプリケーションが衝突攻撃(または計算の高速)を気にしていない場合でも、コンサルタントがMD5を別のものに変更するようにアドバイスした場合、彼は何を話しているのかわからないため、別のコンサルタントを雇う必要があります。
「セキュリティ業界」の何人が衝突攻撃、プリイメージ攻撃、2番目のプリイメージ攻撃の違いを知らないのかは驚くべきことです。
私はグーグルで「linux checksum」と入力しました、そして、1番目と3番目のヒットはタイトルに「md5」を持っています。例を参照しても同じです。古いマニュアル、古いチュートリアル、そして多くの古いオープンソースプログラムがあり、PHPを学ぶ人々の基礎として使用されています。 Unixフレーバーにはmd5コマンド、データベースにはmd5関数などがあります。
非常に多くのPHP開発者は学問的なバックグラウンドを持たない自己学習者であるので、例は彼らが学ぶ方法であることに注意してください。数か月後、MD5とチェックサムを同義語と見なすことさえできます。
実際、MD5を使用している開発者が多く、パスワードのプレーンテキストを格納できる代替手段があるので、満足しているはずです。私の同僚は1つのプロジェクト(公開サイト)で働いていて、パスワードがプレーンテキストで保存されていることを発見しました!これは実際の例であり、セキュリティの認識がいかに低いかを示しています。