第十一讲 椭圆曲线
Post on 06-Jan-2016
73 Views
Preview:
DESCRIPTION
TRANSCRIPT
第十一讲 椭圆曲线
1984 年, Hendrik Lenstra 提出了依靠椭圆曲线性质分解整数的精妙算法。这一发现激发了学者进一步研究椭圆曲线在密码和计算数论的其它应用。
椭圆曲线密码在 1985 年分别由 Neal Koblitz 和 Victor Miller 提出。椭圆曲线密码方案为公钥机制,提供如同 RSA 一样的功能。但是,它的安全性依赖不同的困难问题,也就是椭圆曲线离散对数问题 (ECDLP) 。
我们知道解决分解整数问题需要亚指数时间复杂度的算法,而目前已知计算 ECDLP的最好方法都需要全指数时间复杂度。这意味着在椭圆曲线系统中我们只需要使用相对于 RSA 短得多的密钥就可以达到与其相同的安全强度。例如,一般认为 160 比特的椭圆曲线密钥提供的安全强度与 1024 比特 RSA 密钥相当。使用短的密钥的好处在于加解密速度快、节省能源、节省带宽、存储空间。
本讲提要 Weierstrass 方程 实域上的椭圆曲线 有限域上的椭圆曲线 椭圆曲线密码 椭圆曲线在分解中的应用
1 Weierstrass 方程
是无穷远点。其中,:
有理点的集合是上的的扩域,则是若
。
下:的判别式,具体定义如是,且,,,,其中,
由下述方程定义:上的椭圆曲线域
}{0} ),{( = )(
4 4
2 4
9278
0
:
64223
312
24
232431626
2186
236
31442212
64236
348
22
64321
642
23
312
axaxaxyxy+a+ayLL yxLE
LEKL
aaaaaaaaaadaad
aaadaad
ddddddd
EKaaaaa
x+a+ax+ay=xxy+a+ayE
EK1定义
有理点。上的的所有扩域,并认为无穷远点是点的属于和且坐标有理点是满足曲线方程的曲线
远点。是曲线唯一的一个无穷点以上不同的切线。有点都没有两个或两个
”的,即曲线的所“确保椭圆曲线是 光滑条件
的基础域。为的元素。均为域,,,,为系数上的椭圆曲线,这是因是域我们称
方程。中的方程称为
LLKyx
LyxLE
E KKaaa
aaKE
) ,(
(5)
(4)
0 (3)
(2)
sWeierstras (1)
643
21
1定义 .评述
2 实域上的椭圆曲线2.1 简化 Weierstrass 方程
)274(16 :
24
124
216
3
36
123),(
:
2332
3213112
21
642
23
312
ba+ax+b=xyE
aaaaxayaaxyx
x+a+ax+ay=xxy+a+ayE
这里
,
2.2 实域上的椭圆曲线73: (b) : )a( 32
232
1 xyExxyE ;
2.3 加法法则
弦和切线法则
。表示如上图点。这一几何轴的对称点就是则这个交点关于
圆曲线相交于第三点,的直线,这条直线与椭和画一条连接按如下方法求出。首先的和与
则上的两个不同的点。是椭圆曲线,和,法说明。令加法法则最好用几何方
(a)
)( =
) ( = (1)
22
11
Rx
Q
PRQP
EyxQ
yxP
2.3 加法法则 ( 续 )
弦和切线法则 ( 续 )
。何表示如上图点。这一几轴的对称点就是点,这个交点关于
二线与椭圆曲线相交于第圆曲线的切线,这条切点做椭。首先,在的倍点按如下方法求出
(b)
(2)
Rx
PRP
2.3 加法法则 ( 续 )
。,。因此,。我们有的第三点有线相交是重根。椭圆曲线与直。得到
的方程可以。代入是在这种情况下,直线
。,因此,
的方程求导数得到:对的斜率可以通过点的椭圆曲线。自加倍点假定我们做
。,。因此,,我们有。由于有线相交于第三点。因此,椭圆曲线与直得到
的方程。代入是的直线和。通过,和,。令被定义为假定一条椭圆曲线
)11672(61172
473)3)4(8(
3)4(8
82
332
)(
)3 4(374
737)(
7 10)(3Q
9) (273
32
22
32
32
Ryx
xx
ExyL
y
x
dx
dydxxydy
E
ERR
Ryxyx
xx
ExyLQP
Px yE1例子
2.3 加法法则 ( 续 )
共线。,,。,也可以简化为相加两个点相减
。,,。因此,我们定义如同整数加法中的用
起到了加法单位元的作,,,由于。
GQPGQP
QPQP
yxyx
yxyx
PP
)3(
) (
) ()(
)0(
) ()( )2(
(1)
.评述2.3 加法法则 ( 续 )
代数公式
)2/()3(
)/()(
)(
)(
)( )(
121
1212
1313
212
3
33
2211
32
。,有任意点有一条附加法则:对于
。如果如果
并且
这里,,
则。,,,
确定并令由方程令椭圆曲线
PPP
QPyax
QPxxyym
yxxmy
xxmx
yxRQP
yxQyx P
baxxyE
.加法法则
2.3 加法法则 ( 续 )
上的点构成阿贝尔群。椭圆曲线。
加法法则符合交换律。
加法法则符合结合律:
E
PQQP
RQPRQP
(3)
: )2(
)( )(
(1)
.评述2.3 加法法则 ( 续 )
3 有限域上的椭圆曲线3.1 模素数 p 的椭圆曲线, p≠2, 3情形3.1.1 加法法则
。,这里应该被看成数
曲线公式相同,除了实与前面给出的实域椭圆法法则的代数公式的椭圆曲线上的点的加模
)1(mod 11 pbbaba/b
p
。,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,
上全部的点为:。,考虑椭圆曲线和令
22) (24 13) (19 27) (15 6) (13 17) (6 10) (4 24) (1
7) (24 19) (17 2) (15 25) (10 12) (6 28) (3 5) (1
26) (20 10) (17 23) (14 4) (10 22) (5 1) (3 22) (0
27)(27 3) (20 27) (16 6) (14 19) (8 7) (5 23) (2 7) (0
2) (27 16) (19 2) (16 23) (13 10) (8 19) (4 6) (2 ∞
)29(mod204 : 204 32
E
x + + = xyEb=a=2例子3.1.2 例子
。,,这意味着
。
因此,
。
斜率是。如果需要计算。,,,
这意味着。
因此,
。
斜率是。,,如果需要计算。被定义为假定
1) (34) 2(1
)5(mod1)( )5(mod3
5) 0(mod42
23
4) 2(1,
0) (21) (34) (1
)5(mod0)( )5(mod2
5) 1(mod13
41
3) (14) (1
)5(mod32
1313212
3
1313212
3
32
yxxmy xxmx
m
yxxmy xxmx
m
xxyE3例子3.1.2 例子 ( 续 )
3.2 有限域 GF(2n) 上的椭圆曲线
,这该如何处理?实际就是下,由于在模求导数是。例如,对的形式需要做一些修改
下计算,椭圆曲线方程如果在模
02202
22
32
yy
y
baxxy
3.2.1 简化 Weierstrass 方程
。这里:
,,超奇异
这里:
,,
非超奇异:
432
2
1
232
31
234
213
11
321
1
642
23
312
)(
)( 0
)(
)( 0
c+ax+bcy=xyE
yaxyx
a
b+b+axxy=xyE
a
aaaya
a
axayx
a
x+a+ax+ay=xxy+a+ayE
。,,,最终,。,。,因此,我们需要得到
。,,,我们有。,因此,第三个点应该是
。,,曲线方程,可以得到根代入椭圆。是。通过这两个点的直线,,
。让我们来计算,,,,上的点:我们可以列出所有。:令
)1 0(1) (10) (0
)1 0( 0) (0
1) (10) (00) (0
0) (0
1(mod2) 0 0
1) (10) (0
1) (1 0) (1 1) (0 0) (0
)2(mod 32
RR
x
xy
E
xxyyE4例子3.2.2 加法法则
3.2.2 加法法则 ( 续 )
) ( )(
/)(
)(
)(2
)/()(
)(
)(
)( )(
21
13132
3
33
1212
1313212
3
33
2211
32
。,有任意点有一条附加法则:对于。,,,对于任何
。并且
其中,,
。并且
其中,,
则。,,,
定义并令由方程令椭圆曲线
PPP
cyxPyxP
caxm
cyxxmymx
yxP
xxyym
cyxxmyxxmx
yxRQP
yxQyx P
baxxcyyE
( ).超奇异 加法法则3.2.2 加法法则 ( 续 )
) ,( )(
/
)(2
)/()(
)(
)(
)( )(
111
332132
1
21
23
33
2121
13313212
3
33
2211
32
。,有任意点有一条附加法则:对于。,有,对于任何
。并且
,,。并且
这里,,
则,,,,
定义并令由方程令椭圆曲线
非
PPP
yxxPyxP
xyxm
xmxxyx
bxammx
yxP
xxyym
yxxxmyaxxmmx
yxRQP
QPyxQyx P
b axxxy yE
).超奇异( 加法法则3.2.2 加法法则 ( 续 )
。,,和,,,:椭圆曲线的点计算例子
,,,,,,,,,,,,,,,,,,,,,
上所有点如下:。
上的非超奇异椭圆曲线考虑定义在
。表示,例如,的二进制串为
可表示为长度。元
定义的有限域考虑由既约多项式
0010) (1011 = 1111) 2(0010 0001) (0001 =
1100) (1100+ 1111) (0010
1001) (1011 1100) (0111 1111) (0010 0010) (1011 1011) (0111
1101) (0010 1011) (1111 1111) (1001 0101) (0101
0001) (0001 0100) (1111 0110) (1001 0000) (0101
0000) (0001 1100) (1100 1001) (1000 1111) (0011
1011) (0000 0000) (1100 0001) (1000 1100) (0011 ∞
)1( :
)GF(2
1 (0101) )(4
)GF(2 )GF(2
1= )(
32332
4
20123
401
22
33
4
4
E
+z+x+z+xy=xyE
+zaaaa
z+a+az+aza
+z +zzf
5例子3.2.3 例子
3.3 点的数量
区间。称为,区间
。
上的椭圆曲线。则是令的阶。上也被称为
,上点的数量定义为上的椭圆曲线。为有限域令
Hasse]2121[
2121
)GF( )(
)GF(
# )GF(
q+q +qq +
q+q +#E qq +
qE
Eq
EEqE
Hasse定理1定理
。的系数的阶上的椭圆曲线
限域,下表给出了定义在有内的整数
,区间对于每个定义在。令
),(# :
GF(37) ]372137
372137[Hasse 37 =
32 baE = n +ax +b = xyE
n++
+p 6例子3.3 点的数量 ( 续 )
3.4 椭圆曲线上的离散对数
10) (17 = 31 7) (5 = 23 1) (3 =15 22) (24 = 7
7) (24 = 30 28) (3 = 22 22) (5 = 14 19) (17 = 6
19) (8 = 29 7) (0 = 21 27) (16 =13 12) (6 = 5
24) (1 = 36 6) (14 = 28 27) (27 = 20 13) (19 = 12 27) (15 = 4
10) (4 = 35 6) (13 = 27 6) (2 = 19 25) (10 = 11 3) (20 = 3
26) (20 = 34 4) (10 = 26P 23) (2 = 18 23) (13 = 10 19) (4 = 2
2) (15 = 33 16) (19 = 25 2) (27 = 17 23) (14 = 9 5) (1 = 1
17) (6 = 32 2) (16 = 24 22) (0 = 16 10) (8 = 8 = 0
5)(1 =
37 =# 204GF(29) 32
,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,
上的点。产生的所有,下面给出了由点。的:上的椭圆曲线有限域
P PP P
PPPP
P PP P
PP PP P
PPP PP
PPPP
PPP PP
PPPP P
EP
Ex ++ = xyE
7例子
生日攻击。指数索引。
必须有大的素数因子。的最小整数。满足是为椭圆曲线并令攻击。令
离散对数问题。就被称为椭圆曲线上的。找到这个满足个整数
并且我们知道有某和假定有椭圆曲线上的点
(3)
(2)
Hellman-Pohlig (1)
nnP
nE
kPPPkPBk
BP
.评述
3.4 椭圆曲线上的离散对数 ( 续 )
4 椭圆曲线密码4.1 明文表示
。
只需要简单计算恢复出明文消息,我们,为了从点。方根或程,直到我们发现了平我们可以重复上面的过
。并尝试新的加我们就对否则,;则我们得到存在,的平方根。如果平方根
并尝试计算计算,,,,对于
。里,这将可以表示为。满足假定
数。的大整作为失败率是可以接受是一个如果将轴,令
可以嵌入一个点的。明文消息考虑
K
x
myxP
Kj
xj
yxPypb
axxbaxxKj
Kj
jmKxmpKmm
Kx
mpbaxxy
m
m
K
)(
(3)
1
),( )(mod
110 (2)
0
)1( (1)
21/
)(mod
33
32
得以恢复。。消息可以通过,。因此,,而到
,我们得。对于,,,的可选值就是,则。假定待加密的消息是我们要求,
。由于,则可以令如果我们允许失败率为
。:上的椭圆曲线定义在
510/5111)(51
)179(mod12111)179(mod12172
515951505
160 179
101/2
72 (179)
23
10
32
mP
x ++x
xx
mm K
mKK
x ++ = xyEGF
m
8例子4.1 明文表示 ( 续 )
4.2 椭圆曲线 ElGamal 密码系统
线上的点乘计算。将模幂计算变成椭圆曲线上的点加计算。将模乘计算变成椭圆曲
曲线密码方案:成椭圆的离散对数密码方案变存在一般的方法将经典
(2)
(1)
。,秘密密钥是的公开密钥是。并计算选择
做如下步骤:每个实体的阶。上的点曲线
是椭圆对应秘密密钥,这里产生自己的公开密钥和下,,开椭圆曲线参数摘要:每一个实体在公
密钥对产生椭圆曲线
dQA
dPQ nd
A
PE
n
nPE
(2)
11 (1)
)(
ElGamal
1算法4.2 椭圆曲线 ElGamal 密码系统 ( 续 )
。中提取明文消息,并从计算应该做如下步骤:出明文消息,为了从密文消息中恢复
。给,发送密文消息。和计算。任意选择一个
。上的点表示为椭圆曲线将明文消息。公开密钥和,,数真实的公开椭圆曲线参得到
做如下步骤:解密之。,给实体加密一条消息摘要:实体
加密椭圆曲线
mMdCCM
A
ACC
M +kQC = kPC
nk
MEm
QnPEA
B
AAmB
12
21
21
(1)
)( (5)
= )4(
11 )3(
(2)
)( (1)
ElGamal
.解密
.加密
2算法4.2 椭圆曲线 ElGamal 密码系统 ( 续 )
。,,,减掉这一部分得:,他从
,之后,,,则首先计算
。,和,。她计算并发送给并选择一个随机数下载
。,想发送。假定,,并公布随机选择。,系统产生
。:使用曲线
)17435()146672()35766626(
)35766626(
)146672()63215415(3 Bob
)35766626( )63215415(
Bob8
Alice 1743)(5Alice)1808413(
3Bob )11 4(
)8831(mod453
1
21
32
M
dC
kQMCkPC
kQ
MdP
QdP
xxyE 9例子4.2 椭圆曲线 ElGamal 密码系统 ( 续 )
4.3 椭圆曲线数字签名算法 (ECDSA)
。,的签名就是对对步。第
,则转移到如果。和计算
步。,则转移到第如果。和,计算。任意选择
做如下步骤:实体。为
,公开密钥的秘密密钥为素阶。是点,,,。假定椭圆曲线参数是的公开密钥验证其签名通过
可以任何实体签名。对一个任意长度的消息摘要:实体签名产生和认证
) ( (4)
(1)
0 ) mod( )()( (3)
(1)0 ) mod()( (2)
11 (1)
11)
( =
ECDSA
1
111
srmA
snre+dksmHe
rnxryxkP
nk
A
dPQ
ndAPnnP
EDA
BmA
.签名产生
3算法
拒绝签名。接受签名;否则,返回返回,则。如果轴坐标计算的对
,则返回拒绝签名。。如果计算。
,和,,计算
。失败,则返回拒绝签名上的整数。如果有任何,都是在区间和验证做如下步骤:,,的签名对为了验证
续签名产生和认证
) (mod (4)
)3(
) (mod
) (mod) (mod )( (2)
]1[1 (1)
)(
)(ECDSA
1
21
211
rvnxv xX
X QuPuX
nwr
unweunswmHe
ns r
BsrmA
.认证3算法
。因此,。的
P = kPduuQP +uuX nd +uudrw
e+wrde+ss re+dsk
)+ ( = = )mod(
)(
212121
111
.正确性证明签名认证
4.3 椭圆曲线数字签名算法 (ECDSA)( 续 )
5 椭圆曲线在分解中的应用5.1 椭圆曲线分解算法
。
进一步有,
。
因此,
斜率:点的,我们实际需要计算在。可以计算。,和,:。令椭圆曲线令
)2773(mod7053)17711(2312
)2773(mod1771112312
)2773 2312(mod231176
7
)2773(mod6
7)43(2
3)(1 2 3)(1
)2773(mod442773
3
23
2
32
y
x
m
dx
dydxxydy
PPPP
xxyEn10例子
。。因此,,。然而,我们发现的斜率为,和,。通过点
。现在,继续计算,我们需要这里,。,,
因此,解答是续
47592773
592773) (1770702/1770
3) (1705)(17712 2
31)2773 (6
705)(17713)2(1
)(
PPPP
P
10例子5.1 椭圆曲线分解算法( 续 )
算法非常相似。的。这与点的情况出现或模这样的乘法使模,做点乘法。希望通过
数因子的整数,例如,通常与一个有大量小素在实践中,点。或最大公约数可以分解出
了使用周期不相同。这就导致和模不断倍加过程中,模的点上,是希望对椭圆曲线使用椭圆曲线分解整数
。不为模的情况,但另一个分母为分母模了一个。换句话,我们先发现,而
的曲线。我们发现和曲线,也就是看作两条椭圆们可以把例子中的使用中国剩余定理,我
1Pollard
1000!
(3)
) (mod (2)
047059
47) (mod459) (mod
347) (mod 59) (mod
(1)
p
qp
P
qp
qpP
pqEpq
P
P
E
.评述5.1 椭圆曲线分解算法( 续 )
。我们可以找到分解因子,因此,的倍数而不是是。由于上满足
在是最小的正整数,而上满足在是最小的正整数个点。进一步,有个点,而有
。计算显示为我们可以分解,,的逆。由于时需要计算但是计算
都一切正常,这样做下去,到。,,,我们计算。假定我们设法计算
。,和:
选择。我们想分解
599
777640 8!
761) (mod 777
599) (mod 6403773
777761) (mod 52640599) (mod
761599455839 599)
(599) 599(mod8!
7! )3!(44!
)2!(33! 2! !10
1) (1 55
455839
7
32
mP
EmmP
Em
E
En
nP
PPP
PPPP
Pxx yE
n
11例子5.1 椭圆曲线分解算法( 续 )
是小素数的乘积。的整数或得条曲线使,则非常可能有至少一,这里多条曲线解因子。如果我们尝试解方法应该可以发现分况下,分着在选择这样曲线的情小素数的乘积。这意味是许多整数,则非常有机会可以使选择曲线
如果随机的附近的整数。是一个在说明。数。因此,
的倍有可能是并不是非常大的情况下在乘积,则是一组小素数的。如果,因此,有点的数量
必然可以整除曲线上足最小正整数在曲线上满。形成的椭圆曲线一般情况下,考虑素数
NqEpE
qpnnE
NpE
pN
PB
NBB
NNPN
mP
pEp
) (mod ) (mod
) (mod
) (mod
(2)
!
!
) (mod (1)
Hasse定理
.评述5.1 椭圆曲线分解算法( 续 )
位十进制数。到规模的整数,也就是等解方法非常适合分解中经验表明,椭圆曲线分
整数。解为小素数的乘积的附近有足够多的可以分求在
要而椭圆曲线分解方法仅必须是小素数的乘积,分解方法要求的方法的好处是,
线分解分解方法比较,椭圆曲的与
50 40
(4)
11Pollard
1Pollard (3)
p
pp
p
5.1 椭圆曲线分解算法( 续 )
5.2 退化曲线
。需要当且仅当有重根的条件只的情况下计算,因此,在模
由于我们是,会发生怎样的情况?
有重根,也就是,式实际上,如果三次多项
) (mod0
0274 23
3
n
qpn
ba
bax x
458081806080108808080
816010880
20)01(4101)2(113141)2(22)1(
)143(mod80))1(3/())1(3()143(mod82
3 )143(mod382 2) ,1( 143) (mod
0)(1
)1(3
)1(3
)(
)2()1(23
54321
2
232
,,,,。,
因此,。。和点考虑
。应于这个数的乘法操作计算对以外,在曲线上的点加,我们可以发现,除点
。
,我们可以构造数,点给出这条曲线上的一个。
看下面的例子:
PPPP
xyxy
xy
xy
yx P
xxxx y
12例子
5.2 退化曲线 ( 续 )
线分解算法之中。测试将都包含在椭圆曲方法和除法的,可以看到如果允许使用退化曲线
试分解算法。这是最原始的除法测,直到发现分解因子。,,,,
,,是连续计算算法计算。这实际上就以使用扩展的逆,可模和法实际需要发现的加法。因此,这一方
数。曲线上的点加对应于,,,,是注意相应的数
。,,,,,,,,
做连续加法:,。让我们从点构造数,可以,对于曲线的点这个曲线有三个重根。
。考虑
1Pollard
)(4)(3
)(2Euclidean
321
11
27
1
9
13
8
1
4
121)(1
1) (1
0)(0),(
32
32
32
p
nn
n
nmm
x/ymx/y
mmmPPPP
Px/y
yxP
x y
.评述
13例子
5.2 退化曲线 ( 续 )
谢谢 !
top related