MD5 とは何か?

6月 21, 2020 セキュリティとコンプライアンス, MOVEit

MD5 は、何年も前からエクスプロイトされてきたにもかかわらず、今日でもハッシュ関数として使用されています。MD5 とは何かについて、その歴史と今日の使われ方を考察してみたいと思います。

現在のコンテンツ管理システムが、パスワードの保護や保存のために MD5 ハッシュスキームに依存していないかどうか、チェックしてください。     

ZDNet は、主要な CMS システムの25%以上が、ユーザーパスワードの保護と保存のデフォルトとして、古くて時代遅れの MD5 ハッシュスキームを使用していると報告しています。CMS のソースコードを修正してデフォルト設定を変更しない限り、ハッカーがサイトのデータベースに侵入した場合、CMS で実行されている Web サイトのユーザーパスワードを危険にさらすことになります。

暗号学者である MIT の Ronald Rivest 教授によって1991年に最初に作成された MD5 は、技術的にはメッセージダイジェストアルゴリズムとして知られています。MD5 は、ハッシュ関数として、一連のデータをハッシュ値と呼ばれる固定サイズのビット文字列にマッピングします。ハッシュ関数には様々なレベルの複雑さと難易度があり、暗号通貨、パスワードセキュリティ、メッセージセキュリティに使用されます。

前身の MD2 および MD4 と同様、MD5 は、128ビットのハッシュ値を生成します。その主な目的は、ファイルが変更されていないことを確認することです。MD5 は、生データを比較して2つのデータセットが同一であることを確認する代わりに、両方のセットでチェックサムを生成し、チェックサムを比較してそれらが同じであることを確認します。

MD5 エクスプロイトの歴史

MD5 は、その弱点をついてエクスプロイトされてきました。有名な事件としては、数年前に Flame マルウェアで発生したケースがあり、世界の多くの大企業に影響を及ぼしました。eWeek によれば、Flame マルウェアに寄与しているハッカーグループが、MD5 ハッシュ関数の既知の弱点を利用して、Microsoft の Windows Update サービスの有効な証明書の偽造に成功しました。

証明書管理会社である Venafi が、潜在的な損害を検証するために、当時 Global 2000 にリストされていた 450社をスキャンしました。その結果、全社が自社ネットワークに関連付けられた MD5 証明書を持っていることが判明しました。全体で、サーバー、コード、および VPN アクセスの署名に使用される証明書の17%以上が、依然として MD5 アルゴリズムを使用していることがわかりました。

過去の重大なデータ侵害のうちの2つが MD5 に関連しています。2013年、ソーシャルウェブサイト Badoo に起因するとされるデータ侵害が広まったことが判明しました。侵害には、1億1200万のユニークな電子メールアドレスと、MD5 ハッシュとして保存された名前、生年月日、パスワードなどの個人情報が含まれていました。2016年には、中国のビデオサービス、Youku の、9,200万のユニークなユーザーアカウントと MD5 パスワードハッシュが漏洩しました。

最近でも昨年に、ボットプロバイダ EpicBot の817,000の RuneScape サブスクライバーのデータが、同社の以前のデータ侵害と同じハッキングフォーラムにアップロードされたことが、InfoSecurity Magazine で報告されています。侵害された情報には、ソルト化された MD5 または bcrypt ハッシュとして保存されたユーザー名、電子メール、IPアドレス、パスワードが含まれていました。

有効な MD5 の用途

暗号化機能として設計されてはいても、MD5 の脆弱性は確認されており、アクセスを許可するためにパスワードを使用するCMS、Web フレームワーク、その他のシステムを保護する場合は、MD5 は避けた方がいいでしょう。MD5 は、同じ値にハッシュする2つの異なるメッセージを見つけることが計算上実行不可能であるという要件を満たしていません。このような衝突は数秒で見つかる可能性があります。

ただし、上述のようなデータ侵害が起きてはいるものの、意図的でない破損が生じていないかをチェックする標準のファイル検証やデータの整合性を検証するためのチェックサムとして MD5 を使用することはできます。また、パーティションされたデータベース内の特定のキーのパーティションを決定するなど、他の非暗号化の目的で使用するのにも適しています。

やはり避けた方が無難

広く使用されてきた MD5 に脆弱性があることが判明したことで、MD6 ハッシュアルゴリズムが登場しました。しかし、MD5 への不信感が払拭し切れないためか、MD6 はあまり使われることがないまま低迷しているようです。MD5 に代わる利用可能な代替手段としては、SHA-2 や SHA-3 などの非常に複雑なシステムや、BCRYPT、SCRYPT、Argon2、CABHA、WhirlPool、RIPEMD-160などがあり、無料でダウンロードできます。

システムに対するハッシュ攻撃が実際に行われる可能性については、たとえ MD5 を使用していても、確率的にはそれほど高くはありません。ハッシュ攻撃は、2つの別々の入力が同じハッシュ出力を生成する場合にのみ発生しますが、ハッシュ関数には無限の入力長と事前定義された出力長があるため、衝突が発生することはまれです。また、ハッシュ値が長いほど、ハッシュ攻撃の可能性は低くなります。

それでも、カーネギーメロン大学、ソフトウェアエンジニアリングインスティテュートは、ソフトウェア開発者、認証局、Web サイトの所有者、そしてユーザーも、どんな場合においても MD5アルゴリズムを使用するべきでないと警告しています。以前の調査で実証されているように、MD5 は暗号的に破られていて、今後の使用には不適切であると見なされるべきです。

サイバー犯罪者が MD5 を使用しているシステムを見つけたら、すぐに攻撃を加えようとするであろうことは明白であり、脆弱性のある暗号化ハッシュアルゴリズムを継続して使用していると、サイバー攻撃の危険にさらされる可能性があります。

Greg Mooney

Greg is a technologist and data geek with over 10 years in tech. He has worked in a variety of industries as an IT manager and software tester. Greg is an avid writer on everything IT related, from cyber security to troubleshooting.

Read next 電子メールと EFSS の安全性問題