1、武汉理工大学硕士学位论文椭圆曲线密码(ECC)算法的FPGA实现及优化设计姓名:黄威申请学位级别:硕士专业:控制理论与控制工程指导教师:宋仲康20060401武汉理_L=人学硕士学位论文摘 要随着计算机运算速度的迅速提高和Internet分布式计算能力的日益强大,经典的公钥密码体制如RSA、DiffieHellman等在密钥长度为512bit下已经越来越不安全;虽然增加密钥长度能增加安全性,但是加、解密效率会越来越低,同时对系统的要求也会提高。在这种情况下,椭圆曲线密码体制(Elliptic CurveCryptosystem,简称ECC)“短密钥”的优势得到充分体现,其发展大有取代RSA成为
2、通用公钥密码体制之势。本文结合椭圆曲线算法的数学基础对椭圆曲线密码体制进行深入的分析,对椭圆曲线算法的FPGA实现进行了具体的研究设计,为ECC算法提供了实际可行的硬件解决方案。底层运算的实现中乘法器使用串并混合型结构以达到面积与速度的最佳匹配。对比了两种模逆算法,从节约时间的角度选取了扩展的欧几里德方法。在寻找适合硬件实现的高效算法的同时,充分考虑了ECC算法的多样性,没有使用针对单一曲线的快速算法。上层运算中最重要的部分是KP运算,结合底层有限域运算的特点对四种求KP的快速算法进行分析,最终选择了射影坐标下的Montgomery方法并给出了其FPGA实现算法。在Altera公司的集成开发环
3、境QuartusII下,用VHDL语言实现了椭圆曲线算法的底层域运算及上层KP运算。使用ANXI X962中椭圆曲线的例子对各个运算模块进行测试,验证了它们的正确性。测试结果表明:设计芯片能够有效地完成椭圆曲线加密体制完熬流程;在20MHz的工作频率下,平均每次KP运算的时间为1515ms。该芯片可以支持m s256的F1,域上任意可变曲线的ECC公钥密码算法,是一种系统参数可选择的高速椭圆曲线密码芯片。关键词:椭圆曲线,ECC,密码系统,FPGA武汉理工大学硕士学位论文With the rapid development of the computing speed of computer
4、and the powerof Internet distributed calculating,some classical cipher system such as RSA,DiffieHellmanetc are more and more insecure when the length of cryptographic keyless than 512 bitThou曲lengthen cryptographic key may enhance secufityencryptwill be more and more inefficiency,in addition the dem
5、and for system increasinglyhigherHence,Elliptic Curve Cryptosystem(Ecc)has exhibits its advantage fully in“Short Cryptographic Key”ECC tend to substitute RSA as the universal public keycryptographic system。This thesis analyzed Elliptic Curve Cryptosystem along with the arithmetic baseof elliptic cur
6、ve and studied the material algorithms for FPGA implementation ofElliptic Curve Cryptosystem in details1 will present a feasible scheme for hardwareimplementation of elliptic curve cryptographic systemA mixed parallel-serial multiplying unit is designed,which makes the area andthe velocity of the ca
7、lculation of multi!cllication match bestExtended EuclideanAlgorithm is selected to realize inversion from the standpoint of saving timeSomefast algorithms in allusion to given elliptic curve are abandoned considering diversityof Elliptic Curve CryptosystemFour types of the point multiplication algor
8、ithms are analyzed in this thesisConsidering the characteristics of subjacent operation,it is concluded that theMontgomery algorithm is easily implemented with HGAThrough the complete design environment of Quartus II,subjacent operation andpoint multiplication of Elliptic Curve Cryptosystem are real
9、ized by VHDLThesemodules are tested by the examples of elliptic curve in ANXI X962 and therecorrectness was provedTest results shOW that the processor can work out the whole flow of EllipticCurve Cryptosystem effectivelyComputing KP needs 1515ms on the average Resultin operating frequency is about 2
10、0MHzThis processor that has choice parameter andhigh speed Call apply to discretional elliptic curve based on finite field凡with mless than 256Key Words:Elliptic Curve,ECC,Cryptography,FPGAII武汉理T大学硕士学位论文11课题概述111课题的题目及来源第1章绪论课题的题目:椭圆曲线密码(ECC)算法的FPGA实现及优化设计课题来源: 科研预研究112课题研究的背景密码学的研究与应用已有几千年的历史,但作为一门科
11、学是20世纪50年代才开始的。目前密码技术已经从外交和军事领域走向公开,且已发展成为一门结合数学、计算机科学、电子与通信、微电子等技术的交叉学科,使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确定性,防止信息被篡改、伪造和假冒。Shannon于1949年提出了保密通信系统模型【l】,见图11。在图11中,明文x被发送之前,发送者和接收者之间使用的密钥k需要事先商定,这个密钥经商定后必须严加保密。一般说来,系统的保密性不依赖于加密体制或算法的保密(Kerckhoff原则),而只依赖于密钥。也就是说加密和解密算法是公开的,密码分析者可以知道算法与密文,但由于他并不知道密钥,因此仍
12、难于将密文还原为明文。图11 Shannon保密通信模型武汉理工大学硕士学位论文加密算法和解密算法所使用的参数称为加密密钥和解密密钥,两者可以相同,也可以不同。根据蜜钥的特点可将密码算法分为两类:对称(私钥)密码算法和公钥密码算法口1。私钥密码体制从加密模式上可分为序列密码和分组密码两大类。在对称加密嘉统中,加密和解密采用相同的密钥。因为加解密密钥相同,需要通信的双商必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄密出去,妻样才可以实现数据的机密性和完整性【3】。公钥密码算法又称非对称密钥算法、双钥密码算法。在公钥密码算法中,加密密钥不同于解密密钥,加密密钥可以公之与众,谁都可以使用
13、;解密密钥只有解密人自己知道,必须保密。加密密钥和解密密钥分别称为公开密钥(简称公钥)和秘密密钥(简称私钥)。私钥密码算法的优点是加解密速度快,其缺点是:密钥的分发和管理非常复杂,不适何在大型网络中应用;无法对信息发送人的身份进行认证并检验信息的完整性,因而不能用于数字签名。公钥密码算法很好地解决了这两方面的问题,并正在产生许多新的思想和方案141。公钥密码算法与对称密码算法相比有其不可取代的优势,然而它的运算量却十分浩大。在公钥密码算法中所需要的计算量比一般的加密算法如DES计算量多几个幂的数量级。因此,公开密钥一般用在仅有少量数据需要传输的情况下,如数字签名,传送对称密钥算法中的密钥等。自
14、从1976年Diffie和Hellman提出了公钥密码的概念以来,出现了很多的公钥密码系统,所有的这些系统的安全性都依赖于各自所基于的数学问题。近来,其中一些公钥系统已经遭到了破译,另有一些则被证明是难以实现的。目前只有3种类型的系统被认为是安全和有效的。根据其依赖的数学问题,可将这些系统分为f5l:(1)整数因数分解问题(IFP):如RSA和RabinWilliams。(2)离散对数问题(DLP):如美国政府数字签名算法(DSA),DiffieHellman和MQV密钥交换方案,E1Gamal加密和签名方案,Schnorr和NybergRueppel签名方案。(3)椭圆曲线离散对数问题(EC
15、DLP):如椭圆曲线DSA(ECDSA),椭圆曲线版本的Diffie-Hellman和MQV密钥交换方案,E1Gamal加密和签名方案,Schnorr和NybergRueppel签名方案。2武汉理工大学硕士学位论文以上问题都没有被证明是难解的,然而经过全世界数学和计算机科学家长年的细致研究,并没有发现有效的快速算法去解决它们。通过越来越多的研究和使用它们,使我们对其相应的密码系统的安全性有了更多的信心。椭圆曲线密码系统(Ecc)161171在1985年分别由Victor Miller和Neal Koblitz独立提出。但在当时,他们都认为ECC的概念仅是数学范畴的,而其实际实现是不现实的。从1
16、985年以来,ECC受到全世界密码学家、数学家和计算机科学家的密切关注。一方面,由于没有发现ECC明显的漏洞,使人们充分相信其安全性;另方面,在增加ECC系统的实现效率上取得了长足的进步,到今日ECC不仅可被实现,而且成为已知的效率最高的公钥密码系统。ECC相对于RSA和DSA等系统吸引人的最主要的原因是解决其数学问题(即ECDLP)的已知的最好的算法也要用完全指数时问。与之相比,RSA和DSA所基于的数学问题(即因数分解IFP和离散对数DLP问题)都有亚指数时间算法。这意味着随着长度的增加,求解EcDLP的难度比求解IFP和DLP的难度增加得快得多。因此ECC仅需要更小的密钥长度就可以提供跟
17、RSA和DSA相当的安全性。表11具有相同安全强度的ECC和RSADSA的密钥长度RSADSA密钥长度(bits) ECC密钥长度(bits)512 106768 1321024 1602048 21021000 600加密算法的安全性能一般通过该算法的抗攻击强度来反映。ECC和其他几种公钥系统相比,其抗攻击性具有绝对的优势。以当前应用最为广泛的公钥系统RSA为例,RSA方法的优点主要在于原理简单,易于使用。但是,随着整数因子分解方法的不断完善、计算帆速度的提高以及计算机网络的发展,作为RSA加解密安全保障的大整数要求越来越大。要保证RSA使用的安全性,就要相应地增加其密钥的位数,目前一般认为
18、RSA需要1024位以上的字长才有安全保障。但是,密钥长度的增加导致了其加解密的速度大大降低,硬件实现也变得越来越困难,这对使用RSA的应用带来了很重的负担,从而使得其应用范围越来越受到制约。而椭圆曲线则具有较短的密钥长度,例如160位ECC与1024位武汉理工大学硕士学位论文RSA、DSA具有相同的安全强度,210位ECC则与2048位RSA、DSA具有相同的安全强度,这就意味着带宽要求更低,所占的存储空间更小。这些优点在一些对于带宽、处理器能力、能量或存储有限制的应用中显得尤为重要。这些应用包括:IC卡、电子商务、Web服务器、移动电话和寻呼机等。表11州给出了在相同的安全条件下,ECC和
19、RSADSA的密钥长度。113课题研究的目的及意义信息安全已成为人们在信息空间中生存与发展的重要保证条件,著名未来学家托夫勒曾说过,在信息时代“谁掌握了信息,控制了网络,谁就将拥有整个世界”。因此,密码学和信息安全技术在最近二十多年来,越来越受到人们的重视,特别是“911”事件以来,信息安全业已成为各国政府和有关部门、企业、机构的重要议事内容。随着在有限域上的离散对数问题和因子分解上不断进步、计算机运算速度的提高和计算机网络的发展,为了达到安全要求,大多数公钥密码体制的密钥也越来越大,传统的软件加解密方式已经难以满足要求。要满足上百兆到上千兆的加密速率,必须采用硬件实现。与软件加密相比,硬件加
20、密具有加密速度快、性能好等优势,并且便于物理保护,安全性好【9】。因此,研究本课题有非常迫切的现实意义。与此同时,电子设计自动化技术(EDA)的发展使得电子工程师们在实验室里就能设计出合适的ASIC芯片,并且能立即投入实际应用之中。有人预言:“未来的VLSl设计者是科学家而不是工程师”。意思是说未来的EDA工具将高度自动化,设计者重点是概念设计,而大部分工程实践中的技术问题都可以依靠EDA工具解决0】。研究本课题还可以将CPLDFPGA等EDA器件以及VHDL等EDA工具应用于实际系统,从而掌握使用EDA技术开发ASIC的方法。12 ECC芯片研究的现状椭圆曲线密码算法(ECC)是一种非常复杂
21、的数学算法,设计出能够完整实现ECC算法的专用集成电路芯片(ASIC)非常困难。当前,对ECC的研究主要集中在ECC的实现方面,尤其是ECC的芯片集成引人关注。4武汉理T大学硕十学位论文采用硬件方式实现ECC的报道最早见于文献111。文献【1l】构造了一块专门用于执行有限域只。上乘法运算的VLSI芯片,然后再利用一个高效的可编程控制器实现了基于只。上的ECC。利用这一芯片,加密速度大致可以达到40kbs,换算为签名速度大约是130次每秒。2001年,德国的Infimeom公司推出了一款安全芯片,产品型号为SLE66C42F。它使用了一个16位的安全控制器,具有数据加密标准(DES)和三重DES
22、算法(3DES)的对称N解密功能和实现椭圆曲线数字签名算法的(ECDSA)的功能。对椭圆曲线数字签名算法,它只能对定义在F。,m;192上的椭圆曲线有效。在5MHz的工作频率下,完成一次签名的产生所需的时间是285ms,完成一次签名验证所需的时问是540ms。在10MHz的工作频率下,完成一次签名的产生所需要的时间是142ms,完成一次签名验证所需的时间是270ms。2001年,Motorola公司推出了一款多功能安全处理器,型号为MPCI80。这是一款功能上几乎做到了包罗万象的芯片,主要是为了实现网络安全(IPsec)协议而为客户端用户所设计。该芯片具有实现DES、3DES、RC4、DM4、
23、MD5、SHA1、RSA、ECC和随机数产生等算法功能。关于ECC算法功能,MPCI80芯片可以同时兼容素数域曲线和特征2域曲线。对素数域情况,只要求定义曲线的素数域E中的素数P是一个规模在64比特到512比特之间的素数即可。对特征2域情况,也只要求定义曲线的有限域F中的m是一个规模在64到512之间的数即可。对两种情况下的椭圆曲线,芯片没有提供任何完整的密码算法或密码协议的实现,只提供了标量乘法的计算功能和计算椭圆曲线上点加P+Q和计算倍点2P的功能”】。我国密码芯片的设计和生产还远远滞后于系统和网络的发展需求,特别在高速度密码芯片方面与发达国家还有十分明显的差距。国内对ECC的芯片集成的研
24、究起步较晚,但近几年来的发展比较迅速,目前已经有正式的产品面世。例如上海微科集成电路有限公司于2004年12月15宣布开发成功的RSAECC二合一密码算法协处理器芯片。该芯片最多可以完成256比特的ECC运算,每秒至少可以完成100次ECC点乘运算。武汉理工大学硕士学位论文13课题研究的内容本课题的研究内容主要包括一下三个方面:(1)深入研究ECC体制及其快速算法。椭圆曲线密码算法中可以用硬件实现的算法很多,但硬件实现必须考虑到面积问题,因为他们分别设计各自的运算单元会使面积很大。因此,为了得到较快的加、解密速度和较小的芯片面积,必须对这些基本算法进行优化。(2)ECC算法中的基本运算的硬件实
25、现。以FPGA为载体完成椭圆曲线上加法、乘法、平方和求逆运算的功能。(3)芯片结构的优化。结合FPGA器件本身特点以及所用算法的特点,对系统各个运算部件和整个系统进行优化设计。武汉理:人学硕士学11)=论文第2章椭圆曲线公钥密码的理论基础椭圆血线有丰富的数学结构,这使得它在公钥密码系统中有广泛的应用。本章将结合椭圆曲线密码算法的数学基础对椭圆曲线密码体制进行分析,然后对椭圆曲线算法硬件实现的载体FPGA器件的设计流程进行介绍。21有限域有限域是1832年Galois引进的,Galois为了探讨一元高次方程能否用四则运算和开方求解,他创造了著名的Galois理论,在这个理论中他引进了群和域这两个
26、概念,有限域就是他作为域的例子而举出来的。自上个世纪八十年代以来,人们已经利用有限域构造出多种公钥密码体制【13l。本节将介绍在公钥密码学中经常用到的有限域E和有限域只,【14J。在本论文一下的论述中,q=P,P是素数,或q=2“,m1。211有限域只有限域E由整数集合O,1,2,p一1组成,每个这样的整数可以用一个长度恰为f=flog:P1(其中rxl表示不小于x的最小整数)的二进制表示,该表示由整数的二进制表示几在其左边添加适当个数的0组成。只中元素具有以下算术运算:加法如果a,b只,则a+b=r,其中r是a+6被P除所得的剩余,0E r sP一1:乘法 如果口,b巴,则日b=5,其中s是
27、口b被p除所得的剩余,0s S sP一1:令巧表示中所有非零元素,可证明在FP中至少存在一个元素g,使得中任意非零元素可以表示成g的方幂,这样的元素g称为E的生成元(或本原元),即,:=g:0si sP一2武汉理工大学硕士学位论文口=gE的乘法逆是三;占?;g(一j)md(P一1一a212有限域F2。有限域只。包含2”个元素,这罩2是只的特征,而m是F1。在它的素域B上的次数。构造元素个数为素数方幂的有限域的方法有很多,其中最直观的方法是利用多项式的加、乘、除和剩余来构造有限域F。令f(x)=x“+,m1X”1+厶z2+,l算+fo(LE,0sf sm一1)是巴上次数为m的不可约多项式,即,0
28、)不能分解为E上两个次数小于m的多项式的积。有限域只由F上所有次数小于m的多项式组成,即F一盲口卅_1z”-1+am_2x42+口lx+ao:ai0,1域元素(am_ix”1+口。一2x”2+nlz+口o)通常用长度为m的二进制串(口。一1口。一2d1口o)表示,使得只。=0a。一2口1口o):af0,1因此,只中的元素可以用所有长度为m的二进制串的集合来表示。域元素的加、乘法运算如下:域由口法 (am_la。一2nlno)+(k1b。一2bibo)=(Cm-1Cm_2ClCo),其中C。=(n。+抚)mod2,即域加法是按分量方式进行的;域乘法 (口。a。一:口。4。)(k一,k一:blbo
29、)一(r刖一,k一:firo),其中多项式(k-1X“-1+一2z“一2+,1z+)是多项式(口,一1工“_1+口。一2x“一2+以1X+no)乘以(k一。x“+k一:石”2+岛z+)在,2上被,)除所得的剩余。这种表示F。的方法称为多项式基表示法。这里的域乘法运算可以看作是模f(x)意义下的多项式乘法。可以证明至少存在一个元素gf,使得只,中任何一个非零元素都可以表示成g的一个方幂。这样的元素g成为只。的生成元(或本原元)。即F二一g:0si s 2”一2a=g,二的乘法逆是三鲁占。;g(一i)-,l。d(2”一1)武汉理工大学硕士学位论文一般地,域只,可以表示成B上一个维数为m的向量空间,
30、也即只,中存在一个由m个元素口。,a。,口。组成的集合,使得每个aF。可以唯一写成如下形式,即a=口0a0+all】1+n一lam一1其中afO,1。可以将a表示成0,l向量0口,al,ara_2a。)。C。在F2上有很多不同的基。对于一个m次不可约多项式厂),如果f(x)的m个根成,芦1-,卢。在F2上线性无关,那么这研个根显然构成t。在艺上的一组基。作为,)的m个共轭根,它们可以写成某一个根卢的幂次,即卢。=声,卢。=卢2,卢:=卢r,p。一。=芦寸。通常把形如(卢,卢2,卢。,卢2”1)的基称为正规基【161。理论上已经证明这样的基总存在。22椭圆曲线221椭圆曲线的定义椭圆曲线的研究来
31、源于椭圆积分,如下式【171: 陲oE)这里E0)是x的二次多项式或四次多项式。这样的积分不能用初等函数来表达,为此引入了所谓的椭圆函数。所谓椭圆曲线是指由韦尔斯特拉斯(Weierstrass)方程(如下式)所确立的平面曲线:Y2+aIxy+a3Y鲁x3+a2x2+a4x+口6 (21)若F是一个域,其中afF,i=L2,6,满足Weierstrass方程的数b,y)称为域F上椭圆曲线E的点。F可以是有理数域,也可以是复数域,还可以是有限域。除了曲线E上的所有点外,还需要加上一个特殊的无穷远点D。令表示q个元素的有限域,q=P,P是素数,z1,令E()表示定义在C上的一个椭圆曲线。定理21(H
32、asse定理)令E()是定义在有限域上的椭圆曲线,E(C)的点数用社E(E)表示,则l撑()一qq s 24q定理22对任意ItI s 2矗,t*0modp),存在E上的椭圆曲线E,使得9武汉理工大学硕士学位论文#E(兄);q+1一t。222椭圆曲线上的基本运算(1)只上的椭圆曲线令P,3是一个素数,口,bEt满足钇3+27b20(modp),由参数a和6定义的只上的一个椭圆曲线是方程Y2=X3+甜+b (22)的所有解0,Y),zC,yEC,连同一个称为“无穷远点”(记为O)的元素组成的点集合。E(L)的点数用舟占(只)表示。由Hasse定理可知P+12xp s撑E(,:)sP+1+24P点
33、集合E(疋)对应下面的加法规则构成一个群。在本节及以后表述中P(xl,Y,)平rlQ(x:,Y:)表示E(只)上的点,D表示E上的无穷远点,表示PQ的连线。11 D+OO;2)O+P=P并Re+O;P;3)如果P=,Y1)O,一P-,-y。),P+(一P)一O(即点0,Y)的逆为,一y);4)若尸和Q是满足而,z:的点,则直线L=PQ与椭圆曲线有且仅有第三个交点R,定义尸+Q=一R。令一R一,Y,),则有:卜。A2-X1-X2 (23)lY3=Z(x1一z3)一Y1其中A:必。茗2一X15)若P;a,Y,*0,令L为椭圆曲线上点P的切线,L与椭圆曲线有且仅有第二个交点R,则P+a=2P=-R。
34、令一R=,Y,),则有:J而钌一2X1 (24) 、二斗IY3;z(x1一x3)一Y1其中A:垡塑。2y1群E()是Abel群,即对E()中的所有点P和a,P+Q aa+P。如果社E(疋)=P+1,曲线就称为是奇异的,否则称为是非奇异的。10武汉理工人学硕士学位论文(2)上的椭圆曲线F2,上由参数n,6E易,b*o定义的一个非超奇异椭圆曲线E()是方程Y 2+xy=工3+甜2+b (25)的解集合x,Y),xF,。,Y只,连同一个称为“无穷远点”(记为0)的元素组成的点集合。(一,)的点数用撑(只。)表示。由Hasse定理可知q+12目s群E(F2,)sq+1+24q其中口=2”。进一步有:样
35、(L)是偶数。点集合E(只)对应下面的加法规则构成一个群,即1)O+O=O;2)O+P=P并且P+O=P;3)如果P=。,M)_O,一P=0l,x1+Y1),P+(一P)=O(即点0,Y)的逆为0,X+Y);4)若P和Q是满足善。x:的点,则直线L=PQ与椭圆曲线有且仅有第三个交点R,定义P+Q一R。令一R一,Y,),则有:Ixs。A2+A+j,+x:+4 (26)XI二U JI,3一(x1+z3)+石3+Y1 、 7其中A。丝!。 石2+茗15)若PQ,x,0,令为椭圆曲线上点P的切线,与椭圆曲线有且仅有第二个交点R,则P+Q2PR。令一R=O,Y,),则有:jz3=Ai+4 (27)lY3
36、 2x卜+1)x3其中A=z,+丛。4群E(F2)是Abel群,也即尸+QQ+P对E(t。)中的所有点P和Q都成立。一次加法运算通常需要八次加法、两次乘法、一次平方、三次模域多项式丁0)的约简和一次求逆;一次倍点运算通常需要四次加法、两次乘法、两次平方、四次模域多项式r(u)的约简和一次求逆。椭圆曲线点加法的运算时间主要耗费在乘法和求逆E。武汉理丁大学硕士学位论文23椭圆曲线密码系统简介给定有限域和定义在有限域上的椭圆曲线E(),对于已知椭圆上的点P,求Q zkP(舻称为椭圆曲线上的点乘,即k个P在椭圆曲线上的点乘运算)很容易,但是反过来在已知P和Q的情况下求k却非常困难。该问题被称为椭圆曲线
37、上的离散对数问题(ECDLP),椭圆曲线公钥密码系统的安全性就是基于椭圆曲线离散对数闯题的难解性。231系统的建立椭圆曲线密码系统必须选用安全的椭圆曲线,否则整个系统都是不安全的。所谓的安全曲线是指能抗各种已有攻击的曲线,目前对椭圆曲线攻击比较有效的方法有MOV攻击、Smart方法、PollardP方法等。为抵抗上述攻击,有限域E上的椭圆曲线E(E)应满足:(1)椭圆曲线群的阶(即有限域内满足椭圆曲线的点数)撑E(E)有大于2“且大于4、肠的素数因子;(2)E(E)不是超奇异曲线或反常曲线,这两类曲线在所有的椭圆曲线公钥密码的标准中都被指定禁止使用。构成一个椭圆曲线密码系统所需要的参数集称为椭
38、圆曲线域参数,包括:有限域只,椭圆曲线E,基点G(椭圆曲线E上的一个点),基点的阶尼(使得nP=0的最小正整数,最好是素数),椭圆曲线群的阶#F4F,相关因子。o)h椭圆曲线的域参数是公开信息。如果选择的有限域是素数域只,则椭圆曲线参数域是一个六元的参数组p,口,b,G,n,)。其中P决定有限域,口,b决定椭圆曲线,G表示基点,”是G的阶,h表示椭圆曲线群的阶与n的商。如果选择有限域是特征为2的有限域L,则椭圆曲线参数域是一个七元组m,f(x),口,b,G,n,h),其中:m是有限域的尺寸,(x)是域中的多项式,n,b决定椭圆曲线,G表示基点,rl是G的阶,h表示椭圆曲线群的阶与,l的商。23
39、,2密钥的产生系统建立以后,每个使用者(简称实体)执行以下计算:壁坚望兰叁堂堡主堂堡丝苎1)在区间【1,”一1】中随机选取一个整数d2)计算点a=dG;31实体的公钥包含点Q;4)实体的私钥是整数d;2-33椭圆曲线加密体制(ECES)当实体B发送信息M给实体A时,实体B执行如下加密步骤:1)实体B去查找公钥库PKDB,查到A的公钥Qj;2)将肘划分为较小的数据块,M=枷1,m2,m),其中0ssn;3)在区间Bn一1上选择-个随机数七;4)计算点置,Y,);kG;5)计算点x:,Y:)=kOA,如果工:=0,则回到第3步:6)计算C=nqx2;7)传送加密数据,Y,c)给A。实体A接收到从B
40、发来的密文,Y,c)时,执行如下的解密步骤:1)使用他的私钥d。,计算点x:d。x,=dA(kC)=k(d。G)=七Q一;Xz21通过计算扰=“i1,恢复出数据m。234椭圆曲线数字答名体制(ECDSA)当实体A为实体B签名信息M时,A执行下列步骤生成ECDSA签名:11将信息M表示成二进制串:2)使用一个hash函数计算hash值e一(M);3)在区间B”一1】内选取一个随机数k;4)计算点瓴,Y1)=kG并设rxlmodn;51利用私钥d,计算Sk。忙+rd)modn;61 A传送给B信息M和它的签名(r,s)。注意当r;0或s。0则签名验证失败。可是,如果Jj是随机选取的,则r=0或s;
41、0的概率非常之小可以忽略不计。当实体B验证A对信息M的签名(r,5)时,B执行下列步骤对A的签名进行验证:武汉理工大学硕士学位论文11查找A的公钥Q:21如果rmodn=,则拒绝签名;3)计算 值=0hash e胃(M);4)计算smodn;5)计算“=s1emourn年口v=S一1rroodn;6)计算点Ol,Y1)一“G+vQ;7)接受A对信息M的签名当且仅当五modn:,;注意签名过程中hash值e模n约简,因此,为保证安全,hash函数日和n的选择应使得Hmodn仍是一个密码安全的hash函数。如果r:0,则签名方程s=k-1伯+rd)modn就不包含私钥d。出于安全需要,可以在生成签
42、名的步骤(4)中强制,0。24椭圆曲线密码算法实现的硬件基础241 FPGA设计流程现场可编程门阵列(FPGA)【1q是由掩膜可编程门阵列(MPGA)和可编程逻辑器件二者演变而来的,并将它们的特性结合在起。因此FPGA既有门阵列的高逻辑密度和通用性,又有可编程器件的用户可编程特性。FPGA是90年代才兴起的半定制集成电路,用户可以根据自己的需要在FPGA中设计自己的专用电路,用于完成特殊的功能。FPGA基本的设计流程主要包括电路设计与输入、功能仿真、设计综合、综合后仿真、布局布线、布线后仿真和芯片测试等几个步骤。电路设计与输入是根据工程师的设计方法将所设计的功能描述给EDA软件。设计输入主要有
43、原理图输入和HDL输入两种方式【”】,有些熟悉硬件设计的工程师开始喜欢利用原理图进行设计,这种方法非常直观,但基于可移植性和规范化方面的考虑,绝大部分深入FPGA设计和ASIC设计的工程师最终都将统一到HDL平台上来。电路设计完成后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要求。功能仿真忽略了综合和布局布线导致的时延等因素,仅仅从逻辑上进行仿真。这样可以及时发现设计中的错误,加快设计进度,提高14武汉理工大学硕士学位论文设计的可靠性。设计综合将HDL语言生成用于布局布线的网表和相应的约束。综合效果直接导致设计的性能和逻辑门的利用效率,因此,许多可编程逻辑器件开发商都支持第
44、三方综合和仿真工具。综合完成后需要通过仿真来检查综合结果是否与设计要求一致。在仿真时,把综合生成的延时文件反标到综合仿真模型中去,可估计延时带来的影响。布局布线工具利用综合生成的网表,在FPGA内部进行布局布线,并生成可用于配置的比特流文件(有了比特流文件就可下载到芯片里了1。布局布线工具与可编程逻辑器件工艺及其布线资源密切相关,一般由可编程逻辑器件开发商直接提供。布线后必须通过时序仿真作进一步验证,发现并修正时序问题。242 VHDL语言硬件描述语言是EDA技术的重要组成部分,VHDL 201是作为电子设计主流的硬件描述语言。VHDL的英文全名是VHSIC(Very High Speed I
45、ntegratedCircuit)HardwareDescriptionLanguage,于1983年由美国国防部(DOD)发起创建,由IEEE(The Institute of Electrical and Electronics Engineers)进一步发展并在1987年作为“IEEE标准1076”发布。从此,VHDL成为硬件描述语言的业界标准之一。自IEEE公布了VHDL的标准版本(IEEE Std 1076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具支持VHDL。此后VHDL在电子设计领域得到了广泛应用,并逐步取代了原有的非标准硬件描述语言。VHDL作为
46、一个规范语言和建模语言,随着VHDL的标准化,出现了一些支持该语言的行为仿真器。由于创建VHDL的最初目标是用于标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和元件的行为。但到了20世纪90年代初,人们发现,VHDL不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具;可以利用软件工具将VHDL源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件。这种方法显然对于电路自动设计是一个极大的推进。很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它把标准VHDL的部分语句描述转化为具体电路实现的网表文件。武汉理工人学硕士学位论文1993年,1EEE对
47、VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本的VHDL,即IEEE标准的10761993版本。现在,VHDL和VefilogHDL作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,己成为事实上的通用硬件描述语言。VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。VHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化、结构化设计方面,表现了强大的生命力和应用潜力。因此,VHDL在支
48、持各种模式的设计方法、自顶向下与自底向上或混合方法方面,在面对当今许多电子产品生命周期的缩短,需要多次重新设计以溶入最新技术,改变工艺等方面都表现了良好的适应性。用VHDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。一个VHDL程序包含实体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分阎。实体是一个VHDL程序的基本单元。简单的可以是一个与门(AND Gate)复杂点的可以是一个系统,但是,不管是简单的数字电路还是
49、复杂的数字电路,其基本构成是一致的,都由实体说明和结构体两部分组成。在层次化系统设计中,实体说明用于描述设计系统的外部接口信号,结构体用于描述系统的行为、系统数据的流程或者系统组织结构形式。结构体是一个基本设计单元的实体,具体指明了该设计单元的行为,元件及内部的连接关系,也就是说它定义了设计单元具体的功能,结构体对其基本设计单元的输入输出关系可以用3种方式描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。不同的描述方式,其描述语句不同。而结构体的结构是完全一样的。一个电路系统的程序设计只有一个实体,可以有多个结构体。系统设计中的实体提供