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 7748 | curve25519 |
| RFC 7748 / RFC 8410 | X25519 |
| SSH | curve25519-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
← 全部曲线