http://www.itmedia.co.jp/enterprise/articles/1109/10/news001.html

裁判での証拠の真正をITの知識で判断しなければならないケースがある。オーストラリアでのある裁判では、ITの知識を十分に備えていない裁判官が後に禍根を残しかねない判決を下したのだった。

 フォレンジック調査(科学的な調査)などの「原本の真正性」を担保している「ハッシュ値」について、数年前にある裁判でとんでもない判決が出された。外国のことではあるが、筆者にとってはショックであった。今回はその事件について述べたい。
「ハッシュ」とは何か?

 この事件について述べる前に、「ハッシュ値」について少し解説したい。IT専門家にとっても極めて重要なキーワードなので、ぜひご理解いただきたいものである。Wikipediaでは「ハッシュ」の生成計算で用いる「ハッシュ関数」について、次のように定義している。

 「ハッシュ関数(ハッシュかんすう、hash function)とは、あるデータが与えられた場合にそのデータを代表する数値を得る操作、または、その様な数値を得るための関数のこと。ハッシュ関数から得られた数値のことをハッシュ値または単にハッシュという」

 これだけではやや難解なので簡単に言うと、例えば、あるファイルを配布した場合に、「そのファイルが最後の1ビットまできちんと送信されたのか」「送信中にデータの誤り発生が起きていなかったのか」「途中の経路で改ざんされていないのか」「ウイルスでも中に仕込まれていないのか」――これは送信側、受信側ともに最も気になるところだろう。

 その原本の真正性を担保するために、ハッシュ関数を用いてある一定の長さの「ハッシュ値」を求めておき、その値が送信前に計算したファイル全体のハッシュ値と送信後に計算したハッシュ値とで同じであるか確認する。これによって内容が完全に送信されたかが分かるというものである。ハッシュ関数には幾つかの種類があるが、押し並べてその特性は、

・ハッシュ値の長さは固定だが、原本データはパスワードのように短かったり、何Gバイト以上もある巨大ファイルだったりとさまざまであるのが一般的。ハッシュ値は論理上、同じ値になる可能性があり(「衝突」という)、その可能性は論理と同じほどに低い

・改ざんなどを避けるために、非常に量のある「原本」といえども、その中の1文字だけが異なった場合にもハッシュ値はまったく別の値になっていることが望まれる

・ハッシュ関数は論理的には非可逆であり、一方向性関数(ハッシュ値から原本の生成は不可能)である。ただし現在は、後述する状況になっているので絶対だとは限らないが、原則的には正しい

 である。

 さまざまなハッシュ関数の中で一番使われてきたのが「MD5」であり、1991年に開発された。その後に幾つかの脆弱性が発見され、現在では政府の推奨暗号リストからは外されている。2007年には電気通信大学の研究グループが、MD5ハッシュから理論的に元のパスワードを求めることに成功したという報告がなされた。

 現在では「SHA256」以上の耐性の高いハッシュ関数の利用が推奨されている。だが、暗号としての使い方と原本を担保する使い方では明らかに異なるため、推奨されていない脆弱な関数もいまだに利用される機会が少なくない。

 こうした現状で、数年前にオーストラリアである裁判が行われた。


