ファイル比較でmd5は信用できるか

ファイル同期に問題があって、同期元と同期先で25GBのファイルが同じものか確認する為に
md5チェックサムを取得して「2つのファイルは同一のものです。」と報告したところ、
チェックサムが同一でも異なるケースがあるとある方から指摘を受けたのでググッてみました。

 

ITProの記事(第4回 ハッシュ関数 2007/12/11)によると、
===============================================================
一般的には,ハッシュ値の長さがNビットのときには,1/2のN/2乗の確率でハッシュ衝突が起きるといわれてます。SHA-1だと280回程度,MD5だと264回程度の試行で,目的のハッシュ値を出力できる入力値を見つけ出すことができます。
例えば,配布されているFedora CoreのISOイメージのハッシュ値は,SHA1SUMというファイルに格納されています。偽物のISOイメージを作るには,原本と同じSHA-1値を出力するように短い“詰め物”ビットを加えればよいだけなのです。このような改ざんは「誕生日攻撃」といわれます。「誕生日が重なることはないだろう」という,人間の思い込みを突いたことに由来します。
Fedora Core 3のISOファイルまでは,ハッシュにMD5が使われていましたが,Fedora Core 4以降はSHA-1に変更されました。現在では,さらに長いハッシュ値を出力するSHA-2(SHA-224,SHA-256,SHA-384,SHA-512の総称)への移行が推奨されています。
===============================================================

とあります。確かに違うファイルでもハッシュ値が同じになるケースはあるようです。
しかし、md5(128bit)の場合、衝突確立は2の64乗分の1とかなり低いことがわかりました。
意図的に改竄する場合はわりと簡単にできてしまうようですが、ファイルが壊れたかどうか確認するという目的で
使用する場合にはmd5チェックサム値とファイルサイズの2点が一致していれば同じファイルであると判断しても良さそうです。

Comments are closed.