zkTLSを深掘ってみる

## はじめに

インターネット通信の安全性を確保するための標準プロトコルとして広く利用されているTLS（Transport Layer Security）。しかし、分散型システムやプライバシー要求が高まる現代において、TLSには限界が浮き彫りとなっています。そこで登場したのが**zkTLS**です。zkTLSはTLSの強みを活かしつつ、Zero-Knowledge Proofs（ZKP）を組み合わせることで、データの整合性や出所をユーザーが証明できる新たなセキュリティプロトコルです。本記事では、zkTLSの技術的側面に焦点を当て、詳細に解説します。

## TLSの進化

TLSは1994年にSSL（Secure Sockets Layer）プロトコルに代わって導入され以来、インターネット通信の安全性を確保する標準プロトコルとして定着しました。現在では、ほぼすべてのウェブサイトがHTTPSを採用しており、TLSによる暗号化通信が一般的となっています。TLSは通信の盗聴や改ざんを防ぐための強力な手段を提供しますが、分散型システムやプライバシー重視のアプリケーションにおいては、データの整合性や出所を証明する能力が不足しています。

## zkTLSとは

**zkTLS**は、TLSとZero-Knowledge Proofsを組み合わせたプロトコルです。TLSがデータの暗号化を通じてセキュリティを提供する一方で、zkTLSはZero-Knowledge Proofsを活用して、ユーザーがデータの整合性や出所を証明できる仕組みを提供します。これにより、データのプライバシーを保ちながら、その信頼性を検証することが可能となります。特にWeb3アプリケーションにおいて、信頼性、プライバシー、データ検証が重要な要素となるため、zkTLSは非常に有用です。

