1.ゼロ知識証明とは?
ゼロ知識証明(zero-knowledge proof; ZKP)とは、何かを証明したい人(Prover; 以下Pさん)が「自分はある事柄を知っている」という事実を、それを確かめたい人(Verifier; 以下Vさん)に、その事実以外の知識を何も与えることなく証明する技術です。
結果として、Vさんはその事実のみを納得することができ、その事実以外、何の知識も得ることはできません(図1)。
図1:ゼロ知識証明の概念
現実の世界では、自分がある資格情報を保持していることを相手に主張したいとき、その資格内容を証明する証拠情報を相手に提示し、納得してもらうことが一般的です。
しかし、その際、例えばその証拠に書かれた自分の住所や年齢など、証明したい事柄に対して過剰な情報までもが、相手に提供されることが起き得ます。もし、相手を信用することができない場合、余計な情報を安易に渡すことに抵抗を感じるでしょう。しかし、その証拠を相手に見せなければ、自分の主張を信用してもらえそうにもありません。相手に余計な情報を与えずに、自分がその資格を保持しているという事実のみを納得してもらうには、どうすればよいでしょうか?
これを実現する技術がゼロ知識証明です。ゼロ知識証明のアイディアは1980年代に暗号研究の中で生まれました(※2)。
ゼロ知識証明で証明できる主張は、「命題に関する知識」です。命題とは判断を言語で表したもので、真または偽がはっきりするものです(※3)。
一般に、ゼロ知識証明には、完全性、健全性、ゼロ知識性の3つの性質を満たすことが求められます(表)。
表:ゼロ知識証明の要件
例えば、「2023は7×17×17と等しい」は命題であり、その真偽は真です。「2023の素因数分解を知っている」は命題に関する知識であり、ゼロ知識証明の対象となり得る主張の例です。一方、「2023は大きい」は主観が入っており、命題ではありません。よって、「2023は大きいことを知っている」という主張はゼロ知識証明の対象にはなりません。
2.ゼロ知識証明の直観的な理解
ゼロ知識証明を直観的に理解するための例題を二つ解説します。
(1)洞窟の問題
論文「我が子にゼロ知識証明をどう教えるか」(※4)で紹介された説明です。
洞窟の中に合言葉を唱えると開く魔法の扉があります。証明者のPさんはその合言葉を知っていて、お金と引き換えにその合言葉を教えます。その扉は、図2に示す洞窟の一番奥にあります。扉への経路はAとBの二つがあります。合言葉を知る人は扉を開けて、AからBまたはその逆へ移動できます。
図2:洞窟の問題
検証者のVさんはその合言葉を購入したいですが、Pさんが合言葉を本当に知っているのかを疑っていて、なかなか取引を始められません。ここで、もしPさんがVさんに秘密の合言葉自体を教えることなく、「秘密の合言葉を知っている」という事実のみをVさんに納得してもらうことができたら、取引を始めることができそうです。そのため、以下の試行を行います。
まず、Vさんは洞窟の外で待ちます。Pさんは洞窟に入り、AかBのどちらかの分かれ道をランダムに選び、奥の扉の前まで行きます(図3)。
図3:証明者Pのランダムな選択
次に、Vさんは洞窟に入り、分かれ道の手前まで行き、頭の中でAかBをランダムに選び、その道から出てきてほしいと大声でPさんに伝えます(図4)。
図4:検証者Vのランダムな選択
- Pさんが合言葉を知っている場合
Pさんは、Vさんにどちらの道を指定されても、必要なら合言葉を使って扉を開け、指定された道から出てくることができます(図5)。これは完全性を意味します。
図5:証明者Pが合言葉を知っている場合
- Pさんが合言葉を知らない場合
Pさんは自分が入った道からしか出てくることはできないため、Vさんに指定された道から出てくることができる確率は50%です。2人がこの試行を何度も繰り返せば、PさんがVさんを毎回だますことはほぼ不可能となります(図6)。例えば30回繰り返せば、すべてだませる確率は約0.0000001%となります。これは健全性を意味します。
図6:証明者Pが合言葉を知らない場合
よって、Pさんが全試行に成功するなら、Vさんは「Pさんは合言葉を確かに知っている」と納得せざるを得ません。Vさんは試行回数をさらに増やせば、自分がだまされる確率を0%に望むだけ近づけることができます。このとき、Vさんは合言葉に関する知識を何も得ていません。これはゼロ知識性を意味します。
まさに文字通り、「ゼロ知識」で証明がなされました。
(2)1羽の海鳥を探す問題
米国カリフォルニア大学ロサンゼルス校(UCLA)のAmit Sahai教授は、動画投稿サイトYouTubeにおいて、ゼロ知識証明の概念を子供、ティーンエイジャー、大学生、大学院生、専門家へと、5パターンの難易度で説明しています(※5)。ここでは、要点を視覚的に捉えられる、子供向けの説明を紹介します。
教授は子供に1枚の写真を見せます。その写真には数百羽ものペンギンの群衆が写っています。教授は「この中に1羽だけツノメドリ(ペンギンによく似た海鳥)がいて、自分はその位置を知っている。でも、その位置は教えない。これって信用できる?今からその位置を明かさずに証明するよ。」と言います(図7)。
図7:1羽の海鳥を探す問題
(出典)
左の写真:Martin Wettstein, Unsplash
右の写真:M. Zonderling, Unsplash
そこで、教授はその写真より数倍大きな黒い紙を取り出します。その紙には小さな穴があり、ツノメドリの位置とその穴が合うように、紙の裏側に写真が貼られています。子供は穴をのぞき込み、「ツノメドリが見える」と答えます。しかし、その紙の裏にある写真の位置が子供には見えないため、元の写真のどの位置にツノメドリがいるのかはわかりません。教授は「これがゼロ知識証明の例だよ」と説明します(図8)。
図8:1羽の海鳥を探す問題に対するゼロ知識証明
このやり取りは、ツノメドリの位置を知る教授は必ず証明できるため、完全性を満たしています。
さらに、もし教授がツノメドリの位置を知らない場合、子供が穴をのぞき込んで確認すれば高い確率でその不正が露呈するため、健全性を満たしています。
さらに、子供は「教授はツノメドリの位置を知っている」という事実以外の何の知識も得られないため、ゼロ知識性を満たしています。
https://www.youtube.com/watch?v=eAp2HSjDPPk
(YouTubeは、Google LLCの登録商標です。)
3.社会への応用事例
社会へのゼロ知識証明の応用事例を紹介し、今後の展望を考察します。
(1)ブロックチェーンのプライバシー強化
ブロックチェーンは、仮想通貨に代表されるように、社会の広範囲で活用されています。その透明性は、ブロックチェーンへの参加者全員によりその台帳が分散管理されることにより維持されています。しかし、その透明性の高さゆえに、ユーザのプライバシーの確保が課題となる場合があります。
近年、ブロックチェーンのプライバシーを向上させるためにゼロ知識証明が活用され始めています。例えば仮想通貨においては、送金者、受取人、送金額などの取引内容を第三者に明かすことなく、その取引に対応する演算が確かに行われたことを示すゼロ知識証明として、zk-SNARK(※6)やzk-STARK(※7)と総称される手法が導入され始めています。
さらに、ゼロ知識証明による処理がブロックチェーン処理の高速化に貢献する場合もあることから、なおさら注目を集めています。
(2)所得範囲の証明
2017年11月、オランダの大手銀行INGは、ゼロ知識証明を応用したゼロ知識範囲証明(Zero-Knowledge Range Proofs; ZKRP)(※8)を開発しました。ZKRPは、金額などの数値が特定の範囲内にあることを、その数値を相手に示さずに証明できます。例えば、住宅ローンの申請者が、自身の収入がローンの審査で求められる一定の範囲内にあることを、収入額を伝えることなく証明できるようになります。
(3)属性情報の選択的開示
Web技術の標準化を行うW3Cでは、検証可能な資格情報(Verifiable Credentials; VC)(※9)という概念のデータモデルを標準化しています。そこでは、自分の属性情報を選択して、その属性がある条件を満たしていることのみを証明するゼロ知識証明が紹介されています。
例えば、大学の卒業生が身元などの余計な個人情報を明かすことなく、学位を授与されたという情報のみを選択して証明するというユースケースが示されています。
VCは、現在、内閣官房が主導する「Trusted Web」の構想においても議論されています。そこでは、データの選択的開示を実現する手法の一つとしてゼロ知識証明への期待が示されています(※10)。
(4)ユーザ認証
現在、各種サービスのWebサイトでは、IDとパスワードの方式による認証が主に使用されています。しかし、パスワードの文字列長は人間が記憶または管理できる範囲に制限されるため、総当たり攻撃やリスト型攻撃に弱いという課題があります。
さらに、攻撃者にサーバを乗っ取られた場合、パスワード自体ではなくても、パスワードの推測に役に立つ情報が漏洩し、それが攻撃者にとってのヒントとなり、パスワードが将来的に漏洩する可能性があります。もしユーザ認証をゼロ知識証明で実現すれば、サーバにはパスワードに関連する情報は始めから存在しないため、より安全となり得ます。
ユーザ認証に適用可能なゼロ知識証明として、シュノアプロトコル(※11)があります。これは、離散対数問題という数学的に困難な問題の解の知識を、本人しか知り得ない情報に見立て、ゼロ知識証明により認証する方式です。IDとパスワードの方式に比較し、「通信量が多い」、「処理速度が遅い」、「秘密にすべきデータのサイズが大きく、人間が記憶できない」などの短所から、長年世の中で採用されてきませんでした。
しかし、近年、「通信網の高速化」、「サーバや端末の処理速度の向上」、「ICカードやスマートフォン内に安全に格納できるメモリ領域」などの技術が普及してきたことから、従来の短所はもはや短所ではなくなりつつあります。
zk-SNARK: Zero-Knowledge Succinct Non-Interactive Argument of Knowledge
zk-STARK: Zero-Knowledge Scalable Transparent Argument of Knowledge
https://www.kantei.go.jp/jp/singi/digitalmarket/trusted_web/pdf/trustedweb.pdf
4.今後に向けて
近年、Web3という言葉が注目され、その解釈は多岐に渡るものの、その構成要素となる概念は「ブロックチェーン」、「非中央集権」、「分散型ID」などが中心的と言われています。上記応用事例(1)、(2)はブロックチェーンのプライバシー向上策であり、(3)、(4)は非中央集権、分散型IDと関連しています。よって、ゼロ知識証明は「Web3のプライバシーに信頼をもたらす技術」と言えるでしょう。
将来、ゼロ知識証明は高度なプライバシーが要求される安心・安全な未来社会に不可欠な技術となるでしょう。
NTTデータでは引き続き最新動向をキャッチアップし、ノウハウを蓄積・公開していきます。