楕円曲線ディフィー・ヘルマン(ECDH)は、楕円曲線公開鍵と秘密鍵のペアをそれぞれ持つ2つの当事者が、安全でないチャネル上で共有秘密を確立することを可能にする鍵合意プロトコルです。[ 1 ] [ 2 ] [ 3 ]この共有秘密は、鍵として直接使用することも、別の鍵を導出するために使用することもできます。鍵、または導出された鍵は、対称鍵暗号を使用して後続の通信を暗号化するために使用できます。これは、楕円曲線暗号を使用するディフィー・ヘルマンプロトコルの変種です。
次の例は、共有鍵がどのように確立されるかを示しています。アリスがボブと共有鍵を確立したいとしますが、彼らが利用できる唯一のチャネルは第三者によって盗聴される可能性があります。最初は、ドメインパラメータ(つまり、プライムケースまたは(バイナリの場合)合意する必要がある。また、各当事者は、楕円曲線暗号に適した秘密鍵からなる鍵ペアを保有する必要がある。(区間内のランダムに選択された整数))と、点で表される公開鍵(どこつまり、加算の結果それ自体に(回)。アリスの鍵ペアをそしてボブの鍵のペアはプロトコルを実行する前に、各当事者は相手方の公開鍵を知っている必要があります。
アリスはポイントを計算するボブは点を計算する共通の秘密は(点のx座標)。ECDH に基づくほとんどの標準化されたプロトコルは、対称鍵を次の方法で取得します。ハッシュベースの鍵導出関数を使用する。
両者が計算した共有秘密は等しい。なぜなら。
アリスが最初に公開する鍵に関する情報は、公開鍵のみです。そのため、アリス以外の誰もアリスの秘密鍵を特定することはできません(アリスは秘密鍵を選択しているので当然知っています)。ただし、楕円曲線離散対数問題を解ける場合は別です。ボブの秘密鍵も同様に安全です。アリスまたはボブ以外の誰も共有秘密を計算することはできません。ただし、楕円曲線ディフィー・ヘルマン問題を解ける場合は別です。
公開鍵は、静的(証明書などを介して信頼される)か、一時的(ECDHEとも呼ばれ、最後の「E」は「ephemeral」を意味する)のいずれかです。 一時的鍵は一時的なものであり、必ずしも認証されているわけではないため、認証が必要な場合は、他の手段で真正性の保証を得る必要があります。認証は、中間者攻撃を回避するために必要です。アリスまたはボブの公開鍵のいずれかが静的であれば、中間者攻撃は阻止されます。静的公開鍵は、高度なセキュリティ特性の中でも、前方秘匿性や鍵漏洩時のなりすまし耐性を提供しません。静的秘密鍵の所有者は、もう一方の公開鍵を検証し、静的秘密鍵に関する情報が漏洩しないように、生の Diffie–Hellman 共有秘密鍵に安全な鍵導出関数を適用する必要があります。その他のセキュリティ特性を持つスキームについては、MQVを参照してください。
アリスが悪意を持って無効な曲線点を鍵として選択し、ボブがアリスの点が選択されたグループの一部であることを検証しない場合、アリスはボブの鍵の残余を十分に収集して彼の秘密鍵を導出することができます。いくつかのTLSライブラリがこの攻撃に対して脆弱であることが判明しました。[ 4 ]
共有秘密は、サブセットに均一に分布しています。サイズのこのため、秘密鍵は対称鍵として直接使用すべきではありませんが、鍵導出関数のエントロピーとして使用することができます。
させてそのためモンゴメリー型楕円曲線すべての集合です方程式を満たす無限遠点とともに、これは曲線のアフィン形式と呼ばれます。すべての集合-合理的なポイントと表記されるすべての集合です満足 とともに適切に定義された加算演算の下で、はグループです単位元として。この群の位数は4の倍数であることが知られています。実際、通常はそして順序がはプライムモンゴメリー曲線とその算術に関するより詳細な議論については、以下を参照してください。[ 5 ] [ 6 ] [ 7 ]
計算効率の観点から、射影座標を用いる方が望ましい。モンゴメリー曲線の射影形式は要点としてはの上、座標マップ以下の通りです。[ 7 ]もしそしてもしバーンスタイン[ 8 ] [ 9 ]は地図を導入した次のように:これは、すべての値に対して定義されます。そしてでミラー[ 10 ] 、モンゴメリー[ 5 ]、バーンスタイン[ 9 ]に従って、ディフィー・ヘルマン鍵合意はモンゴメリー曲線上で次のように実行できる。素数位数部分群の生成元となる アリスは秘密の鍵を選ぶ公開鍵を持っているボブは秘密の鍵を選ぶ公開鍵を持っているアリスとボブの共有秘密鍵は古典的なコンピュータを使用して、最もよく知られている取得方法は、からそして約ポラードのローアルゴリズムを使用して時間を計算します。[ 11 ]
モンゴメリー曲線の最も有名な例は、バーンスタインによって導入された曲線25519です。 [ 9 ]曲線25519については、そしてTLS 1.3 に含まれるもう 1 つのモンゴメリー曲線は、ハンブルクによって導入されたCurve448です。 [ 12 ] Curve448 については、そして.曲線25519と曲線448にそれぞれ匹敵するM[4698]とM[4058]という2つのモンゴメリー曲線が[ 13 ]で提案されている。M [4698]については、そしてM[4058]については、256ビットセキュリティレベルでは、M[996558]、M[952902]、M[1504058]という3つのモンゴメリー曲線が提案されている。[ 14 ] M[996558]については、M[952902]の場合、そしてM[1504058]については、それぞれ。これら2つ以外にも、モンゴメリー曲線の他の提案は[ 15 ]で見つけることができます。