![](https://storage.googleapis.com/zenn-user-upload/6b0a7914579c-20241209.png)

## zkTLSの仕組み

zkTLSは、TLSの暗号化通信機能に加えて、Zero-Knowledge Proofsを用いた検証可能なプライバシーレイヤーを追加しています。以下にその技術的プロセスを詳述します。

### TLSの基本機能

TLSは、インターネット上でデータを安全に送受信するためのプロトコルです。主な機能は以下の通りです：

- **暗号化**: データを暗号化し、第三者による盗聴を防止。
- **認証**: サーバーとクライアントの認証を行い、信頼関係を確立。
- **データ整合性**: データの改ざんを検知。

しかし、TLS自体はデータの出所や正当性を証明する機能を持っていません。

### Zero-Knowledge Proofsの役割

Zero-Knowledge Proofs（ZKP）は、特定の主張（例：収入や信用度）を全データを開示することなく証明する技術です。zkTLSでは、ユーザーが自分のデータの一部を選択的に公開せずに、そのデータの正当性を検証者に証明することが可能です。これにより、プライバシーを保護しつつ、データの信頼性を確保します。

### Multi-Party Computation (MPC) の利用

zkTLSの主要なコンポーネントの一つに、**Multi-Party Computation (MPC)** 設定があります。MPCでは、複数の当事者が協力してデータを暗号化・復号化しますが、単一の当事者が完全な暗号鍵にアクセスすることはありません。これにより、データ伝送中の改ざんを防ぎ、プロセス全体の信頼性を向上させます。

### Trusted Execution Environments (TEE) の活用

**Trusted Execution Environments (TEE)** は、改ざん耐性のあるCPU内で機密計算を安全に処理する技術です。zkTLSでは、TEEを活用することで、サービスプロバイダーさえも機密データにアクセスすることなく、ログインやデータ復号などの計算を安全に行います。このモデルは効率的ですが、TEE自体への信頼が必要となります。

![](https://storage.googleapis.com/zenn-user-upload/cfb9ee04e07b-20241209.png)

## zkTLSのユースケース

zkTLSは、デジタルエコシステム内のさまざまな分野で革新的な応用が期待されています。以下に代表的なユースケースを紹介します。

### 1. プライバシー保護オラクル

オラクルは、現実世界のデータをブロックチェーンに接続する重要な役割を果たします。しかし、従来のオラクルはスケーラビリティやプライバシー機能に欠けており、機密データには不向きです。zkTLSを活用することで、価格フィードなどの検証可能なデータを提供しつつ、基盤となるデータソースを公開せずに済むため、DeFiや分散型IDソリューションなどプライバシー重視のプラットフォームに最適です。

### 2. 分散型ID認証

分散型環境におけるID認証は、ユーザーが個人情報を共有することに抵抗を持つため、課題が多いです。zkTLSを利用することで、ユーザーは個人データを開示せずに自身のIDや資格情報を証明することが可能となります。これは、金融アプリケーションにおけるKYC（Know Your Customer）プロセスにおいて、プライバシーとコンプライアンスを両立させるために重要です。

### 3. 不十分な担保のDeFi貸付

DeFiにおいては、通常ローンはリスクを軽減するために過剰な担保を要求されます。zkTLSは、ユーザーが完全な財務履歴を公開せずに収入や信用度を証明できるため、不十分な担保のローンを可能にします。これにより、新たな貸付機会が創出されつつ、プライバシーが維持されます。

### 4. セキュアなAPIリクエスト

多くの分散型アプリケーション（dApps）は外部APIとのやり取りを必要としますが、これはセキュリティリスクを伴います。zkTLSを使用することで、検証されたデータのみを共有し、機密情報を隠蔽するセキュアなAPIリクエストが可能となります。特に外部サービスに依存するデータ駆動型アプリケーションに有効です。

### 5. クレジットスコアのオンチェーン検証

zkPassのようなプロジェクトは、従来のクレジットスコアをブロックチェーン上で検証可能にします。ユーザーは自身のクレジットスコアが一定以上であることを証明しつつ、具体的なスコアを公開しないため、プライバシーを保護しながら信頼性を確保できます。

## zkTLSの利点

zkTLSは従来のデータ伝送方法に対して多くの利点を提供します。

- **プライバシーと検証可能性の両立**: データを非公開にしながら、その正当性を検証できるため、分散型エコシステムにおいて重要なプライバシーとセキュリティを確保します。
- **分散型の信頼性**: 従来のオラクルや中央集権的な検証システムと異なり、zkTLSは分散型の証明メカニズムを通じて信頼を分散させます。これにより、センターライズドな権限に依存せずにデータの整合性を保ちます。
- **高いスケーラビリティ**: zkTLSは従来のプライバシー保護技術に比べて高いスケーラビリティを持ち、金融取引や医療データ交換など幅広いアプリケーションに適用可能です。

## zkTLSの技術的コンポーネント

zkTLSは、TLSとZKPの統合に加え、以下のような技術的コンポーネントを活用しています。

### VOLE-based ZKP

zkTLSでは、VOLE（Vector of Linear Equations）ベースのZKPを使用してインタラクティブな証明を実現しています。これは、JSONスキーマを事前に定義し、共有する応答と非公開にする応答をマッピングします。例えば、銀行の最後の給与情報を送信することは問題ありませんが、アカウント残高全体を公開する必要はありません。

### セキュアなMPC設定

ユーザーが偽の証明を作成できないよう、zkTLSはセキュアなMPC設定上で動作します。これにより、証明者、サーバー、検証者からデータが改ざんされるリスクを排除します。

### JSON Schemaの利用

zkTLSは、ユーザーが共有するデータの構造を定義するためにJSON Schemaを使用します。これにより、必要なデータのみを選択的に公開し、その他の機密情報を隠蔽することが可能となります。

### マルチパーティ計算とTEEの統合

zkTLSは、MPCとTEEを組み合わせることで、複数の当事者が協力してデータを安全に処理し、機密情報を保護します。TEEは、改ざん耐性のある環境で機密計算を実行し、サービスプロバイダーさえもデータにアクセスできないようにします。

## zkTLSの課題と展望

zkTLSは革新的な技術ですが、いくつかの課題も存在します。これらの課題を克服することで、zkTLSの普及と発展が期待されます。

### 経済的インセンティブの設計

第三者検証者が誠実に行動するための経済的インセンティブをどのように設計するかが重要な課題です。インセンティブが適切でない場合、不正行為やサービスの信頼性低下が懸念されます。

### データ構造の更新対応

ウェブサイトがデータ構造を更新した場合、zkTLSがどのように対応するかも課題です。データ構造の変更に柔軟に対応しつつ、第三者の可用性を保証する仕組みが求められます。

### 長期的な証明の管理

zkTLSは現在、特定の時点での「証明」（attestations）に焦点を当てていますが、データの変動に対応するための長期的な証明方法の確立が必要です。これにより、プロトコルが時間の経過とともに有用性を維持できます。

### ユーザー体験の向上

現在、多くのzkTLSプロジェクトはChrome拡張機能やモバイルアプリに依存しています。ユーザーが簡単にデータをエクスポート・証明できるよう、よりシームレスなユーザー体験の提供が求められます。

### セキュリティ設計の多様化

ユースケースに応じた異なるセキュリティ設計や仮定を検討することも重要です。例えば、ユーザーがローカルで証明を生成して提出する「Bring Your Own Proof」方式や、第三者の証明者が計算を行う方式など、様々なセキュリティ設計が考えられます。

## zkTLSの未来

zkTLSは、Web2とWeb3を橋渡しする重要なプロトコルとして、今後ますます注目されるでしょう。以下に、zkTLSの未来に向けた展望を示します。

### データポータビリティの強化

zkTLSは、ユーザーが任意のウェブサイトから安全にデータをエクスポートできるため、Web3アプリケーションのオンボーディングプロセスやデータ駆動型ビジネスモデルの再定義に寄与します。これにより、ユーザーは既存のデータを活用しながら、新しい分散型サービスにスムーズに移行できます。

### インフラの標準化と普及

zkTLSが標準プロトコルとして定着することで、ブロックチェーンネットワーク間のデータ共有が容易になり、相互運用性が向上します。これにより、異なるブロックチェーン間でのデータ連携がシームレスに行えるようになり、エコシステム全体の発展が促進されます。

### 新たなユースケースの創出

分散型ID認証、プライバシー保護オラクル、不十分な担保のDeFi貸付など、既存の課題を解決する新たなユースケースが次々と登場するでしょう。zkTLSは、その柔軟性と高いセキュリティ性能により、多様な分野での応用が期待されます。

### 技術的進化

zkTLSは、ゼロ知識証明やマルチパーティ計算の技術進化とともに、さらなる性能向上や新機能の追加が期待されます。これにより、より高度なプライバシー保護や効率的なデータ検証が可能となり、zkTLSの実用性がさらに高まります。

## まとめ

zkTLSは、TLSとゼロ知識証明を統合することで、ブロックチェーン向けの安全かつプライバシー保護されたデータ伝送を実現する革新的なプロトコルです。TLSの暗号化通信機能とZKPの検証可能性を組み合わせることで、ユーザーはデータのプライバシーを保ちながら、その信頼性を証明することが可能となります。

zkTLSは、分散型ID認証、プライバシー保護オラクル、セキュアなAPIリクエストなど、様々なユースケースでの応用が期待されており、Web2とWeb3の橋渡しとして重要な役割を果たします。今後もzkTLSの技術的進化と普及が、分散型エコシステムのセキュリティとプライバシーを支える基盤となることが期待されます。

# 参考文献

- [Understanding zkTLS in one article: Secure information transmission, the next new narrative of ZK?](https://www.bitget.com/news/detail/12560604214152)
- [zkTLS: The Key to Secure and Private Online Transactions](https://www.zkon.xyz/blog/zktls-secure-private-online-transactions)