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 这类签名曲线。