ECC(椭圆曲线密码学)
ECC
Elliptic Curve Cryptography
Elliptic Curve Cryptography
提出者
Neal Koblitz, Victor Miller (1985)
类别
非对称公钥密码
数学基础
椭圆曲线离散对数难题 (ECDLP)
密钥长度
256-521 bit
安全状态
安全
椭圆曲线密码学(Elliptic Curve Cryptography, ECC)是基于椭圆曲线上离散对数问题(ECDLP)计算困难性的公钥密码体系。1985年由 Neal Koblitz 和 Victor Miller 独立提出。ECC 的核心优势在于:更短的密钥即可达到与 RSA 相当甚至更高的安全强度。
椭圆曲线数学
密码学中使用的椭圆曲线定义在有限域上,标准形式为:
素数域 Fp 上的曲线: y² = x³ + ax + b (mod p)
核心运算:
点加法: P + Q = R
倍点: P + P = 2P
标量乘法: k × P = P + P + ... + P (k 次)
椭圆曲线离散对数问题 (ECDLP):
已知 P 和 Q = k×P,求 k
目前没有已知的多项式时间算法解决 ECDLP
→ 这就是 ECC 安全性的基础
关键算法
| 算法 | 功能 | 曲线 | 标准/场景 |
|---|---|---|---|
| ECDSA | 数字签名 | P-256, P-384, P-521 | Bitcoin, TLS, FIPS 186-4 |
| ECDH | 密钥交换 | P-256, P-384 | TLS ECDHE 密码套件 |
| Ed25519 | 签名 | Curve25519 (EdDSA) | SSH, GPG, Signal |
| X25519 | 密钥交换 | Curve25519 | TLS 1.3, WireGuard |
| Ed448 | 签名 | Curve448 | RFC 8032 |
| X448 | 密钥交换 | Curve448 | RFC 7748 |
Curve25519
Curve25519 是 Daniel J. Bernstein 设计的 Montgomery 曲线,常量 y² = x³ + 486662x² + x(mod 2255 - 19)。其优点:
- 常数时间实现,天然抗侧信道攻击
- 不存在弱点(曲线参数经过" rien-ne-vait-de-soi "选择)
- 每个坐标仅 256 位,紧凑高效
- TLS 1.3 将 X25519 列为必选密钥交换
安全强度对比
| 对称密钥 | ECC 密钥 | RSA 密钥 |
|---|---|---|
| 80 bit | 160 bit | 1024 bit |
| 112 bit | 224 bit | 2048 bit |
| 128 bit | 256 bit | 3072 bit |
| 192 bit | 384 bit | 7680 bit |
| 256 bit | 521 bit | 15360 bit |
256 位 ECC 密钥 ≈ 3072 位 RSA 的安全强度,但密钥短 12 倍。
参考文献
- Koblitz, N. (1987). "Elliptic curve cryptosystems". Mathematics of Computation 48(177): 203-209.
- Bernstein, D.J. (2006). "Curve25519: new Diffie-Hellman speed records". PKC 2006.
- NIST (2013). "Digital Signature Standard (DSS)". FIPS PUB 186-4.