椭圆曲线密码ECC
**椭圆曲线密码学 (Elliptic Curve Cryptography, ECC)** 是一种基于椭圆曲线数学结构的公钥加密算法。
#status / growing
#type / concept
#tech / security / crypto
椭圆曲线密码学 (ECC)
1. 简介
椭圆曲线密码学 (Elliptic Curve Cryptography, ECC) 是一种基于椭圆曲线数学结构的公钥加密算法。 与 RSA 基于“大整数分解”不同,ECC 的安全性建立在椭圆曲线离散对数问题 (ECDLP) 之上。
核心优势:在提供同等安全性的前提下,ECC 使用的密钥长度要短得多。这意味着计算更快、占用存储空间更小、带宽消耗更低。
2. 数学基础
椭圆曲线方程
ECC 通常使用魏尔斯特拉斯方程 (Weierstrass equation) 的形式:
$$ y^2 = x^3 + ax + b $$
(在实数域上,它的图像通常像一个横向的钟形或两条曲线)
核心运算:点加与标量乘法
ECC 不使用传统的整数乘法,而是定义了一种几何上的“加法”:
-
点加 (Point Addition):在曲线上取两点 $P$ 和 $Q$,连线与曲线相交于第三点 $-R$,该点关于 X 轴的对称点即为 $R = P + Q$。
-
标量乘法 (Scalar Multiplication):即重复的点加运算。
$$
Q = k \times G = \underbrace{G + G + \dots + G}_{k \text{ times}}
$$
3. 密钥生成
假设我们选定了一条曲线和一个基点 (Base Point, G)。
- 私钥 (Private Key):生成一个随机整数 $d$ ($d$ < 曲线的阶)。
- 公钥 (Public Key):计算 $Q = d \times G$。
安全原理 (ECDLP):
- 已知 $d$ 和 $G$,算出 $Q$ 非常容易(正向计算)。
- 已知 $Q$ 和 $G$,想要算出 $d$ 是计算上不可行的(逆向困难)。这就是椭圆曲线离散对数问题。
4. ECC vs RSA
这是 ECC 最著名的对比优势。为了达到 AES-128 的安全强度:
| 算法 | 所需密钥长度 | 特点 |
|---|---|---|
| RSA | 3072 bit | 密钥极长,加解密慢,但在老旧系统兼容性好 |
| ECC | 256 bit | 密钥极短,计算快,适合手机、IoT、智能卡 |
5. 常见应用
由于其高效性,ECC 已成为现代加密的主流:
- ECDH (密钥交换):基于 ECC 的 Diffie-Hellman 交换,用于 SSL/TLS (HTTPS) 握手,确保网页浏览安全。
- ECDSA (数字签名):基于 ECC 的签名算法。
- 比特币/以太坊:区块链广泛使用
secp256k1曲线来生成地址和签名交易。
- 比特币/以太坊:区块链广泛使用
- 国密 SM2:中国国家密码局发布的 SM2 算法本质上也是一种 ECC 算法。
相关链接:
- RSA算法 (对比对象)
- [[非对称密码学基础]]
- digital-signature
- [[Diffie-Hellman密钥交换]]
Related notes
- 相关概念: 非对称密码学(Asymmetric-Encryption)
- 相关概念: 数字签名