1年半に渡り携わってきたDARAPA(米国国防高等研究計画局)が胴元となったSIEVE(Securing Information for Encrypted Verification and Evaluation)プロジェクトが幕を閉じました。
このSIEVEはゼロ知識証明のフレームワークとなるもので、端的に言えば、証拠を公表せずに証明を実施できるという代物です。私自身は、プロジェクト内で作られるフレームワークの応用面の開発に重点を置いて携わりました。
例えば、アップルはiCloud上の児童ポルノ画像への規制策を発表しており(現状延期されているようですが)、NCMEC(National Center for Missing & Exploited Children)と呼ばれる児童保護団体が提供する規制対象の画像に一致・類似する画像をiCloudに保有していた場合、摘発の対象になるというものです。
摘発時には、その画像がNCMECや法的機関に公表されることになるため、ある意味個人情報の漏洩に繋がります。正しい摘発なら良いのですが、エラーであったり、恣意的な間違いがあることも可能性としては否みようがありません。そもそも本当にNCMECから来た画像だけを対象に、iCloud上で照合しているのかすら不明なわけです。そこで、今回SIEVEプロジェクトで開発されたフレームワークを使えば、アップル側のサーバーでNCMECの画像のみを使って正しく照合がなされたということを、NCMECの画像もiCloud上の画像も誰にも見せることなく、その照合過程が正しいものであったと証明することが可能です。
同様に、裁判での証拠書類の検証や著作権侵害なども著作物や証拠書類を開示することなく、その真偽を証明することができ、実社会における応用範囲の裾野の広いフレームワークとなっています。
ゼロ知識証明はどのような仕組みか
ゼロ知識証明自体は名前からして難解ですが、簡素化すれば容易に理解できます。
昔どこかのレストランで食べた忘れられない味(例えばオニオンスープ)をイメージしてみてください。
誰が作ったのか、どんな材料が入っていたのか、どーしても思い出すことができませんが、是非ともまた食べたい。
そんなあなたの目の前に「あの時作ってたのは私だ」と名乗り出るシェフが現れます。自信満々の様子ですが、レシピは極秘情報だと言って聞きません。
さて、どうしましょう。このシェフを信じたくても信じる根拠がありません。
もし仮に、必要な材料をあなたには見せないものの、あなたのよく知る家のキッチンでこのシェフがあの味を再現できたなら、皆さんはこのシェフを信じざるを得ないのではないでしょうか。
シェフが証明者であり、あなたが検証人で、材料(インプット)は秘密ですが、あなたのキッチンという環境であなたの知る機材を使って(調理過程が既知)、「あの味」(アウトプット)を完成させたわけです。
専門的なことはさておき、これがゼロ知識証明システムの簡単なイメージで、これをプログラムとして実装します。このGitHub Repoにて、実際に作成したPythonプログラムを公開していますので、ご興味ある方はご参考下さい。
あとがき
この最先端の分野におけるソフトウェア開発の進化する需要に対応し、プロジェクト完遂のためたくさんの読書とリサーチをしましたが、その中で主任教授であるMayank Varia教授(およびその博士課程学生のJulie Ha氏)やpicozkの作者である Joseph Near教授から貴重なサポートを受けました(picozkは我々の作成したアプリからIR(中間)ファイルを生成するのに必要なLibrary)。また、生成したIRファイルを用いて証明プロセスを実装するのに不可欠だったバックエンドやテストシステムの提供をしてくれたGALOIS社、Stealth社、MIT Lincoln Labにもこの場を借りて感謝の意を表したいと思います。