数学还是挺有逻辑的,给出计算的操作步骤 就能得出想要结果
背景:
● ECC 是一种极其巧妙的 非对称加密算法 , 其完美利用了 椭圆曲线几何累加 不可逆的性质
● 拥有 密钥体积小,计算速度快的优势,被广泛用于各种区块链,移动端APP的认证过程。
● 越来越多的行业采用 ECC,替代传统 RSA 算法
(RSA 算法的一些笔记,可以参考我上半年的部分记录 [Security] RSA原理 | 快速幂求解
一、ECC 核心原理
1.1 椭圆曲线的数学定义
椭圆曲线的标准形式为:
y 2 = x 3 + a x + b y^2 = x^3 + ax + b y2=x3+ax+b
需满足约束条件 4 a 3 + 27 b 2 ≠ 0 4a^3 + 27b^2 \neq 0 4a3+27b2=0,确保曲线无奇点(如尖点或自相交)。在密码学实践中,椭圆曲线通常定义在有限域上:
y 2 ≡ x 3 + 2 x + 3 ( mod 7 ) y^2 \equiv x^3 + 2x + 3 \ (\text{mod}\ 7) y2≡x3+2x+3 (mod 7)
所有坐标点均为整数,形成离散的椭圆曲线点集。
1.2 椭圆曲线群运算
运算类型 | 计算规则 | 数学表达式 |
---|---|---|
点加法 | 连接两点的直线与曲线的第三个交点取对称 | R = P + Q R = P + Q R=P+Q |
标量乘法 | 重复点加法运算 | k P = P + ⋯ + P ⏟ k 次 kP = \underbrace{P + \cdots + P}_{k\ \text{次}} kP=k 次 P+⋯+P |
无穷远点 | 群运算的零元素 | P + O = P P + O = P P+O=P |
二、ECC 安全机制
2.1 椭圆曲线离散对数问题(ECDLP)
给定点 Q = k P Q = kP Q=kP,求解整数 k k k 的难度构成 ECC 的核心安全性。相较于 RSA 算法:
- 密钥效率:256 位 ECC ≈ 3072 位 RSA
- 计算复杂度:最佳攻击算法复杂度为 O ( n ) O(\sqrt{n}) O(n),远超 RSA 的亚指数复杂度
2.2 抗量子计算特性
当前量子计算机对 ECDLP 最有效的 Shor 算法需要数千量子比特,远超出当前技术水平(2025 年 IBM 量子计算机仅 1121 量子比特)。但需关注后量子密码学进展,如 NIST 正在评估的 SIKE 方案。
三、ECC 应用场景
3.1 区块链技术
应用案例 | 技术细节 | 安全参数 |
---|---|---|
比特币 | 采用 secp256k1 曲线 公钥生成公式: Q = k G Q = kG Q=kG | 私钥 256 位 公钥 512 位 |
以太坊 | ECDSA 签名算法 交易哈希算法:Keccak256 | 签名长度 64 字节 |
3.2 安全通信协议
- TLS 1.3:支持 X25519 曲线,密钥交换速度比 RSA 快 3 倍
- 国密标准:SM2 算法采用 256 位素数域椭圆曲线
3.3 物联网安全
在 ESP32 芯片中,ECC-256 签名仅需 5ms,功耗较 RSA-2048 降低 82%。
四、ECC 实验作业
一、公钥计算 Q = 5G
椭圆曲线参数
E : y 2 ≡ x 3 + 2 x + 3 ( mod 7 ) E: y^2 \equiv x^3 + 2x + 3 \ (\text{mod}\ 7) E:y2≡x3+2x+3 (mod 7)
基点 G = ( 2 , 1 ) G = (2, 1) G=(2,1)
私钥 k = 5 k = 5 k=5
1. 计算 2G(点加倍)
s = 3 x 1 2 + a 2 y 1 m o d 7 = 3 ⋅ 2 2 + 2 2 ⋅ 1 = 0 m o d 7 x 3 = s 2 − 2 x 1 = 0 − 4 = 3 m o d 7 y 3 = s ( x 1 − x 3 ) − y 1 = 0 ⋅ ( 2 − 3 ) − 1 = 6 m o d 7 2 G = ( 3 , 6 ) \begin{aligned} s &= \frac{3x_1^2 + a}{2y_1} \mod 7 = \frac{3 \cdot 2^2 + 2}{2 \cdot 1} = 0 \mod 7 \\ x_3 &= s^2 - 2x_1 = 0 - 4 = 3 \mod 7 \\ y_3 &= s(x_1 - x_3) - y_1 = 0 \cdot (2 - 3) - 1 = 6 \mod 7 \\ 2G &= (3, 6) \end{aligned} sx3y32G=2y13x12+amod7=2⋅13⋅22+2=0mod7=s2−2x1=0−4=3mod7=s(x1−x3)−y1=0⋅(2−3)−1=6mod7=(3,6)
2. 计算 3G = 2G + G(点相加)
s = y 2 − y 1 x 2 − x 1 m o d 7 = 1 − 6 2 − 3 = 5 m o d 7 x 3 = s 2 − x 1 − x 2 = 25 − 3 − 2 = 6 m o d 7 y 3 = s ( x 1 − x 3 ) − y 1 = 5 ⋅ ( 3 − 6 ) − 6 = 0 m o d 7 3 G = ( 6 , 0 ) \begin{aligned} s &= \frac{y_2 - y_1}{x_2 - x_1} \mod 7 = \frac{1 - 6}{2 - 3} = 5 \mod 7 \\ x_3 &= s^2 - x_1 - x_2 = 25 - 3 - 2 = 6 \mod 7 \\ y_3 &= s(x_1 - x_3) - y_1 = 5 \cdot (3 - 6) - 6 = 0 \mod 7 \\ 3G &= (6, 0) \end{aligned} sx3y33G=x2−x1y2−y1mod7=2−31−6=5mod7=s2−x1−x2=25−3−2=6mod7=s(x1−x3)−y1=5⋅(3−6)−6=0mod7=(6,0)
3. 计算 4G = 3G + G(点相加)
s = y 2 − y 1 x 2 − x 1 m o d 7 = 1 − 0 2 − 6 = 5 m o d 7 x 3 = s 2 − x 1 − x 2 = 25 − 6 − 2 = 3 m o d 7 y 3 = s ( x 1 − x 3 ) − y 1 = 5 ⋅ ( 6 − 3 ) − 0 = 1 m o d 7 4 G = ( 3 , 1 ) \begin{aligned} s &= \frac{y_2 - y_1}{x_2 - x_1} \mod 7 = \frac{1 - 0}{2 - 6} = 5 \mod 7 \\ x_3 &= s^2 - x_1 - x_2 = 25 - 6 - 2 = 3 \mod 7 \\ y_3 &= s(x_1 - x_3) - y_1 = 5 \cdot (6 - 3) - 0 = 1 \mod 7 \\ 4G &= (3, 1) \end{aligned} sx3y34G=x2−x1y2−y1mod7=2−61−0=5mod7=s2−x1−x2=25−6−2=3mod7=s(x1−x3)−y1=5⋅(6−3)−0=1mod7=(3,1)
4. 计算 5G = 4G + G(点相加)
s = y 2 − y 1 x 2 − x 1 m o d 7 = 1 − 1 2 − 3 = 0 m o d 7 x 3 = s 2 − x 1 − x 2 = 0 − 3 − 2 = 2 m o d 7 y 3 = s ( x 1 − x 3 ) − y 1 = 0 ⋅ ( 3 − 2 ) − 1 = 6 m o d 7 5 G = Q = ( 2 , 6 ) \begin{aligned} s &= \frac{y_2 - y_1}{x_2 - x_1} \mod 7 = \frac{1 - 1}{2 - 3} = 0 \mod 7 \\ x_3 &= s^2 - x_1 - x_2 = 0 - 3 - 2 = 2 \mod 7 \\ y_3 &= s(x_1 - x_3) - y_1 = 0 \cdot (3 - 2) - 1 = 6 \mod 7 \\ 5G &= Q = (2, 6) \end{aligned} sx3y35G=x2−x1y2−y1mod7=2−31−1=0mod7=s2−x1−x2=0−3−2=2mod7=s(x1−x3)−y1=0⋅(3−2)−1=6mod7=Q=(2,6)
二、ECC 加密明文 P = (3, 1)
随机因子 r = 3 r = 3 r=3
公钥 Q = ( 2 , 6 ) Q = (2, 6) Q=(2,6)
1. 计算密文分量 C₁ = rG
C 1 = 3 G = ( 6 , 0 ) (已计算) C₁ = 3G = (6, 0) \quad \text{(已计算)} C1=3G=(6,0)(已计算)
2. 计算 rQ = 3Q
2Q(点加倍):
s = 3 x 1 2 + a 2 y 1 m o d 7 = 14 12 = 0 m o d 7 x 3 = 0 − 4 = 3 m o d 7 y 3 = 0 ⋅ ( 2 − 3 ) − 6 = 1 m o d 7 2 Q = ( 3 , 1 ) \begin{aligned} s &= \frac{3x_1^2 + a}{2y_1} \mod 7 = \frac{14}{12} = 0 \mod 7 \\ x_3 &= 0 - 4 = 3 \mod 7 \\ y_3 &= 0 \cdot (2 - 3) - 6 = 1 \mod 7 \\ 2Q &= (3, 1) \end{aligned} sx3y32Q=2y13x12+amod7=1214=0mod7=0−4=3mod7=0⋅(2−3)−6=1mod7=(3,1)
3Q = 2Q + Q(点相加):
s = 6 − 1 2 − 3 = 2 m o d 7 x 3 = 4 − 3 − 2 = 6 m o d 7 y 3 = 2 ⋅ ( 3 − 6 ) − 1 = 0 m o d 7 3 Q = ( 6 , 0 ) \begin{aligned} s &= \frac{6 - 1}{2 - 3} = 2 \mod 7 \\ x_3 &= 4 - 3 - 2 = 6 \mod 7 \\ y_3 &= 2 \cdot (3 - 6) - 1 = 0 \mod 7 \\ 3Q &= (6, 0) \end{aligned} sx3y33Q=2−36−1=2mod7=4−3−2=6mod7=2⋅(3−6)−1=0mod7=(6,0)
3. 计算密文分量 C₂ = P + rQ
s = 0 − 1 6 − 3 = 2 m o d 7 x 3 = 4 − 3 − 6 = 2 m o d 7 y 3 = 2 ⋅ ( 3 − 2 ) − 1 = 1 m o d 7 C 2 = ( 2 , 1 ) \begin{aligned} s &= \frac{0 - 1}{6 - 3} = 2 \mod 7 \\ x_3 &= 4 - 3 - 6 = 2 \mod 7 \\ y_3 &= 2 \cdot (3 - 2) - 1 = 1 \mod 7 \\ C₂ &= (2, 1) \end{aligned} sx3y3C2=6−30−1=2mod7=4−3−6=2mod7=2⋅(3−2)−1=1mod7=(2,1)
结果:
公钥 Q = (2, 6)
密文 (C₁, C₂) = ((6, 0), (2, 1))
五、ECC 发展
5.1 后量子密码学
研究重点转向同源密码和超奇异椭圆曲线同源,可在保持 ECC 效率的同时抵抗量子攻击。
5.2 标准化进程
NIST 已发布 SP 800-186 标准,新增 Curve448 等高安全曲线,逐步替代 RSA。
核心公式速查表