网络与信息安全》课程设计报告班级:07网络工程(3)班 学号: 姓名:韩立伟题目: 加密软件的设计评阅:成绩:2010-1-07RSA 算法加密软件的设计摘要:分析RSA算法的应用现状,论证文件加密应用RSA算法的可行性和意义设计一套 完整实用的RSA文件加密解决方案,具体编码实现对RSA算法进行研究,从常规RSA算法 出发,用C#实现RSA加密算法类库,并在32位windows平台封装成组件在.Net平台引用 此组件,实现可以对任意文件进行RSA加密操作的窗体应用程序经过加密的文件以及密钥 文件都是文本文件给出关键类类图、整个应用程序的结构描述文档、关键模块流程图、较 详细的接口文档、所有源代码对应用程序进行测试,对测试结果进行分析研究,进而对应 用程序进行改进,对关键算法进行尽可能的优化,最终得到一个在windows运行的可以用指 定密钥对任意文件进行RSA加密并可解密的完整应用程序,和一些相关的可移植组件关键词:rsa , RSA算法,文件加密,加密成文本目录第1章RSA应用现状及应用于文件加密的分析 • 41.1 RSA算法介绍与应用现状 .41.2 RSA应用于文件加密的分析 .51.2.1文件加密使用RSA的可行性 51.2.2文件加密使用RSA的意义 6第2章RSA文件加密软件的设计与实现 72.1需求分析与总体设计 72.1.1 功能分析 72.1.2 工程方案选择 82.2各部分的设计与开发 102.2.1实现RSA加密算法的C#核心类库 103.2测试数据与分析改进 143.2.1密钥生成测试 143.2.2数据输入输出测试 163.2.3加密解密测试 16总结与体会 .17致谢 .17参考文献…………………………………………………………17—1—前言RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。
它易于理解和 操作,也十分流行算法的名字以发明者的姓氏首字母命名:Ron Rivest, Adi Shamir和 Leonard Adleman虽然自1978年提出以来,RSA的安全性一直未能得到理论上的证明,但 它经历了各种攻击,至今(2007年)未被完全攻破随着越来越多的商业应用和标准化工 作,RSA已经成为最具代表性的公钥加密技术VISA、Mas terCard、IBM、Microsof t等公司 协力制定的安全电子交易标准(Secure ElectronicTransactions, SET)就采用了标准RSA 算法,这使得RSA在我们的生活中几乎无处不在网上交易加密连接、网上银行身份验证、 各种信用卡使用的数字证书、智能移动和存储卡的验证功能芯片等,大多数使用 RSA 技术当今公钥加密更广泛应用于互联网身份认证,本课题将公钥加密算法RSA应用于小型 文件加密将任意文件加密成文本的解决方案,使其使用更加灵活整个工程的分层设计 给引用移植和后续开发带来便利第1章RSA应用现状及应用于文件加密的分析1.1 RSA算法介绍与应用现状RSA算法可以简单叙述如下:<密钥生成>取素数p, q,令n=pXq.取与(p-1) X (q-1)互素的整数e,由方程 dXe=l (mod (p-1) X (q-1))解出 d,二元组(e,n )作为公开密钥,二元组(d,n )作为私有密钥.<加密解密>b=ae mod n,c=bd mod n.附录中给出了证明a=c (mod n).RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。
发展 至今,电子安全领域的各方面已经形成了较为完备的国际规范RSA作为最重要的公开密钥 算法,在各领域的应用数不胜数RSA在硬件方面,以技术成熟的IC应用于各种消费类电 子产品RSA在软件方面的应用,主要集中在In terne t上加密连接、数字签名和数字证书的 核心算法广泛使用RSA日常应用中,有比较著名的工具包OpenSSL(SSL, SecuritySocket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认Open SSL是一个开 放源代码的实现了 SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的相 关详细介绍见http://www.openssl.org/about/) °0pen SSL应用RSA实现签名和密钥交换, 已经在各种操作系统得到非常广泛的应用另外,家喻户晓的IE浏览器,自然也实现了 SSL 协议,集成了使用RSA技术的加密功能,结合MD5和SHA1,主要用于数字证书和数字签名, 对于习惯于使用网上购物和网上银行的用户来说,几乎天天都在使用RSA技术RSA更出现在要求高度安全稳定的企业级商务应用中在当今的企业级商务应用中,不 得不提及使用最广泛的平台j2ee。
事实上,在j2se的标准库中,就为安全和加密服务提供 了两组 API: JCA 和 JCEJCA (Java Cryptography Architecture)提供基本的加密框架, 如证书、数字签名、报文摘要和密钥对产生器;JCA由几个实现了基本的加密技术功能的 类和接口组成,其中最主要的是java.security包,此软件包包含的是一组核心的类和接口, Java中数字签名的方法就集中在此软件包中JCE(Java Cryptography Extension)在JCA 的基础上作了扩展,JCE也是由几个软件包组成,其中最主要的是javax.crypto包,此软 件包提供了 JCE加密技术操作APIjavax.cryp to中的Cipher类用于具体的加密和解密 在上述软件包的实现中,集成了应用RSA算法的各种数据加密规范(RSA算法应用规范介绍 参见: API 内部支持的 算法不仅仅只有RSA,但是RSA是数字签名和证书中最常用的),用户程序可以直接使用java 标准库中提供的API进行数字签名和证书的各种操作单机应用程序使用RSA加密尚比较少见,例如使用RSA加密任意一个文件1.2 RSA应用于文件加密的分析1.2.1文件加密使用RSA的可行性通过1. 1节的论述,不难看出RSA当今的应用多在于数字签名和证书等方面。
之所以 只应用于这些短小数据的加密解密,是因为RSA算法加密极慢,速度是DES对称密钥加密速 度的千分之一左右正是因为这样,把RSA应用于普通文件加密的想法一直被忽略通常文 件被想象成大数据块,但是实际上在日常应用中,有些极其重要的文本资料是并不太大的, 比如因担心遗忘而用普通文本记录的银行帐号和密码、不应被陌生人知道的重要号码、 几千字节大的重要小图片等其实从一个简单的角度来说,既然RSA用于数字签名可行,那就完全可以用于同样大 小的普通文件对于较大的文件,如果分成与数字签名同样大小的段(这里假设数字签名较 短,不分段一次计算加密完成),分开的各段逐一进行加密运算,那所需要的时间也只是按 文件大小线性的增长通常数字签名为几十字节,加密运算并不需要很长的等待,这就说明 对于几百字节或一两K字节大小的文件来说,如果进行RSA加密,并不会是非常漫长的工作 当然,如果文件更大,加密就显得十分漫长了比如按前面叙述的45毫秒大数运算程序推 理,加密1M字节大小的文件需要约1天的时间所以,要在普通PC用几百位以上的长密钥 RSA加密文件,文件不能过大,一般可以接受的上限是几KB如果要在较短时间内加密大文 件,需要缩短密钥长度以减小运算量,这将带来安全性隐患。
本文的第 3 章将根据实际调试好的软件,测试给出具体的时间消耗数据例如,在一 台配置为AMD Athron2800+,外频333MHZ,物理内存512MB的PC上测试实现的软件,以560bit 的n逐字节加密一个1KB大小的文件需要55秒通常记录如银行帐号密码等重要数据的文 本文件大小不足百字节,加密只需要数秒钟所以对于小型文件,进行较长密钥的RSA加密 是完全可行的1.2.2 文件加密使用 RSA 的意义如1.2.1节所述,小型文件加密可以使用RSA比如,因担心遗忘而用普通文本记录的 银行帐号和密码、不应被陌生人知道的重要号码、几千字节大的重要小图片等可行的 方法未必是必要的,本小节讨论何种文件适合用非对称密钥加密,即RSA加密文件的意义所 在对于前面叙述的带有重要信息的小型文本和二进制数据的维护,①如果不加密,将无 法放心的保存在计算机上,尤其是连网的或机房里的公共计算机②如果借助功能强大的大 型多用户数据保护程序维护几个小型文件,显得十分烦琐,好比杀鸡用牛刀③如果采用对 称密钥加密,即加密解密的密钥相同,只适合部分情况在某些情况下,使用对称密钥加密 文件,交流使用不够方便比如,张三由于某种原因,需要将自己的某个文件在公共计算机 上留给李四,而不希望别人看到内容。
如果采用对称密钥加密,张三和李四提前约好一个密 码就可以但是如果张三想要在同一台公共计算机上再留一个秘密文件给王五,而不希望别 人看到,就要和王五另外约定一个密码如果需要在这台公共计算机上留十个文件给不同的 人,自己就要记和十个人约定好的密码,这样以来交流起来不够方便,因为对于张三,要自 己维护太多的密钥非对称密钥(公开密钥方式)恰好解决这样的问题只要大家都在这台计 算机或这台计算机可以访问到的地方,留下自己的公开密钥,一切就变的容易解决了张三 要留给李四的文件,就用李四的公开密钥加密,要留给王五的文件,就用王五的公开密钥加 密李四和王五只要把留给自己的文件用自己的私有密钥解密,就可以得到留给自己的文件 了显然,非对称密钥体制更适合多用户交流,而将这种加密方式直接应用于文件加密,使 我们在公开场合的交流更加灵活方便一种更实际的情况是,我们想通过 Internet 上的公众论坛或邮件发送重要保密信息给 某人例如发送一个银行帐号和密码给某人这种情况要保证安全,在当今互联网络上是比 较棘手的①如果用公众论坛直接留言给指定用户,论坛管理员和服务器管理员通常有方法 看到数据②如果发送邮件,虽然传送过程是加密的,但是密码毕竟是由邮件服务器维护, 所以系统管理员通常也有办法看到内容。
问题的关键在于我们所有的数据包括密钥保存在服 务器之上在这种情况下,我们需要使用公开密钥方式,并自己维护私有密钥oRSA文件加 密可以灵活的解决这些问题例如,我们可以将任意一个文件用某人的公开密钥加密变换成 一段可以复制粘贴的文本,然后粘贴在公众互联网上,对方只需把需要解密的文本复制保存 成一个文本文件,在本地机用自己的私有密钥解密即可我们可以将自己的私有密钥通过 DES加密后保存在自己的移动磁盘上,使用的时候只要将其解密读取即可,用完后立即从当 前操作环境清除这样,我们自己维护自己的私有密钥,利用简单并且公开的方式,可以安 全传送任意小型数据,包括一切二进制文件所以,对于使用小型文件进行数据交换的情况,更好的方案是通过一个小型应用程序 对这些文件进行非对称密钥加密为了适合前面叙述的在公共BBS与特定的某人交流重要保 密信息的情况,加密生成的数据应该是文本,这样可以方便复制粘贴综上所述,使用前面叙述的方式加密文件有两点重要意义:①应用非对称密钥加密任 意文件,使非对称密钥的应用不仅仅局限于互联网络②非对称加密后的数据变换成文本, 使得我们可以通过几乎任何方式安全传递任意文件,比如在只有http的环境使用xml方式。
第2章RSA文件加密软件的设计与实现2.1需求分析与总体设计2.1.1 功能分析经过1.2.2节的论述,我们可以。