エンドツーエンド暗号化とは?写真を守る仕組み
エンドツーエンド暗号化は、読み取れる写真の内容と平文のコンテンツキーをストレージのプロバイダから遠ざけます。
エンドツーエンド暗号化(E2EE)は、平文を認可された一方の端末で暗号化し、もう一方の端末で復号するセキュリティモデルです。ストレージや通信のプロバイダは、平文のコンテンツキーを保持しません。この境界により、サーバー側で内容を直接読まれることは防げます。しかし、すべてのメタデータを隠すわけではなく、侵害された端末、復旧用の認証情報、共有先の受信者、悪意のあるクライアントの更新から守るものでもありません。
写真の保存におけるエンドツーエンド暗号化とは、スマートフォンがアップロード前に写真の内容を暗号化し、クラウドには読み取れる画像ではなく暗号文が保存されることを意味します。復号には、認可されたデバイスまたは復旧経路を通じて使える鍵が必要です。ファイルサイズ、タイミング、アカウントのデータ、共有の関係などのメタデータは見える場合があります。このガイドでは、この境界を説明し、一般的なサービスのモデルを比較します。
エンドツーエンド暗号化の仕組み
中心となる仕組みは、鍵の生成、暗号化、復号の3段階です。
鍵の生成
ユーザーのデバイスが暗号鍵を生成します。共通鍵暗号(AES-256など)では、同じ鍵で暗号化と復号を行います。公開鍵暗号(RSAなど)では、公開鍵で暗号化し、秘密鍵で復号します。多くのE2EEシステムは両方を組み合わせます。公開鍵暗号で共通のセッション鍵を交換し、そのセッション鍵で大量のデータを暗号化します。
写真保管庫アプリの鍵管理の設計はさまざまです。パスワードから直接ファイルの鍵を導出するものもあれば、より強い階層型の設計では、認証情報から導出したロック解除キーでランダムなファイルの鍵をラップします。Vaultaireは、PBKDF2-HMAC-SHA512を使い、5x5のパターンとデバイス共通のソルトから256ビットの保管庫キーを導出します。その保管庫キーが暗号化されたインデックスを認証し、ファイル暗号化に使う別のランダムなマスターキーをアンラップします。
暗号化
平文(あなたの写真)は、暗号化キーと暗号化アルゴリズムによって暗号文に変換されます。この用途で最も広く使われている共通鍵暗号がAES-256-GCMです。GCM(Galois/Counter Mode)は認証付き暗号化を提供し、データを暗号化すると同時に、改ざんを検出する認証タグを生成します。各ファイルには固有の初期化ベクトル(IV)が割り当てられるため、同じファイルでも異なる暗号文になります。
復号
受信者のデバイスは、同じ鍵(共通鍵暗号)または対応する秘密鍵(公開鍵暗号)を使って変換を元に戻します。正しい鍵がなければ、暗号文はランダムなデータと区別できません。数学的な近道はありません。AES-256の鍵は2^256通りあり、観測可能な宇宙にあると推定される原子の数より多いのです。
エンドツーエンド暗号化と他の暗号化モデルの違い
すべての暗号化がエンドツーエンドではありません。その違いによって、誰がデータにアクセスできるかが決まります。
通信中の暗号化(TLS/SSL)
データはデバイスとサーバーの間で暗号化されます。サーバーは受け取った時点でデータを復号します。送信中の盗聴は防げますが、サーバー上のデータは読める状態のままです。主要なクラウドサービスはどれも通信中の暗号化を使っています。これは最低限であって、目指すべき水準ではありません。
保存時の暗号化(サーバー側)
サーバーは、自らが管理する鍵で保存データを暗号化します。サーバー機器の物理的な盗難は防げますが、サービスのプロバイダ、その従業員、プロバイダに向けた法的な要請からは守れません。iCloud、Googleドライブ、Dropboxはいずれも、サーバー側で保存時の暗号化を使っています。鍵はプロバイダが持っています。
エンドツーエンド暗号化
データは、ストレージのプロバイダが受け取る前に、認可された端末上で暗号化されます。健全な設計では、平文のコンテンツキーをプロバイダのサーバー側での日常的な管理から外すため、ストレージだけの侵害や保存コンテンツに対する法的な要求で得られるのは、読み取れる写真ではなく暗号文です。それでもプロバイダは、暗号文やメタデータを提供したり、クライアントソフトウェアを配布したり、復旧や共有の仕組みを運営したりする可能性があり、これらは脅威モデルに含める必要があります。
| 暗号化モデル | 鍵を持つのは誰か | プロバイダはデータを読めるか | プロバイダから守れるか |
|---|---|---|---|
| 通信中のみ(TLS) | サーバー | はい | いいえ |
| 保存時(サーバー側) | サーバー | はい | いいえ |
| エンドツーエンド | 認可された端末または復旧手段の保持者 | 保存された暗号文だけからは読めない | プロバイダが持つストレージの鍵から内容を守る |
| プロバイダに見えないクライアント側暗号化 | クライアントと文書化された復旧経路 | 設計上、平文の内容にアクセスできない | 内容は守る。メタデータとクライアントへの信頼は残る |
写真ストレージサービスの暗号化の扱い
暗号化のモデルは、写真ストレージサービスによって大きく異なります。モデルを明示せずに「暗号化」を宣伝するサービスもあり、実際にはそうでないのに写真がE2EEで守られているとユーザーに思わせかねません。
iCloud写真
Appleは通信中と保存時の暗号化を使っています。デフォルトでは、暗号化キーはAppleが保持しています。有効な法的要請があれば、AppleはiCloud写真のデータを提供できます。例外:2022年12月から利用できるAppleの高度なデータ保護(ADP)は、iCloud写真にエンドツーエンド暗号化を加えます。ADPは「設定」で明示的に有効にする必要があります。有効にすると、AppleはiCloud写真のデータにアクセスできません。ほとんどのユーザーはADPを有効にしていません。
Googleフォト
Googleは、サーバー側の鍵で通信中と保存時の暗号化を行っています。「ロックされたフォルダ」の内容を含め、Googleフォトのすべてのデータの暗号化キーをGoogleが保持しています。Googleは法的なデータ要請に応じることができます。GoogleはGoogleフォトにエンドツーエンド暗号化の選択肢を提供していません。
Dropbox
通信中(TLS 1.2以上)と保存時(Dropboxが管理する鍵によるAES-256)の暗号化です。Dropboxが鍵を持ち、あなたのファイルにアクセスできます。Dropboxはデータ侵害を受けたことがあります(2012年、6,800万アカウント)。Dropbox Vault(有料機能)はPINによる保護を加えますが、エンドツーエンド暗号化は加えません。
OneDrive
Microsoftは、Microsoftが管理する鍵で通信中と保存時の暗号化を行っています。鍵はMicrosoftが持っています。OneDriveの個人用Vaultは本人確認(2FA)を加えますが、エンドツーエンド暗号化は加えず、Microsoftは引き続きデータにアクセスできます。法人顧客向けには、顧客が管理する鍵を利用できます。
Vaultaire
プロバイダが保持する鍵を除外したクライアント側暗号化。Vaultaireは、クラウドにアップロードする前に、デバイス上で写真とメタデータをAES-256-GCMで暗号化します。ランダムなマスターキーが保管庫のデータを暗号化します。ユーザーのパターンとデバイスのソルトから導出したローカルの保管庫キーがそのマスターキーをラップし、パターンから導出した別のバックアップキーが非公開のCloudKitバックアップのレコードを守ります。Vaultaireはコンテンツ用のサーバーを運営しておらず、これらの鍵を受け取らないため、CloudKitのレコードを平文に戻すことはできません。アプリ、iOS、ロック解除されたデバイスは引き続き信頼の境界の内側にあり、法的な要請によって、関係するプロバイダが保持するアカウントやサービスのメタデータが取得される可能性は残ります。
| サービス | 通信中の暗号化 | 保存時の暗号化 | エンドツーエンド暗号化 | プロバイダがアクセスできる |
|---|---|---|---|---|
| iCloud写真(デフォルト) | はい | はい(Appleの鍵) | いいえ | はい |
| iCloud写真(ADPを有効化) | はい | はい | はい | いいえ |
| Googleフォト | はい | はい(Googleの鍵) | いいえ | はい |
| Dropbox | はい | はい(Dropboxの鍵) | いいえ | はい |
| OneDrive | はい | はい(Microsoftの鍵) | いいえ | はい |
| Vaultaire | はい | はい | クライアント側で暗号化したバックアップ、デフォルトで有効 | 平文のコンテンツキーはない。CloudKitのメタデータは残る |
写真にエンドツーエンド暗号化が重要な理由
写真は特に機密性の高いデータです。顔、位置情報(GPSメタデータ)、日時、私的な瞬間の視覚的な記録が含まれています。写真ライブラリが流出すると、ほかのほとんどどの種類のデータよりも多くの個人情報がさらされます。
データ侵害
サービスのプロバイダがサーバー側の鍵で写真を保存している場合、ストレージと鍵管理の経路の両方が侵害されると、読み取れる内容が流出する可能性があります。健全なE2EEなら、ストレージだけの侵害で得られるのは暗号文と、サービスが保持するメタデータだけです。端末の侵害、盗まれた復旧用の認証情報、悪意のあるクライアントソフトウェア、鍵サービスの欠陥は、平文に至る別の経路として残ります。
法的機関や政府によるアクセス
サービスのプロバイダは、保有する記録の提出を求められることがあります。E2EEの場合、それは読み取れる写真の内容ではなく、暗号文、アカウント情報、アクセスログ、レコードのサイズ、タイミング、共有のメタデータなどです。要求がデバイス、復旧手段、受信者、将来のクライアントの動作にまで及ぶかどうかは、法的にも技術的にも別の問題です。
内部からのアクセス
プロバイダが管理するストレージの鍵にアクセスできる従業員や攻撃者は、サーバー側で暗号化された内容に到達できる可能性があります。プロバイダが平文のコンテンツキーを持たなければ、E2EEはこのストレージの鍵を通じた直接の経路を取り除きます。ただし、プロバイダはクライアントの配布、アカウントの状態、メタデータ、共有、復旧の仕組みを管理している場合があるため、内部による悪用が完全に不可能になるわけではありません。
メタデータの保護
E2EEの実装の中には、ファイルの内容だけを暗号化し、ファイル名や日付などのメタデータを保護しないものもあります。Vaultaireは、ファイルヘッダー、MIMEタイプ、インデックス、サムネイルなどの保管庫のメタデータを、AES-256-GCMの認証付き暗号化で保護します。それでも、保存された暗号文の長さや暗号化されたインデックスファイルの数から、アプリのコンテナにアクセスできる人に構造上の情報がわかる場合があります。
E2EEに関するよくある誤解
「クラウドストレージは暗号化されているから写真は安全」サーバー側の暗号化は、サーバー機器に対する外部からの侵害を防ぎます。プロバイダ自身、法的な要請、内部の脅威からは守れません。鍵はプロバイダが持っています。
「HTTPSなら写真はエンドツーエンドで暗号化されている」HTTPS(TLS)は、デバイスとサーバーの間の通信中のデータを暗号化します。データがサーバーに届くと復号されます。HTTPSが暗号化するのは通り道であり、データそのものではありません。
「エンドツーエンド暗号化なら誰にも写真を見られない」E2EEの意味は、鍵を持たない人には写真が見えないということです。誰かがあなたのパスワードや鍵を持っていれば、データを復号できます。鍵の管理と強いパスワードは今も欠かせません。
「Apple/Googleには写真が見えない」デフォルトでは、どちらの会社もクラウドに保存された写真の暗号化キーを保持しています。Appleは高度なデータ保護をオプトインで提供しています。GoogleはGoogleフォトにE2EEの選択肢をまったく提供していません。
Vaultaireのエンドツーエンド暗号化の実装
Vaultaireは階層型のE2EEを採用しています。
- AES-256-GCMがすべてのファイルの内容を暗号化します。各ファイルには固有の初期化ベクトルが割り当てられます。認証付き暗号化が改ざんを検出します。
- HMAC-SHA512を使うPBKDF2が、ユーザーが描いたパターンとデバイスのソルトからローカルの保管庫キーを導出します。この計算量により、オフラインでの推測1回ごとのコストが上がりますが、パターンのエントロピーが増えるわけではありません。その保管庫キーが暗号化されたインデックスを認証し、ファイルのデータに使うランダムなマスターキーをアンラップします。
- メタデータ用のAES-256-GCMが、ファイル名、日付、サイズ、インデックス、サムネイルを認証付き暗号化で保護します。
- iOSのキーチェーンとデータ保護が、デバイスのソルトと暗号化された復旧用データベースを守ります。保管庫が開いている間、AES-GCMの処理と使用中の共通鍵はアプリのプロセス内にあります。
- プロバイダとの鍵の分離により、Wraxleは平文の保管庫キー、マスターキー、バックアップキー、復旧キーを受け取りません。CloudKitバックアップ(デフォルトで有効)、同期、共有では暗号文のレコードと暗号化された鍵の封筒が保存されますが、Appleはサービスのメタデータを引き続き観測できます。VaultaireはVaultaireの本人確認用アカウントを必要としません。
Vaultaireは、パターンを含む復旧情報を、iOSのキーチェーンに保存されたAES-GCMで暗号化されたデータベースに保管します。平文のファイルに書き込まれることも、Vaultaireのアカウントサービスに送られることもありません。使えるパターン、リカバリーフレーズ、すでにロック解除されたデバイスのいずれも残っていない場合、Vaultaireはアクセスを回復できるプロバイダの復旧キーを持っていません。
よくある質問
エンドツーエンド暗号化は合法ですか?
暗号化、強制的なアクセス、暗号化されたサービスの法的な扱いは、法域によって異なり、変わることもあります。このガイドは技術的なモデルを説明するものであり、法的な助言ではありません。国境での検査、裁判所命令、規制対象の記録など、リスクの高い状況で使う場合は、現行の現地の法律を確認してください。
法執行機関はエンドツーエンド暗号化を破れますか?
攻撃でAES-256の鍵空間全体を探索する必要はほとんどありません。検査者は、弱いパスワードやパターン、ロック解除された端末、メモリ、リカバリーフレーズ、受信者、バックアップ、実装の欠陥を狙うことができます。ランダムで高エントロピーの鍵を使って正しく実装されたAES-256-GCMは、鍵の直接探索に耐えるように設計されていますが、それはシステムの一部にすぎません。
E2EEとゼロ知識暗号化の違いは何ですか?
E2EEは、平文の暗号化と復号がどこで行われ、使えるコンテンツキーを誰が持つかを表します。「ゼロ知識」はプロバイダに見えない暗号化を指して製品の宣伝でよく使われますが、文字どおりに受け取るべきではありません。サービスは平文の鍵を持たなくても、暗号文、アカウントのデータ、サイズ、タイミング、共有の関係などのメタデータを見られる場合があります。ラベルだけでなく、文書化された鍵と復旧の経路で評価してください。
エンドツーエンド暗号化でスマートフォンは遅くなりますか?
最近のデバイスは、システムの暗号ライブラリを通じて提供されるハードウェアアクセラレーションで、AES-256を効率よく処理します。iPhoneでは、VaultaireはCryptoKitを通じてアプリのプロセス内でAES-GCMを実行します。Appleが公開しているSecure EnclaveのAPIは、ファイル暗号化に任意に使えるAES-GCMエンジンではありません。暗号化と復号の負荷はファイルサイズとデバイスによって異なりますが、通常の使用の妨げにならないように設計されています。
暗号化キーを失うとどうなりますか?
使える復号と復旧の経路をすべて失うと、暗号化されたデータは復元できなくなります。そのため多くのE2EEシステムは、リカバリーフレーズ、信頼できるデバイス、復旧用連絡先、緊急キット、暗号化された鍵の封筒を使います。これらの仕組みはアクセスを維持しますが、それぞれがセキュリティモデルの一部にもなります。
結論
エンドツーエンド暗号化は、アップロード前に認可された端末上で暗号化が行われる場合、ストレージのプロバイダが平文の鍵を得る経路を取り除けます。これは意味のある保護ですが、システム全体を保証するものではありません。非公開の写真をサービスに預ける前に、コンテンツキーの管理、復旧、メタデータ、クライアントの更新、端末のセキュリティ、共有を確認してください。
Vaultaireは、iOS向けにクライアント側暗号化を実装しています。写真と保管庫のメタデータは、バックアップや同期の前にデバイス上でAES-256-GCMで暗号化されます。Vaultaireは復号キーを受け取らず、暗号化されたレコードを写真に戻せるサーバーも運営していません。このプロバイダとの境界があっても、侵害されたiPhoneやロック解除されたiPhoneが信頼できるようになるわけではありません。