概要
鍵合意プロトコルは、暗号学において、2者以上が共通の秘密鍵を確立するために用いられる方法である。単純な鍵配送とは異なり、鍵合意では各参加者が最終的な鍵に影響を与える材料を提供する。こうしたプロトコルは、安全な通信の基盤であり、生成された共有鍵は暗号化、メッセージ認証、その他の暗号サービスに利用できる。
主な特徴
鍵合意方式は、通常、次のような性質を同時に満たすことを目指す。
- 相互寄与: すべての参加者が導出される鍵に影響する。
- 機密性: 傍受者が合意された鍵を知るべきではない。
- 真正性と能動攻撃への耐性: 認証と組み合わせることで、なりすましや中間者攻撃を防ぐ能力を持つ。
- 前方秘匿性: 長期鍵が漏えいしても、過去のセッション鍵は露出しない。
歴史と発展
鍵合意の考え方は、1970年代から1980年代にかけて、2者が安全でない通信路上で秘密を合意できる数理的構成として重要性を増した。現代のプロトコルは、より強力な安全性証明、より効率的な演算、そして資源制約のある機器への対応によって、これらの考え方を洗練している。
代表的な手法と例
鍵合意を実装する方法には、よく知られたものがいくつかある。古典的な例としては、離散対数、楕円曲線演算、格子問題に基づく変種が含まれる。実用的なプロトコルは、多くの場合、より広い暗号プロトコルの範疇で説明され、認証や鍵導出関数と組み合わせて、実際に使えるセッション鍵を生成する。
用途と重要性
鍵合意は、事前共有鍵だけに頼らず、2者以上が共通の秘密を必要とする場面で用いられる。典型的な用途には、安全なメッセージング、仮想私設網、Transport Layer Security、分散システムにおけるセッション鍵の確立などがある。生の共有秘密が導出された後は、通常、鍵導出処理によって暗号化と完全性のための鍵へ整えられる。
違いと特筆事項
鍵合意は鍵輸送とは異なる。鍵輸送では一方が鍵を生成し、それを安全に他者へ送るのに対し、鍵合意では参加者全員が鍵の値に影響する。実装では、認証、プロトコルの選択に伴う相互作用、そして微妙な脆弱性を避けるための適切な乱数の利用を考慮しなければならない。これらの文脈における鍵の一般的な背景については、鍵(暗号学)を参照。