椭圆曲线密码学(ECC)
ECC 是基于椭圆曲线群上离散对数困难性的公钥密码学构造基础,可用于 ECDH 密钥协商、ECDSA/EdDSA 签名等;ECC 不是单一“加密算法”,曲线选择、协议和实现共同决定安全性。
[!info] related notes
椭圆曲线密码学(ECC)
一句话定义
ECC 不是单一 encryption algorithm。
它是基于椭圆曲线群结构的一组公钥密码学构造基础。
常见具体用途:
- ECDH:key agreement;
- ECDSA:digital signature;
- EdDSA:基于 Edwards curve 的签名体系;
- 其他基于椭圆曲线的标准协议。
数学核心
在有限域上的椭圆曲线群中,选择基点 G。
私钥是一个标量 d。
公钥是:
Q = dG
正向 scalar multiplication 可高效计算。
反向:
given G and Q, find d
对应 Elliptic Curve Discrete Logarithm Problem(ECDLP)。
几何图只是帮助直觉
教材常用实数平面上的曲线图解释 point addition。
但真实密码系统主要在 finite field 上运算。
因此“画一条连续曲线再求交点”只是教学直觉,不是实际实现本身。
ECC 的优势到底是什么
常见优势是:
在相近 security strength 下,ECC 通常需要比 RSA 更短的 public/private key。
例如常见对比中:
- RSA 3072-bit;
- 约 256-bit 级 ECC;
可达到大致相近的 classical security strength 级别。
这可能带来:
- 更小 certificate/key;
- 更低 bandwidth/storage;
- 某些场景更好的性能。
但不能统一说 ECC 所有操作都一定比 RSA 更快。
签名、验证、密钥生成、硬件支持的性能关系可能不同。
ECDH
ECDH 用于 key agreement:
Alice private + Bob public → shared secret
Bob private + Alice public → same shared secret
然后通过 KDF 派生真正 session key。
现代 TLS 中常见的是 ephemeral ECDH(ECDHE),用于提供 Forward Secrecy。
ECDSA 与 EdDSA
ECDSA 与 EdDSA 都是 signature family,但不是同一个算法。
当前 NIST FIPS 186-5 认可的签名技术包括:
- RSA;
- ECDSA;
- EdDSA。
旧 DSA 只保留验证既有签名的用途。
Curve Choice
不能只写:
ECC = y² = x³ + ax + b
然后认为所有 curve 都一样。
实际安全取决于:
- field;
- curve parameters;
- base point;
- group order;
- cofactor;
- implementation;
- protocol。
应使用经过标准化和广泛分析的 curve/algorithm,而不是自行设计参数。
secp256k1 不是所有 ECC 的代表
Bitcoin 使用 secp256k1。
但 Web/TLS/其他系统还常见:
- NIST P-256 等;
- X25519(key agreement);
- Ed25519(signature)。
它们的曲线形式、API 和 protocol 语义不同。
ECC vs RSA
| 维度 | RSA | ECC |
|---|---|---|
| 数学基础 | integer factorization | elliptic-curve discrete log |
| key size | 较长 | 相近强度下通常更短 |
| signature | RSA-PSS 等 | ECDSA / EdDSA 等 |
| key establishment | RSA-based schemes / legacy key transport | ECDH / ECDHE |
| ecosystem | 广泛、兼容性高 | 现代协议广泛使用 |
不要得出“ECC 全面优于 RSA”的简单排名。
实现风险
ECC 对实现细节非常敏感:
- random nonce;
- side-channel;
- invalid-curve/input validation;
- point encoding;
- constant-time arithmetic。
特别是某些签名算法中,如果 ephemeral nonce 重复或泄漏,private key 可能被恢复。
Post-Quantum 边界
ECC 和 RSA 都不属于 post-quantum cryptography。
大规模容错量子计算若可用,Shor 算法会影响:
- integer factorization;
- discrete logarithm;
- ECDLP。
所以“ECC key 更短”不代表量子安全。
学习检查
- 为什么 ECC 不是单一 encryption algorithm?
- ECDLP 在 ECC 中扮演什么角色?
- 实数平面几何图与真实有限域实现有什么差异?
- 为什么 256-bit ECC 与 2048/3072-bit RSA 不能按 bit 数直接比较?
- ECDH 与 ECDSA 分别解决什么问题?
- secp256k1 为什么不能代表所有 ECC?
- nonce 重复为什么可能破坏某些 ECC signature scheme?
- ECC 为什么不等于 post-quantum cryptography?