
Web3のプライバシー専門家がzkTLSとその応用を解説
TechFlow厳選深潮セレクト

Web3のプライバシー専門家がzkTLSとその応用を解説
zkTLSは、Web2のデータがWeb3エコシステムで利用可能になるというだけでなく、データ所有権の変化をも象徴している。
本文作者:Xavier, Co-founder@Primus Lab
暗号学博士、MPC/ZK/PPMLなどのプライバシー研究分野で10年以上の経験を持つ
zkSNARKsを代表とするZK技術はブロックチェーン業界において前例のない発展を遂げたものの、業界が期待する究極のエンドゲームにはまだ遠く及ばない状況にある。一方で、zkRollupはイーサリアムのパフォーマンス向上に一定の利点をもたらしたが、オンチェーンアプリケーションが次第に不足する中で、インフラだけが整っても利用がないというジレンマを打破できていない。他方でZK技術自体も、プライバシーを核とするオンチェーン取引や機密決済、あるいは各種zk+XXX(zkEmail、zkLogin、zkPassportなど)といった高価値なZKアプリケーションを育成できていない。需要が明確でなかったり、無理にZKを絡めて技術的に箔を付けているだけで、実際のシーンにおける課題解決には至っていない。
zkTLSとは何か?
身近な例として、自分の銀行口座に多くのお金があることを他人にどうやって証明できるか?従来の方法では、銀行が資産証明書を発行してもらう。この紙の証明書には銀行の印鑑が押されており、明確な真正性(authenticity)を持っている。

(画像出典:ネット)
では、自分の信用スコア、ECでの消費金額、ゲームプレイ時間などを他人にどうやって証明できるだろうか?個人データを保持するこれらのウェブサイトが個別に裏書きを行い、関連する証明サービスを提供することを期待するのは難しい。あるいは画面キャプチャを直接見せれば相手を納得させられるかもしれないが、その過程では依然として改ざんの疑いを持たれたり、追加的な機微情報漏洩リスクが生じる。
zkTLSはTLSプロトコルに基づくデータ検証技術であり、インターネット上の任意のデータに対して客観的に真正性を証明できる。
最初のzkTLS技術製品は、2015年にTLSNotaryプロジェクトがChromeブラウザ上でリリースしたPageSignerである。その名前からもわかるように、TLSNotaryの当初の目的は、ウェブページデータの真正性を証明できるツールを作ることだった。実際、2020年にChainLinkチームが論文DECOを発表するまで、zkTLSは業界の注目を集めることがなく、それまでは「オフチェーンのプライベートデータを取得できるもう一つのタイプのオラクル」があることに気づかれたのはその時点だった。
客観的に見ると、2023年以前、zkTLS技術は実際のビジネスニーズに対応するにあたって「使える」段階にとどまり、「使いやすい」には大きく隔たっていた。単一の証明に通常数分かかるのが一般的だった。2023年、これまでのzkTLS技術がセキュアマルチパーティ計算(MPC)を使用することで通信オーバーヘッドが大きかったことから、reclaimはプロキシモードに基づくzkTLS技術を提案し、従来のzkSNARKsと信頼されたプロキシノードを導入することで、TLSデータの検証可能性を実現した。2023年半ば、Primusチーム(旧称「PADO」)はgarble-then-prove技術とquicksilverアルゴリズムを組み合わせることで、セキュアマルチパーティ計算方式に基づくzkTLS技術の全体的なパフォーマンスを10倍以上向上させた。またプロキシモードにおいても、従来のzkSNARKsをquicksilverアルゴリズムに置き換えることで、全体性能を10倍以上向上させた。現時点では、PrimusのzkTLS技術はパフォーマンス面でほぼすべてのビジネスシーンの要件を満たしている。

