鍵交換と確立
鍵確立プロトコルは、当事者間で新たな共有秘密鍵を合意することを可能にし、認証されたIDにそれを結合することで、その後の通信を高速な対称暗号で保護できるようにします。
Definition
鍵確立とは、2つ以上の当事者が秘密鍵を共有するためのプロトコルです。鍵合意では両当事者が鍵に貢献しますが、鍵配送では一方の当事者が鍵を生成し、安全に送信します。
Scope
このトピックでは、認証付き鍵交換(AKE)プロトコルについて扱います。具体的には、鍵合意と鍵配送の違い、それらが耐えなければならない脅威(中間者攻撃、リプレイ攻撃、鍵漏洩によるなりすまし)、前方秘匿性や寄与型鍵制御などのセキュリティ特性、そしてそれらを分析するために使用される形式モデル(Bellare-Rogaway、Canetti-Krawczyk)についてです。また、生のDiffie-Hellmanに認証がどのように追加されるかについても説明します。基礎となる問題の数学的側面や、展開されているチャネルプロトコルについては、別途扱われるため、ここでは除外します。
Core questions
- 認証付き鍵交換プロトコルはどのようなセキュリティ特性を保証しなければなりませんか?
- Diffie-Hellmanのような生の鍵合意プロトコルに認証はどのように重ねられますか?
- 前方秘匿性とは何ですか、そして一時的な鍵の選択はどのようにそれを提供しますか?
- 形式モデルは、ネットワークを制御する能動的な攻撃者をどのように捉えますか?
- プロトコルはどのような攻撃(中間者攻撃、リプレイ攻撃、鍵漏洩によるなりすまし、未知鍵共有攻撃)に耐えなければなりませんか?
Key concepts
- 鍵合意 vs 鍵配送
- 認証付き鍵交換
- 前方秘匿性
- 一時鍵
- 中間者攻撃
- 鍵漏洩によるなりすまし
- 未知鍵共有攻撃
- Bellare-RogawayおよびCanetti-Krawczykモデル
- 鍵導出関数
Key theories
- 認証付き鍵交換
- 生の鍵合意は共有秘密を提供しますが、相手の身元を保証するものではありません。AKEプロトコルは認証(署名、証明書、または事前共有鍵を介して)を追加し、各当事者が意図した相手と鍵を共有していることを、なりすまし者ではなく確認できるようにします。
- 前方秘匿性とセッション鍵の新鮮さ
- セッションごとに新鮮な一時鍵素材を使用し、それを長期認証鍵と組み合わせることで、長期鍵が後に漏洩した場合でも秘密が保たれるセッション鍵が生成され、古いセッションのリプレイ攻撃に耐えることができます。
Mechanisms
典型的なAKEは、一時的なDiffie-Hellman交換と認証を組み合わせたものです。当事者は一時的な公開値を交換し、トランスクリプトデータに署名するか、事前共有鍵または認証済み長期鍵を使用することによって自身の身元を証明します。結果として得られる共有秘密は、トランスクリプトハッシュとともに鍵導出関数を通過させられ、セッションに結合されます。これにより、リプレイ攻撃や未知鍵共有攻撃を防ぎ、新鮮で認証されたセッション鍵を提供します。
Clinical relevance
鍵確立は、ほぼすべてのセキュアなセッションの開始段階です。TLS 1.3ハンドシェイク、Signal X3DHおよびDouble Ratchet、IPsec IKEv2、SSH、WireGuardはすべて、データが流れる前に認証付き鍵交換を実行します。これらの正確性が、攻撃者がサーバーになりすましたり、2つの当事者間に密かに介入したりできるかどうかを決定します。
Evidence & guidelines
鍵確立スキームはNIST SP 800-56A/Bで標準化されており、Bellare-RogawayやCanetti-Krawczykなどのモデルで分析されています。最新のプロトコル(TLS 1.3、Noiseフレームワーク)は、前方秘匿性のある一時的な交換を義務付けており、正式なセキュリティ分析を受けています。前方秘匿性のないレガシーな静的鍵交換は推奨されません。
History
認証付き鍵交換は、1976年のDiffie-Hellmanプロトコルと、能動的な攻撃者に対抗するために認証が必要であるという認識から発展しました。1990年代から2000年代にかけて、厳密なセキュリティモデル(Bellare-Rogaway 1993、Canetti-Krawczyk 2001)や、ステーション間プロトコル、MQV形式のプロトコルが生まれました。これらの教訓は、正式に分析されたTLS 1.3ハンドシェイクとNoiseプロトコルフレームワークに統合されました。
Key figures
- Whitfield Diffie
- Martin Hellman
- Mihir Bellare
- Phillip Rogaway
- Ran Canetti
- Hugo Krawczyk
Related topics
Seminal works
- diffie1976
- katz2020
- menezes1996
Frequently asked questions
- 鍵合意と鍵配送の違いは何ですか?
- 鍵合意(Diffie-Hellmanなど)では、両当事者が乱数を提供するため、どちらか一方だけでは最終的な鍵を決定できません。鍵配送では、一方の当事者が鍵を生成し、相手の公開鍵で暗号化して送信します。合意の方が、より自然に前方秘匿性をサポートします。
- なぜ一度鍵を確立するだけでは長いセッションには不十分なのですか?
- 長期間使用される鍵は、漏洩した場合のリスクが増大し、暗号解析や攻撃者の観測によって弱体化する可能性があります。プロトコルは定期的に鍵を再生成したり、ラチェット(Signalのように)したりすることで、あるセッション鍵が漏洩しても、過去または将来のメッセージが漏洩しないようにします。