## 定義 Signalプロトコルは、スマートフォン間のメッセージング・音声・動画通話をエンドツーエンド暗号化するために設計された暗号プロトコルで、鍵が今日侵害されても将来のトラフィックを暴露しない**前方秘匿性(forward secrecy)**と、過去のトラフィックも暴露しない**後方秘匿性(backward secrecy)**――合わせて**事後侵害安全性(post-compromise security)**と呼ばれる――を提供する。3つの要素から構成される。(1) **X3DH(Extended Triple Diffie-Hellman)プロトコル**は、Alice・Bob・サーバの間で新鮮な鍵を確立する。両者が同時にオンラインとは限らないため、各利用者は識別鍵(identity key)IK と事前鍵(prekey)SK、およびIKで検証できるSKへの署名をサーバに公開しておく。Aliceがメッセージを送る際は、Bobの鍵を取得し自分の一時鍵EKを生成して、IK・SK・EKを様々な組み合わせでDiffie-Hellman演算しハッシュすることで共有鍵KABを得る(楕円曲線Diffie-Hellmanと楕円曲線DSAを使用)。(2) 確立した鍵から個々のメッセージ鍵を導出する**ダブルラチェットアルゴリズム(double ratchet algorithm)**は、鍵導出関数(KDF)と追加のDiffie-Hellman鍵交換という2つの仕組みを使い、AliceとBobが送受信それぞれに別のKDFチェーンを保持することで、どちらかの端末が一度侵害されても、継続的に侵害され続けない限りトラフィック全体は漏れないようにする。(3) 利用者のアドレス帳にいる連絡先のうち誰がSignalユーザーかを、アドレス帳をサーバに渡さずに調べる**プライベート連絡先発見(private contact discovery)**は、SGXエンクレーブを使って実現されている。最も困難な部分は初期認証で、サーバを乗っ取った攻撃者(Charlie)が自分のIKをBobのものとして送りつければ「なりすまし会話」が成立してしまうため、Signalはオープンソース化によってこの種の攻撃を検出しやすくしている。(Source: [[@2020__Wiley__Security Engineering 3e - Chapter 20 Advanced Cryptographic Engineering]], ch.20 §20.3) ## 横断的知見 - (このconceptは本 ingest が最初のソースであるため、複数ソースの突き合わせによる横断的知見はまだ無い。他章・他ソースがSignal・X3DH・ダブルラチェット・事後侵害安全性に触れた際に、ここへ積み増す。) ## 未解決の問い - SignalのX3DHは[[公開鍵暗号方式]]が扱う無認証のDiffie-Hellman鍵確立(中間者攻撃に弱い)の弱点を、識別鍵への署名で補っているが、この署名検証の仕組み自体がサーバの乗っ取りに対してどこまで頑健かは、本章の記述(「サーバを乗っ取られたら万事休す」)だけでは技術的に確定できない。 - プライベート連絡先発見がSGXエンクレーブに依存する以上、[[トラステッド実行環境(TEE)]]が挙げるSGXの限界(サイドチャネル攻撃・MDK漏洩・マイクロコード書き換え)がSignalの連絡先発見機能にどこまで波及するかは、両ページを突き合わせて初めて問える問いだが、本章はこの接続を明示的には論じていない。 - 匿名性の観点で、Signalが「何人の容疑者の中の一人か」という匿名性集合(anonymity set)の議論(内部告発者の事例)は、[[暗号利用モード]]や暗号プロトコルの数学的安全性とは独立した社会的・統計的な安全性の次元であり、本章は他のプロトコル(Tor等)にも共通する論点として位置づけるが、体系的な比較は示されていない。 ## 関連 - [[@2020__Wiley__Security Engineering 3e - Chapter 20 Advanced Cryptographic Engineering]] — X3DH・ダブルラチェット・プライベート連絡先発見の詳細 - [[公開鍵暗号方式]] — Diffie-Hellman鍵確立の基礎(Signalが依拠する数学的基盤) - [[トラステッド実行環境(TEE)]] — プライベート連絡先発見が依拠するSGXエンクレーブ - [[Signal]] — プロトコルを実装するメッセージングアプリ本体 ## 出典 - Ross Anderson, *Security Engineering: A Guide to Building Dependable Distributed Systems*, 3rd Edition, John Wiley & Sons, 2020, Chapter 20, §20.3.