MD5のコリジョン その2

自分の認識をまとめてみるテスト。
先に言っておきますがこれはあくまで私見ですので鵜呑みにしないようにお願いします。私は暗号の専門家でもなんでもありませんよ〜。


ハッシュ関数が備えるべき性質として衝突耐性がある。衝突耐性には強衝突耐性(strong collision resistance)と弱衝突耐性(weak collision resistance)とがある。
強衝突耐性とは「同じハッシュ値を持つデータを作成するのが困難である事」であり、弱衝突耐性とは「あるデータと同じハッシュ値をもつデータを作成するのが困難である事」である。


現在、MD5単体での主な利用というとファイルの正真性確認であろう。正真性の確認とは、そのファイルが提供元から提供されたファイルと同じ内容かどうか(=改ざんされていないかどうか)を確かめる事である。そのため、もし同じハッシュ値を持つファイルを自由に作成できるとすれば、攻撃者はファイルの改ざんやすりかえが可能になる。


今回公開された方法を使用して同じハッシュ値を持つデータを作成する事は可能である。しかしながら、この方法は強衝突耐性への攻撃であるので既存のデータに対して同じハッシュ値を持つデータを作成する事はできる訳ではない。攻撃者がすりかえが可能なデータは攻撃者自身が作成したデータに限られる。つまりデータのすりかえを行うためには、攻撃者はデータの提供者である必要がある。
提供者=攻撃者という状況では、攻撃者はすりかえを行うまでもなく最初から任意のデータを提供できるためハッシュ関数の性能はそもそも問題にならない。これはデータの提供者が信頼できるかどうかの問題である。


また、今回発表された方法では同じハッシュ値を持つデータは作成できるが、データの中身はランダム値になる。ランダム値のデータとは要はゴミデータであるのでこれを悪用する方法はちょっと思いつかない。


現状では、ある意味のあるデータに対し、同じハッシュ値を持ちかつ異なる意味のデータの作成は不可能であろう。あるデータに対しコリジョンを発生させるためには、少なくともデータのパディングが必要になると思われる。
よって、ファイルの正真性確認という使用法においては、ハッシュ値とファイルサイズを併記する事で今後も問題なく使用可能だと思われる。


以上の事から「MD5はまだ大丈夫なんじゃないの」という結論に至っております。
ただし、今回の発表が「強衝突耐性への攻撃である」という認識が間違っていなければの話ですが。
あと、MD5"単体"で、という書き方をしたのはデジタル署名のように別の暗号技術と一緒に使われる場合は、もう一方の暗号も破る必要があるので仮にMD5に問題があってもデジタル書名そのものの問題にはならないと考えたためです。


なんかとりとめなく書いてしまいましたが、間違ってる事とか意味不明な事とか書いてましたらどんどんツッコミ入れていただきたく。m(_ _)m