論文要約: SoK: Secure Messaging
SoK: Secure Messaging を翻訳し、論点ごとに要約しました。
最近、暗号化されたメッセージアプリってどうやって実現してるの?と興味がある人はぜひ。
ちなみに、2015年時点の論文なので、ちょっと古めの情報です。
概要
本論文では、現在のセキュアメッセージングソリューションを評価し、それらをセキュリティ、ユーザビリティ、採用性の観点から評価するフレームワークを提案。
本研究では、信頼の確立、会話セキュリティ、トランスポートプライバシーという3つの主要課題を特定し、それぞれの設計アプローチを評価しました。
主な発見として、セキュリティが強いアプローチは一般的にユーザビリティや採用性が低くなる一方、ハイブリッドアプローチはより実用的なトレードオフを提供する可能性があります。さらに、大規模なグループ会話やトランスポートプライバシーの実現には依然として課題が残っています。
III. 信頼の確立(Trust Establishment)
概要
信頼の確立は、安全なメッセージングの中で最も重要かつ困難な課題の1つです。このプロセスでは、ユーザー間で暗号鍵を交換し、その鍵が正しいエンティティに関連付けられていることを検証します。
評価基準
セキュリティとプライバシーの特性
-
ネットワーク中間者攻撃防止(Network MitM Prevention)
ローカルやグローバルのネットワーク攻撃者による中間者攻撃を防ぐ。 -
運営者中間者攻撃防止(Operator MitM Prevention)
インフラ運営者による中間者攻撃を防ぐ。 -
運営者中間者攻撃検出(Operator MitM Detection)
攻撃後に運営者による中間者攻撃を検出可能。 -
運営者の責任追及(Operator Accountability)
運営者の行動を検証可能。 -
鍵の失効可能性(Key Revocation Possible)
鍵を失効・更新可能。 -
プライバシー保持(Privacy Preserving)
サービス運営者や他の参加者にメタデータを漏洩しない。
ユーザビリティの特性
-
自動鍵初期化(Automatic Key Initialization)
ユーザーが鍵を手動で作成する必要がない。 -
鍵管理の容易さ(Low Key Maintenance)
ユーザーが鍵を管理する負担が少ない。 -
鍵の容易な発見(Easy Key Discovery)
新しい連絡先を追加する際に鍵を簡単に取得可能。 -
鍵の容易な復旧(Easy Key Recovery)
鍵を紛失した場合でも簡単に復旧可能。 -
帯域内操作(In-band)
外部チャネルを必要としない。 -
共有秘密不要(No Shared Secrets)
事前に共有された秘密情報が不要。 -
警告なしの鍵更新(Alert-less Key Renewal)
他の参加者が鍵を更新してもエラーや警告が表示されない。 -
即時登録(Immediate Enrollment)
鍵が初期化または再初期化された際に即座に利用可能。 -
注意力不要(Inattentive User Resistant)
ユーザーが慎重に情報を検査しなくてもセキュリティを確保。
採用の特性
-
複数鍵対応(Multiple Key Support)
ユーザーが複数のデバイスや公開鍵を使用しても負担が少ない。 -
運営者不要(No Service Provider Required)
鍵サーバーなどのインフラを必要としない。 -
監査不要(No Auditing Required)
運営者の行動を第三者が監査する必要がない。 -
名前の先取り防止(No Name Squatting)
人気のある名前を大量に予約することを防ぐ。 -
非同期性(Asynchronous)
すべての参加者がオンラインでなくても信頼の確立が可能。 -
スケーラビリティ(Scalable)
システムのリソース要件が参加者数に対して効率的に増加。
主な手法の評価
手法 | セキュリティ特性 | ユーザビリティ特性 | 採用特性 |
---|---|---|---|
Opportunistic Encryption | ✖️ ネットワークMitM防止なし | ✔️ 鍵の初期化が容易 | ✔️ サービス不要、スケーラブル |
TOFU (Trust On First Use) | ⚠️ 初回接続時に攻撃を受ける可能性 | ✔️ 簡単だが鍵更新時に注意必要 | ✔️ サービス不要 |
Manual Fingerprint Verification | ✔️ 高いセキュリティ保証 | ✖️ ユーザー負担が大きい | ⚠️ 非同期性や即時性に課題あり |
Authority-based Trust (CA) | ⚠️ 運営者に依存し攻撃リスクあり | ✔️ ユーザーの負担が少ない | ⚠️ 運営者の監査が必要 |
Transparency Logs | ✔️ 運営者の責任追及が可能 | ⚠️ 監査が必要、遅延が発生 | ✔️ サービス不要 |
Blockchains (Namecoin) | ✔️ 分散型の高いセキュリティ | ✖️ ユーザーに大きな管理負担 | ⚠️ スケーラビリティに課題 |
IV. 会話セキュリティ(Conversation Security)
概要
信頼の確立が完了した後、会話セキュリティプロトコルは、交換されるメッセージのセキュリティとプライバシーを保護します。これは、メッセージの暗号化方法やデータの取り扱い、鍵交換プロトコルに関わるものです。
評価基準
セキュリティとプライバシーの特性
-
機密性(Confidentiality)
メッセージは意図された受信者以外が読むことができない。 -
完全性(Integrity)
改ざんされたメッセージが正当なものとして受け入れられない。 -
認証(Authentication)
メッセージ送信者が正当な参加者であることを証明する。 -
参加者の一貫性(Participant Consistency)
メッセージが受信された時点で、全参加者が同じ参加者リストを共有している。 -
送信先の検証(Destination Validation)
メッセージを受信した参加者が、自分が送信対象であることを確認可能。 -
前方秘匿性(Forward Secrecy)
過去の鍵が漏洩しても、それに基づく暗号文が解読されない。 -
後方秘匿性(Backward Secrecy)
将来の鍵が漏洩しても、それ以前の暗号文が解読されない。 -
匿名性保持(Anonymity Preserving)
トランスポート層の匿名性を損なわない。 -
発言者の一貫性(Speaker Consistency)
参加者間で送信されたメッセージの順序が一貫している。 -
因果関係の保持(Causality Preserving)
メッセージの因果関係が正しく表示される。 -
グローバルトランスクリプト(Global Transcript)
すべての参加者が同じ順序でメッセージを受信する。
ユーザビリティの特性
-
順不同メッセージ耐性(Out-of-Order Resilient)
メッセージが遅延して到着しても問題なく復号可能。 -
ドロップメッセージ耐性(Dropped Message Resilient)
メッセージが一部失われても復号可能。 -
非同期性(Asynchronous)
送信者や受信者がオンラインでなくてもメッセージのやり取りが可能。 -
マルチデバイス対応(Multi-Device Support)
複数のデバイスを使用して会話に参加可能。
採用の特性
-
追加サービス不要(No Additional Service)
プロトコルの参加者以外に依存しない。 -
計算負荷の平等性(Computational Equality)
全ての参加者が平等な計算負荷を持つ。 -
信頼負荷の平等性(Trust Equality)
どの参加者も他より多くの責任を持たない。 -
サブグループメッセージング(Subgroup Messaging)
会話グループの一部にメッセージを送信可能。 -
メンバーシップの縮小(Contractible Membership)
グループから参加者が退出できる。 -
メンバーシップの拡大(Expandable Membership)
会話の途中で新しい参加者を追加できる。
主な手法の評価
以下に主な手法をまとめ、評価を示します。
手法 | セキュリティ特性 | ユーザビリティ特性 | 採用特性 |
---|---|---|---|
TLS + Trusted Server | ⚠️ サーバーに依存、エンドツーエンド暗号化なし | ✔️ 非同期、順不同耐性、マルチデバイス対応 | ✔️ 追加サービス不要 |
Static Asymmetric Crypto | ✔️ 機密性、完全性、認証 | ⚠️ 非同期対応だが、柔軟性に欠ける | ✔️ スケーラブル |
Authenticated DH | ✔️ 前方/後方秘匿性あり | ⚠️ 初回ハンドシェイクが必要 | ✔️ 柔軟なセキュリティ |
Double Ratchet (Axolotl) | ✔️ 前方/後方秘匿性、因果関係保持 | ✔️ 非同期性あり、順不同耐性強化 | ⚠️ 実装が複雑 |
3-DH Handshake | ✔️ 参加者一貫性、発言者一貫性 | ⚠️ 匿名性が部分的に損なわれる | ✔️ 追加サービス不要 |
Prekeys | ✔️ 非同期性、前方秘匿性 | ⚠️ マルチデバイス対応に課題 | ⚠️ サーバー依存 |
OTR for Groups | ✔️ 否認可能性、発言者一貫性 | ⚠️ サブグループ対応不可 | ⚠️ メンバー追加が困難 |
V. トランスポートプライバシー(Transport Privacy)
概要
トランスポートプライバシーは、メッセージの送信元、送信先、会話のメタデータなどを隠すことを目的としています。この層は、会話セキュリティ層の下で動作し、メッセージの転送方法を定義します。
評価基準
プライバシーの特性
-
送信者匿名性(Sender Anonymity)
メッセージの送信元が特定されない。 -
受信者匿名性(Recipient Anonymity)
メッセージの受信者が特定されない。 -
参加者匿名性(Participation Anonymity)
会話に関与するノードが特定されない。 -
リンク不可能性(Unlinkability)
プロトコルメッセージが同じ会話に属することを特定できない。 -
グローバル攻撃者耐性(Global Adversary Resistant)
全世界的な監視者に対して匿名性を保持する。
ユーザビリティの特性
-
連絡先の発見(Contact Discovery)
連絡先情報を発見するためのメカニズムを提供。 -
メッセージ遅延なし(No Message Delays)
長いメッセージ遅延が発生しない。 -
メッセージ未達なし(No Message Drops)
メッセージの未達が再送される。 -
簡単な初期化(Easy Initialization)
ユーザーが複雑なタスクを実行せずに通信を開始可能。 -
料金不要(No Fees Required)
システム利用に追加料金が発生しない。
採用の特性
-
トポロジ非依存性(Topology Independent)
ネットワークトポロジーに依存しない。 -
追加サービス不要(No Additional Service)
プロトコルの参加者以外に依存しない。 -
スパム/フラッド耐性(Spam/Flood Resistant)
システムの可用性がスパムや大量メッセージ攻撃に耐えられる。 -
低ストレージ消費(Low Storage Consumption)
システムが大容量のストレージを必要としない。 -
低帯域幅(Low Bandwidth)
システムが大きな帯域幅を必要としない。 -
低計算負荷(Low Computation)
システムが高い計算能力を必要としない。 -
非同期性(Asynchronous)
受信者がオフラインでもメッセージを送信可能。 -
スケーラブル(Scalable)
システムのリソース要件がユーザー数に対して効率的に増加。
主な手法の評価
以下に主なトランスポートプライバシー手法とその評価を示します。
手法 | プライバシー特性 | ユーザビリティ特性 | 採用特性 |
---|---|---|---|
Store-and-Forward (Baseline) | ✖️ プライバシー保証なし | ✔️ 遅延が少なく初期化が簡単 | ✔️ スケーラブル、追加サービス不要 |
Onion Routing (e.g., Tor) | ✔️ 送信者・参加者匿名性、リンク不可能 | ⚠️ 遅延が発生することがある | ⚠️ 帯域幅とストレージが必要 |
DC-nets | ✔️ グローバル攻撃者耐性あり | ⚠️ 同期が必要、メッセージ遅延が発生 | ✖️ スケーラビリティに欠ける |
Broadcast Systems | ✔️ プライバシー保証が最も強い | ✖️ 遅延が長く帯域幅消費が非常に大きい | ✖️ スケーラブルでない |
PIR (Private Info Retrieval) | ✔️ 受信者匿名性とリンク不可能性 | ⚠️ 高いストレージ消費、遅延が発生 | ⚠️ 高い計算能力を必要とする |
Onion Routing + Mixes | ✔️ 送信者・受信者匿名性、リンク不可能 | ⚠️ 非同期だが遅延が大きい | ⚠️ スパム耐性に課題 |
Blockchain (e.g., Bitmessage) | ✔️ 参加者匿名性と受信者匿名性 | ⚠️ 料金が発生、遅延が長い | ✖️ スケーラブルでない |
各レイヤーにおける主な課題と提案
信頼の確立(Trust Establishment)
- セキュリティを強化する手法(例:Transparency Logsやブロックチェーン)は、ユーザビリティや採用性で課題があります。
- 中央化された鍵ディレクトリとTransparency Logsを組み合わせ、必要に応じてユーザーが鍵を検証できる手法が有望です。
- ユーザーの使いやすさを向上させるためには、さらなる研究が必要です。
会話セキュリティ(Conversation Security)
- 二者間の会話では、Axolotlに実装された二重ラチェットプロトコルが前方・後方秘匿性を提供し、現在のベストプラクティスとして推奨されます。
- グループ会話では、TextSecureプロトコルが実用的な選択肢ですが、参加者の一貫性や匿名性の保持にはさらなる改善が必要です。
- 複数デバイス対応や非同期通信を完全に実現するには、さらなる研究とプロトコル設計の工夫が必要です。
トランスポートプライバシー(Transport Privacy)
- メタデータを隠すための強力なプライバシー手法(例:Broadcast SystemsやDC-nets)は、スケーラビリティや遅延、計算負荷に課題があります。
- Onion Routing(例:Tor)はバランスの取れた実装ですが、遅延や帯域幅消費の問題が残ります。
- グローバル攻撃者に耐えられる実用的な手法の開発が引き続き重要です。
おわり
2015年時点ではまだ課題があるものの、Signal protocol等ではそれらが解決されたのか引き続き調べてみようと思います。
Discussion