基于RSA的加密算法研究.doc
《基于RSA的加密算法研究.doc》由会员分享,可在线阅读,更多相关《基于RSA的加密算法研究.doc(32页珍藏版)》请在沃文网上搜索。
1、摘要RSA作为一种重要的公开密钥算法,它是继Merkle背包算法出现不久之后,出现的第一个比较完善的公开密钥算法,它既能用于加解密也能用于数字签名。现在主要阐述其基本原理,加解密的实现,以及着重的讨论其安全性,并用C语言来实现。关键词加密算法;RSA;安全性;C语言AbstractRSA algorithm is one of the most important public-key encryption algorithm. It was the first perfect public-key encryption algorithm after the Merkle backpack
2、algorithm had appeared soon. It cans be used for encryption or decryption. Also be used the digital signature. Now, I mainly explain the basic principle of the public-key encryption algorithm, realize the encryption or decryption by C language, and discuss the safety of the public-key encryption alg
3、orithm .Key wordsEncryption algorithm; RSA; Security; C language目录摘要IAbstractII第一章 绪论11.1 RSA的研究背景与意义11.2 RSA的国内外发展趋势11.3 本文做的工作及文章结构2第二章RSA公钥密码32.1 RSA算法简介32.2 加解密算法描述32.2.1 RSA利用了单向陷门函数32.2.2 RSA密钥对生成与加解密42.2.2.1 RSA密钥对的生成42.2.2.2 RSA加解密算法42.2.2.2.1 加密过程42.2.2.2.2 解密过程42.2.3加解密流程52.3 RSA设计流程5第三章RS
4、A的安全性分析63.1 RSA的安全性63.2 RSA的攻击方法63.2.1 因子分解法63.2.2 选择密文攻击73.2.3 共模攻击83.2.4 低加密指数攻击93.2.5 低解密指数攻击93.2.6 计时攻击93.3 使用RSA的一些限制10第四章 RSA的C语言的具体实现114.1 RSA的速度114.1.1 硬件实现114.1.2 软件实现114.2 算法加密结果114.2.1 加密算法的C代码114.2.2 加密所得结果19结论20参考文献21附录23致谢29基于RSA的加密算法研究第一章 绪论1.1 RSA的研究背景与意义随着通信与计算机网络技术的快速发展和公共信息系统商业性应用
5、步伐的加快,人们对网络环境和网络信息资源的依赖程度的日亦加深,这时,网络信息安全的重要性也就从各个方面(电子政务、电子商务、网络金融、网络媒体)体现了出来1。而产生网络信息安全问题的根源可以从三个方面分析:自身缺陷,开放性和人的因素2。首先,网络自身的安全缺陷主要体现在协议和业务的不安全上,而协议的不安全主要原因是:一方面互联网起源的出忠是进行学术交流和信息的沟通,并非商业目的而导致缺乏安全的总体构想和设计。另一方面是协议本身的泄漏。然而业务上的不安全表现在错误信息或业务本身的不完善。其次,网络的开放性体现在业务是基于公开的协议等原因。最后,人的因素才是最主要的因素,表现为三方面:人为的无意失
6、误,黑客攻击,管理不善。随着这些问题不断的出现,网络信息安全的意义也就体现出来了:从大的方面说,网络信息安全关系到国家主权的安全、社会的稳定、民族文化的继承和发扬等。从小的发面说,网络信息安全关系到公私财产和个人隐私的安全。因此,密码学在网络信息安全中发挥的重要性也体现了出来。密码技术是实现网络信息安全的核心技术,是保护数据最重要的工具之一。最常用的技术有:数据加密标准DES、高级加密标准AES、RSA算法、椭圆曲线密码算法ECC、IDEA算法、PGP系统等3。1.2 RSA的国内外发展趋势2012年2月27日到3月2日在美国旧金山举办的RSA信息安全大会上,网络安全,云安全仍然是时下最为热点
7、的话题。而其中云安全仍是2010、2011和2012年度最耀眼的新星,围绕着云安全与网络安全提出了许多问题以及解决的方法,比如:云安全需要急迫解决的安全隐患4;云计算是转变安全交付方式的机会5;云安全将成为2010安全领域趋势6;安全专家看RSA大会焦点:云安全 准备出发7;RSA大会三大主题:网络计犯罪,云计算,IT消费8;安全风向标:品味RSA 2012信息安全大会9;RSA2012主题揭秘:伟大的密码比剑更有力10;新的安全威胁面前 需要新的安全架构11。另外,前人针对RSA所做的一些研究,比如:RSA算法的改进12;基于AES与RSA混合加密策略的硬盘分区加密技术13;一种基于RSA的
8、加密算法14;RSA密码算法的研究与改进实现15;RSA加密算法的研究及应用16等等。1.3 本文做的工作及文章结构本文依旧是对RSA加密算法进行研究以及利用C语言进行实现。主要分为以下四章:第一章绪论部分,对RSA算法的背景意义、国内外的发展趋势进行了大致的介绍。第二章RSA公钥密码,主要介绍其算法简介,算法的原理以及加解密的实现。第三章安全性分析,主要介绍了各种对RSA的攻击方法以及在设计RSA中应该避免的一些问题。第四章RSA的C语言的具体实现,主要介绍一部分用C语言实现RSA的部分代码和加密所得到的结果。 第二章RSA公钥密码2.1 RSA算法简介公开密码算法与其他密码学完全不同,它是
9、基于数学函数而不是基于替换或置换。与使用一个密钥的对称算法不同,公开密钥算法是非对称的,并且它使用的是两个密钥,包括用于加密的公钥和用于解密的私钥。公开密钥算法有RSA、Elgamal等。RSA公钥密码算法是由美国麻省理工学院(MIT)的Rivest,Shamir和Adleman在1978年提出来的,并以他们的名字的有字母命名的。RSA是是第一个安全、实用的公钥密码算法,已经成为公钥密码的国际标准,是目前应用广泛的公钥密码体制。RSA的基础是数论的Euler定理,其安全性基于大整数因子分解问题的困难性,公私钥是一对大素数的函数。并且该算法已经经受住了多年深入的密码分析,虽然密码分析者既不能证明
10、也不能否地RSA的安全性,但这不恰恰说明该算法有其一定的可信度。2.2 加解密算法描述2.2.1 RSA利用了单向陷门函数如下图17所示:私钥公钥图1-1 RSA利用单向陷门函数的原理2.2.2 RSA密钥对生成与加解密2.2.2.1 RSA密钥对的生成首先,选取两个互异的大素数,令其为和(保密),并且为获得最大程度的安全性,要让与相同长度。然后计算乘积(公开): (1-1) (1-2)其次,随机选取加密密钥,使其与互素,即,然后用扩展的Euclid算法计算密钥 : (1-3)即 (1-4)注意,和可以公开,两素数与不再需要,可销毁,但不能泄露。2.2.2.2 RSA加解密算法2.2.2.2.
11、1 加密过程首先,将明文比特分组,使其每个分组对应的十进制数小于,即分组长度小于,后对每个明文分组做加密运算,其具体步骤如下:(1) 获得其接收方公钥(e,n);(2) 把消息M分组为长度L()的消息分组M=;(3) 利用加密算法计算出密文(公式如下); (1-5)(4) 将密文C发送给对方。2.2.2.2.2 解密过程(1) 接收方收到密文C并把密文按照长度为L分组得;(2) 利用私钥和解密算法计算(公式如下); (1-6)(3) 得到明文消息。2.2.3加解密流程如下图16所示:发送者加密系统密文明文明文解密系统接收者图1-2 加解密流程图2.3 RSA设计流程如下图18所示:信息输入模块
12、素数产生模块素数测试模块产生密钥模块加密模块解密模块信息输出模块图1-3 RSA设计流程第三章RSA的安全性分析3.1 RSA的安全性从理论上讲RSA的安全性完全依赖于分解大数的难度。但从技术上讲这是不正确的,这只是一种推测。从数学上从未证明需要分解才能从和中计算出。用这种完全不同的方法来对RSA进行密码分析这还只是一种假想。而我并不认为这种新方法能让密码分析者推算出。当然,也可通过猜测(p-1)(q-1)的值来攻击RSA,但这种攻击没有分解容易。对那些仍持极端怀疑态度的人来说,有些RSA的变型已经被证明和大数分解同样困难,可参见19,它给出了从RSA加密的密文中恢复某一位与恢复出整个文本同样
13、困难这一结论。可以看出分解是最显而易见的攻击方法。敌方手中有公开密钥和模数,所以要找到解密密钥,就必须分解。目前,129为十进制数字的模数是能分解的临界数。所以,应该大于这个数。对于密码分析者而言,他有可能尝试每一种可能的,直到获得正确的一个。这种穷举攻击并没有试图分解更有效。随着时间的推移,人们声称已经找到了破译RSA的简单方法,但是直到现在这些宣称还是站不住脚的。举例来说,1993年Willian Payne的论文草案中提到了一种基于费尔马小定理的方法20。很不幸,它的速度仍然比分解模数要慢很多。3.2 RSA的攻击方法3.2.1 因子分解法RSA密码体制安全性主要依赖的是大整数因子分解的
14、问题,那么,试图分解模数的素因子就是攻击RSA最直接的方法。出现的比较早的因子分解分析法是试除法,它的基本思想是:密码分析者完全尝试小于的所有素数,直到找到因子。而根据素数理论,尝试的次数上限是。虽然这种方法非常有效,但是对于超大数,这种方法对资源的消耗在现实之中几乎是不可能实现的。后来也出现了一些比较重要的因子分解分析法,比如:Pollard在1974年提出的因子分解法,Williams提出的因子分解法,二次筛(Quadratic Sieve)因子分解法,椭圆曲线因子分解法,数域筛(Number Field Sieve)因子分解法等常用方法。除了因子分解法的长足发展之外,并行计算和网络上分布
15、式计算也多加快了因子分解的速度,如下表21:表2-1 因子分解位数年度位数(十进制)1984711994129199915520031742005200然而,随着因子分解位数的增加,人们可能会怀疑因子分解是不是计算上的难题。但是由于银子分解的时间复杂性并没有降为多项式时间,因此,因子分解还是计算上的难题,只是需要考虑使用较大的位数,来确保无法在短时间内被攻破。3.2.2 选择密文攻击有一些攻击是专门针对RSA的实现。他们不是攻击基本的算法,而是攻击协议。仅仅会使用RSA是不够的,实现的细节也是非常重要的。实例1:Eve在Alice通信的过程中进行窃听,想办法成功的选取了一个用她的公开密钥加密的
16、密文。Eve想从中读出消息,那么从数学上讲,也就是她想得到,这里: (2-1)为了恢复出完整的,她首先选取了一个随机数,且满足小于。她得到了Alice的公开密钥,然后进行计算: (2-2) (2-3) (2-4)如果成立,那么就成立现在,Eve让Alice用其私人密钥对签名,便于解密(注意,Alice以前从未见过)。则Alice发送给Eve: (2-5)现在Eve计算如下内容: (2-6)Eve就获得了。实例2:Eve想让Alice对签名。她生成两份消息,满足如下要求: (2-7)如果,她也能让Alice对和进行签名,就能计算: (2-8)因此,我们应该谨记,绝对不要对陌生人提交的随机消息进行
17、签名。并且要先利用单向散列函数对消息进行散列运算。ISO9796分组格式可以防止这种攻击。3.2.3 共模攻击有这样一个可能的RSA实现,每个人都具有相同的值,但他们有不同的指数和。然而,不幸的是:这样做是不行的。最显而易见的问题便是:假如同一个消息用两个不同的指数进行加密,并且这两个密钥有互素(一般情况下)。那么不需要任何一个解密指数就可以恢复出明文。假设是明文消息,两个加密密钥为和,共同模数为。则两个密文为: (2-9) (2-10)那么密码分析者就知道n,和,他是如何恢复出的,如下所示:由于和互素,则有扩展Euclid算法就能找出和,满足于: (2-11)假设为负数(或中有一个必须为负)
18、,那么再用Euclid算法可以计算,然后则有下式: (2-12)因此,我们应该谨记不要在一组用户之间共享。3.2.4 低加密指数攻击在对RSA进行加密和数字签名验证中,如所选值较小倒是可以加快速度,但这是不安全的。如果,你采用相同的值以及不同的RSA公开密钥,对个线性相关的消息进行加密,则将存在一种能攻击系统的方法。如果消息较短或消息不相关,将不存在这个问题。如消息相同,那么个消息就足够了。阻止这种攻击最简单的方法就是利用独立随机值填充消息。这也就能保证成立。因此,我们应该谨记在家加密前要用随机值进行消息的填充,用以确保和的大小是一样的3.2.5 低解密指数攻击Michael Wiener给出
19、了另外一种攻击方法,假设达到的1/4大小,并且小于,那么该方法将可以恢复。如果与随即进行选择,则该攻击将很少发生;如果的值很小,则他将不可能发生。因此,我们应该谨记选择大的。3.2.6 计时攻击公钥密码算法的运行时间经常因为输入的不同而表现出细微的差别。而由于攻击者可以高精度的有效的测量公钥密码算法因为输入的不同而表现在运行时间上的差异,并且由于这些差异可能包涵了私钥信息,因而有可能利用这些信息推导出私钥。实施计时攻击的攻击者,就需要对于公钥密码算法具体实现的技术细节具有相当的了解才可以进行这种方法的攻击。3.3 使用RSA的一些限制首先对于所选取的素数对,应该有如下要求22,23:(1)和的
20、长度相差不大(2)和都有大素数因子(3)应该尽可能小(4)与差值不应该太小其次,仅有安全的密码算法是不足够的。整个密码系统必须是安全的,甚至密码协议也必须是安全的。因此,有如下的限制21:(1)如知道对于一个给定模数的加解密密钥指数对,那么攻击者就能分解这个模数。(2)如知道对于一个给定模数的加解密秘钥指数对,那么攻击者无需分解n就可以计算出别的加解密对。(3)在通信网络中,利用RSA实现的协议不应该使用公共模数。(4)消息必须用随机数来填充用以避免对加密指数的攻击。(5)解密指数应该无限大。第四章 RSA的C语言的具体实现4.1 RSA的速度4.1.1 硬件实现在硬件实现时,DES比RSA快
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 RSA 加密算法 研究