资源描述:
《椭圆曲线的加密算法研究及实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、椭圆曲线的加密算法研究及实现摘要:本文利用有限域上椭圆曲线的点构成的群实现离散对数密码算法,完成将一篇明文编码嵌入到椭圆曲线上,实现在椭圆曲线上的加解密运算,从而达到通信过程中安全传输文件,抵制各种恶意破坏和攻击。关键词:椭圆曲线加解密明文嵌入离散对数0引言本项目利用有限域上椭圆曲线的点构成的群实现离散对数密码算法,重点讨论将一篇明文分割成多块并设计编码嵌入到椭圆曲线上,满足预期的目的,并实现在椭圆曲线上的加密算法。从而达到通信过程屮安全传输文件,保证发送方能将一篇明文通过加密顺利到达接受方,并
2、能被接受方成功解密,达到双方在网络上实现安全传输,抵制各种恶意破坏和攻击。1技术背景ECC(椭圆曲线加密算法)相对其他主流的加密算法的技术优势在于抗攻击性强,计算量小,处理速度快,密钥尺寸和系统参数,带宽要求低小,而且一般没有亚指数攻击算法,具有丰富的群结构和多选择性,密钥长度短,数字签名快,计算数据量小,运算速度快,灵活性好。1.1抗攻击性强,ECC和其它几种公钥系统相比,其抗攻击性具有绝对的优势。如160bitECC与1024bitRSA、DSA有相同的安全强度。而210bitECC则与20
3、48bitRSA、DSA具有相同的安全强度。1.2计算量小,处理速度快,虽然在RSA中讨以通过选取较小的公钥(可以小到3)的方法提高公钥处理速度,即提高加密和签名验证的速度,使其在加密和签名验证速度上与ECC有可比性,但在私钥的处理速度上(解密和签名),ECC远比RSA、DSA快得多。因此ECC总的速度比RSA、DSA要快得多,在相同的安全强度下,我们用160bitECC进行加解密或数字签名要比用1024bitRSA、DSA要快大约10倍。1.3密钥尺寸和系统参数小,ECC的密钥尺寸和系统参数与
4、RSA、DSA相比要小得多,意味着它所古的存贮空间要小得多。1.4带宽要求低,当对长消息进行加解密时,三类密码系统有相同的带宽耍求,但应用于短消息时ECC带宽要求却低得多。而公钥加密系统多用于短消息,例如用于数字签名和用于对对称系统的会话密钥传递。2软件设计2.1概要设计本项目主要分为两个主要模块,明文嵌入椭圆曲线模块和椭圆曲线上的点进行加解密运算的模块,其中明文嵌入椭圆曲线模块采用非确定性概率算法来实现,而加解密运算则主要体现为大整数的四则运算以及最耗时的模幂运算。2.2详细设计2.2.1明文
5、嵌入椭圆曲线的非确定性概率算法在椭岡密码体制中,一个重要的问题是如何将明文m转化为E([)上的点匕,即编码,同时乂要在已知^时快速求出明文m,即译码。目前有两种嵌入方法:确定性方法和非确定性概率方法。确定性嵌入算法可以对任意的明文m实现编码,译码也容易,但是此方法只适于形如y2=x^-Dx这样的特殊曲线,不具有通用性。对一般的曲线采用非确定性概率算法:设明文mE(0,M),/(;v)=y2=x3+or+Z>,使得p〉Mko令=mk+i(i=1,2,…,k-1),依次计算f(xz),如果f(xz)
6、是模P的平方剩余,用表示此时的&。由于f(X)模p的平方剩余和非平方剩余各占一半,所以k次找到(/Y的概率不小于1-(1/2/,最终找到满足,所以明文m能以极大的概率嵌入到椭岡曲线E(~)中。译码时,计mxjk:即可。根据定理2和3,设计出完整的明文嵌入算法如下:设m为明文,p为素数,p-l=2,lq,q为奇数,n彡1S1.令入=256,i=052.计算久=mA,+i,c=2mod/)53.若c二-1,贝iji二i+1,转S254.令=x,.55.若n=1,则&=(x,/(%,,■),转SI1
7、56.随机取一整数dz,计算b=a(p-l),2modp57.若b=1,转S658.计算Y=a~modp,8-Y1modp,//=modp,k=0S9•若//Wmodp,贝IJA=W7(xJ(w2),转Sil510.k=k+1,转S9511.输出P,结束2.2.2椭岡曲线密码体制思想选取基域Fq,选择一条椭圆曲线(a,b,p值给定),在E(Fq)中选一个周期很大的点,如选了一个点G=(xG,yG),它的周期为一个很大的素数n,记为n(p)=n(n为素数)。在椭岡曲线密码体制当中,具体的曲线及点G
8、和它的阶n都是公开信息。(1)密钥的生成Bob(使用者)执行了下列计算:①在区间[1,n-1]中随机选取一个整数山②计算AQ=dG(d个G相加);③Bob公开自己的公开密钥——(FX/Q,G,n,Q);④Bob的私钥为整数d。Alice要发送消思m给Bob,Alice执行:①查找Bob的公钥(E(/;),G,n,Q);②将m表示成一个域元素ine③在区间[1,n-1]内选取一个随机数k;④依据Bob的公钥计算点“,y,)=kG(k个G相加);⑤计算点(x2,y2)=kQ,如果x2=0,则回到第③