zkenc の紹介
zkenc は Circom 回路のための証拠暗号化ライブラリです。指定された回路に対する有効なウィットネス(解答)を提供することでのみ復号化できるメッセージを暗号化できます。
証拠暗号化とは?
証拠暗号化は、回路制約のもとでメッセージを暗号化できます。暗号化されたメッセージは、回路を満たす有効なウィットネス(入力)を知っている人のみが復号化できます。これは以下のような用途に特に有用です:
- 条件付きアクセス:特定の条件が満たされた場合にのみアクセスできるデータを暗号化
- ゼロ知識パズル:解かれたときに秘密を明らかにする暗号化パズルを作成
- タイムロック暗号化:特定の計算を実行した後にのみ復号化できるメッセージを暗号化
プロジェクトの状況
zkenc の実装は初期セキュリティ検証を経ています。このライブラリは、ほとんどのシナリオでセキュリティが検証された Circom 回路用の証拠暗号化の実用的な実装を提供していますが、現在、追加のセキュリティ考慮事項が適用されるエッジケースに対処しています。実装の強化を続けているため、論文はまだ改良中です。
利用可能なパッケージ
zkenc は 3 つの主要コンポーネントで構成されています:
zkenc-core (Rust)
証拠暗号化の暗号プリミティブを実装するコア Rust ライブラリ。
- 低レベルの暗号化/復号化操作
- 回路処理とウィットネス検証
- CLI と JavaScript バインディングの基盤
zkenc-cli (Rust)
証拠暗号化操作のためのコマンドラインインターフェース。
- コマンドラインからメッセージを暗号化
- 有効なウィットネスで暗号文を復号化
- zkenc-js と相互運用可能
zkenc-js (JavaScript/TypeScript)
WebAssembly を使用して Rust からコンパイルされた JavaScript/TypeScript バインディング。
- Node.js とブラウザで動作
- 高レベルおよび低レベル API
- 完全な TypeScript サポート
クイックスタート
お好みのパッケージを選択して始めましょう:
- JavaScript/TypeScript プロジェクトの場合:zkenc-js クイックスタート →
- コマンドライン使用の場合:zkenc-cli クイックスタート →
インタラクティブプレイグラウンド
ブラウザでインタラクティブな数独パズルプレイグラウンドを使って zkenc を試してみてください:
アーキテクチャ
zkenc は 2 層アーキテクチャで構築されています:
┌─────────────────────────────────────────────────────┐
│ アプリケーション層 │
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ zkenc-cli │ │ zkenc-js │ │
│ │ (Rust) │ │ (WASM) │ │
│ │ │ │ │ │
│ │ • コマンドライン │ │ • ブラウザ & │ │
│ │ • バッチ │ │ Node.js │ │
│ │ 処理 │ │ • TypeScript API │ │
│ └─────────┬─────────┘ └─────────┬─────────┘ │
│ │ │ │
│ └────────────┬───────────┘ │
└─────────────────────────┼─────────────────────────┘
│
┌─────────────▼──────────────┐
│ zkenc-core │
│ (Rust) │
│ │
│ • 暗号プリミティブ │
│ • R1CS → QAP 変換 │
│ • BN254 曲線サポート │
│ • Blake3 KDF │
└────────────────────────────┘
コア層: zkenc-core は arkworks を使用して暗号基盤を提供し、R1CS から QAP への変換、暗号化/復号化プリミティブ、鍵導出を処理します。
アプリケーション層: zkenc-cli(コマンドラインツール)と zkenc-js(WASM バインディング)の両方が zkenc-core の上に構築されており、同じ基盤機能に対して異なるインターフェースを提供します。
クロスツール互換性
zkenc-cli と zkenc-js は完全に相互運用可能です。以下のことができます:
- zkenc-cli で暗号化し、zkenc-js で復号化
- zkenc-js で暗号化し、zkenc-cli で復号化
- 異なる環境間で暗号文を共有
次のステップ
- はじめに - インストールして最初の暗号化を試す
- API リファレンス - 完全な API を探索
- ガイド - ステップバイステップの統合ガイドに従う
- プレイグラウンド - 数独パズルの例を試す