本文へスキップ
ecdsa.com

Curve25519

Daniel J. Bernstein が 2005年に提案した、素数 2²⁵⁵ − 19 上のモンゴメリー曲線 y² = x³ + 486662x² + x で、X25519 鍵交換の基盤であり、エドワーズ形式では Ed25519 署名の基盤にもなっています。
別表記Curve25519 curveedwards2551925519

パラメーター(RFC 7748 §4.1、NIST SP 800-186 §3.2.2.1)は、A = 486662、p = 2²⁵⁵ − 19、コファクター 8、ベースポイント u = 9 です。この曲線はツイストに対しても安全なので、u 座標だけを使うモンゴメリーラダーでは点の検証が不要です。また、双有理同値なツイストエドワーズ形式である Edwards25519(SP 800-186 §3.2.3.1)は完全な加算公式を持ち、署名に適しています。

名前の付け方は RFC 7748 に従います。Curve25519 は曲線、X25519 はディフィー・ヘルマン関数、Ed25519 は署名方式の名前です。コファクターが 8 であるため位数の小さい点が存在しますが、X25519 のクランプと EdDSA のコファクターを考慮した検証がこれに対処します。素数位数の群を必要とするプロトコルは ristretto255(RFC 9496)を使います。

パラメーターは、説明のないシードではなく、明示された厳格な基準に従って選ばれており、演算も定数時間で高速に実行できます。そのため、TLS 1.3 のキーシェア、SSH、WireGuard、Signal、Tor、age、Noise ベースのプロトコルでデフォルトとなり、NIST も 2023年に SP 800-186 にこの曲線を追加しました。

規格と参考文献

すべての用語