ゼロ知識暗号化とは?シンプルなガイド
ゼロ知識暗号化とは、プロバイダーがあなたのデータにアクセスできないことを意味します。
ゼロ知識暗号化とは、保存されたユーザーコンテンツの復号に必要な鍵をサービス側が保持しないアーキテクチャです。プロバイダーがコンテンツキーを管理する一般的なクラウド暗号化と違い、クライアント側の暗号化なら復号の能力をユーザーのデバイスにとどめられます。それでも、法的な要請、情報漏えい、内部関係者によって、プロバイダーが保持する暗号文、アカウント記録、通信データなどのメタデータが漏れる可能性はあります。NISTの鍵管理ガイダンスは鍵の保管をアクセス制御の中心に置いていますが、クライアントアプリ、OS、ロック解除されたデバイスは依然として信頼の範囲に含まれます。
ゼロ知識暗号化の仕組み
最もシンプルな例え:ホテルの保管庫で、あなただけが組み合わせを設定し、ホテルがそれを知ることはありません。組み合わせを忘れたら、ホテルはあなたのために保管庫を開けられません。これは設計上の欠陥ではありません。それが設計です。
技術的には、ゼロ知識暗号化は3つのステップで機能します:
デバイス上での鍵の導出。ユーザーはパスワード、パスフレーズ、パターンなどの認証情報を入力します。パスワードベースの鍵導出関数がそれをソルトと組み合わせ、ユーザーのデバイス上で鍵を生成します。適切に分離された設計では、人が覚える認証情報ですべてのファイルを直接暗号化するのではなく、その鍵でランダムなコンテンツ暗号化キーを解錠します。
転送前にデバイスで暗号化。すべてのデータは、クラウドストレージまたはバックアップのためにデバイスを離れる前に、派生した鍵を使用してデバイスで暗号化されます。暗号化された出力(暗号文)がアップロードされるものです。
プロバイダーは平文のコンテンツキーを受け取りません。コンテンツキーは使用中は必ずクライアントのメモリ上にあり、認証付き暗号化エンベロープに包んだ形でローカルやリモートに保存されることもあります。プロバイダーは、それを開くためのユーザーの秘密を持たないまま、暗号文とラップされた鍵を保存できます。ただし、アカウント、通信、レコードサイズ、タイミングといったメタデータは見えたままの場合があります。
重要な制約:ユーザーが有効な認証情報と復旧手段をすべて失うと、暗号化されたコンテンツにはアクセスできなくなります。復旧の仕組みを用意することはできますが、その鍵を誰が保管するのかを説明できなければなりません。古いデバイスでの承認、リカバリーフレーズ、復旧キーなど、ユーザーが持つ秘密を使わずにメールでのリセットだけで読めるコンテンツが戻るなら、プロバイダーは平文にたどり着く実質的な経路を持っていることになります。
ゼロ知識暗号化と他のタイプの暗号化
「暗号化」という用語はほぼすべてのクラウドサービスのマーケティング資料に表示されます。タイプ間の違いは大きいです。
| タイプ | 鍵の保持者 | プロバイダーがデータを読める | プロバイダー侵害に耐える | 例 |
|---|---|---|---|---|
| 暗号化なし | N/A | はい | いいえ | Dropbox(標準プラン) |
| 転送中の暗号化(TLS) | プロバイダー | はい(サーバー上で保存時) | いいえ | Google Photos |
| サーバーサイドの保存時暗号化 | プロバイダー | はい(復号鍵を保持) | 部分的(侵害範囲による) | iCloud(標準) |
| プラットフォームのエンドツーエンド暗号化 | クライアントデバイスとアカウント復旧システム | 通常のサービス経路では不可 | クライアント、復旧方式、メタデータの露出による | iCloud(高度なデータ保護を有効化) |
| プロバイダーブラインドのクライアント側暗号化 | クライアントおよびユーザーが制御する回復パス | プロバイダーは平文のコンテンツキーを保持しない | コンテンツは暗号化されたまま保てる。メタデータと暗号文は漏れる可能性がある | 暗号化保管庫、暗号化バックアップ |
「保存時暗号化」と「ゼロ知識暗号化」の区別が最もよく混同されます。保存時暗号化では、プロバイダーが制御する鍵を使用してサーバー上のデータを暗号化します。これはサーバーハードウェアの物理的な盗難から保護します。プロバイダーによるデータの読み取り、データと鍵の政府召喚状、インサイダーの脅威からは保護しません。プロバイダーは復号能力を持っています。
プロバイダーブラインドのクライアント側暗号化では、公開された仕様の範囲でサービスに平文のコンテンツキーが渡ることはありません。保存された暗号文はプロバイダーから中身が見えないままにできますが、クライアントソフトウェア、復旧手段、アカウントのメタデータ、ソフトウェアの配信経路は、引き続き信頼と検証が必要です。
ゼロ知識暗号化が重要な理由
データ侵害は毎年数十億件の記録を露出させる
Identity Theft Resource Centerの報告によると、2023年に米国で3,205件のデータ侵害が発生し、約3億5,300万人が影響を受けました。プロバイダーがコンテンツキーを持っていると、1回の侵害で保存データとそれを復号する手段の両方が漏れるおそれがあります。プロバイダーブラインド暗号化はこの2つを切り離します。サーバーが侵害されても漏れうるのは暗号文とメタデータで、プロバイダー保有の平文コンテンツキーは漏れません。認証情報の推測やクライアントの侵害は、これとは別のリスクとして残ります。
法的強制は現実の脅威である
プロバイダーは、保持しているデータの開示を求められることがあります。プロバイダーブラインドの設計ならプロバイダーは平文のコンテンツキーを持たないため、開示できるのは暗号文と、手元にあるアカウント、通信、請求などのサービスメタデータに限られます。第三者がユーザーの認証情報を入手できるか、クライアントの脆弱性を突けるか、開示を強制できるかは別の問題です。AppleはiOS 16.2で、iCloudデータのエンドツーエンド暗号化を任意で拡大する「高度なデータ保護」を導入しました。
「信頼してください」はセキュリティアーキテクチャではない
サーバー側の暗号化は、プロバイダーが管理する鍵とポリシーに依存します。プロバイダーブラインド暗号化は鍵の保管者を変えるため、公開されたサービス経路には平文のコンテンツキーが存在しません。これはより強いアーキテクチャ上の境界ですが、その効果は、正しいクライアントコード、正規性が確認されたソフトウェア配信、健全な復旧設計、安全なデバイス、仕様どおりの実装に左右されます。
暗号学の背後にあるNISTの標準
AES-GCMは、米国国立標準技術研究所(NIST)がSP800-38D(2007年)で標準化しました。AES自体は、2001年にNISTが公募を経て選定したものです。AES-256の「256」は256ビットの鍵を指します。一様にランダムな鍵を総当たりで探すことは計算上不可能ですが、鍵導出関数の出力が256ビットでも、人が選ぶパスワードやパターンのエントロピーはそれよりはるかに小さい場合があります。
GCM(Galois/Counter Mode)は認証暗号化を追加し、復号プロセスが暗号文への改ざんを検出することを意味します。暗号化されたデータの1ビットでも変更された場合、復号は破損した出力を生成するのではなく失敗します。これにより攻撃者は検出されずに暗号化されたデータを操作できません。
RFC 8018で規定されたPBKDF2(Password-Based Key Derivation Function 2)は、擬似乱数関数を繰り返し呼び出して、人が入力した認証情報を固定長の鍵素材に変換します。反復回数を増やすと、推測1回あたりのコストが上がります。ただし、予測しやすいパターンやパスワードのエントロピーが増えるわけではないため、認証情報の選び方と、オフラインで推測を検証できるかどうかは引き続き重要です。
Vaultaireがプロバイダーと鍵をどう分離しているか
Vaultaireは、iPhone向けのクライアント側暗号化保管庫です。製品の宣伝でよく使われる「ゼロ知識」という意味では、Vaultaireが明示しているのはもっと限定的な主張で、平文の保管庫の中身も、それを復号するための鍵も、運営会社のWraxleが受け取ることはないというものです。各層の実装と、残る信頼の範囲を以下に説明します。
鍵の導出。ユーザーは25個の点が並ぶ5x5グリッドにパターンを描きます。PBKDF2-HMAC-SHA512が、その順序をデバイス共通のKeychainソルト1つと組み合わせて600,000回反復し、256ビットの保管庫キーを導出します。保管庫キーは暗号化されたインデックスを認証し、別に生成したランダムな256ビットのマスターキーをラップします。パターンを含む復旧情報は、平文のファイルやVaultaireのアカウントではなく、AES-GCMで暗号化したKeychainのデータベースに保存されます。
ファイルの暗号化。インポートした各ファイルは、ランダムなマスターキーを使ってAES-256-GCMで暗号化されます。CryptoKitが毎回新しいノンスで認証付きのsealed boxを作り、ストリーミング形式では順番に並んだチャンクごとに別々のノンスを導出します。
メタデータの暗号化。ファイル名、MIMEタイプ、日付、インデックスのレコード、サムネイルデータもAES-256-GCMで保護されます。Vaultaireは保管庫のメタデータにChaCha20を使いません。
鍵の管理。Vaultaireは、デバイスのソルトと暗号化された復旧データベースを、WhenUnlockedThisDeviceOnlyのアクセス属性で保護した通常のiOS Keychainの汎用パスワード項目として保存します。パターンから導出した保管庫キーとランダムなマスターキーは、CryptoKitを通じてアプリのメモリ上で処理されます。ロックすると使用中の鍵の状態は破棄されますが、SwiftとiOSでは、すべての一時的なコピーが上書きされることまでは保証できません。
保管庫の検出。通常の画面には保管庫の一覧が表示されません。保存形式では保管庫ごとに保存ディレクトリが1つあります。そのため、アプリコンテナにアクセスできる人は保管庫の数を数えられます。ただし、ディレクトリ名からパターン、名前、平文の中身はわかりません。詳しくはセキュリティアーキテクチャとパターン暗号化の解説をご覧ください。
アプリが本物のゼロ知識暗号化を使用しているかを確認する方法
まず3つの簡単なテストを行い、そのうえで公開されたアーキテクチャを確認しましょう。
パスワード忘れテスト。メールでのリセットだけで読めるデータが戻るなら、プロバイダー側のどの仕組みがコンテンツキーを復元したのかを確認してください。ユーザーが持つリカバリーフレーズ、古いデバイスでの承認、プロバイダー主導のリセットは、それぞれ別の設計です。
新しいデバイステスト。新しいデバイスで読めるコンテンツが復元されるなら、それを許可した秘密情報または信頼済みデバイスが何かを確認してください。アカウントへのログインだけで済むなら、プロバイダーが管理する復旧経路があると考えられます。リカバリーフレーズと暗号化されたバックアップレコードの組み合わせなら、プロバイダーと鍵の分離を保てます。
アカウントテスト。メールアドレスや電話番号は本人とサービスのメタデータを結び付けますが、それだけでプロバイダーがコンテンツを復号できる証拠にはなりません。鍵の階層、復旧の設計、クライアントのコードや監査、メタデータの扱い、そして認証付き暗号文を使ってオフラインで認証情報を試せるかどうかを確認してください。
これらのテストはふるいであり、安全性の証明ではありません。筋の通った仕様なら、コンテンツキー、解錠用の鍵、ソルト、導出パラメータ、認証付き暗号化の形式、ノンスの規則、復旧エンベロープ、ローカルの秘密情報の保存先、クラウドのメタデータ、そして平文の鍵が存在する箇所を明記しているはずです。第三者によるレビューは、製品のうたい文句よりも強い証拠です。
よくある質問
ゼロ知識暗号化はエンドツーエンド暗号化と同じですか?
重なりますが、同一ではありません。エンドツーエンド暗号化(E2EE)とは、データが送信者のデバイスで暗号化され、受信者のデバイスでのみ復号されることを意味します。ゼロ知識暗号化とは、プロバイダーがデータにアクセスできないことを意味します。プロバイダーがある時点で鍵を生成またはアクセスしていた場合、サービスはエンドツーエンド暗号化であってもゼロ知識でないことがあります。ゼロ知識暗号化がより厳しい標準です。
ゼロ知識暗号化でパスワードを失ったらどうなりますか?
有効な認証情報と復旧エンベロープをすべて失うと、データには永久にアクセスできなくなります。プロバイダー主導のリセットやマスターキーはプロバイダー側の境界を弱めるため、復旧は別に設計する必要があります。Vaultaireは9語の独自フレーズを生成し、そこから導出した復旧キーで、保管庫キーを収めた暗号化エンベロープを開きます。フレーズが鍵を再生成したり符号化したりするわけではなく、新しいデバイスで復元するには対応する暗号化済みのCloudKitレコードも必要です。
法執行機関はゼロ知識暗号化データにアクセスできますか?
プロバイダーは、保存している暗号文と、保持しているアカウント、通信、請求などのサービスメタデータの開示を求められることがあります。平文のコンテンツキーを持っていなければ、プロバイダーは通常のサービス経路でコンテンツを復号できません。デバイスの脆弱性の悪用、認証情報の発見、復旧用のコピー、強制的な開示はそれとは別の経路で、その合法性と実効性は法域や個別の事情によって異なります。
ゼロ知識暗号化は通常の暗号化より遅いですか?
AES-256-GCMの処理速度は、誰が鍵を持っているかには左右されません。パスワードベースの鍵導出はロック解除時の処理を増やし、その所要時間はアルゴリズム、反復回数、デバイス、実装によって異なります。アプリは対応するハードウェアでこのコストを測定し、操作の軽快さと、オフライン推測1回ごとに課すコストとのバランスを取る必要があります。
ゼロ知識とはアプリがデータを全く収集しないことを意味しますか?
必ずしもそうとは限りません。この用語が指すのは、プロバイダーがコンテンツキーを持たないという境界であり、すべてのデータの流れではありません。アプリがアカウントデータ、分析、クラッシュレポート、IPアドレス、レコードサイズ、タイミングなどのサービスメタデータを扱う場合もあります。Vaultaireは本人確認用のアカウントを必要としません。アプリの分析とクラッシュ診断はデフォルトで有効で、設定の「エラーを匿名で共有」でオフにできます。公開しているイベントポリシーでは、保管庫の中身、パターン、フレーズ、復号キーは対象外です。プライバシーポリシーに、現在の収集と保持のルールを記載しています。
ゼロ知識暗号化はAppleの高度なデータ保護とどう違いますか?
iOS 16.2で導入されたAppleの高度なデータ保護(ADP)は、エンドツーエンド暗号化の対象となるiCloudのカテゴリを広げ、Appleアカウントの復旧モデルを使います。Vaultaireは保管庫の中身をデバイス上で暗号化し、Vaultaire用のアカウントを必要としません。デフォルトでオンのiCloudバックアップと、同期や共有には、ユーザーのAppleアカウント内の、クライアント側で暗号化したCloudKitレコードを使います。Vaultaireはパターンごとに分離した保管庫アクセスと脅迫モードも備えており、保存と復旧に関する制限はもっともらしい否認の解説と脅迫モードの解説に記載しています。
まとめ
ゼロ知識暗号化は、「プロバイダーと鍵が分離されている」という主張として受け取るのが妥当です。つまり、サービスは保存されたコンテンツの復号に必要な平文の鍵を持ちません。これはプロバイダーが管理する鍵によるサーバー側の暗号化より強力ですが、鍵がメモリ上にしか存在しない、メタデータが消える、クライアントやデバイスへのあらゆる攻撃を防げる、といった意味ではありません。製品は、鍵の階層、復旧の設計、実装、第三者によるレビューで判断しましょう。