赞
踩
ECC是椭圆曲线加密算法,Wolfram MathWorld(线上数学百科全书,http://mathworld.wolfram.com) 给出了非常精准的定义:一条椭圆曲线就是一组被 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 ≠ 0 4a3+27b2=0 的点集。 4 a 3 + 27 b 2 ≠ 0 4a^3 + 27b^2 ≠ 0 4a3+27b2=0 这个限定条件是为了保证曲线不包含奇点(在数学中是指曲线上任意一点都存在切线)。椭圆曲线示例图:
不同的椭圆曲线对应不同的形状(b=1,a从2到-3)
左(带锐点):
y
2
=
x
3
y^2 = x^3
y2=x3
右(曲线自交):
y
2
=
x
3
−
3
x
+
2
y^2 = x^3 -3x + 2
y2=x3−3x+2
都不是有效的椭圆曲线
(1)加法
(2)乘法
以2A为例:
3A:
因此,在ECC算法中,Q(公钥)=kP很好算,但是根据Q和P求出k(私钥)很难。
阿贝尔群的概念是抽象代数的基本概念之一,是一种代数结构,由一个集合以及一个二元运算所组成。如果一个集合或者运算是群的话,就必须满足以下条件(+ 表示二元运算):
我们可以在椭圆曲线上定义一个群:
如果P, Q, R在一条直线上的话,他们满足:
P
+
(
Q
+
R
)
=
Q
+
(
P
+
R
)
=
R
+
(
P
+
Q
)
=
⋯
=
0
。
P+(Q+R)=Q+(P+R)=R+(P+Q)=⋯=0。
P+(Q+R)=Q+(P+R)=R+(P+Q)=⋯=0。
当P,Q点为同一点时,P=Q,满足:
这样,我们可以直观的证明:+运算符是符合交换律和结合律的,这是一个阿贝尔群。
因为阿贝尔群满足交换律和结合律,所以点P和点-R的二元运算结果必会在曲线上,即P+P+P的结果必会在曲线上的另一点Q,
以此类推,可以得出得出:
Q
=
k
P
(
k
个相同的点
P
进行二元运算(数乘)
,
记做
k
P
)
Q=kP(k个相同的点P进行二元运算(数乘),记做kP)
Q=kP(k个相同的点P进行二元运算(数乘),记做kP)
描述一条Fp上的椭圆曲线,常用到六个参量:T=(p,a,b,n,x,y)。(p 、a 、b) 用来确定一条椭圆曲线,p为素数域内点的个数,a和b是其内的两个大数;
x,y为G基点的坐标,也是两个大数;n为点G基点的阶;
以上六个量就可以描述一条椭圆曲线,有时候我们还会用到h(椭圆曲线上所有点的个数p与n相除的整数部分)。
现在我们描述一个利用椭圆曲线进行加密通信的过程:
选定一条椭圆曲线 Ep(a,b) 并取椭圆曲线上一点,作为基点P(比如(0,1));
选择一个大数k作为私钥,并生成公钥 Q=kP;
将 Ep(a,b) 和点Q、P传给用户;
用户接到信息后 ,选择一个随机数r,将消息M生成密文C,C是一个点对,C=(rP,M+rQ),并发送;
私钥解密(M + rQ - k(rP) ,解密结果就是点M),公式如下:
M
+
r
Q
−
k
(
r
P
)
=
M
+
r
(
k
P
)
−
k
(
r
P
)
=
M
M + rQ - k(rP) = M + r(kP) - k(rP) = M
M+rQ−k(rP)=M+r(kP)−k(rP)=M
对点M进行解码就可以得到明文
假设在加密过程中,有一个第三者H,H只能知道椭圆曲线 Ep(a,b)、公钥Q、基点P、密文点C,而通过公钥Q、基点P求私钥k或者通过密文点C、基点P求随机数r都是非常困难的,因此得以保证数据传输的安全。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。