ゼロ知識証明(ZK-SNARKS) Part1

Junki Yuasa
Acompany
Published in
7 min readJun 7, 2019

はじめに

こんにちは. Acompanyの湯浅です. この記事は「DIGITAL IDENTITY, PRIVACY, AND ZERO-KNOWLEDGE PROOFS (ZK-SNARKS)」をまとめて, 翻訳した記事です. ゼロ知識証明, ZK-SNARKSについてざっくり理解することを目的とします.

私たちの個人情報 (生年月日, 社会保障番号, 学歴, 職歴など) は私たちが誰であるか, 私たちのアイデンティティの姿を描くのに役立ちます. 個人の身元に関連するデータの保護は極めて重要であり, 私たちが多くのデータを電子的に共有するにつれて, その重要性は増していきます. データは主に次の2つの方法で危険に晒される可能性があります. 安静時(例: ハードドライブまたはウォレット内), または動いている時(例: 電子メールによるデータ送信または混雑したレストランでの運転免許証の引き出し). 動いているデータは詮索好きな人や詮索アルゴリズムに利用可能なので, 動いているデータは静止しているデータよりも危険です. 例えば, 私の運転免許証が財布に入っている場合, それを財布から出すよりも私の生年月日が悪意のある人々に見られる可能性ははるかに低いです.

私たちは自分自身が作成したデータは手に入れることができますが, 暗号化とブロックチェーンは私たちが交流する組織からでさえ, 私たちのデータとアイデンティティを保護するのを助けるシステムを作成することを可能にします. あなたは交流している組織を信頼できるということをどのようにして知りますか?組織を信頼することを妨げる明らかな弱点は, これらの組織で私たちが会話する人々そのものと, 彼らの安全でないITシステムです. これらの弱点は電気会社やインターネットプロバイダなど, 様々な製品やサービスに依存している組織において共通です. これらの脆弱性は私たちのデータが危険にさらされる可能性をもたらします. そこで, Zero-Knowledge Proofsという方法があります.

Zero Knowledge Proofsを使用すると、実際にデータ自体を共有することなく、検証済みのデータを第三者と共有することができます。機密情報を共有することなく機密情報を共有することができるという事実を受け入れるのには少し時間がかかるので, これは魅力的な概念です. ゼロ知識証明は次のように機能します. 例えば私がAさんに何かを証明したいのであれば, 私は自分の主張を裏付ける証拠を持っている必要があります. ゼロ知識証明は証拠の代わりに証明を私の主張を検証する検証者と共有することで, 私が主張を裏付ける証拠を持っていることを証明する反論の余地のない方法を作り出します.

データを保護するために将来的にゼロ知識証明を使用できる方法は無数にあります。一つはコールセンターに電話をかけることです. アリスが自分の銀行口座から別の銀行口座への振替を開始するために自分の銀行に電話をかける必要があるとします. アリスが自分の身元(口座番号、社会保障番号、住所、母親の旧姓)を確認するために質問に答えるプロセスを経る代わりに暗号証明を送れたらすてきでしょう. 時間が節約されプライバシーが強化されます. この例で, アリスが電話で自分の身元を認証した後の電話の流れを見てみましょう.

例1:アリスが現在のプロセスで自分の身元を認証した後、ボブはアリスに応答します。(アリスが求めた問題に対処するための平均時間 — 約30〜60秒)

コール「おはようございます, 私の名前はボブです. あなたのフルネームを教えてください.」

アリス「Alice Smith」

コール「ありがとうございました. 現在の住所を教えてください.」

アリス「12345 Main Street Springfield MA 99999」

コール「ありがとうございました. 社会保障番号の下4桁を教えてください.」

アリス「6789」

コール「ありがとうございます. 当座預金口座への最後の取引金額を教えてください. 」

アリス「覚えていません. 」

コール「本当に申し訳ありませんが, 続行するにはこの情報が本当に必要です. 」

アリス「仕方ないわねえ、チェックするわ… 123ドル」

コール「あなたの忍耐力に感謝します. 遅れてすみません. どんな御用でしょうか?」

アリス「アカウント123からアカウント456に100ドルを振替できますか?」

コール「了解しました, すぐに始めます. 他に用件はありませんか?」

アリス「いいえ、それだけです。ありがとうございました!」

例2: アリスがスマートコントラクト対応ブロックチェーンのためのゼロ知識証明アプローチを使用して彼女の携帯電話を介して彼女のアイデンティティを認証した後、ボブはアリスに応答します。アリスが求めた問題に対処するための平均時間 — 約5〜10秒)

コール「おはようアリス、私の名前はボブです。どんな御用でしょうか?」

アリス「アカウント123からアカウント456に100ドルを振替できますか?」

コール「了解しました, すぐに始めます. 他に用件はありませんか?」

アリス「いいえ、それだけです。ありがとうございました!」

例2でのプロセスは例1のプロセスよりもはるかに短いことがわかります. また, アリスは自分自身についての情報をコールセンターの代表であるボブと共有する危険性もありませんでした.

通常アリスがアリスであるとボブが信じる方法はアリスに身元についての質問をすることです( 住所, 社会保障番号など). しかし, これは情報の共有に依存しているため, データがシステムを介して漏洩する可能性があります.

zk-SNARK(Zero-Knowledge Succinct Non-Interactive ARgument of Knowledge)と呼ばれるゼロ知識証明の形があります. これは, アリスが100%確実に, zk-SNARKから生成された暗号証明よりも多くの情報を明らかにすることなく、アリスであることを証明する条件を満たすために使用できます. zk-SNARKの重要な要素は、非対話であるということです. アリスと銀行の間で証明のために機密情報をやり取りすることはありません. 注意: 共有される暗号化された証明から証明の作成にインプットされたデータにアクセスすることはできません. つまり, アリスが自分の社会保障番号をゼロ知識プルーフプログラムに提供すると、検証者がアリスが提供する証明から自分の社会保障番号を導き出すことができなくなることを100%保証してくれるということです. zk-SNARKを利用することで、機密データを共有しなくても済むようになり, プライバシーが大幅に強化され, 組織のリスクが大幅に軽減され、データの所有権を保持できるようになります.

まとめ

・ゼロ知識証明を用いることで機密情報を検証者に渡すことなく, ある事実を証明できます. そしてスピーディで安全です.

・zk-SNARKSは非対話で簡潔な証明です. 証明者が証明を一度, 一方的に送るだけで事実を証明できます.

今回はゼロ知識証明(zk-SNARKS)についてざっくり解説しました. 次回は翻訳した記事のPart2をもとにもっと踏み込んで解説していきます.

今後も,Acompanyからブロックチェーンに関する記事を投稿していきますので,ぜひfollowしていただけると嬉しいです.

Happy Hacking 😎!

--

--