オーストラリアの交通裁判所における判決

 当時、オーストラリアではスピード違反の取締用に設置されていた監視カメラ画像のファイルの真正性を保証する方法にハッシュ関数のMD5が利用されていた。ところが、交通裁判所が何と「交通違反の証拠は無効だ」という被告側の主張を認める判決を下したのである。その理由は、「暗号学会において、MD5に対してある種の攻撃が成功する事例が報告されていたため」というものであった。

 ハッシュ関数での攻撃とは、通常はハッシュの衝突耐性への攻撃を指す。例えば、同一のハッシュ値を持つ全く異なるデータ(仮にXとYとする)のペアを1つ発見できた場合、これを「強衝突耐性の突破」という(研究者により呼称は異なるが)。ここでは論理の問題なので、XとYが有意なデータかどうかは関係ない。また弱衝突耐性の突破とは、ある原本データAのハッシュ値Zと同じハッシュ値を持つデータ(意味のあるなしは問わない)Bを発見することである。いずれもWikipediaの「MD5」に解説があるので、興味のある読者は参照されたい。

 これらの攻撃が仮に成功した場合、暗号としての実装ならば、早めに強固な「SHA1」、もしくはさらに強固な「SHA2」以降に移行すべきだろう。しかし、真正性の評価においては異なる。完全に崩壊するには、原本データMのハッシュ値Sと同じハッシュ値を持ちながら、原本と錯誤するような偽の原本データNを容易に作成できてしまうことが想定される。そういう意味では、現在でも攻撃に成功したという例を筆者は聞いたことがない。

 MD5のハッシュ値については、今のPCで数十分もあれば同一ハッシュ値のデータXとYを生成できてしまうというレベルにある(前述の強衝突耐性の突破が可能)。しかし、学会では「弱衝突耐性の突破」という話題すら聞くことがない。そのような状態で、原本データMのハッシュ値Sと同じハッシュ値を持ちながら、原本と錯誤するような偽の原本データNを容易に作成できてしまうというのは、甚だ眉唾ものである。天文学的な可能性が存在するとはいえ、裁判で証拠画像を認定しないのはどうみてもおかしいと筆者は感じるのである。それを言えば、現在の高度な科学捜査全体を否定することになってしまう。

 指紋照合やDNA判定でも天文学的な可能性を追求し出したら、「衝突」する可能性があるのだ。脆弱と言われるMD5は、原則128ビットのハッシュ値を持つ。つまり、仮に「一様性」が担保されるなら、その可能性は数学上「2の128乗」、つまり、約3.8×10の38乗というまさに天文学的数字となる。実際には脆弱性が発見され、効率の良い衝突計算攻撃も開発されているが、それでも天文学的数字であることには変わりない。DNAや指紋よりも衝突の可能性は低いのである。ただしこの場合は、今後もそれが維持されるかというと、疑問符が付いてしまう実態もある。

 この裁判で裁判官が適正なIT知識を持っていれば、弁護士の主張が全くおかしいものであり、これを認めてしまえば科学捜査の根底を覆してしまう可能性があると分かるはずである。それだけに、この話題は世界的にニュースにもなった。

 IT技術者は常に冷静かつ適切な視点で分析しなければならない。MD5については、いかにもそれが古く使い物にならないと国内で話題になっている。これについて、筆者は批判するつもりは全くなく、その通りだと考えている。しかし現実問題として、このような論理で確実に悪いことを行った人間が無罪になりかねない恐れが生じているのだ。

 例えば、6畳間の空間で偶然にも「大きなかまいたち」のようなものが起き、6畳間の空間が真空になる可能性はどれほどあるだろうか。筆者は学生のころ、教授と計算し合った。確かに理論上はゼロにはならない。だが宇宙がビッグバンによって創世されてから現在までの時間軸(約150億年)に当てはめてみると、ゼロに等しい確率でしかない。

 6畳間にいた人物が亡くなり、被疑者が捕まったとしよう。裁判で被疑者が、「大きなかまいたちのようなものが起きる確率はゼロではない。だから私は殺していない。現場にいたが、本当に彼の周りの空間が偶然にも真空になって彼は窒息死したんだ」と主張して認められるだろうか。オーストラリアでの判決は、筆者にとって何か虚しさが残る印象深い事件であった。


・・・・


技術に詳しく無い者が、司法で起こした記録に残すべき事例。
すべての可能性を考えれば、全て無罪になってしまう。
世の中、妥当性というものがある。

密室で、一人の人間が刃物で刺されて死んだ。
その密室には、一人の成人と1歳にも満たない赤ん坊がいたとする。
彼ら以外目撃者がいない。

成人が「赤ん坊が刃物で刺して殺した」と主張したとき、我々はそれをどう判断するだろうか?

「赤ん坊が殺した可能性は0では無い」ということで、彼を無罪にするだろうか?

たぶん司法官もしないだろう。

それは司法官も含めて、我々がそれはありえないだろうと判断できるからだ。


ところが、「暗号学会において、MD5に対してある種の攻撃が成功する事例が報告されていたため」、「交通違反の証拠は無効」だと言われると、恐らく人によってその妥当性を判断できない人が出てくる。特に「暗号学会」という権威が加われば、「無効」という判断は正しいのかな?と思う人が出てくるだろう。

現時点においても任意に与えられたMD5ハッシュ値に対して、改竄者の意図どおりのデータ列を容易に生成できる訳はない

この事件のケースのMD5への攻撃は「不可能では無いが、現実的では無いもの」を司法は認めてしまったことになる。

言ってみれば、「赤ん坊が殺した可能性は0では無い」ので、成人の主張を認めてしまったのと同じということだ

このような事件が、再び起きないことを望む。