关于ECC加密
详细说明,请查看下方公众号文章链接:
一、ECC加密概述
1.数学原理
我们假设椭圆曲线上有两个点P
和Q
,然后k
为整数。此时有:
Q = k P Q=kP Q=kP
对于给定的k
和P
,根据加法法则,计算Q
很容易,但是给定P
和Q
,来求k
非常困难
2.加密和解密
- 选取一条椭圆曲线
Ep(a,b)
,并取椭圆曲线上一点作为基点P
- 选取一个大数字
k
为私钥,并且生成公钥Q(Q=kP)
- 加密:选择随机数
r
,将明文M
生产密文C
。密文是一个点,C=(rP,M+rQ)
- 解密:
M+rQ-k(rP)=M+r(kP)-K(rP)=M
二、注意事项
以上操作在有限域中完成:椭圆曲线是连续的,连续并不适合加密,我们需要把椭圆曲线变成离散的点。
这里的加法和乘法(可以看作加法)是 非线性 \color{red}{非线性} 非线性的,不能简单的加减乘除
分数取模,这里使用的是费马小定理
a b m o d ( p ) = ( a ∗ b p − 2 ) m o d ( p ) \frac{a}{b} mod (p)=(a*b^{p-2})mod(p) ba