MD5 MD5の概要

MD5

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/06/20 07:31 UTC 版)

ナビゲーションに移動 検索に移動
MD5
一般
設計者 ロナルド・リベスト
初版発行日 1992年4月
シリーズ MD2, MD4, MD5, MD6
詳細
ダイジェスト長 128 bit
構造 Merkle-Damgård construction
ラウンド数 4 [1]
最良の暗号解読
2009年にTao Xie、Dengguo Fengによって衝突耐性が破られている (220.96 time)。通常のコンピュータで数秒で可能[2]

概要

MD4が前身であり、安全性を向上させたものとされている(いずれにしろ2018年現在、暗号学的ハッシュ関数として必要な強度が要求される目的に使ってはいけない)。1991年に開発された。開発者もMD4と同じくロナルド・リベスト

システムにもよるが、md5summd5 というような名前のコマンドで、

d41d8cd98f00b204e9800998ecf8427e (入力データ長が0バイトの場合)

のようにハッシュ値が得られる。

用途

一般的な暗号学的ハッシュ関数の用途と同じであり、MD5として特筆事項は無い。ただし後述の脆弱性について確認のこと。いずれにしても2018年現在において、弱点が発見されていることを筆頭に暗号学的ハッシュ関数として必要な強度は既に残っていないので、強度が必要な場合には使ってはいけない(あるいは、それが判断できないならば単純に、使ってはいけない)。

実際の使用例

FreeBSDはインストール可能なCDイメージと、それのMD5値を同時に配布している。(MD5値の改変はないと仮定して)インストール可能なCDイメージが、途中で改変されていないことを確認してみる。

  1. md5 コマンドを、イメージファイルに実行する。
    localhost% md5 5.1-RELEASE-i386-miniinst.iso
    MD5 (5.1-RELEASE-i386-miniinst.iso) = 646da9ae5d90e6b51b06ede01b9fed67
  2. CHECKSUM.MD5の中身を確認し、一致していれば破損の可能性は極めて低いことが分かる。
    localhost% cat CHECKSUM.MD5
    MD5 (5.1-RELEASE-i386-disc1.iso) = 3b6619cffb5f96e1acfa578badae372f
    MD5 (5.1-RELEASE-i386-disc2.iso) = 2cfa746974210d68e96ee620bf842fb6
    MD5 (5.1-RELEASE-i386-miniinst.iso) = 646da9ae5d90e6b51b06ede01b9fed67

安全性

MD5、およびRIPEMDとよばれるハッシュ関数には理論的な弱点が存在することが明らかとなっている(外部リンク参照)。

2004年8月、暗号の国際会議 CRYPTO (のランプセッション)にて、MD5のコリジョンを求めることができたという報告があった。理論的可能性として、MD5を用いて改竄されないことを確認する場合、あらかじめ正規のファイルと不正なファイルを用意しておき、正規のファイルを登録しておきながら、実際には同じMD5を持つ不正なファイルに摩り替える攻撃がありえることを意味する。また2007年11月、2つの全く異なる実行ファイルを元に、各々の末尾にデータブロックを付加し、その部分を変更しながら探索を行うことにより、同一のMD5を持たせることに成功したという報告があった。この攻撃方法は実証されたことになる。

アメリカ合衆国政府では、MD5ではなく、Secure Hash Algorithm (SHA)を標準のハッシュとして使用している。 日本のCRYPTRECでは、MD5を政府推奨暗号リストから外し、SHA-256 (SHA-2のバリエーション) 以上を推奨している。

ハッシュの衝突耐性について

MD5 のハッシュ値については、パソコンレベルでも数10分程度で、同一ハッシュ値の非ユニークなデータ列を生成できる実装が広まっている。すなわち、強衝突耐性は容易に突破されうる状態にある(SHA-0/SHA-1アルゴリズムについても、MD5ほど容易ではないが突破される脆弱性が発見されている)。

ただし、任意に与えられたハッシュ値に対して、(何らかの別の)データを生成する実装が広まっているわけではないので、弱衝突耐性が容易に突破されうる訳ではない。また、任意に与えられたハッシュ値に対して、改竄者の意図どおりのデータ列を容易に生成できる訳でもない(もしそうならば、それは既に暗号ではない)。

強衝突耐性の突破とは例えば、同一のハッシュ値を持つ非ユニークな2つのデータ列D1とD2のペアを1つ発見できた、ということである。なお、この場合D1やD2が意味を持つデータであるかどうかは問われない。また、データ列D3のハッシュ値がHであったとして、この"特定の"ハッシュ値Hに対して、同一のハッシュ値を持つような他のデータ列D4を発見できたとしたら、それは弱衝突耐性を突破された事を意味する(即ち、D3とHの組み合わせで無改竄性を証明できなくなる)。

そのため、直ちにこれらのハッシュアルゴリズムを用いている暗号化通信が盗聴・改竄されたり、電子署名の有効性が無くなると言うわけではない。しかし、強衝突耐性が突破されたという事は、将来的には攻撃手法や計算能力の進化により、弱衝突耐性も突破されうるという事を暗示する。もし弱衝突耐性が突破されたとしたら、もはや暗号化通信や電子署名の無改竄性を証明できなくなり、その暗号化・署名システムは(半ば)死を意味する。

また、暗号化・署名システムのintegrity(例えば最良攻撃手法に対して十分に頑強であるという事)にハッシュ強衝突耐性の突破が困難であるという前提がもし有った場合には、そのシステムのintegrityも当然に失われる事になる。Integrityを要求されるシステムでは、その再検証が最低限必要となる。

APOPの脆弱性

2007年4月IPAはAPOPの脆弱性について警告した[3]。これは電気通信大学の太田和夫(暗号理論)らが発見したもので[4]、APOPのプロトコル上の弱点を利用して、MD5ハッシュから理論的に元のパスワードを求めることが出来るというものである。これの対策としては、SSLの利用が推奨されている。(総当たり攻撃法によるツールは既に公表されている)

Flame攻撃に関して

2012年4月に発覚した「Flame攻撃」(Microsoft Updateに対するなりすまし攻撃)において、一部のデジタル証明書の署名アルゴリズムにMD5が使われていたことから、MD5 の衝突耐性に関する脆弱性をついて、デジタル証明書の偽造が行われたように一部媒体では報道されている[5]

しかし、米ソフォス (Sophos) 社の記事によると[6]マイクロソフトがコード署名に使用できるデジタル証明書であって、ターミナルサーバーライセンスインフラストラクチャ(中間Certificate Authenticity)上で使用できるものを、誤って発行していた事が原因とされている。また、Flameマルウェアが攻撃に使用したデジタル証明書を入手した経路、また前述の MD5 で署名された証明書をクラックして偽造したものであるか否かは明らかになっていないとしている。一方マイクロソフトは、Windows Vista以降のバージョンにおけるコード署名の検証を回避するためには攻撃者が MD5 の衝突を利用して特定の拡張フィールドを削除する必要があったとしている[7]

マイクロソフトは2012年6月5日に、問題となったターミナルサーバーライセンスインフラストラクチャの中間Certificate Authenticityを無効化するセキュリティアップデートを公開している[8]






「MD5」の続きの解説一覧



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「MD5」の関連用語

MD5のお隣キーワード

   

英語⇒日本語
日本語⇒英語
   
検索ランキング



MD5のページの著作権
Weblio 辞書情報提供元は参加元一覧にて確認できます。

  
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのMD5 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2020 Weblio RSS