第4回未来科学大賞で多額の賞金が、数学者、王小雲に授与され、彼女の名前がにわかにメディアに注目をされた。王小雲は2004年に米国のハッシュ関数「MD5」の脆弱性を発見した研究者だったと資訊咖が報じた。
ネット社会に必須のハッシュ関数
デジタル時代、ハッシュ関数はさまざまなところで使われる。最もよく知られているのは、パスワードの保管や書類の改竄検知などだ。
ハッシュとは「混ぜこぜ」という意味で、元のデータを混ぜこぜにして、まったく別のデータに変換をしてしまうというものだ。例えば、「元の数値を2倍にして1を引く」という単純なアルゴリズムでもハッシュ関数に近いことができる。2であれば3になるし、7であれば13になる。元の数字とは異なったものになる。
しかし、これでは何かの役に立つことはできないため、暗号学者、数学者たちは、複雑なアルゴリズムを考案し、ハッシュ関数としてさまざまな応用をしてきた。このハッシュ関数には2つの性質が必要とされる。
ひとつは、変換結果が固定長、つまりどんな数値を入れても、桁数が同じになるという性質だ。変換結果の桁数を10桁にするのであれば、1桁の数字を入れても、123桁の数字を入れても、出力結果は必ず10桁になる。これにより、出力データが扱いやすくなり、実用性が高まる。
もうひとつは、異なる数字を入れたら異なる結果が出るという性質だ。異なる入力でも、偶然、同じ結果になることがないようにアリゴリズムを考える。これにより、入力と出力は1対1に対応することになり、実用性が高まる
この2つの性質は、自然とそうなるというのではなく、そうなるようにアリゴリズムを考案する。このような関数がハッシュ関数と呼ばれ、電子署名などに使われる。米国ではMD5と呼ばれるハッシュ関数が国家標準として使われてきた。しかし、脆弱性が発見をされ、1993年に新しいハッシュ関数「SHA-1」に移行、さらにこれにも脆弱性が発見されたため、2001年からはSHA-2に移行をしている。
パスワード保存、改竄検知に使われるハッシュ関数
ハッシュ関数が最もよく使われるのは、パスワードの保存だ。サービスの運営会社は、利用者のパスワード一覧をどこかに保管をしておかないと、利用者がパスワードを入力した時にそれが正しいかどうかを判定することができない。しかし、生のパスワードを保管しておくのはいろいろ問題がある。ひとつは、その保管データが流出をした場合、サービスが継続できなくなるレベルの致命的な事故になる。また、運営側が利用者のパスワードを知ることができる状態も問題になる。内部に悪意のある人間がいた場合、利用者になりますしてログインできてしまうからだ。
そこで、多くのサービスでは、利用者がパスワードを決めたら、それをハッシュ関数で変換し、その変換結果だけを保管しておく。ハッシュ関数は一方向関数なので、変換結果から元のパスワードに戻す方法はない。利用者がログインした時は、(利用者が正しいと思う)パスワードを入力するので、それをハッシュ関数で変換し、保存してある変換結果と同じであるかどうかで、正しいパスワードが入力されたことを判定する。
もうひとつよく使われるのが、書類の改竄検知だ。書類をつくったら、そのデータを丸ごとハッシュ関数に入力し、変換結果を記録しておく。もし、誰かが書類の改竄を行うと、それが文章に空白を1つ入れただけでも、ハッシュ関数の変換結果はまったく違ったものになってしまう。これにより、書類が改竄されたことがわかるのだ。
米国の標準ハッシュ関数を破った中国の女性数学者
1991年に、公開鍵暗号「RSA暗号」の開発者の一人であるロナルド・リベストにより考案された暗号学的ハッシュ関数「MD5」は非常に優れていたため、インターネットの世界で標準的なハッシュ関数として用いられていた。しかし、2004年にMD5の脆弱性を指摘したのが、中国の数学者、王小雲(ワン・シャオユイン)だった。
1966年に生まれた王小雲は子どもの頃から数学に興味を持ち、1983年に山東大学の数学科に入学をした。そのまま大学院に進学をし、卒業後は山東大学の講師となった。その時、恩師から暗号学を研究するように勧められ、彼女は新しい分野に没頭をするようになった。当時の暗号学は、米国が最先端で、中国は大きく遅れていたこともあって、国家に貢献できるのではないかとも考えたという。そこで研究対象としたのが暗号学的ハッシュ関数だった。
MD5にコリジョンを発見した王小雲
2004年、王小雲はMD5にコリジョン(衝突)が発生することを発見した。コリジョンとは、別々の入力が同じ変換結果になってしまうという例だ。
ハッシュ関数は変換結果が固定長であるために、衝突が起きることは避けられない。例えば、変換結果が「日付」という“固定長”であった場合、367人の誕生日は、どうしてもどこかで同じになる、つまり衝突が起きることが避けられない。
そのため、いかにこの衝突が起きないようにアルゴリズムを設計するかが、ハッシュ関数開発のキモになっている。
この研究結果は、米国の暗号学者に衝撃を与えた。衝突の例が発見されることは想定をしていなかったからだ。そこで、NSA(国家安全保障局)が開発したハッシュ関数「SHA-1」への移行が進められたが、その半年後、SHA-1でも衝突例が発見されてしまった。そのため、さらに改良をしたSHA-2が現在でも使われている。
コリジョンによりハッシュ関数の信頼性は失われる
衝突の例が発見されたぐらいで、なぜ米国は慌てたのか。それは衝突があるということは、そのハッシュ関数に対する信頼性は失われたことに等しいからだ。
例えば、重要な契約書の改竄ができるようになってしまう。悪人が、契約書に電子署名をさせ、その内容を改竄して自分の都合のいい契約内容にしてしまおうと考えたとする。悪人は、まず正規の契約書と、改竄をした契約書の2つを用意する。そして、それぞれに人間の目にはわからない透明の文字や空白などを入れた無数のバリエーションを生成させ、それぞれにハッシュ値を計算させる。すると、じゅうぶんに数が多ければ、正規の契約書と改竄をした契約書で、ハッシュ値が同じになるペアが見つかる。
これを使って、正規の契約書で署名をさせ、それを改竄した契約書にすり替えても、ハッシュ値は同じであるので、改竄をしたことが発覚をしない。
現実にそんなことをするのは簡単ではないとは言え、それが可能であるということが、暗号学的ハッシュ関数としての信頼を失わせてしまうのだ。現在では、衝突探索をする手法も改良されて、MD5のハッシュ関数を2の20乗回計算する演算量で衝突ペアを発見できるようになっている。これは標準的なノートPCで約1秒程度で計算ができる程度のことになっている。
大きな騒ぎになった王小雲の発見
2004年、2005年に王小雲が立て続けに米国の暗号学的ハッシュ関数の脆弱性を指摘したことは、暗号学研究者の間で驚きを持って迎えられた。2004年8月、暗号学の国際会議CRYPTO2004での王小雲の報告は、衝突事例を報告しただけのものであり、どうやってその事例を発見したかの詳細については述べられなかった。しかし、報告事例は確かにハッシュ値が同じになっている。そのため、もちろんジョークだが「中国の魔術を使ったのではないか」と言い出す人までいた。2005年5月のEUROCRYPT2005で、王小雲がその衝突を発見する手法の詳細を明らかにしたことにより、暗号学の分野では大騒ぎになった。
暗号学の分野ではまったくと言って実績のない中国の、それもまったく無名の研究者によって脆弱性が指摘をされたからだ。
知られざる暗号研究者「王小雲」
これは米国と軍事的に対立をする中国という国家にとっても快挙だったが、一般の人たちにはなじみのない分野でもあり、王小雲の名前が広く知られることはほとんどなかった。
王小雲は2018年に、中国独自のハッシュ関数「SM3」を開発する。これにより、2019年に、中国政府が主催する第4回未来科学大賞で711万元(約1.4億円)の賞金を獲得した。そこからメディアも王小雲に注目をするようになり、彼女の名前が広く知られるようになった。特に、MD5の研究をしている時、彼女は妊娠をしており、医師からPCの利用時間を制限される中での快挙だったエピソードが知られるようになると、活躍をする女性研究者としても知られるようになっている。王小雲は現在は後進の育成に従事をしている。