1课程设计(论文)说明书题目:多功能数字签名系统学院:计算机科学与工程学院专业:信息安全姓名:方斌学号:0800360111指导教师:王勇2011年9月8日2摘要计算机和网络技术的发展将人类带入信息化社会,随之而来的是倍受关注的信息安全问题。现代密码学已成为信息安全技术的核心,数字签名是现代密码学主要研究的内容之一。数字签名技术在身份识别和认证、数据完整性、抗抵赖等方面具有其它技术所无法替代的作用,它在电子商务和电子政务等领域有着极广泛的应用。此项目主要实现了一个多功能数字签名系统。系统中集成了摘要生成模块,密钥管理模块,数字签名模块以及数字签名验证模块。摘要生成模块是整个系统的基础,只有形成摘要才能进行签名以及验证,而摘要使用MD5算法生成。密钥管理模块是系统的重要组成部分,其贯穿整个系统的始终,因为数字签名以及签名的验证都离不开密钥的操作,密钥管理模块具有密钥生成,删除,导入,导出等功能。数字签名模块和签名验证模块是系统的核心,本系统采用RSA算法来实现签名和签名验证功能。本文首先介绍了数字签名的概念原理以及其基本实现过程。接着系统介绍了本数字签名系统的实现原理以及实现方法。并例举出了本系统在实现过程中的问题和解决方法,介绍了本系统的系统特色。最后是对本论文的总结。关键字:数字签名,RSA,MD5,Java3目录1前言1.1数字签名原理........................................................................................................11.2数字签名的功能及意义.......................................................................................11.3本系统实现的功能..................................................................................................12系统分析.................................................................................错误!未定义书签。2.1MD5摘要模块........................................................................................................22.2密钥管理模块.........................................................................................................22.3数字签名模块.........................................................................................................22.4签名验证模块.........................................................................................................23功能设计................................................................................................................34所遇到的问题及分析解决....................................................................................44.1MD5算法问题.........................................................................................................44.2RSA算法问题..........................................................................................................54.3Java类包配置问题..................................................................................................65系统特色及关键技术............................................................................................76测试..........................................................................................................................86.1MD5摘要测试..........................................................................................................86.2数字签名测试..........................................................................................................96.3签名验证测试........................................................................................................107总结........................................................................................................................117.1心得体会................................................................................................................118致谢.........................................................................................................................12参考文献....................................................................................................................13桂林电子科技大学课程设计报告用纸41.前言1.1数字签名原理数字签名,以电子形式存在于数据信息之中的,或作为其附件的或逻辑上与之有联系的数据,可用于辨别数据签署人的身份,并表明签署人对数据信息中包含的信息的认可。简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,目前主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou-Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。数字签名(DigitalSignature)技术是不对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。数字签名技术是在网络系统虚拟环境中确认身份的重要技术,完全可以代替现实过程中的“亲笔签字”,在技术和法律上有保证。在数字签名应用中,发送者的公钥可以很方便地得到,但他的私钥则需要严格保密。1.2数字签名的功能及意义:一是能确定消息确实是由对方签名发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。这是因为不同的文件不可能产生相同的散列值,从而其数字签名也一定不同。数字签名的实现过程:一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。报文的发送方用一个哈希函数从报文文本中生成报文摘要,即散列值,发送方用自己的私钥对这个散列值进行加密。然后,这个加密后的散列值作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着在用发送方公布的公钥来对报文附加部分的数字签名进行解密。如果解密得出的散列值与之前计算出的散列值相同,那么接收方就能确认该数字签名是发送方的。其中,公钥加密技术是关键,私钥要自己保密好,而且想通过公钥来推算出私钥在计算上是不可行的。1.3本系统实现的功能桂林电子科技大学课程设计报告用纸5本数字签名系统根据上述数字签名原理,实现了用MD5算法以及RSA算法对文本消息和各类文件(包括txt,word,MP3,jpg,flv,rmvb等文件类型)形成摘要并签名,可以输出保存签名文件,并对生成的签名,能够予以验证,从而验证文件的合法性和完整性。同时,本系统具备基本的密钥管理功能,能实现密钥的生成,导入,导出,删除等功能。另外,本系统讲密钥保存至数据库中,并对数据库进行加密,在没有数据库密码、无数据库破解软件的前提下,无法对数据库中的密钥进行操作,从而保证了密钥的安全性。2.系统分析数字签名系统是为了保护计算机中,网络传输中各类文件的合法性和完整性,其利用数字签名原理,对文件进行签名和验证,防止文件被非法篡改或意外破坏而接受者却对文件的“损坏”不知情,从而导致信息安全方面的问题。通过系统需求分析,数字签名系统应该具有一下功能:1.对文件进行签名,生成一个独立于原文的签名文件;2.能够比对已经实施的签名,防止进行重复的签名,这里指的是进行hash以后的值,或者说是签名得到的最后的签名值,以防止重放攻击;3.具有密钥管理的功能,比如密钥的生成、导入、导出;4.对私钥加密保护;5.可以对各类文件进行签名并对签名进行验证。具体说来,要求本数字签名系统具有以下几个功能模块:MD5摘要生成模块,密钥管理模块,生成签名模块,签名验证模块。各个模块具体功能描述如下:2.1MD5摘要生成模块(1)对用户输入的文本利用MD5算法进行摘要计算,生成散列值。(2)对用户选择的文件利用MD5算法进行摘要计算,生成散列值。(3)对以上生成的散列值进行输出