ゼロ知識アーキテクチャ とは?
ゼロ知識アーキテクチャとは、暗号化・復号の操作がすべてクライアント側で行われるため、サービスプロバイダーがユーザーの代わりに保存しているデータをアクセス・読み取り・復号できないシステム設計です。
別名: ZK, zero-knowledge encryption, zero-knowledge proof, ZKA
ゼロ知識システムでは、サーバーは純粋に暗号化されたストレージとして機能します。クライアントがすでに暗号化したデータを受け取り、要求に応じて返しますが、そのデータを解読するための鍵を持つことはありません。これは、プロバイダーが暗号鍵を保持し、悪意のある従業員や政府の令状、セキュリティ侵害などを通じてユーザーデータにアクセスできる可能性がある、ほとんどのクラウドサービスとは対照的です。
この文脈での「ゼロ知識」という用語は、暗号学のゼロ知識証明とは別のものですが、厳密に必要な以上の情報を明かさないという原則を共有しています。ゼロ知識サービスはデータが存在することを知り、有効期限や閲覧制限といったアクセス制御を実施できますが、データの実際の内容を知ることはできません。
ゼロ知識アーキテクチャは、信頼モデルを根本から変えます。サービス運営者がデータを保護し誠実に行動することを信頼する代わりに、ブラウザで動作するクライアント側のコードだけを信頼すればよくなります。これはセキュリティ上の大きな改善です。サーバー側の侵害、内部者によるアクセス、強制的な開示といった脅威のクラス全体を排除できます。サーバーが保存しているものを実際に読み取れない場合、これらの攻撃は意味をなしません。
Vaulted における ゼロ知識アーキテクチャ の使われ方
Vaulted は最初からゼロ知識システムとして構築されています。すべての暗号化・復号処理は、Web Crypto API を使用してブラウザ内で行われます。サーバーが受け取り保存するのは、暗号文、初期化ベクトル、閲覧数や有効期限といったメタデータのみです。AES-256-GCM 暗号鍵は URL フラグメントに埋め込まれており、RFC 3986 に従い、ブラウザはフラグメントをサーバーに送信しません。仮に Vaulted のサーバーやデータベースが完全に侵害されたとしても、攻撃者が得られるのは暗号化されたデータの塊だけで、復号する手段はありません。