読者は以下のベンチマークテストを参照することで、zkTLSのパフォーマンスについてさらに詳しい情報を得ることができる
(https://hackmd.io/@-fI_Eu_rR8qs02aOhOPWNg/HkRyz5OF1g)
zkTLS技術の分類
通常、zkTLSは第三者Attestorに依存してウェブページデータの真正性を検証する。Attestorは観察者のような存在であり、TLSプロトコル実行中のリクエスト・レスポンスメッセージを「読み取ること」によって、ユーザーのデータ(サーバーからのレスポンスメッセージ)が指定されたデータソース(注:ここでのデータソースとはサーバードメインおよび関連APIエンドポイントを指す)から本当に得られたものであることを保証する。
TLSプロトコルは通常、ハンドシェイクとセッションの二つの段階に分けられる。ハンドシェイク段階では、クライアントとサーバーが一連の通信インタラクションを通じて共通のセッション鍵を算出し、次の段階の暗号化通信に使用する。セッション段階では、クライアントがリクエストメッセージをサーバーに送信し、サーバーはそれに応じてレスポンスメッセージを返す。すべてのメッセージはセッション鍵により暗号化され、第三者による盗聴を防ぐ。
zkTLSはそのコア技術コンポーネントの違いにより、主に二つのカテゴリに分けられる:セキュアマルチパーティ計算(MPC)ベースとプロキシベースの技術である。
MPCモード
MPCモードは主にセキュアマルチパーティ計算の使用に依存している。MPC方式では、AttestorとClient(クライアント)が2者間計算(2PC)プロトコルを用いて、TLSハンドシェイクのクライアント側部分を共同で模擬する。つまり、ハンドシェイク段階終了後、クライアントは直ちに完全なセッション鍵を得ることはできない。Attestorがレスポンスの暗号文を受け取った後になって初めて、鍵の一部(shares)をクライアントに送信し、クライアントがすべての暗号文を復号できるようにする。
「豆知識:MPCとはセキュアマルチパーティ計算のことで、通常は2者が参加する(すなわち2PC)か、3者以上が参加する(これをMPCと呼ぶ)。2PCでもMPCでも、各参加者は自身の計算入力を他者に知られることなく、同時に特定の計算タスクを協力して完了することが求められる。例えば、誰の給与も漏らさずに複数人の平均給与を共同で計算したり、各データ提供者がそれぞれのデータリソースを漏らすことなくAIモデル訓練に共同参加するなどである。」

MPCモードの直感的な流れは以下の通り:
-
ハンドシェイク段階:ClientとAttestorが2PCプロトコルを実行し、共にセッション鍵を算出する。この過程で、ClientとAttestorは完全な鍵ではなく、それぞれ鍵の一部(shares)のみを保持する。
-
リクエスト暗号化:ClientとAttestorが再び2PCプロトコルを実行し、暗号化されたリクエストデータを算出する。
-
レスポンス処理:Clientがデータソースから返されたレスポンスの暗号文を受け取り、それをAttestorに転送する。
-
鍵の解放と検証:Attestorが鍵の一部(shares)をClientに送信し、Clientが完全なセッション鍵を得られるようにする。Clientはその鍵を使ってレスポンスを復号し、Attestorに対して暗号文が有効であり、かつプロトコルで定められたセキュリティ属性を満たしていることを証明する。なお、ClientとAttestorはレスポンスの暗号文を復号するために2PCプロトコルを使用せず、復号はClientが完全な鍵を得た後に独立して行う。
Proxyモード
プロキシモードでは、Attestorがプロキシとして機能し、Client(クライアント)とData Source(データソース)の間で全てのTLSインタラクションデータ(ハンドシェイク情報および暗号化通信データを含む)を転送する。TLSプロトコル終了時に、ClientはAttestorに対して暗号文の有効性をゼロ知識(ZK)方式で証明しなければならない。
Proxyモードの設計思想は、MPC-TLSにおける2PCプロトコルを排除することにある。2PCは計算コストが最も高い部分であり、計算の複雑さを減らすことでプロトコル全体の実行効率を高めることができる。

zkTLSは我々に何をもたらすのか?
zkTLSの核心的価値は主に検証可能性にある。
これまでは、信頼なしの条件下でユーザーが信頼できる個人データを提供する良い方法がなかった。この検証可能性は広範な柔軟性と実用性を持っており、以下を含む:
-
- データソース非侵襲的: データソースは、全く新しいzkTLSプロトコルとやり取りしていることを認識しない。従来のTLSプロトコルの動作ロジックに従うだけである。これは理論上、zkTLSがTLSプロトコルを基盤とするすべてのデータソースまたはAPIサービスに広く接続可能であることを意味する。ただし、異常な頻度のインタラクションは依然としてデータソース側のリスク管理戦略をトリガーする可能性がある。
-
- 汎用性: 「見えるものはすべて証明可能」。理論的には、公開されているか個人的なか、機微かどうかに関わらず、任意のウェブページデータをAttestorが検証した上で取得できる。
-
- チェーン非依存: zkTLSは純粋に暗号学に基づくオフチェーンの行為であり、プロトコル出力は通常、Attestorの署名付きデータであり、オフチェーンで検証可能であり、またブロックチェーンにアップロード後、スマートコントラクト内で検証することもできる。
-
- プライバシー配慮: ゼロ知識証明の特性により、共有が必要な機微情報について、最小限の開示をサポートできる。簡単に言えば、TLSプロトコルが返すレスポンスメッセージの中の計算可能なデータ(数値型)に対して、年齢が18歳以上、残高が10,000以上などの制約条件をカスタマイズし、関連する計算証明結果を出力データに反映できる。
zkTLSの応用事例
zkTLSに基づくデータ共有の可能性のあるユースケースはどのようなものだろうか?以下は我々が探求価値があると考えるいくつかのアイデアである:

-
低担保ローン:zkTLSを通じてオフチェーンの信用スコア、銀行残高、収入、その他の財務データを証明することで、貸借プロトコルがより優れた資本効率を提供できるようになる。
-
オフチェーン身元確認:伝統的機関のユーザーKYC情報を取得し、オンチェーン金融プロトコルで活用する。
-
P2P取引:P2Pのデジタル商品マーケットプレイスを構築できる。一方で、買い手はzkTLS技術を用いて商品所有権の移転を証明できる(電子チケット、ドメイン、ゲームアイテム、さらには法定通貨を含む)。売り手はスマートコントラクトを通じてトークンの譲渡を管理できる。
-
AI Agent:zkTLSを利用することで、AIエージェントの行動が完全に信頼可能であることを保証できる。これには、市場影響力を持つソーシャルメディア上のエージェントの発言を検証すること、AIトレーディングロボットやAIがDAOガバナンスに参加することを可能にし、プロセス中の信頼コストを低下させることを含む。
-
ファン証明:例えば、ユーザーがファン身分を証明できるようにし、KOL/アーティストから関連報酬を得られるようにする。
-
ソーシャルアカウントへの投げ銭/支払い:誰もが相手のウォレットアドレスを知らなくても、1つまたは複数のソーシャルアカウントに暗号資産を送れるようにできる。一方で、ユーザーは受け取るために関連するソーシャルアカウントの証明をzkTLSで提供する必要がある。
-
ソーシャルログイン:zkTLSでユーザーのソーシャルプラットフォームアカウント所有権を検証し、新たなログインメカニズムを開発する。ユーザーはGoogleやMetaの特定アカウントに依存せず、任意のウェブサービスプロバイダのアカウントでログインできる。
価値あるデータの検証と計算の新パラダイム
zkTLSが象徴するのは、Web2のデータがWeb3エコシステムで利用可能になるだけでなく、データ所有権の変化でもある。かつてプラットフォームに制限されていたデータが、今や自由に流動し、プライバシー保護を受けつつプログラマブルになる。この進化により、ユーザーはもはや受動的な受け手ではなく、データの真の管理者となる。
zkTLSの採用が加速するにつれ、検証可能性がもたらす組合効果を目撃することになるだろう――より多くの検証可能なデータが、より強力なアプリケーションを支える。一方で、これらの検証可能なデータがアプリケーション間で価値を伝達する中で、新たな問題が浮上する。すなわち、こうした重要なデータに対してどのように計算を行い、計算結果の正しさを保証するか、である。
実際、オンチェーンの機微データに対する計算には通常、完全準同型暗号(FHE)などのより複雑な暗号技術が用いられる。Primusは完全準同型暗号アルゴリズムとゼロ知識証明を再設計して組み合わせることで、zkFHE(検証可能な完全準同型暗号)プロトコルを提案し、信頼不要なオンチェーンデータの機密計算をサポートしている。これにより、異なるサイバースペースを横断するデータ検証技術であるzkTLSを、さらにデータ計算領域へと拡張し、より多くの革新的アプリケーションの可能性を切り開いている。
免責事項:
本稿はPrimusチームのXavierが執筆したものであり、一部の記述には利害関係が含まれる可能性がある。読者の皆様各自でご判断いただきたい。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














