数字签名的算法研究与JAVA实现.doc
《数字签名的算法研究与JAVA实现.doc》由会员分享,可在线阅读,更多相关《数字签名的算法研究与JAVA实现.doc(55页珍藏版)》请在沃文网上搜索。
1、摘 要数字签名作为密码学的一个分支,可实现身份认证、数据完整性、不可抵赖性等重要功能;数字证书可实现公钥的统一管理,是数字签名非常重要的应用领域;SSL作为运输层的重要安全协议,吸取了对称和非对称密钥体制的优点。以上三者在实际生活中被巧妙结合并广泛应用于电子商务、电子政务、电子邮件等各个领域。本文首先概述了数字签名的基本知识,指出该领域当前的研究方向和现状。接着阐述了基于非对称密钥体制的数字签名中的三大算法RSA、DSA、ECDSA的参数生成、签名和验证过程,以及算法正确性证明,详细说明了数字证书的概念、功能、由来、格式和组织形式,简要说明了SSL的功能。最后简介java类库对消息摘要、加解密
2、、数字签名、SSL的实现,并重点介绍笔者编写的SHA、RSA、Elgamal算法的java改进实现。【关键词】 数字证书; 非对称密钥体制; 数字签名;SSLIVStudies of Algorithms and Implementation in Java of Digital SignatureAbstract:Digital Signature, as a branch of Cryptography, can implement some significant functions such as identity authentication, integrity of data,
3、and nonrepudiation; Digital Certificate can fulfill the management of public keys, it is the most critical field of application for Digital Signature; SSL, as a significant secure protocol on transport layer, holds both the advantages of Symmetric/Asymmetric Key System. In real life, the three above
4、 have been combined subtly and applied widely in many fields such as electronic business, electronic government affair, and email.This paper briefly introduces the ABC of Digital Signature and the direction and state of this field. Next, the paper elaborates on the parameter generation, signature ge
5、neration and signature verification. The proof of three signature algorithmsRSA,DSA,ECDSA is also given in addition. The paper introduces the concept, the function, the origin, the format, and the framework of digital certificate, and the function of SSL. At last, on the basis of brief introduction
6、on the implementation of message digest, encryption & decryption, digital signature, SSL in Java built-in library, the paper focuses on the improved implementation of SHA, RSA, Elgamal algorithms written by the author in Java.Keywords:Digital Certificate; Asymmetric Key System; Digital Signature; SS
7、L目录1 引言11.1 研究背景11.2 国内外研究现状21.3 本文研究思路与分析42 基于非对称密钥体制的数字签名72.1 RSA公钥密码72.1.1 参数生成72.1.2 加密过程82.1.3 解密过程82.1.4 签名过程82.1.5 验证过程82.1.6 RSA算法正确性证明82.2 DSA签名算法102.2.1 参数构成112.2.2 签名过程112.2.3 验证过程112.2.4 DSA算法正确性证明122.3 ECDSA签名算法132.3.1 椭圆曲线142.3.2 椭圆曲线上的加法162.3.3 椭圆曲线上的离散对数问题172.3.4 参数构成172.3.5 签名过程172.
8、3.6 验证过程182.3.7 ECDSA算法正确性证明183 数字证书简述203.1 功能203.2 格式213.2.1 密钥和策略信息213.2.2 主体和发行人属性213.2.3 证书路径约束223.3 组织形式224 SSL简述245 数字签名的java实现255.1 数字签名算法的现有java程序实现255.1.1 消息摘要的java实现255.1.2 非对称加解密265.1.3 数字签名的java实现275.2 数字签名算法的java改进实现295.2.1 手动编写SHA算法295.2.2 RSA算法的java改进实现305.2.3 Elgamal签名算法的java实现396 SS
9、L的java实现436.1 借助tomcat的实现436.2 不借助tomcat的实现456.2.1 服务器端466.2.2 客户端467 应用前瞻498 总结50江西财经大学本科毕业论文1 引言数字签名是密码学的一个分支,其主要用途是抵御伪造、篡改、重放、抵赖等网络攻击,确保消息的完整性、不可否认性。除少数数字签名算法是基于对称密钥体制外,绝大多数的数字签名算法是基于公钥密码体制(非对称密钥体制)的。下面对这两种体制作简要说明。对称密钥体制的加密密钥与解密密钥相同,因此也称单密钥体制。该体制分为分组密码和流密码两类。前者一次操作多位明文,后者一次操作一位明文,其实二者并无本质上的严格界限。典
10、型的分组密码算法有:DES , CAST , RC5 , 3DES , SAFER , Blowfish , FEAL , IDEA, Skipjack, Rijndael等。典型的流密码算法有:A5,Rambutan,Gifford等1。公钥密钥体制与对称密钥体制相对,加密解密用不同的密钥,其中一个公开,称为公钥,另一个自己保存,称私钥。公钥密码体制的前提是:按公钥来算私钥,在计算上是不可行的。公钥密码体制一般基于以下三个数学上的难问题 10:(1) 背包问题:给定一个互不相同的数组成的集合,找出一个子集,其和为N。(2) 离散对数问题:如果p是质数,g和M是整数,找出x,使。它的另一种形式
11、:椭圆曲线上的离散对数问题。(3)因子分解问题:设N是两质数乘积,则: 分解N。 给定整数M和C,寻找d满足。 给定整数e和C,寻找M满足。 给定整数x,求解。1.1 研究背景数字签名已广泛应用到众多领域,但仍有较大的可开拓空间。目前数字签名研究的主要方向有:(1) 新数学模型和单向函数研究。如前文所述,目前公钥密码体制的数学基础仅局限于三个数学上的难问题中。随着攻击者攻击手段的改进,建立在如此狭隘的数学领域的数字签名的安全性不得不让人担忧。因此新的数学难题及单向陷门函数的寻找成为当前数字签名研究中的首要问题。(2) 针对实际应用环境的数字签名设计,尤其是智能卡上的数字签名设计。由于智能卡存储
12、空间的局限,很多早期被广泛应用的算法,如RSA、DSA等等,当其要求密钥长度达到512 bit、1024 bit时4,根本无法应用到智能卡中。目前智能卡上的数字签名一般采用椭圆曲线上的密钥体制,该体制已经发展得较为完善,相应地,针对它的攻击手段也不断翻新。当前这方面的研究方向主要集中在超椭圆曲线密钥体制上,它对空间的要求低于椭圆曲线密钥体制,也更适合智能卡这一特殊环境。但是,超椭圆曲线的数学难度远胜于椭圆曲线,同时,这个领域需要解决的问题还有很多,要真正把超椭圆曲线密钥体制投入到实际应用中,还有很长的一段路要走5。(3) 算法和程序优化、软硬件实现。优化和实现这一块的难度,说实话,是要远低于发
13、明创造的。实现DES算法的芯片数不胜数。java类库也已经把绝大多数常用的数字签名算法纳入其中,笔者在下文中作了陈述,这里不再赘述。这一方向的可提高之处主要在于效率上的进步,以及对已有算法的各种变体性地优化研究。(4) 安全性评估。目前对数字签名中重要算法的安全性衡量和比对已经做得比较完善,网上可以搜出无数张表,对RSA、DSA、ECDSA各长度密钥需要多少台计算机联解多少年,某算法各长度密钥安全性相当于另一算法多长的密钥。这一方向主要可提高之处在于对新攻击手段的研究。由于攻击者水平在不断提高,针对已有算法的攻击方式也在不断翻新,如何对某算法的安全隐患做出预测性的评估,是当前研究者需要考虑的问
14、题。1.2 国内外研究现状现代密码体制的研究成果,最重要的集中在新数学基础和新算法的不断提出,这里简要介绍几个主要算法的诞生:1976年,斯坦福大学的Diffie和Hellman提出公钥密码思想,并提出Diffie-Hellman密钥交换协议。该协议貌似简陋,实际上是离散对数问题在通信领域里程碑式的开创,目前仍广泛用于密钥交换中。1977年,IBM公司提出DES算法,并被美国国家标准局颁布。该算法是分组加解密算法中第一个成熟算法,应用十分广泛。1978年,MIT的三位科学家开发出RSA算法。RSA是这三位科学家姓氏的首字母。这二十多年来,RSA始终是非对称密钥体制中最著名,也被最广泛应用的算法
15、。在网络上、银行系统、军事情报等等许多领域都能见到它的身影。1985年,Koblitz和Miller提出ECDSA算法。该算法开曲线上实现密码算法之先河,为此后圆锥曲线密钥体制和超椭圆曲线密钥体制的建立奠定了坚实的基础。1985年,ElGamal提出ElGamal算法。该算法为基于离散对数的数字签名,已被纳入ANSI X9.30-199X标准。1989年,Schnorr提出Schnorr签名算法。该算法是ElGamal签名算法的变体,安全性低于ElGamal算法,但空间需求和时间需求低于Elgamal算法,可用于某些特定环境。1991年,NIST开发出DSA算法。该算法是ElGamal签名算法
16、和Schnorr签名算法的变体,从产生至今,它一直饱受争议,但客观地说,它确实是目前基于离散对数问题的数字签名算法中用得最广泛,评价也最高的。1993年,NIST和NSA共同设计了SHA算法, 并于1995年修订为SHA-1。SHA算法脱胎于MD4算法,并且从其产生至今,它的成就一直压倒MD系列算法,成为消息摘要算法的首选。同期,欧共体开发出了RIPE-MD算法及其改进型:RIPEMD-160算法。该算法同样取材于MD4算法,但它的运算远比SHA算法复杂,也远不如SHA算法应用得广泛。下文给出一个数字签名算法简表,囊括了绝大多数数字签名领域中里程碑式的算法,如表1-1所示:表1-1数字签名算法
17、简表算法名称对称/非对称数学基础能否用于加解密Lamport-Diffie对称能Rabin概率对称能RSA非对称因子分解能ElGamal非对称离散对数能Schnorr非对称离散对数能DSA非对称离散对数否ECDSA非对称椭圆曲线上的离散对数否Shamir非对称背包否Rabin非对称因子分解能GOST非对称离散对数否OSS非对称模n多项式能FA非对称FA可逆性能ESIGN非对称因子分解否Okamoto非对称离散对数否GQ非对称零知识证明否McEliece非对称Goppa码能Xinmei非对称大矩阵分解能1.3 本文研究思路与分析在或粗或细地看完多个数字签名算法之后,笔者断然放弃了从(1)着手的念
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字签名 算法 研究 JAVA 实现
