【ゼロ知識証明】プライバシーと真実の両立。ブロックチェーンにおける重要概念を解説!
「ゼロ知識証明(zero-knowledge proof)」は、”ある人が他の人に、自分の持っている命題が真であることを伝えるのに、真であること以外の何の知識も伝えることなく証明できる手法”のことを言います。
おはようございます。
web3リサーチャーの三井です。
今日は「ゼロ知識証明」についてリサーチしました。
«目次»
1、ゼロ知識証明とは?
- 洞窟の問題
- 定義と分類
2、ブロックチェーンにおけるゼロ知識証明
- ブロックチェーンの課題とゼロ知識証明
- zk-SNARKsとZcash
- ブロックチェーン×ゼロ知識証明の期待と課題
3、ブロックチェーンの理解は幅広い知識が必要
※この記事は技術的な解説ではなく、概要がなんとなく理解できることを目的としています。なので、細かいニュアンスで多少の齟齬や漏れている箇所もあるかと思いますが、全体像の理解しやすさを優先しました。
アドレス登録で、web3に関するリサーチが毎朝届きます。登録無料。
ゼロ知識証明とは?
「ゼロ知識証明(zero-knowledge proof)」は、”ある人が他の人に、自分の持っている命題が真であることを伝えるのに、真であること以外の何の知識も伝えることなく証明できる手法”のことを言います。
ここだけ聞いても「???」ですよね。もう少しわかりやすく解説します。
登場人物は以下の2人です。
証明者(prover)
検証者(verifier)
ここでは証明者をAと呼び、検証者をBと呼ぶ事にします。
例えば、AさんがBさんに「成人していること(命題)」を証明したいとします。この時、Bさんは免許証などの身分証明書を要求しますよね。
ここでAさんが免許証を渡しBさんが確認し、成人(命題)が真であることを確認するのは、普通のやり方です。でもこの場合、Aさんの個人情報を渡してやっと証明できています。
ゼロ知識証明は「Bさんに免許証を見せず(真である以上の情報を何も与えず)に成人であることを証明する」方法です。
知識が0の状態で証明するので「ゼロ知識証明」と呼ばれるわけです。
ただ、ここまで聞くと「え、無理じゃねそれ?」と感じるでしょう。ここでゼロ知識証明でよく使われる例をご紹介します。
■洞窟の問題
ジャン=ジャック・キスケータらの論文「我が子にゼロ知識証明をどう教えるか(How to Explain Zero-Knowledge Protocols to Your Children)」で紹介されているのが、この洞窟の問題の例です。
○前提情報
ピンク色の服を着た証明者をP(prover)、緑色の服を着た検証者をV(verifier)と呼ぶ。
洞窟の奥にはパスワード付きの扉がある(上の図で洞窟最深部の黒線で区切られている場所)。
Pはパスワードを知っている。
PはVに対してパスワードを教えることなく、”自分がパスワードを知っていること”を証明したい。
○証明方法
PはルートAまたはBをランダムで選んで進む。
どちらのルートで行った場合でも、Pが最深部の到達した頃に、VがランダムにAかBを選択し、PはVが選択したルートから戻ってくる。(Vは洞窟の外にいる)
これを何度も繰り返し、Pが毎回Vが選択したルートから帰ってくることができれば、Pが本当にパスワードを知っているということを、パスワード自体を知ることなく確認できる。ゼロ知識証明完了!
○要するに
PがAのルートを選択し、帰りはVからBで帰って来いと言われた場合、パスワードを使って奥の扉を開けてBから帰るしかない。
PがBのルートを選択し、帰りもVからBで帰って来いと言われたら、パスワードを使わずに正しいルートから帰ることもできます。
PがBを選択しAから帰る場合や、Aを選択しAから帰る場合も同様です。
数回だけなら偶然Pが選択したルールとVが指定したルートが被ることはあるかもしれませんが、何十回、何百回と行えば、確率論的に言って、別のルートになる場合が発生する事はほぼ確実です。
その際も正しいルートで帰ってきているということは、Pはパスワードを知ってるに違いない。
こうなるわけです。
なんとなくイメージが理解できたでしょうか。では、ここからは少し学術的な定義と分類も紹介します。
■定義と分類
ゼロ知識証明が成立するには3つの条件が必要とされています。
完全性(completeness):証明者の主張が”真”であるならば、検証者はその主張の正しさを証明できること。
健全性(soundness):証明者の主張が”偽”であるならば、検証者はその主張の正しさを証明できること。
ゼロ知識性(zero knowledge):検証者が証明者から何らかの知識(情報)を得ようとしても、証明者の主張が真であること以上の知識は得られないこと。
また、その証明方法にあたり2つの分類にも分けられます。
ぜロ知識対話証明「ZKIP」(Zero-Knowledge Interactive Proof)
非対話ゼロ知識証明「NIZK」(Non-Interactive Zero-Knowledge Proof)
違いは”対話”が必要な否かです。上で説明した洞窟の例は”対話”があるので、ZKIPとなります。証明者と検証者の対話が必要なく証明ができるものをNIZKと呼びます。
少し難しくなってきましたが、なんとなくの理解で大丈夫です。続いては「ブロックチェーンにおけるゼロ知識証明」の話に参ります。
ブロックチェーンにおけるゼロ知識証明
“ゼロ知識証明”自体は、暗号学の世界で1985年に発表された概念です。なので、ブロックチェーン特有の言葉ではありません。
ただ、ブロックチェーンにおいてもゼロ知識証明は重要な概念として語られることが多いので、その辺りの関係性について解説していきます。
■ブロックチェーンの課題とゼロ知識証明
ブロックチェーンは全てのトランザクションの内容を自由に閲覧することができます。
だからこそ透明性と改竄不可能性を持った分散型のテクノロジーとして注目を集めています。
ですが、全てが透明なので”誰がいくら誰に送ったのか”や”それを何に使ったか”が過去含めて全てわかってしまいます。(現状、購入しているNFT履歴やクリプトの購入履歴で、ウォレットアドレスから個人の特定がある程度可能になってしまいます。)
では逆に全てを秘匿すると、トランザクションの確らしさを証明できなくなるので、ブロックチェーンの最大の特徴が失われてしまいます。
そこで注目されているのが「ゼロ知識証明」です。
トランザクションの情報(ウォレットアドレスや金額)を出さずに、そのトランザクションが絶対に正しいことを客観的に証明できれば、プライバシーと真実の両立が図れるわけです。
■zk-SNARKsとZcash
○zk-SNARKs
ゼロ知識証明の中でも非対話型で「zk-SNARKs(Zero Knowledge Succinct Non-interactive Argument of Knowledge)」という概念が特に期待されています。
日本語訳すると
・Zero Knowledge:ゼロ知識の
・Succinct: 簡潔な
・Non-interactive: 非対話の
・Argument of Knowledge: 知識の根拠
となります。つまり、すごく簡単に非対話でゼロ知識証明ができるプロトコル(仕組み)の一つを「zk-SNARKs」と呼び、注目されているということです。
zk-SNARKsに関してのより詳細な解説や技術的な理解をしたい方はこちらの記事がおすすめです。
○Zcash
Zcash(ジーキャッシュ)は、zk-SNARKsを利用した仮想通貨プロジェクトです。
ゼロ知識証明を用いたトランザクションを生成できるため、Zcashの送信アドレスと受信アドレス、送金額を秘匿することができます。
その他にも、ゼロ知識証明、そしてzk-SNARKsを活用したプロジェクト、またzk-SNARKs以外のプロトコルを活用したプロジェクトは多数あるので、興味ある方は調べてみてください。
■ブロックチェーン×ゼロ知識証明の期待と課題
このようにブロックチェーンにゼロ知識証明が実装されると、完全に分散型で改竄できないし真実であるのに、クローズドな取引がグローバルで出来るようになります。
これによって例えば「特定の大口投資家がビットコインを大量購入することで値上がりする(or 売却で暴落する」等の値動きのリスクヘッジや、「オフチェーンでゼロ知識証明を活用すればスケーラビリティ問題の解決」にも寄与するのでは?とも呼ばれています。
ただ、クローズドで取引が出来てしまうことで「マネーロンダリング」などの犯罪に使われる可能性も高まり、実際にZcashも規制の対象になりその価格が暴落しました。
少し前には匿名で仮想通貨の送金ができる「トルネードキャッシュ」というサービスの開発者が逮捕される事件があり、匿名性は犯罪を助長させるとして国家からの規制も強まっています。
ゼロ知識証明は暗号学の世界でも、ブロックチェーンの世界でも、その利便性を大きく向上させることは間違いない概念ですが、どうしても犯罪性と切り離せない概念なので、その懸念さえクリアできれば社会実装に大きく進むと考えられています。
ブロックチェーンの理解は幅広い知識が必要
ここからはリサーチの感想を書きます。すでにかなり長くなっているので、サクッとだけ。
今回のゼロ知識証明は暗号学の考え方をブロックチェーンに活用したものです。元々ブロックチェーン自体が暗号学なので、ここはそこまで違和感ありませんが、例えばトークンエコノミクスの設計には経済学が必要であったり、NFTプロジェクトにはクリエイティブ・マーケティング・コミュニティーマネジメントが必須です。
このように、web3の世界はかなり多面的な知識量が求められる業界だと改めて認識しました。
なぜ多面的な知識が求められるのかを一言で言えば「できることが多いから」に尽きます。独自トークン作って、改竄できないルールを持った組織作って、その会員証作って、、ってこれ国家建設ですからね。
法定通貨、憲法や法律、住民票や戸籍など。トークンエコノミクスの回し方やトークンの償却方法の設計は税金の作り込み方にも近いのでしょう。そりゃ国家運営には経済も金融も人間のコントロール方法も広げ方も技術もクリエイティブも全て必要です。
だからこそ可能性が無限で楽しい世界でもありますし、国家と衝突する部分が大きくあるのだと思います。国家からすればそこら中で独立国家ができ始めたらたまったもんじゃないのでそりゃ規制します。
個人的にこのカオスな状況からweb3に携われたことは何て幸運なんだろうと思いつつ、自分もweb3の技術を活用して自分が思い描くプロダクトを作っていけるように頑張りたいと感じました!
とても勉強になったリサーチでした!
(※リサーチした情報を精査して書いていますが、個人運営&ソースが英語の部分も多いので、意訳したり、一部誤った情報がある場合があります。ご了承ください。)
以上、面白いなと思った方はSNS等でシェアいただけると非常に励みになります!
ご覧いただきありがとうございました!
アドレス登録で、web3に関するリサーチが毎朝届きます。登録無料。
Profile
mitsui @web3Research
・Twitter:https://twitter.com/koheimitsui_