See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
MD5 - Wikipedia

MD5

出典: フリー百科事典『ウィキペディア(Wikipedia)』

MD5(エムディーファイブ、Message Digest Algorithm 5)とは、与えられた入力に対して128ビットのハッシュ値を出力するハッシュ関数である。

目次

[編集] 概要

1991年に開発されたMD5は、前身であるMD4の安全性を向上させたものである。開発者はMD4と同じく、MIT教授のロナルド・リベスト

Linuxでは md5sum、FreeBSDでは md5 というコマンドが用意されており、これを用いてメッセージダイジェストを出力することが出来る。出力されるメッセージダイジェストは、

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

の様に16進数の数字が並んだテキスト形式で出力され、これをフィンガプリント(指紋)やハッシュ値、あるいは単にMD5値と呼ぶ。「MD5チェックサム」とも良く言われる。

[編集] 用途

MD5は、電子署名を必要とするアプリケーション向けに開発された。RSAで署名を生成する際に、メッセージを直接対象として署名を生成するのではなく、メッセージのハッシュ値を生成し、ハッシュ値に対して署名を生成する。

フリーソフトウェアの世界に於いては、ファイルをダウンロードする際にそのファイルが破損していないことを確認する為にも用いられる。 配布する側は、ファイル配布時にそのファイルのMD5ハッシュ値(いわゆるMD5チェックサム)も同時に配布する。ダウンロードしたユーザは手元でファイルのMD5値を計算して、配布者の提示したMD5値と一致することを確認すれば良い。 このような目的にCRCを用いることもあるが、CRCは標準が複数存在するため現在ではあまり見られない。

またファイルが改竄されていないことを証明するためにも用いられる。これにより、作成者以外によるトロイの木馬コンピュータウイルスなどの混入を防ぐことが出来る。 しかしながら、この場合MD5値は手元で計算できるのだから、改竄済みのファイルのMD5値が同梱されている可能性がある。従って、改竄の恐れがある場合には、ファイルに同封されているMD5値と比較するのではなく、MD5値だけは何かしら信頼できる方法で配布者から入手する必要がある。

[編集] 実際の使用例

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

  1. 配布サイトから、ここでは 5.1-RELEASE-i386-miniinst.iso という最小構成のインストールイメージファイルと、CHECKSUM.MD5 というMD5値(いわゆるMD5チェックサム)の書かれたテキストファイルをダウンロードする。
  2. md5 コマンドを、イメージファイルに実行する。
    localhost% md5 5.1-RELEASE-i386-miniinst.iso
    MD5 (5.1-RELEASE-i386-miniinst.iso) = 646da9ae5d90e6b51b06ede01b9fed67
  3. 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ではなく、SHA(Secure Hash Algorithm)を標準のハッシュとして使用している。 日本のCRYPTRECでは、MD5を政府推奨暗号リストから外し、SHA-256以上を推奨している。

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

IPA:APOP におけるパスワード漏えいの脆弱性
Software Integrity Checksum and Code Signing Vulnerability

[編集] ハッシュの衝突耐性について

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

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

強衝突耐性の突破とは例えば、同一のハッシュ値を持つ非ユニークな2つのデータ列D1:「がslfdぎあlsりtc…」とD2:「え05t9う゛ゅ30tう゛8えもぎrう゛s…」のペアを1つ発見できた、ということである。なお、この場合D1やD2が意味を持つデータであるかどうかは問われない。また、データ列D3:「東京都特許許可局」のハッシュ値がH'であったとして、この特定のハッシュ値Hに対して、同一のハッシュ値を持つような他のデータ列D4:「sどおりうおおいじぇrといrがkjがms…」を発見できたとしたら、それは弱衝突耐性を突破された事を意味する(即ち、D3とHの組み合わせで無改竄性を証明できなくなる)。

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

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

[編集] 参考文献

  • R. Rivest, "The MD5 Message-Digest Algorithm", RFC 1321, April 1992.
  • Hans Dobbertin, "The Status of MD5 After a Recent Attack", CryptoBytes Volume 2, Number 2, pp.1,3-6, Summer 1996. [1]
  • Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu, "Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD", IACR ePrint #199, Augst 17 2004. [2]

[編集] 関連項目

[編集] 外部リンク


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -