暗号学において、鍵合意プロトコルとは、 2人(またはそれ以上)の当事者が、各正直な当事者から提供された情報に基づいて暗号鍵を生成するプロトコルであり、どの当事者も結果の値を事前に決定することはできない。[ 1 ] 特に、すべての正直な参加者が結果に影響を与える。鍵合意プロトコルは、鍵交換プロトコルの特殊化である。[ 2 ]
プロトコルが完了すると、すべての当事者が同じ鍵を共有します。鍵合意プロトコルは、望ましくない第三者が合意当事者に鍵の選択を強制することを防ぎます。安全な鍵合意は、単純なメッセージングアプリケーションから複雑な銀行取引まで、通信システムにおける機密性とデータの完全性を確保できます[ 3 ] 。
安全な合意は、例えばユニバーサルモデルなどのセキュリティモデルに基づいて定義されます。[ 2 ]より一般的には、プロトコルを評価する際には、セキュリティ目標とセキュリティモデルを明記することが重要です。[ 4 ]例えば、セッションキーの認証が必要になる場合があります。プロトコルは、その目標と攻撃モデルのコンテキストでのみ成功を評価できます。[ 5 ]敵対的モデルの例として、Dolev–Yao モデルがあります。
多くの鍵交換システムでは、一方の当事者が鍵を生成し、その鍵をもう一方の当事者に送信します。[ 6 ]もう一方の当事者は鍵に影響を与えません。
上記の基準を満たす最初の公に知られている公開鍵合意プロトコル[ 6 ]は、ディフィー・ヘルマン鍵交換であり、2つの当事者が乱数生成器を共同で指数化し、盗聴者が結果として得られる共有鍵が何であるかを現実的に判断できないようにする。
指数鍵合意方式自体は、参加者間の事前合意や事後認証を規定するものではありません。そのため、匿名鍵合意プロトコルとして説明されています。
対称鍵合意(SKA)は、対称暗号と暗号学的ハッシュ関数のみを暗号プリミティブとして使用する鍵合意方式です。これは、対称認証鍵交換に関連しています。[ 7 ]
SKA は、初期共有秘密の使用を前提とする場合[ 7 ]または合意当事者が秘密を共有する信頼できる第三者を前提とする場合[ 8 ] がある。第三者が存在しない場合、SKA の達成は自明となる。初期秘密を共有し SKA を達成した 2 つの当事者をトートロジー的に仮定する。
SKAは、鍵カプセル化メカニズムなどの非対称暗号技術を取り入れた鍵合意プロトコルとは対照的である。
共有鍵の最初の交換は、プライバシーと完全性が保証された方法で行われなければなりません。従来、これは信頼できる宅配業者を利用するなど、物理的な手段によって実現されていました。
SKAプロトコルの一例として、 ニーダム・シュローダープロトコルが挙げられます。これは、 同一ネットワーク上の2者間で、信頼できる第三者としてサーバーを利用してセッションキーを確立するプロトコルです。オリジナルのニーダム・シュローダープロトコルはリプレイ攻撃に対して脆弱でした。この攻撃に対処するため、タイムスタンプとノンスが追加されました。ニーダム・シュローダープロトコルは、ケルベロスプロトコルの基礎となっています 。
Boydら[ 9 ]は、 2者間鍵合意プロトコルを以下の2つの基準に従って分類している。
事前共有鍵は、2者間で共有することも、各当事者が信頼できる第三者と鍵を共有することもできます。安全なチャネル(事前共有鍵を介して確立される場合もある)がない場合、認証済みセッション鍵を作成することは不可能です。[ 10 ]
セッションキーは、キートランスポート、キー合意、およびハイブリッド方式によって生成できます。信頼できる第三者が存在しない場合、キートランスポート方式とハイブリッド方式によるセッションキー生成は区別できません。SKAは、対称鍵のみを使用してセッションキーを確立するプロトコルを対象としています。
ディフィー・ヘルマンのような匿名鍵交換は、当事者の認証を提供しないため、中間者攻撃に対して脆弱である。
中間者攻撃や関連する攻撃を防ぐために、認証付き鍵合意を提供するさまざまな暗号認証方式とプロトコルが開発されてきました。これらの方法は一般的に、合意された鍵を、次のような他の合意されたデータに数学的に結び付けます。
このような攻撃に対抗するための広く用いられているメカニズムは、完全性が保証されたデジタル署名付き鍵を使用することです。ボブの鍵が、彼の身元を保証する信頼できる第三者によって署名されている場合、アリスは、受け取った署名付き鍵がイブによる傍受の試みではないと確信できます。アリスとボブが公開鍵インフラストラクチャを持っている場合、合意したディフィー・ヘルマン鍵、または交換されたディフィー・ヘルマン公開鍵にデジタル署名することができます。このような署名付き鍵は、認証局によって署名されることもあり、安全なウェブトラフィック(HTTPS、SSL、TLSプロトコルを含む)に使用される主要なメカニズムの1つです。その他の具体的な例としては、インターネットプロトコル通信を保護するためのIPsecプロトコルスイートのMQV、YAK、ISAKMPコンポーネントなどがあります。ただし、これらのシステムが正しく機能するためには、認証局が身元情報と公開鍵の一致を承認する際に注意が必要です。
ハイブリッドシステムでは、公開鍵暗号方式を用いて秘密鍵を交換し、その秘密鍵を共通鍵暗号方式で使用します。暗号化のほとんどの実用的なアプリケーションでは、複数の暗号化機能を組み合わせて、安全な通信に求められる4つの望ましい機能(機密性、完全性、認証、否認防止)をすべて満たすシステムを構築します。
パスワード認証鍵合意プロトコルでは、パスワード(鍵よりも小さい場合もある)を、プライバシーと完全性を確保した方法で別途設定する必要があります。これらのプロトコルは、パスワードおよび確立された鍵に対する中間者攻撃やその他の能動的な攻撃に耐えられるように設計されています。例えば、DH- EKE、SPEKE、SRPは、Diffie-Hellmanのパスワード認証版です。
公開チャネル上で共有鍵を検証する完全性保証された方法があれば、Diffie-Hellman鍵交換によって短期共有鍵を生成し、その後、鍵が一致することを認証することができる。一つの方法は、PGPfoneのように、音声認証による鍵の読み出しを用いることである。しかし、音声認証は、中間者がリアルタイムで一方の参加者の声を他方の参加者に偽装することが不可能であるという前提に基づいているが、これは望ましくない前提かもしれない。このようなプロトコルは、パスワードのような小さな公開値でも機能するように設計できる。このテーマのバリエーションは、Bluetoothペアリングプロトコル向けに提案されている。
追加の帯域外認証要素の使用を避けるため、デイビスとプライスはロン・リベストとアディ・シャミアのインターロックプロトコルの使用を提案したが、このプロトコルは攻撃を受け、その後改良が加えられてきた。