ゼロ知識証明とは自身が持つ知識や命題の真実を、それ以上の情報を提供せずに証明する技術である。「不正していないこと」を保証できることから、これまでミッションクリティカルシステムの構築で培ってきたセキュリティ技術や分散データ処理技術を活用しブロックチェーンの研究開発を加速させる日立にとっても、プライバシーと透明性のトレードオフを解決する手段として急速に進展しつつある。加えて、サーバー計算の検証や電子証明書の一部の情報開示と検証、耐量子計算機暗号など広範なセキュリティ基盤に貢献する技術として期待されているので、量子コンピュータにおいても研究の先頭を切る同社との相性も良い。セキュリティの基盤として、いわば「本当のゼロトラスト」を実現し得るゼロ知識証明の現在と社会実装の可能性について、日立製作所研究開発グループ Digital Innovation R&D システムイノベーションセンタ セキュリティ&トラスト研究部の長沼健 主任研究員に話を伺った。
執筆:森山 和道(サイエンスライター)
ゼロ知識証明 「秘密を知っている」ことを、秘密の内容を漏らさずに証明する
ゼロ知識証明(Zero-Knowledge Proof、ZKP)とは、ある人(証明者)が「特定の秘密を知っている」という事実を、その秘密自体を一切明かすことなく相手(検証者)に証明するための暗号技術である。証明者は「自分は答えを知っている」ことを示せる。だが検証者は「答えが何であるか」については一切の情報を得られない。つまり、ある主張が正しいことを証明するために、その主張の中身(たとえば秘密の情報)そのものは明かさないで済む仕組みが「ゼロ知識証明」だ。
日立でゼロ知識証明の研究を行なっている長沼は「ゼロ知識証明は暗号のコンテキストで長年研究されてきた技術だが、ブロックチェーンに取り込まれてから一気に進んだ」と紹介する。「特にここ1〜2年では、1年が10年分に相当するほどの急激な進歩を遂げ、実用性が大幅に向上している」という。
ゼロ知識証明を使うことで、自分が持っている知識や命題----たとえば「自分は20歳以上だ」とか「暗号の鍵を持っている」ということを、余計な情報を与えることなく他者に証明することができる。
たとえば、「20歳以上だ」ということを証明するときには、運転免許証やマイナンバーカードなどの適当な身分証明書を提示するのが一般的だ。しかしそうすると、単に20歳以上であることを証明したいだけなのに、余計な情報まで漏れてしまう。ゼロ知識証明はこれを防ぐための技術だと考えれば良い。
アリババの洞窟
ゼロ知識証明の概念はとっつきにくく、本当に「ちょっと何を言っているのかわからない」と言われがちだという。
この概念を直感的に理解するために、いくつかの例え話がある。そのひとつが「アリババの洞窟」である。
「暗号の鍵を知っている」ことを証明したいとき、一番単純な方法は鍵を渡すことだ。しかし渡したくないときには、暗号を復号してみせればいい。これを洞窟の出口探索で例えたものである。
「アリババの洞窟」では二つの出口を想定する。この二つの出口は奥で繋がっているが、通路には「呪文」を唱えないと開かない扉がある。この状況で、検証者は洞窟の外で待つ。証明者は洞窟に入って、どちらかの出口から出る。検証者は証明者が秘密の呪文を知っているかどうか疑っており、ランダムに、どちらからの出口から出てくるよう要求する。
この要求に証明者が何度でもこたえることができたら、検証者は証明者が「本当に呪文を知っているのだな」とみなせる。だが、呪文そのものについての知識は得られない。これがゼロ知識証明の例え話である。要するに「秘密を知っている証拠は示すが、秘密そのものは守ることができる」のだ。この利点からゼロ知識証明は、ブロックチェーンを使った暗号資産、認証システム、プライバシー保護などに用いられている。
非対話型ゼロ知識証明
「アリババの洞窟」は、証明者と検証者が何度もやりとりする必要がある対話型の「Interactive ZKP」だ。だがこれでは現実には使えないケースも多い。現在のブロックチェーンなどに実装されている主流の技術は非対話型「Non-Interactive ZKP(NIZK)」特に、非対話型の中でもデータサイズの小さい「zk-SNARK(Zero-Knowledge Succinct Non-interactive Argument of Knowledge) 」と呼ばれている。
zk-SNARKでは、証明者は「証明(proof)」と呼ばれる短いデータを作成し、送り検証者はそれをチェックするだけで真か偽かを判定できる。つまり一度のやりとりだけで済むのである。ブロックチェーン上でゼロ知識証明を利用する場合、サーバーを介さずに直接通信をおこなうP2P(Peer to Peer)ネットワーク上の不特定多数が検証者となるため、証明者との対話を行うことは非現実的だ。よって、ゼロ知識証明をブロックチェーンに活用する際にはzk-SNARKが必須条件だ。
ブロックチェーンにおける役割
何にどうやって使われるのか、もう少し具体的に見ていこう。
ブロックチェーンは取引情報が分散台帳に記録されており、ネットワーク上の全参加者に共有されるため、透明性が高い。いわば、みんながみんなを相互監視しあうのがブロックチェーンだ。だが透明性とプライバシーは相反する。これにゼロ知識証明を活用すると、取引の正当性はちゃんと証明しつつ、取引金額や送金アドレスなど、隠したいプライバシーを保護することができるようになる。暗号化されたままでは第三者が取引正当性を検証できないが、ゼロ知識証明を用いると、暗号化されたデータがプロトコルに従って正しく作成されたものだということを、データを明かすことなく証明できるのだ。

