整数分解在密码学中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整数分解在密码设计中的应用
摘 要:数论中的欧拉定理是基于RSA公钥密码体制,它被广泛接受和实施,基于公钥密码系统的大整数因子分解。通过实例、定义介绍整数分解、RSA公钥系统体系,理解他们的定义、算法及其两者之间的关系,紧接着我们就要介绍整数分解在密码设计中的应用。通过对RSA加密算法的基本原理、加解密过程、安全性和实际应用的解读,让我们对RSA算法有了一定的了解。本文是通过研究和分析RSA算法的基本实现过程和它与实际生活的应用,这对我们了解RSA算法有了很重要的指导作用。
关键字:整数分解 ;RSA密码体制 ;密码设计
Replacement password of computer programming
Abstract: The euler theorem in number theory is based on the RSA public key cryptosystem, which is widely accepted and implemented, based on the large integer factorization of public key cryptosystems. Through the example, the definition of integer decomposition, RSA public key system system, understand their definition, algorithm and the relationship between them, then we will introduce the application of integer decomposition in password design. Through the basic principle of RSA encryption algorithm, encryption and decryption process, security and practical application, let us have a certain understanding of RSA algorithm. This paper is to study and analyze the basic implementation process of RSA algorithm and its application and real life, which has important guidance for us to understand RSA algorithm.
Keywords: integer decomposition;RSA public key encryption characteristics;the design of cryptography;
1 引言
数论是一门应用性极强的应用数学学科。而现代密码学在推进数论的发展中的地位非常重要。随着现代公钥密码学的发展,数论中的许多难易解答的问题如整数分解问题在密码学中的应用是非常广泛的。RSA算法在1978年由美国MIT的三名数学家R.Rivest,A.Shamir和L.Adleman所提出。经过30多年的研究,我们还是无法证明或者反证破解RSA公钥系统的难易程度是否与分解密码体制中的整数模的难易程度相同。因此,我们认为破解RSA密码体制问题的难易程度是等价于整数分解的问题。这个就是密码学和整数分解两者之间的联系。
2 密码学的发展
密码学是一个即古老又新兴的学科。有本书上说."人类的密码使用、文字使用这两者存在的时间几乎是相同的。”打从有了文字的存在,我们有时候会试图隐藏特定的信息,以保护信息的安全性。我们最早为了保证通信不被外泄,一般都会通过图片和特殊符号来传达我们要传达的信息的密令。密码来自希腊词"krypto”和"理性”这个词,直译是"隐藏的”和"消息”。密码学有着神奇的发展历程 。是一个非常重要的角色。因此人类
密码学的发展划分为三个阶段:
(一)人工或简单机械编码时期公元前第五世纪(缓慢发展):密码技术这门艺术技巧性不是一般的强。那时候它并不是一门科学,大多是人都是凭着自己的直觉来进行破密,没有任何的理论和依据的。
(二)电子码周期:(二)电子码周期:1949和1975之间,香农发表了"保密系统的通信理念”并且出版了"保密系统的通信理论”。这坚实的理论基础让密码学地位大大的提高。虽然这一项研究成绩不是特别理想。
(三)计算机密码时期:1976年至今,"密码学中的新方向”这一创新的思想让密码学研究更上一层楼,踏上了更高的台阶。
3 整数分解
3.1整数分解简介
我们很早就接触过整数分解,整数分解就是给一个正整数。将这个正整数分解为几个素数乘法。例如,给出15,这个数可以分解成3×5。而这个问题在现代数学、密码学和量子计算机等领域中有着非常重要的意义。地位也是非常之高的。这是一本为大学生和研究生而写的读物,但是因为它的低起点,所以它也适于作为中小的课外读物。整数分解的终点是有一定的高度的。历来想解决整数分解这一大难题的学者数不胜数。整数分解理论曲折而又深刻。整数分解涉及几十年,几百年甚至几千年来一直没有得到确切的数学问题的答案。这对于计算机研究者,密码学研究者来说是一个宝贵的资源和研究。
3.2实际应用
知道两个大素数,它们的乘积自然而然就可以求出。不过要是只知道他们的乘积,求这个乘积的因子,这个困难性就比比较大了。这是很多密码系统的核心原理,因为它就是利用这个原理加密的。所以只要我们能够快速的解决整数分解问题,那么我们就可以破解部门些密码系统,例如RSA公钥系统算法。
4 RSA公钥系统
4.1RSA公钥系统简介
私钥密码的体制具有局限性:它的密钥量太大,应用范围太小了。这也就是为什么接下来会有公钥的产生。RSA算法在1978年由美国MIT的三名数学家R.Rivest,A.Shamir和L.Adleman所提出。这一发现便成为了密码学发展史上的一次非常重大革命。它的安全性是基于大数因子分解。而RSA正是他们这三个创始人姓氏开头的字母。正是因为整数分解的困难性这才保证了RSA加密的安全性。RSA的加密和解密算法就是公钥体制的基本原理。之所以RSA能抵抗已知的绝大多数密码的攻击原因就在这里。所以,它可以说是当今影响力最大的公钥加密算法。不过有时候它的安全性会大大的降低,那可能就是因为当RSA钥匙较短。RSA钥匙取值比较短的话,那攻击者便轻而易举的就将密码破解了。但是现在也没有更好的系统来代替它。所以考虑到安全问题
,还是要设置长度够长的密钥。这是必须的。
5 RSA算法的数学理论基础
5.1基本数论
素数:素数也称质数,我们把因子只有它本身和1的数并且大于1的整数叫做素数。例如,2,3,5,6,11,…,
素数有以下的基本结论:
1、素数有无穷多个,但我们仍无法确定所有的素数,在目前发现的素数中最大的素数是
2、设 ,则不超过 的素数个数可近似地用 表示。
最大公因数:假如 是 个不全为零的整数之中每个数的因数,我们就称 是这 个数的公因数,公因数中最大的那一个就是它们的最大公因数。最大公因数记作 ,其中g和h为不同时为零的整数,例如:
(5.1)
5.2同余方程和中国剩余定理
同余式:设 且 ,如果 和 除以 的余数相等,即 ,那么我们就称 和 模 同余,将这种关系记作 ,其中 称为模数。例如:73≡27mod 23
同余方程:给定整数 、 和 ,且 不能整除 ,有以下式子
(5.2) 则称式子(5.2)为模 的一次同余方程,其中的 为变量。
中国剩余定理:设n_1 〖,n〗_(2,) n_3… n_k 是两两互素的正整数,N=n_1 〖,n〗_(2,) n_3… n_k, N_1=N/n_i (i=1,2,3…k), 则同余式组x≡b_i (modn_i ),(i=1,2,3…k)
有唯一解
x≡b_1 N_1 y_1+b_2 N_2 y_2+?+b_i N_i y_i (modN)
其中N_i y_i≡1(modn_i )(i=1,2,3…k)[3]。
5.3欧几里得算法
欧几里得算法:它就是我们所说的辗转相除法。对任意两个整数 和 ,有
(如果两个是负的,最大公因子是由绝对值得到的。若其中一个为0,最大公因子是非0那一个。如果二者都是0,最大公因子是无意义的)
5.4欧拉函数的定义和欧拉公式及费尔马定理
欧拉函数:如果 且 ,那么小于 且与 互素的正整数个数就是 的欧拉函数,记为 。欧拉函数具有如下性质:
①如果 为素数,则有
②如果 ,则
③如果 ,则 ,
其中 为素数, 为正整数, 。
欧拉公式:设 且 ,如果 ,那么 。由欧拉定理可知如果 ,则至少存在一个整数 满足方程 。
费尔马定理:若 为素数且 ,则有 。
6 RSA算法参数选择
正如人无完人,当然在RSA算法实现中,必然会存在着某些漏洞。因而会使RSA易遭受攻击。为了保证它的安全性,我们应该仔细选择RSA密码系统的参数选择,该模型的主要参数N,公共密钥e,解密密钥D
模N的选择
1、p-1、q-1的最大公因子应很小(防止迭代攻击)
2、p、q必须为强的素数(如果不是强素数,很很容易就被攻击)
3、p|、q之差要大
4、p、q应大到使得因子分解N为计算上不可能
表6.1
公开密钥e的选择
1、e要与模数 的欧拉数值 互质
2、e应该选择使其在mod 的阶最大,使得 ,其中t≥
(可以有效抗击攻击)
3、e 不能太小,虽然e小能
够加快加密的速率,便于储存,但是风险会大大增加。
表6.2
解密密钥d
1、d不可取太小,太小易受攻击,一般要求 不能小于
2、d不可取太大,太大会造成运行速度过慢。
表6.3
7 RSA算法
[1]RSA的加密算法和解密算法是公钥密码体制的基本原理。具体算法如下:首先,我们随机选取两个两个大素数 、 且长度是差不多相同的。它们两个长度应大于100位以上的十进制。计算 , ;随机选一个整数 ,它满足 且 的,那么 存在模 下的乘法逆元 。这样就得到了三个参数: ( 其中 和 作为公钥, 作为私钥)[1]。
加密算法: (7.1)
解密算法: (7.2)
怎么分解n是攻击者攻击RSA公钥体系的重要之处。若n分解成功使n=pq,那么?(n)=(p-1)(q-1)
8 RSA算法的安全性
8.1共模攻击
有时候为了使方便我们进行加密或者解密。我们会想要在RSA算法具体实现的过程中给多个用户分配同一个模数N。就比如当我们要加密一个明文时候。使用同一个模数N和两个不同的加密指数。当这两个加密指数互素,不需要知道解密指数用任何一个加密指数便可以恢复明文。可是于此同时说在使算法简单化的下,也出现了安全性问题。例如:设两个互素加密密钥e_(1,) e_2,共用的模数n。对同一个明文消息m加密之后就可以得到 、 。只要知道n,e_(1,) e_2,c_(1,) c_2,那么就可以用以下方法对明文m进行恢复。由于e_1和e_2互素,通过扩展欧几里德算法就可以发现满足re_1+re_2=1 的r和s。因此,可以得到如下: ,那么明文消息m便被恢复出来了。
8.2小指数攻击
在实际应用中一般会更偏向于取较小的加密指数。原因是因为这样可以加快明文的加密。提高效率,但是与此同时会影响整个系统的安全性而降低了质量。一旦安全性有所下降那么会及其容易被攻攻击、破译。导致消息的泄露,严重情况会损失非常大。举个列子,这个列子就是取小的加密指数。例如,取e=3,n_1,n_2,n_3 分别为三个用户的不同模数,用这三组密钥对消息x分别加密,得:y_1=x_3 modn_1,y_2=x_3 modn_(2 ,) y_3=x_3 modn_3一般的,应选择n_1,n_(2,) 〖n3〗_是互素的。 再根据中国剩余定理可以求出:
y=x_3 modn_1 n_2 n_3
由于 〖x
选择密码攻击定义:就比如如果攻击者在不知道解密的密钥的前提下。 又被给出任意一条消息。这个人是可以将该消息先进行加密,再进行解密的。下面给出一个列
子:
设大三想截取李四发送的加密信。,不知道明文为m和密钥为d的前提下
,假如大三已经截获到了密文c和公钥对(e,n)。现在大三想知道m=c^dmodn,但是他不想把n分解。于是乎大三找了一个随机数r,r
m=(t*u)modn=r^(-1)*y[ 〖_^d〗]modn
=[r^(-1)*x^d*c^d]modn
=c^dmodn
=m
大三经过上述的运算之后,就能够恢复出明文的m了。
9 代码实现
例子:
首先计算公钥和密钥
我们取p = 5、q = 13,那么则N = pq = 65;r = (p-1)(q-1) = (3-1)(11-1)=48根据模反元素的计算公式,我们可以得出,e?d ≡ 1 (mod 48),即e?d = 48n+1 (n为正整数);我们假设n=1,则e?d = 49。e、d为正整数,并且e与r互质,则e = 7,d = 7。到这里,公钥和密钥已经确定。公钥为(N, e) = (64, 7),密钥为(N, d) = (64, 7)。
用java语言进行编译具体代码如下:
RSA算法实现:
10 总结
我这一次的毕业论文介绍整数分解在密码学中的应用,实际上就是介绍RSA的算法,以及RSA算法的一些特性和运用到的相关的数论。然后从中了解整数分解在RSA算法中的应用。在拿到论文题目后我便 寻找相关资料,等到我逐渐清楚我要怎么写时候。我就马上写下论文大纲。联系我的导师,跟老师沟通后,完善自己写论文的思路。这才下笔。这一次论文的攥写也让我对 RSA算法的了解更加的深入。从中了解整数分解和RSA算法的联系即:从认识的整数分解和RSA算法是:加密是两个大素数乘积作为公共密钥加密信息,和密文的解密必须知道相应的两个大素数。通过RSA算法编程,RSA算法可以应用于网络加密。 加密技术可以保护计算机不受外界干扰,可以保护计算机的安全。毕竟当今社会一个计算机发展非常迅速的时代,计算机和通讯网络的应用使得我们生活更加便捷,可是于此同时确保安全的系统是必不可少的,这也就说明密码学重要原因之一。而传统的密码再分配和管理上是非常困难的,因为就有了公钥密码体系的出现。
参考文献
[1]范九伦、张学锋等. 密码学基础[M].西安:西安电子科技大学出版社,2008.
[2]章照止. 现代密码学基础[M].北京:北京邮电大学出版社,2004.
[3] 及万会 - 《贵州师范大学学报(自然科学版)》[N], 2000
[4] 王国俊. 数论在密码学中的应用[J]《工程数学学报》, 2002.
[5] 高亚玲. 《数据加密技术在银行系统中的应用》[J