术语表

ECC (椭圆曲线密码学)

最后核实

定义

ECC 即椭圆曲线密码学,是基于有限域上椭圆曲线代数结构的公钥密码技术,能用较短的密钥提供很高的安全强度。

ECC 是一类公钥密码技术的总称,安全性建立在椭圆曲线离散对数问题之上。TLS 中它扮演两个角色:用 ECDHE 做密钥交换,用 ECDSA 或 EdDSA 做签名。常见曲线有 NIST 的 P-256 和 P-384、Curve25519(用于密钥交换时称 X25519),以及 Ed25519 签名所用的 Curve25519 爱德华兹形式。

为什么重要

达到同样的安全强度,ECC 所需的密钥比 RSA 或有限域 Diffie-Hellman 小得多,证书更小、握手数据更少、每条连接消耗的 CPU 也更少。今天几乎所有 TLS 密钥交换都基于椭圆曲线,"ECC 证书"(即使用 ECDSA 密钥的证书)也是大多数 CA 的标准选项,阿里云、腾讯云的证书服务里通常把它标为 ECC 或 ECDSA。与 RSA 一样,ECC 在足够大的量子计算机上会被 Shor 算法破解,因此现在正与后量子算法组合成混合密钥交换。

例子

按 NIST SP 800-57 的大致等效强度对比:

Security level   RSA / DH modulus   ECC key size
112 bits         2048 bits          224 bits
128 bits         3072 bits          256 bits (P-256, X25519)
192 bits         7680 bits          384 bits (P-384)

查看本机 OpenSSL 支持的曲线:

openssl ecparam -list_curves

常见误区

  • ECC 是一种证书类型。 ECC 指的是数学方法,所谓"ECC 证书"只是公钥为 ECDSA 密钥的证书。
  • ECC 比 RSA 新,所以能抗量子。 Shor 算法对两者都有效,替代方案是 ML-KEM、ML-DSA 等后量子算法。
  • 哪条曲线都能干任何事。 X25519 是密钥交换函数,不能用于签名,TLS 服务器证书使用的是 P-256 这类签名曲线。

延伸阅读