分散台帳を用いるブロックチェーン
量子コンピュータでも解読できないzk-SNARK方式を開発
zk-SNARK最大の利点は、生成される証明データサイズが小さく、検証も高速で済む点である。ブロックチェーンでゼロ知識証明を利用する際には、トランザクションデータ(取引内容のデータ)に証明データを追加することになるが、ブロックチェーンのブロックサイズは限られており、手数料もデータサイズに比例する。コスト削減のためにもデータサイズは小さいことも重要なのだ。
ただし課題もある。現在の主流のzk-SNARKは楕円曲線暗号やペアリング暗号に依存している。これらの安全性は現実的な時間で暗号のベースとなっている数学的な問題を解くことが難しいことを根拠としている。しかしながら将来、これらの問題を高速に解ける量子コンピュータが実用化されると破られる可能性がある。その結果、秘匿したい情報が暴かれてしまうかもしれない。金融庁なども2030年頃を目標に現在の暗号を、量子コンピュータでも解くことが難しい数学的構造を基盤にした「耐量子計算機暗号(Post-Quantum Cryptography、PQC)」へと移行する必要性を指摘している。
日立は2020年、この課題に対応するために量子コンピュータでも解読されないと期待されている「量子コンピュータ耐性」を持つzk-SNARK方式を開発した。耐量子性を実現するためのアプローチとしてハッシュベース暗号や格子ベース暗号などが研究されている。長沼は耐量子性を持ちつつ、証明のデータサイズが小さいといった利点を持つプロトコルの研究開発に取り組んでいる。目標は、仮想通貨の盗難などを防ぐこと、そして安全なゼロ知識証明技術の確立だ。
日立の強みは、量子コンピュータそのものの研究と、それによって新たに生まれる脆弱性をカバーする暗号研究双方に取り組んでいる点にある、と言えるだろう。
ブロックチェーンからの「逆輸入」

プログラムが実行されたことを証明する「zkVM」
ゼロ知識証明の研究は、ブロックチェーン技術に取り込まれたことで劇的に進歩した。長沼はこの技術をブロックチェーンだけに使うのは「もったいない」と語る。実際にブロックチェーンを超えて、別の暗号技術やさまざまな情報系の技術へ「逆輸入」される段階に入っている。
長沼らが注目している汎用的な技術が「zkVM(Zero-Knowledge Virtual Machine)」である。これはプログラムが正しく実行されたことをゼロ知識証明によって検証する仮想マシンだ。特定の計算専用のゼロ知識証明回路を個別に設計するのではなく、仮想マシンそのものにゼロ知識証明を組み込んだものである。一般的な言語で書いたアプリケーションの実行全体が正しかったことを証明できるようになる。従来のゼロ知識証明技術では、背景となる数学、暗号プロトコルへの理解が必要だったが、通常のプログラムをzkVM上で実行するだけでゼロ知識証明が利用できるのが大きな利点である。 Ethereumなどブロックチェーンの文脈で開発されてきたが、今後さまざまな分野に活用できるという。
クライアントがサーバー側に計算を依頼し、そのレスポンスを受け取るという一般的なクライアント・サーバーモデルにおいて、現在のクライアントは、サーバー側が意図通りに計算をしてくれているかどうかについては、単に信用するしかない。ところがzkVMを使うと、サーバー側が依頼された計算をちゃんと行なって出力したということを証明できる。つまり、これまでは単に信じるしかなかったプログラムの実行結果、計算の正当性を検証できるようになるのだ。

電子証明書の部分提示にも対応可能
また、近年ではマイナンバーカードのスマホ搭載など、デジタル証明書を提示する機会が増えている。しかしながら単に成人年齢に達していることを示したいだけのときも、証明書の一部を隠すとデータ改ざんだと見なされて、デジタル署名が無効になってしまう。ゼロ知識証明を使うことで「有効なデジタル署名が付与された証明書から情報の一部だけを改ざんせずに取り出したものである」ことを証明でき、プライバシーと証明書の信頼性を両立させることができる。
このほか、生成AIのハルシネーション検知や、ルーターなどのハードウェア機器がプロトコルに従って正しく動作しているかどうか、不正なデータ送信を行なっていないことの証明などにも用いることができる。これは、あらゆるエッジデバイスのセキュリティ担保に非常に重要だ。国際的な信頼にも関わってくることになるはずだ。
「本当のゼロトラスト」の実現をめざして
長沼は「セキュリティの本質は、お互いに悪いことをしていないことを証明・検証できることだ」と語る。これが可能なゼロ知識証明は、非常に幅広い応用可能性を持つ。
たとえば特にzkVMのような方式の進展は、広範な社会実装の基盤となる可能性がある。現在はまだ、ハッシュ関数を動かしただけでも20秒から30秒かかるなど、ゼロ知識証明によるプログラムの検証には時間がかかる課題がある。しかし「今後さらに高速化が進むことは間違いない」と長沼は見ている。性能が向上し、小さいIoTデバイスなどにも搭載できるレベルになれば、本当の意味での、いわゆる「ゼロトラスト」概念が実現する可能性がある。プラットフォーマーはもちろん、「何も信頼しない」ことを前提として、すべてのエンティティがお互いに正しく動作していることを証明・検証し、納得できるシステムである。
ゼロ知識証明をセキュリティ基盤とした社会システム実現の日はさほど遠くはなさそうだ。
森山和道(サイエンスライター)



