跳到主要内容
ecdsa.com
推荐Montgomery 形式

curve25519

Curve25519 是 X25519 背后的 Montgomery 曲线,而 X25519 是 TLS 1.3、SSH 和 WireGuard 默认使用的密钥交换。

curve25519 是形如 By² = x³ + Ax² + x 的 Montgomery 曲线,定义在 255 位素域上,其素数阶子群为 253 位,余因子为 8;估计安全级别为 128 位。状态:推荐用于新系统。

Curve25519 是素数 2^255 − 19 上的 Montgomery 曲线 y² = x³ + 486662x² + x,由 Daniel J. Bernstein 于2006年设计,并在 RFC 7748 中定义。它的群阶为 8·n,其中 n 是 253 位素数,安全强度约为 128 位;它的二次扭曲曲线同样是安全的。

X25519 是这条曲线上的 Diffie–Hellman 函数,只使用 u 坐标:密钥是 32 字节的字符串,私钥按照 RFC 7748 §5 的规定进行“钳制”(clamping),使余因子无法泄露信息。该函数接受任意 32 字节作为公钥;低阶输入会产生全零的共享密钥,协议应当拒绝这种结果。

TLS 1.3 将 x25519 列为推荐(Recommended)组,并把它用作 X25519MLKEM768 混合方案中的经典部分;SSH 以 curve25519-sha256 的名称使用它(RFC 8731),WireGuard、Signal 和 age 也都构建在它之上。与它对应的扭曲 Edwards 曲线是 edwards25519,用于 Ed25519 签名。

各标准中的名称

标准名称
RFC 7748curve25519
RFC 7748 / RFC 8410X25519
SSHcurve25519-sha256

对象标识符

域参数

255 位素域 · 约 128 位安全强度

域素数 p
0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
系数 a
0x76d06
系数 b
0x1
基点 x 坐标
0x9
基点 y 坐标
0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9
基点的阶 n
0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed
余因子 h
0x8

用于

  • TLS 1.3 (x25519, X25519MLKEM768)
  • SSH (curve25519-sha256)
  • Signal
  • WireGuard
  • age
  • HPKE

注册表中的标识符

TLS 支持的组
x25519 0x001DMLKEM512X25519 0x11EAX25519MLKEM768 0x11ECX25519Kyber768Draft00 0x6399
JOSE 算法
HPKE-3HPKE-3-KEHPKE-4
JWK 曲线
X25519
COSE 椭圆曲线
X25519 4
SSH 密钥交换方法
curve25519-sha256gss-curve25519-sha256-*mlkem768x25519-sha256sntrup761x25519-sha512
HPKE KEM 标识符
DHKEM(X25519, HKDF-SHA256) 0x0020DHKEM(X25519+Elligator, HKDF-SHA256) 0x0022X25519Kyber768Draft00 0x0030X-Wing 0x647A

标准与参考资料

全部曲线