[电子电路]基于Openssl的数字签名算法的实现.doc
《[电子电路]基于Openssl的数字签名算法的实现.doc》由会员分享,可在线阅读,更多相关《[电子电路]基于Openssl的数字签名算法的实现.doc(46页珍藏版)》请在三一办公上搜索。
1、摘 要随着计算机和互联网技术的不断发展、电子商务的广泛应用,信息安全问题变得越来越重要,而网络信息安全的核心在于密码技术。椭圆曲线密码体制(ECC)是一种公钥密码体制,相对于以往基于有限域上离散对数问题或大整数分解问题的传统公钥算法,椭圆曲线密码算法具有安全性高、速度快、密钥短、实现时所需占用资源少的特点。作为迄今为止每比特具有最高安全强度的密码系统,由于其算法的高效安全性,使其成为优于RSA的PKI体系的核心公钥算法,其224位的ECC安全性相当于2048位的RSA安全性,所以ECC技术在信息安全领域中的应用将会越来越广泛。本设计正是基于这样的背景,在Microsoft Visual Stu
2、dio6.0下的Microsoft Visual C+6.0编译环境中利用标准C语言并且借助密码学领域的开放源代码库OpenSSL设计与实现国家密码管理局21号公告(SM2椭圆曲线公钥密码)中的数字签名算法。关键字: 椭圆曲线, SM2, Microsoft Visual C+6.0, C语言, OpenSSL, 数字签名ABSTRACTWith the development and application of information technology and the electronic commerce,the problem of information security bec
3、omes more and more important,but the network information security core lies in the password technology.Elliptic Curve Cryptography(ECC) systems which is a public-key systems is characterized by higher safety property,faster speed,shorter key lengths and fewer computational resources for implementati
4、on thanother former traditional public-key algorithms based on the discrete logarithm infinite fields or the great integer factorization problem.So far,the ECC provides the highest strength-per-bit of any cryptosystem known.Because of its high efficiency of the algorithm,some people think it is the
5、best public-key cryptosystem that is suitable for current use in future.The security of 224-bit ECC is equal to 2048-bit RSA.So the application of ECC technology in the field of information security will be more and more widely.Based on this background,This design will use C language with open sourc
6、e library OpenSSL of the field of cryptography to design and realize a complete system of Digital Signature of Chinese SM2 Elliptic curve public key crypto system.KEY WORD:Elliptic curve, SM2, Microsoft Visual C+6.0, C language, OpenSSL, Digital Signature目 录摘 要IABSTRACTII目 录III第一章 引言1第二章 数字签名的概念2第三章
7、 椭圆曲线概述83.1 有限域83.2 射影平面和无穷远点93.3 椭圆曲线103.4 密码学中的椭圆曲线13第四章 椭圆曲线数字签名算法实现154.1 椭圆曲线的参数选取154.2 杂凑函数174.3 数字签名算法流程184.4 开放源代码工具OpenSSL简介224.5 基于OpenSSL的椭圆曲线数字签名算法实现26第五章 数字签名结果验证29第六章 结论和感想31致谢语32参考文献33附录A34附录B36英文文献39第一章 引言 随着计算机技术和网络技术的高速发展和广泛应用,社会的信息化程度越来越高,大量的敏感信息通过公共通信设施和网络系统进行交换,尤其是互联网、电子商务和电子政务的迅
8、猛发展,国家、企业和个人的信息都要求严格保密,如:军事机密、企业财务、银行密码等。然而,网络很容易遭受攻击,攻击者可以窃取网络信息,企图偷窥机密或是篡改和破坏信息从而使自身获利,这对网络的发展和用户的利益构成了严重的威胁。因此,如何保护通信过程中信息的安全使之不被窃取、篡改和破坏,已经成为当今备受关注的重大问题。在这样的背景下,网络安全技术应运而生,形成了密码技术、系统入侵检测技术和计算机病毒检测消除技术等多种安全防护技术门类。其中,密码技术在信息保护方面给人留下了深刻印象。说到密码技术,人们可能会马上想到加密技术,的确,经过加密处理的信息在网络上传输能够使攻击者难以窃取通信双方的原文,从而避
9、免了机密信息的泄漏。然而,接收方获取的信息有可能被攻击者恶意篡改或破坏,如果不对收到的信息加以辨别将有可能会给通信双方带来巨大的损失。那么接收方要如何确认收到的信息的确是来自和他合作的对象呢?数字签名技术就是能解决这类问题的关键技术。第二章 数字签名的概念数字签名技术(Digital Signatures)是纸质手写签名的电子版本,是一种能够保证交易者身份的确定性、数据交换的完整性、发送信息的不可否认性的有效的解决方案,是电子商务安全性的重要部分;数字签名技术是密码技术的一个分支,要想充分了解数字签名的原理必须先了解密码学相关概念。密码体制可分为对称密码体制和公钥密码体制两种。对称密码的历史可
10、以追溯到几千年前,它是一种加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来的加密技术。在大多数的对称算法中,加密密钥和解密密钥是相同的。所以对称密码算法也称为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,必须商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。 对称系统通常非常快速,却易受攻击,因为用于加密的密钥必须与需要对消息进行解密的所有人一起共享。其优缺点如下:优点:(1) 算法实现的效率高、速度快。(2) 满足大量信息的加密要求。缺点:(1) 密钥量问题。在单钥密码系
11、统中,每一对通信者就需要一对密钥,当用 户增加时,必然会带来密钥量的成倍增长,因此在网络通信中,大量密 钥的产生、存放和分配将是一个难以解决的问题。(2) 密钥分发问题。单钥密码系统中,加密的安全性完全依赖于对密钥的保 护,但是由于通信双方使用的是相同的密钥,人们又不得不相互交流密 钥,所以为了保证安全,人们必须使用一些另外的安全通道来分发密钥, 例如用专门的信使来传送密钥。这种做法的代价是相当大的,甚至可以 说是非常不现实的,尤其在计算机网络环境下,人们使用网络传送加密 的档,却需要另外的安全通道来分发密钥。所以传统的对称密码算法 急需改进。虽然对称算法的缺点和优点一样明显,但作为对称算法的
12、经典,由IBM公司开发、并被美国国家标准局于1977年2月采纳作为“非密级”应用标准的DES算法不仅在历史上曾发挥重要作用,到目前为止仍是大量信息加密的首选方案。那么对称算法适用于数字签名吗?答案是不适用,因为有两个(或更多个)实体共享密钥,这样一来利用密钥作用于消息产生的数字签名,无法区分出共享密钥的不同实体的行为,也就是对称密码体系不能实现用于不可否认服务的数字签名。公钥密码也称为非对称密码,它是相对于对称密码而言的,它突破性地解决了对称密码面临的三个难题:密钥分发、密钥管理和提供不可否认性。公钥密码体系与对称密码体系最大的不同是采用两个不相同但有着紧密联系的密钥进行加密和解密,其中一个密
13、钥是公开的称为公钥,另一个密钥是保密的称为私钥,这两个密钥也称为密钥对。公钥密码体系的工作模式有两种:(1) 发送实体用公钥加密得到密文;接收实体用私钥把密文解密成明文。只有与此公钥相对应的私钥才能够将该公钥产生的密文恢复成明文。(2) 发送实体用私钥加密得到密文;接收实体用公钥把密文解密成明文。只有与此私钥相对应的公钥才能够将该私钥产生的密文恢复成明文。这种公私钥的关系是基于一种单向陷门函数。单向陷门函数是有一个陷门的一类特殊单向函数。它首先是一个单向函数,在一个方向上易于计算而反方向却难于计算。但是,如果知道那个秘密陷门,则也能很容易在另一个方向计算这个函数。即已知x,很容易计算出f(x)
14、,而已知f(x),却很难出计算x。然而,一旦给出f(x)和一些秘密信息k,就很容易计算出x。在公钥密码体系中,计算f(x)相当于加密,陷门k相当于私钥,而利用陷门y求f(x)中的x则相当于解密。在公钥密码体系中,要实现这样一种单向陷门函数,密钥对的选择必须保证从公钥求出私钥等价于要求解一个困难的计算问题。目前构成常用公钥密码基础的困难问题有如下3种:(1) 大整数的因子分解问题;(2) 离散对数问题;(3) 椭圆曲线离散对数问题;有了适合于公钥密码体系用来构造公私钥关系的数学难题,公钥密码的应用才能成为现实。对于公钥体系的工作模式(1),以公钥作为加密密钥,以用户私钥作为解密密钥,可实现多个用
15、户加密的消息只能由一个用户解密,适用于加密,因为私钥的保密性确保了只有一个实体能进行解密;对于公钥体系的工作模式(2),以私钥作为加密密钥,以公钥作为解密密钥,则可实现由一个用户加密的消息可以由多个用户解密,适用于数字签名,因为同一个实体产生的多个签名应该能被不同的接收实体验证,这也正是数字签名的基本要求。 本设计研究的是数字签名,以下就不对公钥密码的加密体系进行介绍了。数字签名技术是不对称加密算法的典型应用。数字签名的应用过程是:数据源发送方使用自己的私钥对数据和其他与数据内容有关的信息进行加密处理,完成对数据的合法“签名”,数据接收方利用对方的公钥来解读收到的“数字签名”,并将解读结果用于
16、对数据来源和完整性的认证,以确认签名的合法性。最早的数字签名方案有RSA数字签名方案、DSA数字签名方案和ECDSA数字签名方案。此三种签名方案于2000年2月15日被美国国家标准技术研究所(NIST)在新标准法案FIPSl86-2中指定为美国的数字签名标准,同时他们也是目前世界上普遍使用的数字签名方案,都已经形成商业的签名软件供商家和个人使用。其中RSA数字签名方案是由RSA公司提出的基于RSA公钥密码体制的签名方案,其数学基础是大数因子分解的困难性。DSA数字签名方案是基于E1Gamal提出的E1Gamal公钥密码体制,其数学基础是在有限域上求解离散对数的困难性。ECDSA数字签名方案是基
17、于椭圆曲线密码体制的签名方案,它是将DSA签名方案移植到椭圆曲线密码体制中来得到的,它的数学基础是求解椭圆曲线上离散对数的困难性。目前由于椭圆曲线密码体制较其他公钥密码体制有密钥短、速度快、安全性高的优点使得椭圆曲线密码体制和ECDSA数字签名方案越来越受到更高的重视。下面对本设计采用的椭圆曲线密码体系进行详细介绍。人们对椭圆曲线的研究已有100多年的历史,而椭圆曲线密码是Neal Koblitz和Victor Miller于1985年提出来的。目前椭圆曲线密码已成为除RSA密码之外呼声最高的公钥密码之一。它可以提供同RSA相同的功能。然而它的安全性建立在椭圆曲线离散对数问题(ECDLP)的困
18、难性之上。现在求解ECDLP的最好算法具有全指数时间复杂度,与此不同,整数因子分解问题却有亚指数时间算法,所谓亚指数算法就是其算法复杂度还未到达指数级别。这意味着要达到期望的安全强度,椭圆曲线密码可以使用较RSA密码更短的密钥。普遍认为224位的椭圆曲线密码可提供相当于2048位RSA密码的安全强度。由于密钥短,所以工程实现加解密速度较快,并且可节省能源、带宽和存储空间。正因为如此,一些国际标准化组织已把椭圆曲线密码作为新的信息安全标准。由于椭圆曲线密码具有上述优点,因此椭圆曲线密码特别适于在航空、航天、卫星及智能卡的系统中的应用。在椭圆曲线密码体制的标准化方面,IEEE、ANSI、ISO、F
19、IPS、SEC等都作了大量的工作,它们所开发的椭圆曲线标准的文档有:IEEE P1363-2000 和P1363a、ANSI X9.62和X9.63、 ISO/IEC15946、FIPS186-2、SEC1和SEC2等。根据研究,以目前计算整数分解问题、离散对数问题和椭圆曲线离散对数问题的最好算法进行计算,表1-1比较了RSA、DSA和ECC在等价安全强度下所需的密钥尺寸(其中MIPS(Million Instructions Per Second)年是每秒运算100万条指令运行1年的时间): 表2-1 三种典型的公钥密码体系性能比较破解密钥时间(MIPS年)RSA、DSA密钥长度(bit)E
20、CC密钥长度(bit)RSA与ECC密钥长度比1045121065:11087681326:1101110241607:11020204822410:110782100060035:1表2-1说明,在等价安全强度下,ECC较RSA和DSA的密钥尺寸小的多,而且随着密钥长度的增加它们的比例将更为悬殊。以下从几个方面对三种公钥密码体系进行比较:(1)安全性能 加密算法的安全性能一般通过该算法的抗攻击强度来反映。ECC和其他几 种公钥系统相比,其抗攻击性具有绝对的优势。椭圆曲线的离散对数计算困难性(ECDLP)在计算复杂度上目前是完全指数级,而RSA是亚指数级的。这体现ECC比RSA的每bit安全性
21、能更高。 (2)计算量和处理速度 在一定的相同的计算资源条件下,虽然在RSA中可以通过选取较小的公钥 (可以小到3)的方法提高公钥处理速度,即提高加密和签名验证的速度,使其在加密和签名验证速度上与ECC有可比性,但在私钥的处理速度上(解密和签名),ECC远比RSA,DSA快得多。因此ECC总的速度比RSA,DSA要快得多。同时ECC系统的密钥生成速度比RSA快百倍以上。因此在相同条件下,ECC有更高的加密性能。 (3)存储空间 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多。160位ECC与1024位RSA,DSA具有相同的安全强度,224位ECC则与2048位RSA,DSA具有相同的
22、安全强度。意味着它所占的存贮空间要小得多。这对于加密算法在资源受限环境上(如智能卡等)的应用具有特别重要的意义。 (4)带宽要求 当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。而公钥加密系统多用于短消息,例如用于数字签名和用于对称系统的会话密钥传递。带宽要求低使ECC在无线网络领域具有广泛的应用前景。 此外,人们已经知道利用量子计算机进行整数因子分解、求解离散对数问题和求解椭圆曲线离散对数问题的有效算法。然而。人们尚不知道大型量子计算机是否能够实际制造出来。在传统计算机上求解256位的ECDLP实例大致相当于3072位的因数分解问题的实例。然而,
23、前者可在1448-qubit量子计算机上求解,而后者需要6144-qubit量子计算机。到目前为止,最重大的实验结果是2001年使用Vandersypen等464建造的7-qubit量子计算机来以Shor算法对整数15进行因数分解。类似的实验能否大规模用于密码学意义的因数分解和求解ECDLP实例,还有待进一步研究。也就是说虽然量子计算机以其自身的优势对于以上3大难题的求解比普通大型计算机有更好的解决方案,但是目前的量子计算机技术的发展还远未达到可以解决3大难题的规模。现在,普通的认为2048位的RSA才能保证信息的安全,而224位的ECC便能达到这一安全水平,随着大型计算机的不断发展,椭圆曲线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子电路 基于 Openssl 数字签名 算法 实现

链接地址:https://www.31ppt.com/p-4146849.html