現代のメッセージングにおけるエンドツーエンド暗号化
WhatsAppとSignalを支えるSignal Protocolについて、前方秘匿性、ラチェット、sealed senderを含めて検討します。
「現代のメッセージングにおけるエンドツーエンド暗号化」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。
Signal Protocolの概要
Signal Protocolは、SignalやWhatsAppなどの安全なメッセンジャーを支える暗号基盤です。2つのアルゴリズムを組み合わせています。1つは、受信者がオフラインでも最初の共有秘密を確立するX3DH、もう1つは、メッセージごとに新しい暗号鍵を導出するDouble Ratchetです。その結果、ユーザーが意識することなく、強力な機密性と前方秘匿性が実現されます。
X3DH:Extended Triple Diffie-Hellman
X3DHを使うと、一方がオフラインでも2者間で共有秘密を確立できます。長期のアイデンティティ鍵、中期の署名済み事前鍵、ワンタイム事前鍵を組み合わせ、4回のDiffie-Hellman計算を行います。サーバーは、受信者があらかじめアップロードした事前鍵を保存します。送信者はそれらの鍵を使ってX3DHを実行し、共有秘密を導出して、受信者がオンラインになるのを待たずに暗号化した最初のメッセージを送信します。
Double Ratchetアルゴリズム
X3DHが最初の共有秘密を確立した後は、継続的な会話をDouble Ratchetが引き継ぎます。新しいDH鍵が交換されるたびに進むDiffie-Hellmanラチェットと、メッセージ1件ごとに進む共通鍵ラチェットを組み合わせています。各メッセージは一意の鍵で暗号化され、その鍵は使用後すぐに削除されます。そのため、1つのメッセージ鍵を取得されても、他のメッセージが危険にさらされることはありません。
実際の運用における前方秘匿性
前方秘匿性とは、攻撃者が今日暗号化された通信を記録し、後になってあなたの長期秘密鍵を侵害したとしても、過去のメッセージを復号できないことを意味します。Double Ratchetがこれを実現できるのは、メッセージごとの鍵が一時的なもので、直ちに削除されるためです。過去のメッセージを復号できるのは、その時点で会話に参加していたデバイスだけであり、かつそのデバイス上でメッセージが削除されていない場合に限られます。
侵害からの復旧
Double Ratchetは、侵害後セキュリティとも呼ばれる、侵害からの復旧機能も提供します。攻撃者が一時的にデバイスを侵害して現在の鍵を読み取ったとしても、次のDHラチェットのステップで、攻撃者には予測できない新しい鍵が生成されます。1つの鍵の侵害によって以後のすべてのメッセージが危険にさらされるシステムとは異なり、手動操作なしで将来のメッセージが再び安全になります。
WhatsAppによるSignal Protocolの採用
2016年、WhatsAppはすべてのプラットフォームでSignal Protocolによるエンドツーエンド暗号化の全面展開を完了し、当時10億人を超えるユーザーを保護しました。これは、当時のエンドツーエンド暗号化として史上最大の導入でした。この統合は、Signalを開発した組織であるOpen Whisper Systemsとの協力によって開発されました。WhatsAppの実装は第三者による監査を受け、正しく実装されていることが確認されました。
Sealed Sender:メッセージメタデータの隠蔽
コンテンツが暗号化されていても、Signal Protocolは当初、誰が誰にメッセージを送っているかをサーバーに明らかにしていました。Sealed senderは、メッセージの封筒内で送信者の身元を暗号化する拡張機能です。サーバーに分かるのは受信者だけで送信者は分からないため、サーバーやサーバー記録の提出を命じられた者が利用できるメタデータを減らせます。受信者は外側の封筒を復号して、誰がメッセージを送ったのかを知ることができます。
消えるメッセージと一時的な鍵
消えるメッセージは、メッセージが送信者と受信者の双方のデバイスから削除されるまでのタイマーを設定します。Double Ratchetのエフェメラル鍵と組み合わせることで、後日押収されたデバイスをフォレンジック調査しても、復元可能な平文が見つからない可能性があります。SignalのNote to Self機能と消えるメッセージのデフォルト設定は、プライバシー対策としてデータ保持を最小限にすることを促します。
iMessage:ハイブリッドアプローチ
AppleのiMessageは、双方でiMessageが有効になっている場合にエンドツーエンド暗号化を使用し、一方が有効でない場合はSMSに切り替わります。iMessageは暗号化されたメッセージ鍵をiCloud Keychainに保存するため、複数のデバイスからアクセスできますが、iCloudバックアップが有効で、法的に要求された場合には、Appleが技術的にメッセージへアクセスできることも意味します。Signalとは異なり、iMessageはDouble Ratchetを使用しないため、同じ前方秘匿性の保証を備えていません。
グループメッセージングの安全性確保が難しい理由
2者間の会話では、Double Ratchetは効率的です。N人のメンバーからなるグループでは、すべてのメッセージを各メンバー向けに個別に暗号化するか、共有グループ鍵を管理する必要があります。グループ鍵を安全に管理するのは複雑です。メンバーが脱退した場合、残りのメンバー全員が鍵を更新しなければなりません。これはグループにおける侵害後セキュリティとして知られています。Messaging Layer Securityプロトコル(MLS/RFC 9420)は、計算量が対数となる鍵更新によってこの問題に対処します。
Signal、WhatsApp、Telegramの比較
Signalは完全にオープンソースで、収集するメタデータを最小限に抑え、全体を通してSignal Protocolを使用しています。WhatsAppはメッセージにSignal Protocolを使用していますが、Metaが所有しており、相当量のメタデータを収集します。TelegramはSecret Chatsでのみ独自のMTProtoプロトコルを使用し、通常のチャットはエンドツーエンド暗号化されず、Telegramのサーバーに保存されます。最大限のプライバシーを求める場合は、消えるメッセージを設定したSignalが推奨されます。
Signal Protocolの特性
Double Ratchetのどの特性により、1つのメッセージの鍵が取得されても、他のメッセージが漏えいしないのでしょうか。
エンドツーエンド暗号化:要点
Signal Protocolは、オフラインでの鍵合意にX3DHを、メッセージごとの鍵導出にDouble Ratchetを組み合わせています。前方秘匿性は過去のメッセージを保護し、侵害後の回復機能は、侵害後に送信される将来のメッセージを保護します。WhatsAppは2016年にこれを大規模に導入しました。グループメッセージングには、MLSのような、より複雑な鍵管理プロトコルが必要です。メタデータを保護するには、sealed senderのような追加技術が必要です。
よくある質問
「現代のメッセージングにおけるエンドツーエンド暗号化」レッスンは無料ですか?
はい。「現代のメッセージングにおけるエンドツーエンド暗号化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。
「現代のメッセージングにおけるエンドツーエンド暗号化」で何を学びますか?
WhatsAppとSignalを支えるSignal Protocolについて、前方秘匿性、ラチェット、sealed senderを含めて検討します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cryptology Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「現代のメッセージングにおけるエンドツーエンド暗号化」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCryptology Academyレッスンでコードを書いて実行できますか?
はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- メールが本質的に安全でない理由
- メールのPGP・GPG暗号化
- 企業メールにおけるS/MIME
- 現代のメッセージングにおけるエンドツーエンド暗号化