ECC-数学基础

ECC,(椭圆曲线密码体制),sun公司2002年赠送给了开源工程(现在sun的下场,真是嘘唏不已)。Ecc的数学基础较前面几种相比,还多了齐次方程的求解。
1. 数学基础
关于ECC算法本身更详细的描写,请Google一篇文件《ECC加密算法入门介绍》,那里面介绍的比以下更详细,这里面只挑一些主要的描述,(推荐两本书:《近世代数基础》《初等数论》)。
公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。
椭圆曲线密码体制来源于对椭圆曲线的研究,所谓椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程,是一个齐次方程:
Y^2+a1xy+a3y=x^3+a2x^2+a4x+a6 (1)
所确定的平面曲线。其中系数ai(I=1,2,…,6)定义在某个域上,可以是有理数域、实数域、复数域,还可以是有限域GF(pr),椭圆曲线密码体制中用到的椭圆曲线都是定义在有限域上的。
椭圆曲线上所有的点外加一个叫做无穷远点的特殊点构成的集合连同一个定义的加法运算构成一个Abel群。在等式
mP=P+P+…+P=Q (2)
中,已知m和点P求点Q比较容易,反之已知点Q和点P求m却是相当困难的,这个问题称为椭圆曲线上点群的离散对数问题。椭圆曲线密码体制正是利用这个困难问题设计而来。
BTW: 椭圆曲线的形状,并不是椭圆的。只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程(这个是从参数资料中读出,没有求证,有比较懂的童鞋可以告知一下),故得名。
1.1域和椭圆曲线
概述:给出有限域Fq的描述及其元素的表示,q是一个奇素数或者是2的方幂。当q是奇素数p时,要求p > 2^191;当q是2的方幂2^m时,要求m > 192且为素数。
素域Fp:
1)当q是奇素数p时,素域Fp中的元素用整数0;1;2; · · · ; p−1表示。
a) 加法单位元是整数0;
b) 乘法单位元是整数1;
c) 域元素的加法是整数的模p加法,即若a;b ∈ Fp,则a+b = (a+b) mod p;
d) 域元素的乘法是 整数的模p乘法,即若a;b ∈ Fp,则a · b = (a · b) mod p。
2)定义在Fp(p是大于3的素数)上的椭圆曲线方程为:
y2=x3+ax+b, a;b ∈ Fp,且(4a3+27b2) modp = 0。
椭圆曲线E(Fp)定义为:
E(Fq) = {(x;y)|x;y ∈ Fp,且满足方程(1)}∪{O},其中O是无穷远点。
椭圆曲线E(Fp)上的点的数目用#E(Fq)表示,称为椭圆曲线E(Fp)的阶。
如果椭圆曲线上一点P,存在最小的正整数n,使得数乘nP=0∞,则将n称为P的阶,若n不存在,我们说P是无限阶的。
事实上,在有限域上定义的椭圆曲线上所有的点的阶n都是存在的(证明,请参考近世代数方面的书)
3)仿射坐标表示:
E(Fp)上的点按照下面的加法运算规则,构成一个阿贝尔群:
a) O+O = O;
b) ∀P = (x;y) ∈ E(Fp)\{O},P+O = O+P = P;
c) ∀P = (x;y) ∈ E(Fp)\{O},P的逆元素−P = (x;−y),P+(−P) = O;
d)点P1 = (x1;y1) ∈ E(Fp)\{O},P2 = (x2;y2) ∈ E(Fp)\{O},P3 = (x3;y3) = P1+P2 = O,则
x3 = λ2−x1−x2 ;
y3 = λ(x1−x3)−y1;
其中
λ = (y2−y1)/(x2−x1); 若x1 <> x2;
λ = (3x12+a)/(2y1); 若x1 = x2且P2 <> −P1。
二元扩域F2m:当q是2的方幂2m时,二元扩域F2m可以看成F2上的m维向量空间,其元素可用长度为m的比特串表示。
定义在F2m上的椭圆曲线方程为:
y2+xy = x3+ax2+b, a;b ∈ F2m,且b = 0。
接下来主要是介绍素域F p上的算法运用,二无扩域F2m后面不再介绍,有兴趣的同学可以自己找些资料。
举个简单的例子
素域Fp:以素域Fp为计算例子,取素数p=19.
1) 素域F19,F19 = {0;1;2; ·· · ;18}
2) F19中加法的示例:10;14 ∈F19,10+14=24,24mod19=5,则10+14=5。
3) F19中乘法的示例:7;8 ∈F19,7×8=56,56mod19=18,则7·8=18。
4) 13是F∗19的一个生成元,则F∗19中元素可由13的方幂表示出来:
130= 1;131= 13;132= 17;133= 12;134= 4;135=14;136= 11;137=10;138=16;
139= 18,1310= 6;1311= 2;1312= 7;1313= 15;1314= 5;1315= 8;1316= 9;
1317= 3;1318= 1。
注:记F∗p是由Fp中所有非零元构成的乘法群,由于F∗p是循环群,所以在Fp中至少存在一个元素g,使得Fp中任一非零元都可以由g的一个方幂表示,称g为F∗p的生成元(或本原元),即F∗p ={gi|0≤i≤ p−2}。设a = gi∈ F∗p,其中0 ≤ i ≤ p−2,则a的乘法逆元为:a−1= gp−1−i。
E(Fp)阶与仿射坐标表示:
F19上椭圆曲线方程:y2 = x3+x+1,其中a = 1,b = 1。则F19上曲线的点为:
(0,1), (0,18), (2,7), (2,12), (5,6), (5,13), (7,3), (7,16), (9,6), (9,13), (10,2), (10,17), (13,8), (13,11), (14,2),(14,17), (15,3), (15,16), (16,3), (16,16),
则E(F19)有21个点(包括无穷远点0)。
a) 取P1 = (10;2),P2 = (9;6),计算P3 = P1 +P2:
λ= (y2 −y1)/(x2 −x1)= (6−2)/(9−10)= 4/−1= −4 ≡ 15 (mod19);
x3 = λ2−x1−x2 =152-10-9 = 225−10−9 ≡ 16−10−9 = −3 ≡ 16 (mod19);
y3 = λ(x1−x3)−y1= 15×(10−16)−2 = 15×(−6)−2 ≡ 3 (mod19),
所以P3 = (16;3)。
b)取P1 = (10;2),计算[2]P1:
λ= (3x12+a)/(2y1) = (3×102+1)/2×2= 4= 4 (mod19);
x3 =λ2−x1−x2 =42−10−10 = −4 ≡ 15 (mod19),
y3=λ(x1−x3)−y1= 4×(10−15)−2 = −22 ≡ 16 (mod19),
所以[2]P1 = (15;16)。
椭圆曲线多倍点运算:
设P是椭圆曲线E上阶为N的点,k为正整数,P的k倍点为Q,即
Q = [k]P = P+P+· · ·+P (k个p点)
安全性分析:
安全主要是依靠椭圆曲线离散对数求解方法问题(ECDLP)。
已知椭圆曲线E(Fq),阶为n的点P ∈ E(Fq)及Q ∈ ⟨P⟩,椭圆曲线离散对数问题是指确定整数k ∈[0;n−1],使得Q = [k]P成立。
1) Pohlig-Hellman方法:设l是n的最大素因子,则算法复杂度为O(l1=2);
2) BSGS方法:时间复杂度与空间复杂度均为(πn=2)1=2;
3) Pollard方法:算法复杂度为(πn=2)1=2;
4) 并行Pollard方法:设r为并行处理器个数,算法复杂度降至(πn=2)1=2=r; 5) MOV-方法:把超奇异椭圆曲线及具有相似性质的曲线的ECDLP降到Fq的小扩域上的离散对数问题(亚指数级计算复杂度算法);
6) 异常曲线离散对数求解方法:对异常曲线(#E(Fp) = p的曲线)的有效攻击方法(多项式级计算复杂度算法);
7) GHS-方法:利用Weil下降技术求解扩张次数为合数的二元扩域上椭圆曲线离散对数问题,将ECDLP转化为超椭圆曲线离散对数问题,而求解高亏格的超椭圆曲线离散对数存在亚指数级计算复杂度算法。
对于一般曲线的离散对数问题,目前的求解方法都为指数级计算复杂度,未发现有效的亚指数级计算复杂度的一般攻击方法;而对于某些特殊曲线的离散对数问题,存在多项式级计算复杂度或者亚指数级计算复杂度算法。
选择曲线时,应避免使用易受上述方法攻击的密码学意义上的弱椭圆曲线。
BTW:弱椭圆曲线,若某椭圆曲线存在优于n1=2级(n是基点的阶)计算复杂度的攻击方法,则称此曲线为弱椭圆曲线。Fq上的超奇异曲线(有限域Fq的特征整除q+1−#E(Fq))和Fp上的异常(Anomalous)曲线(#E(Fq) =p)都是弱椭圆曲线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值