命名曲线固定了一组域参数:域的素数 p、方程的系数、基点 G、G 的素数阶 n 和余因子 h(曲线共有 h·n 个点)。安全强度大约是 n 的位长的一半,因为最好的通用攻击(Pollard rho 算法)大约需要 √n 步,所以 256 位曲线大约提供 128 位安全强度。
曲线有三种形式,各自使用不同的公式:短 Weierstrass 形式(P-256、P-384、P-521、secp256k1、Brainpool)、Montgomery 形式(Curve25519 和 Curve448,用于 X25519 和 X448)和扭曲 Edwards 形式(Edwards25519 和 Edwards448,用于 EdDSA);NIST SP 800-186 §2.1 定义了这三种形式。
常见的标识符:X.509 命名曲线 OID 1.2.840.10045.3.1.7(P-256)、1.3.132.0.34(P-384)、1.3.132.0.35(P-521)和 1.3.132.0.10(secp256k1);JOSE 的 crv 值 P-256、P-384、P-521、secp256k1、Ed25519、X25519;TLS 支持的组 secp256r1(23)、secp384r1(24)、secp521r1(25)、x25519(29)、x448(30)。RFC 5480 要求 PKIX 中使用命名曲线,许多库会拒绝带有显式曲线参数的证书。
实际选择由生态决定:WebPKI、WebAuthn 和硬件密钥使用 P-256,SSH 和现代协议使用 Ed25519 和 X25519,区块链使用 secp256k1。椭圆曲线可视化演示在能画出图形的小曲线上展示同样的运算。