资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划ecc加密算法实验报告ECC算法和加密应用大全基本原理ECC加密算法是一种公钥加密算法,与主流的RSA算法相比,ECC算法可以使用较短的密钥达到相同的安全程度。近年来,人们对ECC的认识已经不再处于研究阶段,开始逐步进入实际应用,如国家密码管理局颁布的SM2算法就是基于ECC算法的。下面我们来认识一下ECC的工作原理。椭圆曲线定义在引入椭圆曲线之前,不得不提到一种新的坐标系-射影平面坐标系,它是对笛卡尔直角坐标系的扩展,增加了无穷远点的概念。在此坐标系下,两条平行的直线是有交点的,而交点就是无穷远点。两者的变换关系为:笛卡尔坐标系中的点a,令x=X/Z,y=Y/Z,则射影平面坐标系下的点a的坐标为就转换为。椭圆曲线定义:一条椭圆曲线在射影平面上满足方程:Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3的所有点的集合,且曲线上每个点都是非奇异的。该方程有名维尔维斯特拉斯方程,椭圆曲线的形状不是椭圆,只是因为其描述的方程类似于计算一个椭圆周长的方程。转换到笛卡尔坐标系下的方程为:y2+a1xy+a3y=x3+a2x2+a4x+a6加法法则运算法则:任意取椭圆曲线上两点P、Q做直线交于椭圆曲线的另一点R,过R做y轴的平行线交于R。我们规定P+Q=R。此处+不是简单的实数相加,是抽象出来的O+P=P,O为零元曲线上三个点A,B,C处于一条直线上,则A+B+C=O下面,我们利用P、Q点的坐标(x1,y1),(x2,y2),求出R=P+Q的坐标(x4,y4)。P,Q,R共线,设为y=kx+b,若PQ,k=(y1-y2)/(x1-x2)若P=Q,k=(3x2+2a2x+a4-a1y)/(2y+a1x+a3)解方程组得到:x4=k2+ka1-a2-x1-x2;y4=k(x1-x4)-y1-a1x4-a3;密码学中的椭圆曲线定义在有限域Fp中定义一个椭圆曲线,常用y2=x3+ax+bFp中只有p个元素,p为素数Fp中,a+bc(modp),abc(modp),a/bc(modp)4a3+27b20(modp)a,b是小于p的非负整数x,y属于0到p-1间的证书,曲线标记为Ep阶:椭圆曲线上一点P,存在正整数n,使得nP=O,则n为P的阶,若n不存在,则P是无限阶的,有限域上定义的椭圆曲线上所有点的阶都存在。椭圆曲线难题K=kG,其中K,G为Ep上的点,k为小于n的整数,n是点G的阶,给定k和G,计算K容易,但是给定K和G,求k就很难了!因此,设K为公钥,k为私钥,G为基点。加密过程A选定一条椭圆曲线Ep,并取曲线上一点作为基点GA选择一个私钥k,并生成公钥K=kGA将Ep和k,G发送给BB收到后将明文编码到Ep上一点M,并产生一个随机数rB计算点C1=M+rK,C2=rGB将C1,C2传给AA计算C1-kC2=M+rkG-krG=MA对M解码得到明文攻击者只能得到Ep,G,K,C1,C2,没有k就无法得到M。签名验签流程A选定一条椭圆曲线Ep,并取曲线上一点作为基点GA选择一个私钥k,并生成公钥K=kGA产生一个随机数r,计算R(x,y)=rGA计算Hash=SHA(M),M=M(modp)A计算S=/r(modp)B获得S和M,Ep(a,b),K,R(x,y)B计算Hash=SHA(M),M=M(modp)B计算R=/S=(Hash*G+M*kG)*r/(Hash+Mk)=rG=R,若R=R,则验签成功。以上加解密和签名验签流程只是一个例子,具体应用时可以利用K=kG这一特性变幻出多种加解密方式。好了ECC加密算法的介绍就到这里了。羽毛币应用ECC算法是基于有限域的椭圆曲线上的数学算法。关于ECC算法基本原理的介绍,请参考ECC加密算法入门介绍,本文重点介绍Bitcoin系统中采用的公钥密码学方案和签名算法的实现细节。一、公钥(pubkey)、私钥(privkey)是什么公开密钥加密,是指存在一对数学算法相关的密钥,使用其中一个密钥加密后所得的信息,只能用另一个密钥才能解密。如果其中一个公开后并不会危害到另外一个的秘密性质,则称公开的密钥为公钥,不公开的密钥为私钥。公钥的主要作用:加密;验证签名。私钥的主要作用:签名;解密。特性:?通过私钥可以计算出公钥,反之则不行。公钥加密:公钥加密的内容可以用私钥来解密只有私钥持有者才能解密。私钥签名:私钥签名的内容可以用公钥验证。公钥能验证的签名均可视为私钥持有人所签署。以上特性通过数学算法来保证。公钥密码学的实现方案有很多种,常见的有RSA、ElGamal、迪菲赫尔曼密钥交换协议中的公钥加密算法、椭圆曲线加密算法。网银系统中主要使用的是RSA方案。比特币系统则使用的是ECC方案,在核心实现中并不使用加密,只使用了签名算法来确保交易的真实性和所有权的认证。二、椭圆曲线加密算法(ECC)简介ECC方案通常包含有三方面内容,数字签名方案、加密和密钥传输方案、以及密钥协商方案。本文只涉及到比特币系统所使用的数字签名方案。有限域(FiniteField):(最近有一些关于量子攻击的讨论中涉及到这一概念,有一定数学基础的和毫无数学基础的可以跳过这一小节)域(Field)的特性是集合F中的所有元素经过定义后的加法和乘法运算,所得结果仍包含于F。无限域的元素个数无限,比如有理数域、实数域。有限域的元素个数有限,这就出现一个问题,假设F为从0至9的整数集合,那么5,6都属于F,但常规的加法定义5+6=11,11不属于F。因而,有限域需要定义加法和乘法,使其满足对加法和乘法的封闭。目前已发现,当且仅当元素个数q为质数或某个质素的n次幂时,必有一个元素个数为q的有限域存在。另外,对于每一个符合这一条件的q值,都恰有一个有限域。含有q个元素的有限域记作:Fq。ECC方案中只使用了两类有限域:一种称为质数有限域Fp,其中q=p,p为一个质数;另一种称为基于特征值2的有限域F2m,其中q=2m,m1。比特币系统使用的是第一种。Fp是一个0,1?,p-1的整数集合,有限域Fp中定义了加法:a+br(modp)乘法:abs(modp).基于有限域Fp的椭圆曲线域E(Fp):椭圆曲线:y2x3+ax+b(modp)当:a,bFp且满足4a3+27b20(modp).,x,yFp时,这条曲线上的点的集合P=(x,y)就构成了一个基于有限域Fp的椭圆曲线域E(Fp),元素个数记作#E(Fp)。问:这和比特币系统有什么关系吗?答:公钥即为该曲线上的某个点Q=(x,y)的二进制输出格式。公钥可以压缩,是因为y可以根据x通过曲线函数计算出来。椭圆曲线域E一样,ECC也属于公开密钥算法。目前,国内详细介绍ECC的公开文献并不多。有一些简介,也是泛泛而谈,看完后依然理解不了ECC的实质。前些天我从国外网站找到些材料,看完后对ECC似乎懵懂了。于是我想把我对ECC的认识整理一下,与大家分享。当然ECC博大精深,我的认识还很肤浅,文章中错误一定不少,欢迎各路高手批评指正,小弟我洗耳恭听,并及时改正。文章将采用连载的方式,我写好一点就贴出来一点。本文主要侧重理论,代码实现暂不涉及。这就要求你要有一点数学功底。最好你能理解RSA算法,对公开密钥算法有一个了解。近世代数基础初等数论之类的书,最好您先翻一下,这对您理解本文是有帮助的。别怕,我尽量会把语言通俗些,希望本文能成为学习ECC的敲门砖。一、从平行线谈起。平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远很远的地方相交了?事实上没有人见到过。所以“平行线,永不相交”只是假设。既然可以假设平行线永不相交,也可以假设平行线在很远很远的地方相交了。即平行线相交于无穷远点P。给个图帮助理解一下:直线上出现P点,所带来的好处是所有的直线都相交了,且只有一个交点。这就把直线的平行与相交统一了。为与无穷远点相区别把原来平面上的点叫做平常点。以下是无穷远点的几个性质。直线L上的无穷远点只能有一个。平面上一组相互平行的直线有公共的无穷远点。平面上任何相交的两直线L1,L2有不同的无穷远点。平面上全体无穷远点构成一条无穷远直线。平面上全体无穷远点与全体平常点构成射影平面。二、射影平面坐标系射影平面坐标系是对普通平面直角坐标系的扩展。我们知道普通平面直角坐标系没有为无穷远点设计坐标,不能表示无穷远点。为了表示无穷远点,产生了射影平面坐标系,当然射影平面坐标系同样能很好的表示旧有的平常点。我们对普通平面直角坐标系上的点A的坐标做如下改造:令x=X/Z,y=Y/Z;则A点可以表示为。变成了有三个参量的坐标点,这就对平面上的点建立了一个新的坐标体系。例:求点在新的坐标体系下的坐标。解:X/Z=1,Y/Z=2X=Z,Y=2Z坐标为,Z0。即等形如,Z0的坐标,都是在新的坐标体系下的坐标。我们也可以得到直线的方程aX+bY+cZ=0。新的坐标体系能够表示无穷远点么?那要让我们先想想无穷远点在哪里。根据上一节的知识,我们知道无穷远点是两条平行直线的交点。那么,如何求两条直线的交点坐标?这是初中的知识,就是将两条直线对应的方程联立求解。平行直线的方程是:aX+bY+c1Z=0;aX+bY+c2Z=0(c1c2);将二方程联立,求解。有c2Z=c1Z=-,c1c2Z=0aX+bY=0;所以无穷远点就是这种形式表示。注意,平常点Z0,无穷远点Z=0,因此无穷远直线对应的方程是Z=0。例:求平行线L1:X+2Y+3Z=0与L2:X+2Y+Z=0相交的无穷远点。解:因为L1L2所以有Z=0,X+2Y=0;所以坐标为,Y0。即等形如,Y0的坐标,都表示这个无穷远点。看来这个新的坐标体系能够表示射影平面上所有的点,我们就把这个能够表示射影平面上所有点的坐标体系叫做射影平面坐标系。练习:1、求点A(2,4)在射影平面坐标系下的坐标。2、求射影平面坐标系下点(:3:),在普通平面直角坐标系下的坐标。3、求直线X+Y+Z=0上无穷远点的坐标。4、判断:直线aX+bY+cZ=0上的无穷远点和无穷远直线与直线aX+bY=0的交点,是否是同一个点?三、椭圆曲线上一节,我们建立了射影平面坐标系,这一节我们将在这个坐标系下建立椭圆曲线方程。因为我们知道,坐标中的曲线是可以用方程来表示的。椭圆曲线是曲线,自然椭圆曲线也有方程。椭圆曲线的定义:一条椭圆曲线是在射影平面上满足方程Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3-3-1的所有点的集合,且曲线上的每个点都是非奇异的。定义详解:Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号