*crypto*练2--攻防世界--easy_ECC

利用工具ECCTOOL解题

下载链接:https://bbs.pediy.com/thread-66683.htm

 ECC相关原理

一般情况下,椭圆曲线可用下列方程式来表示,其中a,b,c,d为系数。

椭圆曲线基础理解:

E:y2=ax3+ bx2+cx+d加法

过曲线上的两点AB画一条直线,找到直线与椭圆曲线的交点,交点关于x轴对称位置的点,定义为A+B,即为加法。如下图所示:A + B = C

 

二倍运算

上述方法无法解释A + A,即两点重合的情况。因此在这种情况下,将椭圆曲线在A点的切线,与椭圆曲线的交点,交点关于x轴对称位置的点,定义为A + A,即2A,即为二倍运算。



椭圆曲线加密:

假设椭圆曲线为y² = x³ + x + 1,其在有限域GF(23)上时,写作:  y² ≡ x³ + x + 1 (mod 23)

此时,椭圆曲线不再是一条光滑曲线,而是一些不连续的点,如下图所示。以点(1,7)为例,7² ≡ 1³ + 1 + 1 ≡ 3 (mod 23)。如此还有如下点:

(0,1) (0,22)  (1,7) (1,16)  (3,10) (3,13)  (4,0)  (5,4) (5,19)  (6,4) (6,19)  (7,11) (7,12)  (9,7) (9,16)  (11,3) (11,20)  等等。

另外,如果P(x,y)为椭圆曲线上的点,则-P(x,-y)也为椭圆曲线上的点。如点P(0,1)-P=(0,-1)=(0,22)也为椭圆曲线上的点。

考虑K=kG ,其中KG为椭圆曲线Ep(a,b)上的点,nG的阶(nG=O∞ ),k为小于n的整数。则给定kG,根据加法法则,计算K很容易但反过来,给定KG,求k就非常困难。因为实际使用中的ECC原则上把p取得相当大,n也相当大,要把n个解点逐一算出来列成上表是不可能的。这就是椭圆曲线加密算法的数学依据

G称为基点(base point

kk<n)为私有密钥(privte key

K为公开密钥(public key)

公钥加密:选择随机数r,将消息M生成密文C,该密文是一个点对,即:C = {rG, M+rK},其中K为公钥

私钥解密:M + rK - k(rG) = M + r(kG) - k(rG) = M  其中kK分别为私钥、公钥。

 

原文地址:https://www.cnblogs.com/kubopiy/p/13462525.html