ハッシュ値の有効性 ITに疎い裁判官が起こした問題萩原栄幸が斬る! IT時事刻々(1/2 ページ)

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

» 2011年09月10日 08時00分 公開
[萩原栄幸,ITmedia]

本コラムは、情報セキュリティの専門家・萩原栄幸氏がITとビジネスの世界で見落とされがちな、“目からウロコ”のポイントに鋭く切り込みます。


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

「ハッシュ」とは何か?

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

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


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

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

  1. ハッシュ値の長さは固定だが、原本データはパスワードのように短かったり、何Gバイト以上もある巨大ファイルだったりとさまざまであるのが一般的。ハッシュ値は論理上、同じ値になる可能性があり(「衝突」という)、その可能性は論理と同じほどに低い
  2. 改ざんなどを避けるために、非常に量のある「原本」といえども、その中の1文字だけが異なった場合にもハッシュ値はまったく別の値になっていることが望まれる
  3. ハッシュ関数は論理的には非可逆であり、一方向性関数(ハッシュ値から原本の生成は不可能)である。ただし現在は、後述する状況になっているので絶対だとは限らないが、原則的には正しい

 である。

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

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

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

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