椭圆曲线加密算法.pdf
- 文档编号:30838872
- 上传时间:2024-01-30
- 格式:PDF
- 页数:10
- 大小:718.23KB
椭圆曲线加密算法.pdf
《椭圆曲线加密算法.pdf》由会员分享,可在线阅读,更多相关《椭圆曲线加密算法.pdf(10页珍藏版)》请在冰豆网上搜索。
椭圆椭圆曲线加密曲线加密算法算法椭圆曲线密码学(英语:
Ellipticcurvecryptography,缩写为ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。
椭圆曲线在密码学中的使用是在1985年由NealKoblitz和VictorMiller分别独立提出的。
ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥比如RSA加密算法提供相当的或更高等级的安全。
ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。
不过一个缺点是加密和解密操作的实现比其他机制花费的时间长1.椭圆椭圆曲线曲线在数学上,椭圆曲线(英语:
Ellipticcurve,缩写为EC)为一代数曲线,被下列式子所定义2=3+其是无奇点的;亦即,其图形没有尖点或自相交。
满足此条件的ab满足:
43+2720图1在基础上需要定义一个无穷远的点,将此点作为零点:
此时椭圆曲线定义为:
(,)2|2=3+,43+27200在椭圆曲线中的群的运算律:
1.所有的点都在椭圆曲线上2.0点作为群上的单元点即+0=3.P点关于X轴的对称点为P点的逆即+(P)=04.对于位于同一条直线上的三个点P,Q,R.则有P+Q+R=0图2P+Q+R=0(无限远点PQR三个点的位置是任意的,他们满足加法的结合律,因为这个群是一个阿贝尔群。
2.椭圆椭圆曲线曲线加法加法当P和Q不相等时()由于是在阿贝尔群上可以将P+Q+R=0改写为P+Q=R所以在椭圆曲线上的加法定义为PQ两点加法为P,Q两点连线与曲线的交点R的关于X轴对称点R图2-3P+Q=-RPQ两点的直线的斜率为:
=这条线与曲线的交点为:
=(,)=2=+()因此(,)+(,)=(,)如果在图上表示即为上述的+=当P和Q不相等时(=)(=)因为p+(p)=0图3PQ两点相同时直线的斜率为=32+2经计算的=32+2=2=+()图43.椭圆椭圆曲线曲线标量乘法标量乘法通过上面的加法运算我们可以得出其标量乘法运算可以得出=+times从上式可以看出当我们计算nP的时候需要做n次加法,如果n有k位那么的计算时间复杂度变为O
(2),这显然不是快捷的方式。
其中一种加快计算的方式是将这些加法运算的次数减少,我们将n写成2进制形式,然后我们按每位计算,每次复用上一次的结果如当n=151时,其二进制位100101112所以151=127+026+025+124+023+122+121+120=27+24+22+21+20所以如果运用在上面的标量乘法时,其运算可以简化为:
151=27+24+22+21+204.离散空间椭圆离散空间椭圆曲线曲线我们将曲线上的点全部局限于上此时离散形式的椭圆曲线变为:
(,)()2|23+(mod),43+2720(mod)00仍然为无穷远点,a,b为整数图5237+10(mod)p=19,97,127,487的图示在离散椭圆图上的加法和曲线上的加法的定义类似,在离散的椭圆曲线中,直线的方程变为+0(mod),点P,Q两点的加法的操作也是基于这个定义上下图展示了23+3(mod127)曲线上=(16,20)和=(41,120)两点之间的加法直线4+83(mod127)在此空间上是一组距离相等的平行线图65.离离散椭圆散椭圆曲线曲线代数加法代数加法对照曲线上的加法,离散空间椭圆曲线加法公式可以写作=
(2)=+()=+()如果,此时的m的值的形式为=()()1如果P=Q时:
=(32+)
(2)1在离散型的椭圆空间里面我们知道点的数目是有限的,而这些点的个数我们称为椭圆曲线群的阶数同样的在离散空间,对于曲线上的点同样满足标量加法的法则=+times但是在离散空间椭圆曲线加法会有一个有趣的现象,对一个点进行有限次的加法,存在一个是n使得nP=P例如在曲线23+2+3(mod97)的一点P=(3,6),计算其的标量乘法,计算结果如下:
图7可以看出P=(3,6)经过6次加法后又回到本身,也即是5P=0所以对于P的加法可以写作kP=(kmod5)P可以证明的是一个点的加法所构成的子集是一个循环的子集首先一个点的加法所得到的点一定是有限的,因为加法所获得的点全部都在父集上的,父集的大小是有限的,所以经过有限次的加法后所获得的结果必定会重复,那么结果就会重复下去。
只需证明第一个重复的值是P即可。
假设第一个重复的值不是P,而是kP,那么后面的结果也必然是kP的倍数,假设重复的次数为n,如果gcd(n,k)不为1,那么存在使得kmmodn=0即kmP=0即(km+1)P=P与假设矛盾如果gcd(n,k)=1那么kmP=(mmodn)那么存在一个数使得mkmodn=1即mkP=(mkmodn)P=P与假设矛盾。
在一个循环子集中将P称之为生成点或者基点,其子集的点的大小n称之为子集的阶即nP=0由拉格朗日定理可知子群的阶n是全集阶N的因子例如2=3+3在37上N=42它的子集大小只能n=1,2,3,6,7,14,21,42为基点P=(2,3),因为0,207=0所以构成的子集的大小为7如果在29上,其阶为N=37所以其子集大小只能为n=1或者37对于ECC(椭圆加密算法),需要找到一个具有高阶子集,一般情况下选择一个椭圆曲线并计算他的阶,然后找到一个数字大的因子n作为子集的阶,如果这个子集的基点为P则nP=Np=0给定n和P,那么需要计算n次计算出Q=nP,如果只给出P,Q如何计算出n这就是所谓的对数问题。
这个问题也就是椭圆曲线的离散对数问题而求解这个对数问题是非常困难的,而正是由于这种困难使得我们使用椭圆加密算法变得更加可靠与其他类似的加密算法相比,破解椭圆加密算法更加困难,这也意味着更少位数的秘钥k可以达到同类算法同样的安全强度6.椭圆加密算法椭圆加密算法ECDH和和ECSDA椭圆加密算法是基于有限域的离散型的椭圆曲线的循环子集上,定义一个这样的子集需要以下参数,有限域的大小素数P椭圆曲线方程a和b用于生成子集的基点G子集的阶n子集的辅因子h总的来说一个椭圆加密算法基于(,)参数上
(1)
(1)ECDHECDH同其他非对称加密算法一样,需要计算私钥和公钥,在ECC中私钥是一个随机数d来自于1,1(n是子集的阶)公钥是曲线上的一个点H=dG(G是子集的基点)如果我们知道d和G,找到公钥H是很容易的,但是如果只知道H和G找到私钥d是及其困难的,这等同有在做离散对数问题,上文有提到这个问题在现在来说还没有有效的算法,所以是很困难的。
ECDH是迪夫赫尔曼算法的一个变种,它实际上是一个秘钥共识协议,ECDH协议定义了秘钥的如何产生以及如何交换秘钥。
如果Alice和Bob需要交换秘钥,中间人Hack可以在两者之间监听1.Alice和Bob使用同样参数的椭圆曲线,并且随机产生各自的秘钥和,并且计算出各自的公钥=和=,2.他们彼此交换各自的公钥和,而中间人也将他们的公钥截获,但是他们都不能从这些信息中计算出他们的私钥3.Alice计算出=,Bob计算出=,明显的是他们各自计算出的结果是一致的。
=()=()=而中间人不能从公钥中计算出S,所以Alice和Bob共享了密码S,这也正是迪夫赫尔曼所要解决的问题。
当Alice和Bob获得了共同的秘钥S,他们就可以使用对称加密算法如AES,3DES来加密他们的信息了。
(2)
(2)ECSDAECSDA签名签名算法算法在比特币的交易中,一笔交易会在整个区块链网络中传播,每个节点需要验证一笔交易的有效性,通过交易中解锁脚本去验证交易中的输入是否是有效的。
这其中正是使用了ECDSA算法来验证。
假如Alice需要对一个信息进行签名,Bob需要使用Alice的公钥来验证这个信息。
Alice和Bob都使用的是同一个参数相同的椭圆曲线函数。
ECDSA作用在的是信息的hash值上的,且这个值是被截取后的使得其大小与这个曲线的子集的阶一致。
将这个截取后的hash值定义为z图8算法的流程是1.Alice随机选择一个随机数k(kn),作为本次加密的临时私钥,并对需要签名的信息作hash处理得到z。
计算P=kG并将=作为临时公钥,若r=0则重新选择。
2.计算=1(+),是Alice使用的私钥,1是k关于n的模逆,如果s为0则重新选择k再次计算。
将(r,s)作为签名信息3.Bob此时有了Alice的公钥和签名信息(r,s),首先计算1=12=14.然后在计算=1+2如果=,则可以判定这个信息是来自于Alice的(33)算法算法的正确性的正确性证明证明从验证的步骤往前回溯有=1+2=1+2=(1+2)将1和2的等式带入得到=(1+2)=(1+1)=1(+)因为对于基点G来说它的阶为n,因此为了简洁,可以省去modn由模逆运算的性质可以将=1(+)改写为=1(+)于是有=1(+)=可以看出此式正是通过随机数k生成点P的运算,回溯到了最开始的计算,可以验证算法的正确性(44)算法算法的漏洞的漏洞在ConsoleHacking2010大会上,黑客披露了一个SonyPS3的关于ECSDA的一个破解方式。
造成这个漏洞的原因在于PS3在ECSDA算法中未随机的选择数字k用来生成点P,从而造成私钥泄露。
在此处键入公式。
假设我们有两笔使用相同k值签名的信息,这两笔信息的hash为(1,2),他们的签名信息为(1,1)和(2,2)首先他们的1=2,因为k值相同考虑(12)=1(12)将两边同时乘以k,(12)=(12)两边同时除以(12)得到=(12)(12)1上面的最后一个式子我们可以计算得到k,从这个确定的k可以计算得出私钥=1(+)=1()从上述分析可以看出相同k是可以导致私钥泄露的所以随机数k在ECSDA算法中扮有重要角色,如果在比特币的交易中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 椭圆 曲线 加密算法