1.椭圆曲线的数学基础
(1)椭圆曲线及相关参数
范式定义的椭圆曲线 (EC)是指光滑的 Weierstrass 方程(一类处处连续而处处不可导的实值函数) 所确定的平面曲线。
方程为且满足
仅讨论曲线E在素数域F中,使用一个基点P,有一个素数阶n。
定义一个域参数:D=(q, a, b, P, n), 这些域参数都是公开的。其中:
- q 是一个素数域的阶。
eg : q是一个素数,x, y, a, b在{0,1,2,…q-1} - a,b是椭圆曲线的系数
- P是曲线上一个点
- n是P的素数阶
eg : P的加法能在曲线上定义n个点,其中n是一个素数.
(2)相关运算
1.点加
eg : 计算 P + Q
应用:计算2P
2.倍加 / 点乘
点乘运算kP:是由若干步点加运算组成的。
其分解过程如下:假设整数k和点P(Px,Py)相乘,整数k的位数为n。则点乘可以分解为 2(n-1) 次点加。
2.算法加密
- Alice生成公私钥对,并发送基点G(x,y) , 公钥K(公钥K=私钥k * 基点G)给Bob
- Bob 选择随机数 r
公钥加密
公钥加密:密文 M’ =明文m 映射点 M 带入 x 计算得出的M+ 私钥k * 基点G * 随机数 r
- Bob 将 r’(=随机数 r * 基点G)、密文M’ 发给Alice.
3.算法解密
- Alice 计算 K’ = 私钥k * r’ =随机数 r * 基点G * 随机数 r
私钥解密
私钥解密:明文M = 密文 M’ (明文m 映射点 M 带入 x 计算得出的M+ 私钥k * 基点G * 随机数 r)- K’(随机数 r * 基点G * 随机数 r)
椭圆曲线加密有点复杂。 o(╥﹏╥)o
继续加油吧 !!!