基于ECC的数字签名算法设计与实现.docx
《基于ECC的数字签名算法设计与实现.docx》由会员分享,可在线阅读,更多相关《基于ECC的数字签名算法设计与实现.docx(61页珍藏版)》请在冰豆网上搜索。
基于ECC的数字签名算法设计与实现
安徽建筑工业学院毕业设计(论文)
基于ECC的数字签名算法设计与实现
摘要:
信息社会正被计算机网络及通信技术的迅猛发展推向一个新的高级阶段,政府、军事、文教、商业、金融等社会生活的各个领域都深受其影响,信息已成为一种重要的战略资源.信息安全是信息科学领域的重要新兴学科,它的核心技术是密码学,其中公钥密码由于其与生俱来的一些优势,扮演着越来越重要的角色.数字签名技术作为最近几年来公钥密码发展的一个新型分支,是安全电子商务和安全电子政务的关键技术.
数字签名提供认证性、完整性和不可否认性,是信息安全的核心技术之一.基于身份的密码系统解决了传统公钥体制中利用公钥基础设施来管理公钥证书的复杂性和成本过高的问题,可与公钥证书基础设施密码体制形成牢固有利的互补.采用椭圆曲线上双线性映射技术的基于身份数字签名成为近几年密码学界的热点研究问题.
本文首先对密码技术的发展现状及其发展趋势进行了分析和综述,其次,论述了椭
圆曲线密码体制的原理,包括椭圆曲线密码的数学基础、椭圆曲线的基本概念、椭圆曲线密码体制的构造思想、椭圆曲线上的点运算等问题,同时分析了椭圆曲线密码系统的安全性和有效性,给出了一个椭圆曲线数字签名方案,最后设计实现了一个在网络环境下使用的数字签名系统.
本文给出的这种基于椭圆曲线密码的高效率的数字签名方案,不仅在算法设计时完全避免了费时的求逆运算,而且利用消息HASH值的汉明重量作为消息摘要进行签名与验证.结果在同等安全性下,该方案比通用的ECDS等A方案运行时间更短.新方案可适用于网络等对签名实时性要求较高的场合[1].
关键词:
椭圆曲线公钥密码体制,数字签名,信息安全,汉明重量
TheDigitalSignatureAlgorithmDesignand
ImplementationbasedonECC
Abstract:
Innowadays,informationsocietyisbeingpushedontoanewadvancedlevelbycomputernetworkandcommunicationtechnologies,whichhavemadegreateffectsOngovernment,militaryaffairs,cultureeducation,andfinance,ere,Informationhasbecomeanimportantresourceinoursociety.InformationsecIIdtyisoneoftherisingsubjectsininformationscienceanditscoreoftechnologyiscryptology.Ineryptologicalarea,publickeycryptosystemisplayingmoreandmoreimportantrolesintheworldbecauseofitsnativepredominance.Asanewbranchofpublickeyc·ryptosystern,digitalsignatureisakeytechnologyofthesccnreB2B(BusinesstoBusiness)andgovernmentaffairinrecentyea.rs
Asoneofthepivotaltechnologiesofinformationsecurity,digitalsignatureprovidesauthentication,integralityandincontestablenes.sIntraditionalpublickeyinfrastructure(PKI)system,managingpublic-keycertificationcausesproblemsofcomplexityandhighcost.Fortunately,identity-basedcryptographyhassolvedthesekindsofproblems,anditisalsoagoodreplenishertoPKIsystem.Identitybasedsignatureusingpairingtechnologyonellipticalcurveshasbecomeoneofthepopresearchproblem.s
Thispaperfirstanalysesandsummarizesthecurrentstatusandevolutiontrendofencryption,andintroducesindetailthedevelopmentofprivate-keycryptosystemandpublic-keycryptosystem,andprovidesthebriefanalysisofafewtypicalschemes.Second,theprintcipleofECCisdiscussed,includingthemathfoundationofECC,operationontheellipticcurveandsoon.meanwhile,thesecurityandECCaregiven..SomekeyalgorithmECCareimplemented,includingalgorithmofgeneratingtheellipticcurve,algorithmofdetectingprimenumberandalgorithmofoperatingbetweenthebigintegers.AtlastdesignandimplementasystemofdigitalsignaturebasedonECCfornetwork.
Toofferahighefficiencydigitalsignaturebasedonellipticcurvecryptography.ThedesignofthealgorithmnotonlyavoidstimecostinginverseoperationcompletelybutalsousesthehammingweightofHASHcodeofamessageinsteadofHASHcodeitselfasthemessagedigesttoparticipateinthesignatureandverifyingcalculation.ThenewschemecostlesstimethanthepopularECDSA.Thenewschemeisadaptedtohigherreal2timeneedsforsignaturesuchasinternet.
KeyWords:
ECC,Digitalsignature,Thesecurityofinformation,Hammingweight
摘要.i...
Abstract:
i.i...
第一章绪论1
1.1选题意义1
1.2论文的内容及安排3...
第二章密码学的相关知识4...
2.1RSA体制4...
2.1.1RSA算法4...
2.1.2RSA安全性4...
2.2DES体制5
2.2.1DES算法5...
2.2.2DES安全性1..0.
2.3ECC密码体制1..0.
2.3.1算法原理1..2.
2.3.2ECC算法分析1..3.
2.4算法的计算复杂度1..5.
第三章基于ECC的数字签名方案1..6
3.1数字签名1..6..
3.2数字签名方案1..7.
第四章基于ECC数字签名方案实现1..9
4.1算法实现1..9..
4.2数字签名实验2..2.
4.3ECC数字签名应用2..6.
第五章总结与展望2..8.
5.1总结2..8..
5.2展望2..8..
参考文献2..9..
致谢3..0..
附录3..1..
第一章绪论
1.1选题意义
计算机网络的建立给信息传输带来了极大的方便,实现了快速,便捷传输,但这同时也带来了隐患,有些不法分子利用掌握的计算机技术或篡改或窃取他人的信息,以达到自己的利益,因此如何实现安全传输变成为了一直以来的研究领域.迄今为止,最重要的网
络与通信安全自动化工具是加密.广泛使用的两种加密形式是传统加密和公钥加密.于是密码学得到了极大发展[9].
在公钥密码体制以前的整个密码学史中,所有的密码算法,包括原始手工计算的、由机械设备实现的以及由计算机实现的,都是基于代换和置换这两个基本工具.而公钥密码体制则为密码学的发展提供了新的理论和技术基础,一方面公钥密码算法的基本工具不再是代换和置换,而是数学函数;另一方面公钥密码算法是以非对称的形式使用两个密钥,两个密钥的使用对保密性、密钥分配、认证等都有着深刻的意义.可以说公钥密码体
制的出现在密码学史上是迄今为止最大的而且唯一真正的革命.
公钥密码体制的概念是在解决单钥密码体制中最难解决的两个问题时提出的,这两
个问题是密钥分配和数字签字.
比较典型的公钥密码算法是1978年由R.Rvest,A.Shamir和L.Adleman提出的一种用数论构造的、也是迄今为止理论上最为成熟完善的公钥密码体制,该体制已得到广泛
的应用.
RSA的安全性是基于分解大整数的困难性假定.因此其最核心的部位在于密钥的选择上,随着计算机技术的发展为保障数据安全原本普遍采用的RSA算法的密钥长度需一再增大,使得它的运算负担越来越大.相比之下,椭圆曲线密码体制(ECC)可用短得多的密钥获得同样的安全性,具有广泛的应用前景.基于公钥密码算法的ECC数字签名方法本质是公钥加密算法的逆运算.此时发送方用自己的私钥对消息进行加密,接收方收到消息后用发送方的公钥进行解密,由于私钥由发送方自己保管且只有他本人知道,入侵者如果只知道发送方的公钥,不可能伪造签名,从而起到签名的效果,公正的第三方可以用发送方的公钥对签名的消息进行解密,从而验证消息确实来在发送方.
随着通讯网络特别是INTERNET的高速发展,利用网络作为信息交流和信息处理变得越来越普遍,社会的传统事务和业务运作模式受到前所未有的冲击.目前,无论是国家政府还是企业都正融入这场网络革命中,从其原来的传统经营模式向网络模式演化.未来的电子政务、电子商务、电子业务将成为不可逆转的发展趋势.在与日俱增的网络活动中,人们越来越关心信息安全这个问题.目前,RSA算法已广泛应用到网络安全的各个领域.1985年NeilKoblitz和VictorMiller提出基于椭圆曲线理论的椭圆曲线密码系统(ECC体系),其安全性建立在椭圆曲线离散对数的难解性的基础上,在同等密钥长度的
条件下其安全性远高于RSA算法.目前已正式列入了IEEE1363标准,在网络安全领域有着广阔的应用前景.
椭圆曲线密码(ECC)是一种高安全性、高效率的公钥密码,具有加密/解密、数字签名和密钥协商等重要的密码功能,可以安全且方便地满足各种信息网络中的用户身份识别、电子信息的真伪鉴别和保密传输等重要的信息安全需求,是信息安全领域的核心
技术,并已逐渐被诸多国际和国家标准组织采纳为公钥密码标准(IEEEP1363、ANSIX9、ISO/IEC和IETF等),成为了当今信息安全产业界使用的主流密码技术之一[11].
密码体制
1.2论文的内容及安排
椭圆曲线属于抽象代数“代数几何学”的一个分支,自从Koblitz等人提出用来构造公钥密码以来,获得了快速发展.椭圆曲线密码体制(ECC)比RSA更有效,密钥更短而抗击能力更强.
数字签名是由公钥密码体制发展而来,它在网络安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用.本课题的主要工作是基于ECC的数字签名算法设计及实现.
本课题为“基于ECC的数字签名算法设计”,其主要内容如下:
(1)椭圆曲线与椭圆曲线密码体制(ECC).研究有限域上的椭圆曲线以及Ep(a,b)群性质
研究基于ElGamael公钥方案的椭圆曲线密码体制.
(2)数字签名与基于ECC的数字签名算法.研究数字签名特点以及在公钥密码体制下的实现.研究基于ECC的数字签名和基于RSA的数字签名算法设计.
(3)基于ECC的数字签名算法实现.编程实现基于ECC的数字签名方案.
第二章密码学的相关知识
计算机网络的建立,使得通信越来越便捷,人们可以利用网络快速实现远距离的通信但网络也带来了负面影响,一些用户利用所掌握的计算机技术非法窃取、监听、篡改信息等,使得通信双方无法获取正确的信息或者双方的敏感信息得不到保证.密码学的创立
为网络的安全通信提供了一种可行措施.密码体制从原理上可分为两大类即单钥密码体制和双钥密码体制RSA,ECC密码体制是公钥密码体制的典型代表.
2.1RSA体制
2.1.1RSA算法
RSA算法是1978年由R.Rivest,A.Shamir和L.Adleman提出的一种用数论构造的、也是迄今为止理论上最为成熟完善的公钥密码体制,该体制已得到广泛的应用.1.密钥的产生
1选两个保密的大素数p和q;
2计算npq,np1q1,其中n是n的欧拉函数值;
3选一整数e,满足1en且,gcdn,e1;
4计算d,满足de1modn,即d是e在模n下的乘法逆元,因e与n互素,由模运算可知,它的乘法逆元一定存在;
5以e,n为公开钥,d,n为私密钥.
加密
加密时首先将明文比特串分组,使得每个分组对应的十进数小于n,即分组长度小于log2n.然后对每个明文分组,作加密运算:
cmemodn
解密
对密文分组的解密运算为:
mcdmodn
2.1.2RSA安全性
RSA的安全性是基于分解大整数的困难性假定,之所以为假定是因为至今还未能证明分解大整数就是NP问题,也许有尚未发现的多项式时间分解算法.如果RSA的模数n被成功地分解为pq,则立即获得np1q1,从而能够确定e模n的乘法逆元d,即de1modn,因此攻击成功.
2.2DES体制
2.2.1DES算法[13]
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,首先,DES把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,并进行前后置换(输入的第58位换到第一位,第50位换到第2位,依此类推,最后一位是原来的第7位),最终由L0输出左32位,R0输出右32位,根据这个法则经过16次迭代运算后,得到L16、R16,将此作为输入,进行与初始置换相反的逆置换,即得到密文输出.
DES算法的入口参数有三个:
Key、Data、Mode.其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:
加密或解密,如果Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式作为DES的输出结果.在使用DES时,双方预先约定使用的”密码”即Key,然后用Key去加密数据;接收方得到密文后使用同样的Key解密得到原数据,这样便实现了安全性较高的数据传输.
64位明文
初始IP置换
16轮迭代
IP逆置换
64位密文
图3DES加密算法框图
DES加密算法的过程:
1.对输入的密钥进行变换.
用户的64bit密钥,其中第8,16,24,32,40,48,56,64位是校验位,使得每个密钥都有奇数个1.所以密钥事实上是56位.对这56位密钥进行如下表的换位.
57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,
63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4,
表的意思是第57位移到第1位,第49位移到第2位以此类推.变换后得到56bit数据,将它分成两部分,C[0][28],D[0][28].
2.计算16个子密钥,计算方法C[i][28],D[i][28]为对前一个C[i-1][28],D[i-1][28]做循环
左移操作.16次的左移位数如下表
1,
2,
3,
4,
5,
6,
7,
8,
9,10,11,12,13,14,15,16
(第i次)
1,
1,
2,
2,
2,
2,
2,
2,
1,2,2,2,2,2,
2,1(左移位
数)
3.串联计算出来的C[i][28]D[i][28]得到56位,然后对它进行如下变换得到48位子密钥K[i][48]
14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,
41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32,
表的意思是第14位移到第1位,第17位移到第2位,以此类推.在此过程中,发现第9,18,22,25,35,38,43,54位丢弃.
4.对64bit的明文输入进行换位变换.换位表如下:
58,50,12,34,26,18,10,2,60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7表的意思就是第一次变换时,第58位移到第1位,第50位移到第2位依此类推.得到
64位数据,将这数据前后分成两块L[0][32],R[0][32].
5.加密过程,对R[i][32]进行扩展变换成48位数,方法如下,记为E(R[i][32])
32,1,2,3,4,5,
4,5,6,7,8,9,
8,9,10,11,12,13,
12,13,14,15,16,17,
16,17,18,19,20,21,
20,21,22,23,24,25,
24,25,26,27,28,29,
28,29,30,31,32,1,
6.将E(R[i][32])与K[i][48]作异或运算,得到48位数,将48位数顺序分成8份,6位一
份,B[8][6].
7.使用S[i]替换B[i][6].过程如下:
取出B[i][6]的第1位和第6位连成一个2位数m,m就是S[i]中对应的行数(0-3),取出B[i][6]的第2到第5位连成一个4位数n(0-15),n就是S[i]中对应的列数,用S[i][m][n]代替B[i][6].S是4行16列的对应表,里面是4位的数,一共有8个S,定义如下:
S[1]:
14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,
0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,
4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,
15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,
S[2]:
15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,
3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,
0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,
13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,
S[3]:
10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,
13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,
13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,
1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,
S[4]:
7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,
13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,
10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,
3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,
S[5]:
2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,
14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,
4,2,1,11,10,13,7,8,15,