本文へスキップ
ecdsa.com

ECDH(楕円曲線ディフィー・ヘルマン)

各当事者が自分の楕円曲線の秘密鍵と相手の公開鍵を組み合わせて、同じ共有秘密(d_A·d_B·G の x 座標)を計算する鍵共有です。
別表記Elliptic Curve Diffie-HellmanECDH key agreementECC CDH

各当事者は秘密スカラー d と公開点 Q = d·G を持ち、双方が d_A·Q_B = d_B·Q_A の x 座標である Z を計算します。Z はそのまま鍵にはならず、HKDF(TLS 1.3)、SP 800-56C のワンステップ KDF、Concat KDF(JOSE の ECDH-ES)などの鍵導出関数に通します。NIST SP 800-56A Rev. 3 は、このプリミティブと方式のバリエーション(一時・一時、一時・静的など)を規定しています。

受信側は相手の点を検証しなければなりません。曲線上にあること、無限遠点ではないこと、正しい部分群に属することを確認します(SP 800-56A §5.6.2.3)。これを省くと、数百回のクエリで静的な秘密鍵を取り出す無効曲線攻撃が可能になり、2017年には複数の JOSE ライブラリの ECDH-ES がこの問題の影響を受けました。X25519 では設計上、この検査は結果がすべてゼロの場合に拒否するだけで済みます。

一時鍵(ECDHE)は前方秘匿性をもたらし、TLS 1.3 で使われるのはこの種類だけです。受信者の鍵が静的な ECDH は、ECIES、JWE の ECDH-ES、HPKE で使われます。使われているグループは secp256r1、secp384r1、x25519、x448 です。ECDH と ECDSA は曲線と鍵の形式を共有していますが、SP 800-57 Part 1 は 1 つの鍵を 1 つの用途にだけ使うことを推奨しています。NIST IR 8547(ドラフト)は 2035年以降の ECDH の禁止を提案しており、X25519MLKEM768 などのハイブリッド方式が移行の道筋です。

規格と参考文献

すべての用語