基于rsa加密算法本科毕业设计论文(编辑修改稿)内容摘要:

,即所谓的的虚拟专用网 (Virtual Private Network, VPN)。 当数据离开发送者所在的局域网时,该数据首先被用户湍连接到互联网上的路由器进行硬件加密,数据在互联网上是以加密的形式传送的,当达到目的 LAN 的路由器时,该路由器就会对数据进行解密,这样目的 LAN 中的用户就可以看到真正的信息了。 而 加密解密过程对于普通的非网络管理用户来说,是透明的,既普通用户无需考虑 VPN 及加密解密的相关问题。 因此,对普通用户来说, VPN 在使用过程中和一般 LAN 没有任何区别。 本章小结 本章对数据加密技术作了简要的介绍,其中包括数据加密技术的起源、发展,桂林理工大学本科毕业设计论文 7 数据加密技术的概念,密钥管理等密码技术各方面的内容。 此外还对数字签名技术作了介绍。 数字签名技术实际上是数据加密技术在应用上的延伸,是目前网上交易活动中,身份验证技术的重要组成部分。 而基于公开密钥机制的数字签名技术在应用中,占有统治地位,尤其是基于 RSA 公钥的 数字签名体制在应用中更为广泛。 在接下来的一章,就将详细介绍基于 RSA 的数字签名体制。 桂林理工大学本科毕业设计论文 8 第 3 章 数据加密中的 RSA 算法 目前企业面临的计算环境和过去有很大的变化,许多数据资源能够依靠网络来远程存取,而且越来越多的通讯依赖于公共网络公共网络(如 Inter),而这些环境并不保证实体间的安全通信,数据在传输过程可能被其它人读取或篡改。 加密将防止数据被查看或修改,并在原本不安全的信道上提供安全的通信信道,它达到以下目的: 保密性:防 止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 RSA 公钥密码体制概述 RSA 公钥密码体制于 1978 年,由美国麻省理工学院 Rivest,Shami:和 Adleman二人提出的,至今为止仍被公认为是公钥密码体制中最优秀的加密算法,被认为是密码学发展史上的第二个里程碑 .它是一种特殊的可逆摸指数运算的加密体制,其理论基础是数论中的一条重要论断 :求两个大素数之积是容易的,而将一个具有大素数因子的合数进行分解却是非常困难的。 除了用于加密之外,它还能用于数字签 名和身份认证。 RSA 公钥密码体制过程描述如下 : (1)选取两个大素数 p 和 q . (2)计算 pqn (公开 ), 1)()(  qppqn 欧拉函数 )。 (3)随机选取正整数 e, (n)el  ,满足 1(gc d n))(e,Φ , e 是公开的加密密钥。 (4)计算 d,满足 Φ(n))(de mod1 . d 是保密的解密密钥。 (5)加密变换 :对明文 Znc ,明文为 (Zn 为明文空间 ) nmc e mod (6)解密变换 :对密文 Znc ,明文为 ncm d mod 可以证明,解密变换是加密变换的逆变换。 例 : (1)生成密钥 : 选择两个互质的质数 25 323112311  *, n, qp。 220xx )) (q(p 取 3e。 由 1(mod22 0) de ,得 d=147。 所以,保密的解密密钥为 d=147,公开的加密密钥公钥为 e=3,n=253。 明文空间为桂林理工大学本科毕业设计论文 9 }, , , {Zn 25 225 1210  (2)加密原文 : 假设原文 m 的数字为 16_5,用公钥加密原文。 1 1 02 5 3m o d1 6 5 3  C (3)解码密文 : 165253m od110 147  m A=C,由此可以看出 RSA 算法的一般过程。 RSA 公钥密码体制安全性分析 RSA 体制中,加密密钥 e 与大整数 n 是公开的 ,而解密密钥 d 与大素数 p 和 q是保密的。 虽然在 RSA 的加密与解密密钥建立后, p和 q不再需要,但 p和 q 也绝不能泄露。 若 n 被分解,则也就不保密, e 公开, d 就可以计算出来, RSA 便被破译。 己知 n,求得 )(n ,则 P和 q可以求得。 因为根据欧拉定理, 1)()(  qppqn ,又有 pqqpqp 4)()( 22  据此列出方程 :    pqqpqp qppqn 4)()( 1)()(22 由以上方程组,可以求得 p 和 q。 因为 p 和 q 都是大素数,根据现在已知的结果,因子分解 n 是最好的算法,此时复杂性为 : )ln(ln)ln( nne 若 n为 200 位于进制数,则用每秒 107次运算的高速计算机,也要 108年才能得到计算结果。 可见, RSA 的素数分解确实存在一定的难度。 为安全起见,对 p 和 q要求 :p 和 q的相差不大。 (p1)和 (q1)有大素数因子。 1)ql,gcd(p 很小,满足这样条件的素数称做安全 素数。 RSA 的出现使得大整数分解因式这一古老的问题再次被重视,近些年来出现的不少比较高级的因数分解方法使“安全素数”的概念也在不停的演化。 所以,选择传统上认为是“安全素数”并不一定有效的增加安全性,比较保险的方法就是选择足够大的素数。 因为数越大,对其分解因式的难度也就越大 !对 n 和密钥长度的选择取决于用户保密的需要。 密钥长度越大,安全性也就越高,但是相应的计算速度也就越慢。 由于高速计算机的出现,以前认为己经很具安全性的 512 位密钥长度己经不再满足人们的需要。 1997 年, RSA 组织公布当时密钥长度的标准 :个人 使用 768 位密钥,公司使用 1024 位密钥,而一些非常重要的机构使用 2048 位密钥。 桂林理工大学本科毕业设计论文 10 RSA 算法的缺点 RSA 的缺点主要有: A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。 B)分组长度太大,为保证安全性, n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。 本章小结 RSA 算法在理论上的重大缺陷就是并不能证明分解因数绝对是困难的。 RSA 方法既可用于保密、也 能用于签名和认证,许多流行的操作系统如微软、 Apple, Sun 和Novell 都在其产品上融入了 RSA。 同时, RSA 也被广泛应用于各种安全或认证领域,如 web 服务器和浏览器信息安全、 Email 的安全和认证、对远程登录的安全保证和各种电子信用卡系统的核心。 硬件上,如安全电话、以太网卡和 I智能卡也多采用 RSA技术。 而且几乎所有 Inter 安全协议如 SMME, SSL 不 II SWAN 都引入了 RSA 加密方法。 IS09796 标准把 RSA 列为一种兼容的加密算法,使得 RSA 的应用目前非常广泛。 任何一种事物有出现、繁 荣,也不可避免的会走向灭亡。 在没有找到快速进行大整数分解因式方法的时候, RSA 显示了不可比拟的优点。 而当分解因式不再是难题的时候,RSA 算法也就将失去存在的价值。 桂林理工大学本科毕业设计论文 11 第 4 章 RSA 数据加密中的实现 RSA 算法 ,它是第一个既能用于数据加密也能用于数字签名的算法。 它易于理解和操作,也很流行。 算法的名字就是发明者的名字: Ron Rivest, AdiShamir 和Leonard Adleman, 但 RSA 的安全性一直未能得到理论上的证明, RSA 的安全性依赖于大数的因子分解,但并没有从理论上证明破译 RSA 的难度与大数分解难度等价。 即RSA 的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是 NPC 问题, RSA 算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。 RSA 算法实现数据加密的主要步骤分为: 获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥。 加密。 解密。 随机大素数的产生 公钥密码学需要大素数,因此,大素数的快速有效随机生成方法是公钥密码学中的一个重要问题,具有非常显著的实用价值。 显然,通过对一个随机数进行因子分解,我们可以判断这个随机数是否为素数。 如果这个随机数能被因子分解,则它不 是素数,否则它一定是素数。 但是,大素数的因子分解是一个复杂的问题,到现在还没有找到一个快速有效的算法来对大整数进行因子分解。 因此,不能试图通过对随机数进行因子分解来生成大素数。 正确的生成大素数的方法是对生成的随机数先测试它是否为 素数,而不是对它进行因子分解。 这种素性测试比因子分解要容易得多,己经有许多素性测试方法能够确定一个随机数是否为素数。 如果合数通过一个素性测试的概率足够小,则这个素性测试就是很可靠的。 实际上,对于许多素性测试方法,合数通过测试的概率可以受到人为的控制,即是可以把合数通过测试的概率设定 的足够小。 要讨论素数的生成问题,首先要讨论素数的分布。 素数的分布是极不均匀的,素数越大,分布也就越稀疏。 首先,存在无穷多个素数。 对此,我们可以证明。 假设正整数中只有 k个素数,设为 k21 p p, p 。 令 1pppn k21   ,则 n1。 如果 n是素数,则显然 n与 k21 p p, p 都不相同,这与只有 k个素数的假设相矛后。 如果 n不是素数,则 n一定有一个素数 因子 ippp  , k 2, 1,i  ,否则由于 k21 ppp|p  以及 n|p ,所以 1|p ,这与 p 是素数相矛盾。 故 p与 k21 p p, p  都不相同,这与只有 k 个素数的假设想矛盾。 因此素数有无穷多个。 其次,我们可以根据素数定理,发现素数的分布情况。 素数定理的描述为 :设 0x , 桂林理工大学本科毕业设计论文 12 (x) 为不大于 x 的整数的个数,则 1)ln()(lim  xxxx 根据素数定理,可以估计出长度为 t 位的素数大约有2ln)1( )2(22ln22ln2111tt tttttt  个。 例如,一个长度为 256 位的随机数的素数的概率为 254  而一个长度为 64 位的随机数的素数的概率为 0 2 64  由此可见,位数越多,素数的分布越为稀疏。 产生素数的一般方法可以分为两类,即确定性素数产生方法和概率性素数产生方法。 ( 1)确 定性素数产生方法 确定性素数产生方法产生的数必然是素数。 然而其产生的素数却带有一定的限制。 假若算法设计不佳,便容易构造出带有规律性的素数,使密码分析者能够分析出素数的变化,进而可以猜到该系统中使用的素数。 此类方法主要有两类,即基于 Lucas定理和基于 Pocklington 定理的确定性素数产生方法。 这里简单介绍基于 Lucas 定理的确定性素数产生方法。 此方法需要求得素数 n1 的全部素因子。 Lucas 定理:设Nn ,存在一个正整数 naa,1  且 n) 1(moda 1n  ,且对于 n1 的每一个素 q,均满足 ln moda /q1)(n a,则 n 为素数。 (2)概率性素数产生方法 概率性素数产生方法产生的数仅仅是伪素数。 其缺点在于,尽管其产生合数的可能性很小,但是这种可能性仍然存在 :其优点是产生的伪素数没有规律性,而且产生的速度也比较快。 此类方法是生成大素数的主要方法,其中著名有 :Miller Rabin 与 Solovay Strassen 算法等。 本文讨论 Mill Rabin 算法。 Miller Rabin素性测试法 Miller Rabin 素性测试法是在实际中应用非常广的一种素性测试方案,可以用来判定某随机数是否为素数。 其定义如下 : 设 2n 是一个奇数,设 m21n s ,其中 s是非负整数, 0m 是奇数,设nb0  ,如果 n)(b m mod1 , 桂林理工大学本科毕业设。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。