素数无限证明及对RSA攻击描述
RSA算法描述
(1)、RSA算法描述❒RSA公钥密码体制的基本原理:根据数论,寻求两个大素数比较简单,而将他们的乘积分解开则极为困难。
欧拉函数Φ(n):Φ(n)表示小于n且与n 互素的正整数个数。
显然,对于任一素数p,有Φ(p) = p-1。
求欧拉函数值:对两个不同的素数p 和q,如果n=pq,则Φ(n) = Φ(p)×Φ(q) = (p-1)×(q-1)❒RSA算法密钥计算过程:用户秘密选取两个大素数p 和q,计算n=pq,n称为RSA 算法的模数,公开。
计算出n的欧拉函数Φ(n) = (p-1)×(q-1),保密。
从(1, Φ(n))中随机地选择一个与Φ(n)互素的数e作为加密密钥,公开。
计算出满足下式的d 作为解密密钥,保密。
ed=1 mod Φ(n)R SA算法密钥:加密密钥PK = |e, n| 公开解密密钥SK = |d, n| 保密举例:选择两个素数p=7 以及q=17。
计算:n=pq=7×17=119,Φ(n)=(p-1)(q-1)=96 。
选择小于Φ(n)且与Φ(n)互素的e ,这里取e=5 。
根据式:ed=1 mod Φ(n) 计算d :代入已知值:5d = k×96 + 1,求得d = 77❒RSA算法加密解密过程:R SA算法属于分组密码,明文在加密前要进行分组,分组的值m 要满足:0<m <n加密算法:C = E(m) ≡me mod n解密算法:m = D(c) ≡cd mod n证明加密和解密是一对逆运算:欧拉定理:对任何互素的整数a 和n,有:aΦ(n) ≡1 mod n →aΦ(n)+1 ≡a mod n 欧拉定理推论:给定两个素数p 和q,以及整数n=pq 和m,其中0<m <n ,则下列关系成立:mΦ(n)+1 ≡m mod n →mΦ(n) ≡1 mod n →[ mΦ(n) ]k ≡1 mod n →mkΦ(n) ≡1 mod n证明:因为ed = 1 mod Φ(n),所以存在k使得ed = kΦ(n)+1,k为不小于1的整数。
RSA公钥密码的低指数攻击
RSA公钥密码的低指数攻击摘要密码技术是保护信息安全的主要手段之一。
它不仅具有保证信息机密性的信息加密功能,而且具有数字签名、身份验证、秘密分存、系统安全等功能。
因此,使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确定性,防止信息被篡改、伪造和假冒。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作,是被研究得最广泛的公钥算法,也被普遍认为是目前最优秀的公钥方案之一。
该算法的加密密钥和加密算法分开,使得密钥分配更为方便。
它特别符合计算机网络环境。
RSA算法解决了大量网络用户密钥管理的难题,这是公钥密码系统相对于对称密码系统最突出的优点。
本次毕业设计,分析了RSA算法的应用现状,论证文件加密应用RSA算法的可行性和意义。
以visual C++ 6.0软件为平台,利用Wiener的低解密指数攻击算法设计了一套完整实用的RSA公钥密码的低指数攻击程序,并进行编码实现。
关键词:RSA,Wiener,文件加密,低指数攻The Low Exponent Attack of RSA Public Key CryptographyABSTRACTCryptography is one of the main means to protect the information security. It not only has the function of information encryption which guarantees encryption of information, but also has a digital signature, authentication, secret sharing, system security and other functions. Therefore, using cryptography can not only ensure confidentiality of information, but also ensure integrity and certainty of information, so that it can prevent information from tampering, forgery and fake.RSA algorithm is the first algorithm which can encrypt and digital signature at the same time. It is the most widely studied public key algorithm which is easy to be understood and operated and it is generally thought to be one of the outstanding public key schemes. The algorithm separates encryption key from encryption algorithm, which makes key distribution easier. In particular, it found a computer network environment. RSA algorithm solves a large number of network Users’ key management problem, which is the m ost prominent advantages as public key cryptography systems for symmetric cryptography.The graduation design analysis the application situations of RSA algorithm. Demonstrate the feasibility and significance of RSA algorithm for file encryption application. Use visual C++ 6.0 software and the algorithm of wiener low-decryption exponent attack. Designed a complete and practical RSA public key cryptography for low-exponent attack procedures, and encoded to achieve on application.KEY WORDS:RSA, Wiener, File encryption, Low exponent attackIII目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1 课题背景 (1)1.2 论文主要内容 (1)2 RSA公钥密码 (3)2.1 RSA加密解密体制简介 (3)2.1.1 公钥密码算法及RSA概述 (3)2.1.2 RSA体制的算法过程 (3)2.1.3 RSA体制的实现 (4)2.1.4 RSA的安全性 (5)2.1.5 RSA算法中的数字签名 (5)2.1.6 RSA的速度 (5)2.2 RSA的攻击 (5)2.2.1 RSA的选择密文攻击 (5)2.2.2 RSA的公共模数攻击 (6)2.2.3 RSA的小指数攻击 (6)2.2.4 因数分解攻击 (6)2.2.5 对加密指数的攻击 (7)2.2.6 对解密指数的攻击 (7)2.2.7 明文攻击 (8)2.2.8 执行攻击 (9)2.3 RSA加密算法的评价 (10)2.3.1 RSA加密算法的缺点 (10)2.3.2 RSA加密算法的优点 (10)2.3.3 文件加密使用RSA的意义 (11)3 连分数介绍 (13)3.1 简介 (13)3.2 连分数的表示法 (17)3.3 有限连分数 (18)3.4 连分数的倒数 (18)3.5 无限连分数 (18)3.6 半收敛 (19)3.7 最佳有理数逼近 (19)IV4 RSA公钥密码的低指数攻击设计 (21)4.1 RSA公钥密码的低指数攻击的算法 (21)4.1.1 实现RSA (21)4.1.2 Euclidean算法 (21)4.1.3 Wiener的低解密指数攻击 (22)4.2 流程图 (24)4.3 VC6.0程序实现 (25)4.3 运行结果 (26)致谢 (29)参考文献 (30)RSA公钥密码的低指数攻击 11 绪论1.1 课题背景当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。
RSA算法描述
2.RSA算法RSA算法需要以下相关的数学概念:素数:素数是一个比1大,其因子只有1和它本身,没有其它数可以整除它的数。
素数是无限的。
例如,2,3,5,7……等。
两个数互为素数:指的是它们除了1之外没有共同的因子。
也可以说这两个数的最大公因子是1。
例如,4和9,13和27等。
模运算:如A模N运算,它给出了A的余数,余数是从0到N-1的某个整数,这种运算称为模运算。
RSA加密算法的过程如下:(1)取两个随机大素数p和q(保密)(2)计算公开的模数r=pq(公开)(3)计算秘密的欧拉函数ϕ (r) =(p-1)(q-1)(保密),两个素数p和q不再需要,应该丢弃,不要让任何人知道。
(4)随机选取整数e,满足gcd(e, ϕ (r))=1(公开e,加密密钥)(5)计算d,满足de≡1(mod ϕ (r))(保密d,解密密钥,陷门信息)(6)将明文x(其值的范围在0到r-1之间)按模为r自乘e次幂以完成加密操作,从而产生密文y(其值也在0到r-1范围内)y=x e (mod r)(7)将密文y按模为r自乘d次幂,完成解密操作x=y d (mod r)下面用一个简单的例子来说明RSA公开密钥密码算法的工作原理。
取两个素数p=11,q=13,p和q的乘积为r=p×q=143,算出秘密的欧拉函数ϕ (r)=(p-1)×(q-1)=120,再选取一个与ϕ (r)=120互质的数,例如e=7,作为公开密钥,e的选择不要求是素数,但不同的e的抗攻击性能力不一样,为安全起见要求选择为素数。
对于这个e值,可以算出另一个值d=103,d是私有密钥,满足e×d=1 mod ϕ (r),其实7×103=721除以120确实余1。
欧几里德算法可以迅速地找出给定的两个整数a和b的最大公因数gcd(a,b),并可判断a与b是否互素,因此该算法可用来寻找解密密钥。
120=7×17+11=120-7×17 mod 120=120-7×(-120+17) mod 120==120+7×103 mod 120(n,e) 这组数公开,(n,d)这组数保密。
信息保障与安全考试猜测题
密码学考试猜测题一、填空1、处于计算机安全核心地位的三个关键目标分别是保密性、完整性、可用性。
2、安全攻击分为主动攻击和被动攻击两类。
3、 OSI 安全框架,提供了定义安全攻击、机制和服务的系统框架4、对称密码算法主要有明文、密文、密钥、加密算法和解密算法等五个主要组成部5、古典密码学体制对现代密码学的研究和学习具有十分重要的意义,实现古典密码体制的两种基本方法代换和置换仍是构造现代对称分组密码的核心方式6、DES 是美国国家标准局公布的第一个数据加密标准,它的分组长度为 64 位,密钥长度为 56 位。
7、分组密码的工作模式: 电码本模式、密文分组链接模式、密文反馈模式、输出反馈模式和计数器模式。
8、 X.509 证书格式用于S/MIME、IP 安全性和SSL/TLS 与SET 。
9、 X.509 是基于公钥密码体制和数字签名的服务。
10、IPse 包含三个方面的功能分别是认证、保密、密钥管理11、AH 和ESP 均支持两种模式分别是传输模式和隧道模式。
12、S 盒用在DES 算法中,每个 s 盒都由6 位输入产生4 位输出,所有说,s 盒定义了一个普通的可逆代换。
相当程度上,DES 的强度取决于 s 盒的设计,但是,s 盒的构造方法是不公开的13、PKI 被定义为由硬件、软件、人、策略和程序构成的一整套体系。
14、AES 每轮变化中设计的基本操作每轮包括 4 个阶段:字节代换、行移位、列混淆、轮密钥加。
15、处理被动攻击的重点是预防,处理主动攻击的方式是检测。
二、选择1. 1919 年,德国人亚瑟.谢尔比乌斯发明了转轮机, 这就是历史上最著名的德国“_____”密码机A.ENIGMA B. TYPEXC.RED D.EIGAMAL2. 1949 年_____撰写的奠基性论文“保密系统的通信理论”在《贝尔系统技术杂志》上发布,首次将信息论引入密码技术的研究。
A.Claude Shannon B.RonRivest C.W. Diffie D.JoanDaemen3. 加密技术不能提供以下哪种安全服务?A.鉴别B.机密性C.完整性D.可行性4.以下哪个是既可以进行加密又可以进行数字签名的密码算法?A.RSAB.DESC.IDEAD.DSA5. 在凯撒密码中,每个字母被其后第几位的字母替换?A.5B.4C.3D.26. DSA 使用的散列算法是?A.MD4 B.SHA-1 C.MD5 D.RC57. DES 的分组长度为多少位?A.8 B.56 C.64 D.1288. AES 最大允许的密钥长度为多少位?A.128 B.192 C.256 D.5129. 以下哪一个算法不属于公钥密码体制?A.RC5B.椭圆曲线密码(ECC)C.EIGamalD.RSA10.以下关于非对称密码的说法,错误的是A.加密算法和解密使用不同的密钥B.非对称密码也称为公钥密码C.非对称密码可以用来实现数字签名D.非对称密码不能用来加密数据11. 以下哪个算法不能用于数字签名A.Diffie-HellmanB.椭圆曲线密码(ECC)C.RSAD.DSS12. 在RSA 密钥产生过程中,选择了两个素数,p=13,q=37,求欧拉函数Φ(n)的值A.481B.444C.432D.51213.在RSA 密钥产生过程中,已知Φ(n) =160,选择 e=23,确定 d 使得d≡1/e (modΦ (n)),求 d 的值?A.17B.7C.27D.3714.假如A 想使用公钥密码算法发送一个加密的消息给 B,此信息只有B 能解密,A 可以使用哪个密钥来加密这个信息?A.A 的公钥B.A 的私钥C.B 的公钥D.B 的私钥15.以下基于大整数因子分解难题的公钥密码算法是?A.EIGamalB.ECCC.RSAD.AES16.当双方希望进行密钥交换时:A.双方的公钥必须公开B.双方的私钥必须公开C.只要一方的公钥公开D.只要一方的私钥公开17. 为什么在数字签名中含有消息摘要A.防止发送方否认发送过消息B.加密明文C.提供解密密码D.可以确认发送内容是否在途中被他人修改18. 以下哪种算法为不可逆的数学运算A.MD5B.RC4C.混淆D.DES19.MAC 和对称加密类似,但是也有区别,以下哪个选项指出了MAC 和加密的区别?A.MAC 不使用密钥B.MAC 使用两个密钥分别用于加密和解密C.MAC 是散列函数D.MAC 算法不要求可逆性而加密算法必须是可逆的20. Alice 有一个消息M 通过密钥K 和MAC 算法生成一个MAC 为C(K,M),Alice 将这个 MAC 附加在消息M 后面发送给Bob,Bob 用密钥K 和消息M 计算MAC 并进行比较,这个过程可以提供什么安全服务?A.仅提供保密性B.不可否认性C.仅提供消息认证D.保密性和消息认证21.下列关于HMAC 的安全性,说法正确的是:A.HMAC 的安全性与嵌入散列函数的强度无关B.使用 SHA-1 的HMAC 的安全性比使用MD5 的HMAC 弱C.HMAC 比其使用的嵌入散列函数的安全性弱D.HMAC 的安全性在某种程度上依赖于该散列函数的强度22.HMAC 使用SHA-1 作为其嵌入的散列函数,使用的密钥长度是 256 位,数据长度 1024 位,则该HMAC 的输出是多少位?A.256B.1024C.512D.16023.直接数字签名和仲裁数字签名的区别是什么?A.所使用的公钥密码算法不同B.签名函数和保密函数作用于消息的顺序不同C.直接数字签名是私钥直接对消息进行加密来产生数字签名,而仲裁数字签名是使用私钥对消息的散列码进行加密来产生数字签名D.直接数字签名只涉及通信双方,而仲裁数字签名需要第三方仲裁者的介入24. 以下关于Diffie-Hellman 的密钥协商协议的说法,正确的是:其安全性基于大整数因子分解问题A.Diffie-Hellman 的密钥协商协议提供身份鉴别服务B.Diffie-Hellman 的密钥协商协议易受中间人入侵攻击C.Diffie-Hellman 的密钥协商协议提供数字签名服务D.Diffie-Hellman 的密钥协商协议提供数字签名服务25.为什么软件供应方在网站上提供软件补丁的同时还要提供补丁的 MD5 散列值?A 接收方可以确定下载补丁的网址的可靠性B 接收方在下载了补丁后可以验证补丁的完整性C 接收方可凭该散列码用于未来的补丁更新D 接收方需要提供该散列值来证明自己的合法身份三、判断1. 密码编码学的主要任务是寻求有效密码算法和协议,以保证信息的机密性或认证性的方法。
RSA概述
RSA解密过程证明
关键证明Med mod n = M mod n; 根据密钥产生的过程,ed = 1 mod φ(n) 则 ed = k*φ(n)+1; 根据欧拉定理推论,Med mod n = M mod n; 由于M < n,所以M mod n =M;
RSA使用场景
假设A 与B要通信,A 为发送方,B为接收方.整个通信过程如下
数论的基本知识
素数(略) 同模
a mod p = b mod p => a=b mod p(这里的等号表示同模符号,三根横线)
模运算的性质(略) 最大公约数(gcd)(略) 模乘的逆
a×b mod p = 1 od p(这里指同模)
欧拉函数(n)
φ(n)表示小于n的,与n互质的正整数个数. φ(n)=n-1,当n为素数 φ(n)=n(1-1/p1 )(1-1/p2 )...(1-1/pn ),其中n=p1 x 1 p2 x 2p3 x 3...pn x n
RSA密钥产生算法
取两个大素数p和q; 计算n=p×q; 计算φ(n)=(p-1)(q-1) 计算de=1
mod φ(n);(同模)
{以上p,q,d为保密的,私有的,不可公开的,原则上n也是私有的,不过n公开不会有很大的影响,RSA 的安全性基于大素数乘积分解的复杂度}
RSA加密解密过程
假定M为明文,C为密文,e为公钥,d为私钥,n为大数,并且M < n; 加密:C=Me mod n 解密:M=Cd mod n = M ed mod n = M mod n
B产生生成两个素数p,q,并求n=pq,之后将n公开给A B选择满足条件的e,并且将e公开给A B计算满足条件的d A 利用e加密信息,发送给B B利用d解密信息
rsa算法的原理
rsa算法的原理RSA算法是一种公钥密码算法,它经常被用于信息安全领域中的加密和数字签名等方面,是目前最广泛使用的公钥加密算法之一。
本文将介绍RSA算法的原理,从密钥生成、加密和解密三个方面详细讲解。
一、密钥生成RSA算法是一种基于大素数因子分解的加密方法,其密钥包括公钥和私钥两部分。
公钥由两个参数n和e组成,其中n为两个大质数p和q 的乘积,e为整数且满足1<e<φ(n)且e与φ(n)互质。
私钥由两个参数n和d组成,其中n相同,d为整数,满足ed≡1(modφ(n)),φ(n)=(p-1)(q-1)是欧拉函数。
密钥生成的具体流程如下:1.选取两个不同的大质数p和q,并计算它们的积n=p*q。
2.计算φ(n)=(p-1)*(q-1)。
3.选取一个大于1且小于φ(n)的整数e,使得e与φ(n)互质。
4.使用扩展欧几里得算法计算出d。
具体地,我们需要求出方程ed=k*φ(n)+1的正整数解d。
5.将n和e组成公钥,n和d组成私钥。
二、加密RSA算法的加密过程如下:1.将明文M转化为整数m,确保0 <= m < n。
2.计算密文C = m^e mod n。
其中,C为密文。
三、解密RSA算法的解密过程如下:1.将密文C转化为整数c,确保0 <= c < n。
2.计算明文M = c^d mod n。
当然,在实际应用中还需要考虑信息安全领域常常面临的各种攻击手段,比如重放攻击、中间人攻击等等。
此外,RSA算法的安全性也与密钥长度有关。
通常情况下,我们需要保证密钥长度足够长,这样攻击者才会愈发显得无能为力。
综上所述,RSA算法是一种基于大素数不易分解原理的公钥密码算法。
密钥包括公钥和私钥两部分,其加密和解密过程都依赖于密钥的组成。
在使用时需要注意信息安全问题,并根据具体应用需求确定密钥长度。
RSA算法原理
RSA算法原理RSA原理其实没有想象的那么难。
对于这篇⽂章,有数论的基础更好,没有的话只要不纠结具体的数学定理如何证明,应该也可以看懂。
⼀、数学准备⾸先要准备⼀下如下数学概念和原理。
1.质数:只能分解成1和它⾃⾝乘积的,⼤于1的⾃然数。
2.互质:最⼤公因数是1的多个⾃然数之间就是互质关系。
注意,互质的整数不⼀定都是质数。
3.模运算:mod,即计算余数的运算,如x mod yn,表⽰x除以y的余数是n。
上述数学概念都是中学学过的,下⾯的定理就进⼊数论部分了。
4.欧拉函数:对于⾃然数n,计算在⼩于等于n的⾃然数中,与n互质的数字的个数的函数。
欧拉函数⼀般写成φ(n)。
欧拉函数的计算公式:φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4) (1)1/pn),其中p1, p2……pn为n的所有质因数,n是不为0的整数。
另外,定义φ(1)=1。
欧拉函数有以下重要特性:如果n是质数p的k次⽅,即n=p^k,则φ(n)=p^k-p^(k-1)。
这个定理不难理解,因为在1到n这n个数⾥,是p的倍数有1*p,2*p,3*p直到(p^(k-1))*p,⼀共p^(k-1)个,其他数都和p^k互质。
⽐如n=8时,8=2^3,φ(8)=2^3-2^(3-1)=8-4=4.如果n是质数,则φ(n)=n-1。
因为质数与⼩于它的每⼀个数,都构成互质关系。
⽐如φ(7)=6。
如果n可以分解成两个互质的整数之积,即 n = p * k ,则φ(n)=φ(p*k)=φ(p) *φ(k),这个定理也可以从上⾯的欧拉函数计算公式得出。
5.欧拉定理这个定理是RSA算法的核⼼:如果两个正整数m和n互质,则有如下公式:m^(φ(n))≡1(mod n)或m^(φ(n)) mod n≡1即m^(φ(n))除以n,得到余数1.欧拉定理的证明这⾥就不展开了,有兴趣的同学⾃⾏百度即可。
如果n为质数,则φ(n)=n-1,上述欧拉定理公式可改为:m^(n-1)≡1(mod n)或m^(n-1) mod n ≡1这就是著名的费马⼩定理。
RSA算法
1)产生密钥很麻烦,受到素数产生技术的限制, 1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做 产生密钥很麻烦 到一次一密。 到一次一密。 2)安全性, RSA的安全性依赖于大数的因子分解,但并没有 2)安全性, RSA的安全性依赖于大数的因子分解, 安全性 的安全性依赖于大数的因子分解 从理论上证明破译RSA的难度与大数分解难度等价。目前, RSA的难度与大数分解难度等价 从理论上证明破译RSA的难度与大数分解难度等价。目前, 人们已能分解140多个十进制位的大素数, 140多个十进制位的大素数 人们已能分解140多个十进制位的大素数,这就要求使用 更长的密钥,速度更慢;另外, 更长的密钥,速度更慢;另外,目前人们正在积极寻找攻 RSA的方法 如选择密文攻击, 的方法, 击RSA的方法,如选择密文攻击,一般攻击者是将某一信 息作一下伪装,让拥有私钥的实体签署。然后, 息作一下伪装,让拥有私钥的实体签署。然后,经过计算 就可得到它所想要的信息。实际上, 就可得到它所想要的信息。实际上,攻击利用的都是同一 个弱点,即存在这样一个事实: 个弱点,即存在这样一个事实:乘幂保留了输入的乘法结 构。
提高RSA算法的运算效率的方法 提高RSA算法的运算效率的方法
• RSA的安全性是基于大素数因子分解的困 难性。目前一般认为RSA需要1024位以上 的字长才有安全保障。由于RSA所采用的 模幂运算耗时太多,这样大的数据量处理 时速度很慢,所以提高RSA的运算效率便 成为非常重要的研究课题。
Montgomery 模乘算法
RSA的简要介绍 RSA的简要介绍
• RSA公钥密码体制在密码学中占有重要的 地位,已经成为现在最流行的公钥加密算 法和数字签名算法之一。其保密性强,密 钥管理方便,并且具有数字签名、认证和 鉴别等多种功能,特别适合于现代保密通 讯的需要。大多数使用公钥密码进行加密 和数字签名的产品和标准使用的都是RSA 算法。
大素数分解rsa
大素数分解rsa
RSA算法是一种非常重要的加密算法,其安全性基于大素数分解的难度。
因此,如何高效地分解大素数成为了RSA算法攻击的一个重要研究方向。
本文将介绍几种常见的大素数分解算法,并阐述它们在RSA攻击中的应用。
1. 质因数分解算法
质因数分解算法是最常见的大素数分解算法之一。
该算法基于一个简单的事实,即任何一个合数都可以分解为若干个素数的乘积。
因此,只需要找到这些素数即可完成分解。
然而,对于非常大的素数,这个算法的时间复杂度是指数级别的,因此在实际应用中很难使用。
2. 米勒-拉宾素性检验
米勒-拉宾素性检验是一种用于判断一个数是否为素数的快速算法。
该算法基于费马小定理以及二次探测定理,可以在多项式时间内完成判断。
然而,该算法只能检验一个数是否为素数,并不能对合数进行分解。
3. 矩阵求逆算法
矩阵求逆算法是一种基于线性代数的大素数分解算法。
该算法构造一个特殊的矩阵,然后通过求逆运算来得到分解结果。
这个算法在理论上的时间复杂度是多项式级别的,但是由于实现复杂度较高,因此在实际应用中并不常见。
在RSA攻击中,以上算法都有着重要的应用。
质因数分解算法是最常见的攻击手段,因为它可以直接得到RSA密钥中的素数。
米勒-
拉宾素性检验则可以用于预检验一个数是否为素数,从而排除掉一些不可能的情况。
矩阵求逆算法则可以用于加速攻击过程,减少运算时间。
总之,大素数分解是RSA攻击中的一个重要领域,研究并发展更加高效的算法对于保护RSA算法的安全性至关重要。
rsa公钥分解
rsa公钥分解RSA公钥分解是一种攻击RSA加密算法的方法,它的目标是从RSA 公钥中推导出私钥,从而可以解密加密过的消息。
本文将介绍RSA公钥分解的原理、攻击方式以及防御措施。
一、RSA加密算法简介RSA是一种非对称加密算法,它由三个步骤组成:密钥生成、加密和解密。
在密钥生成阶段,用户需要选择两个大素数p和q,并计算它们的乘积n=p*q。
然后用户选择一个整数e作为公钥,并确保e与(p-1)*(q-1)互质。
最后用户计算d作为私钥,使得d*e mod (p-1)*(q-1)=1。
在加密阶段,用户将明文m转换为整数M,并使用公钥(n,e)对其进行加密,得到密文C=M^e mod n。
在解密阶段,用户使用私钥(d,n)对密文进行解密,得到明文m=C^d mod n。
二、RSA公钥分解原理RSA公钥分解的目标是从公钥(n,e)中推导出私钥(d,n),以便攻击者可以解密加密过的消息。
这个问题被称为“大整数分解问题”,因为n 通常是一个非常大的数字(几百位或几千位),很难在合理的时间内对其进行因数分解。
然而,RSA公钥分解并不是不可能的。
它依赖于一些数学算法,如Pollard-rho算法、数域筛法、共模攻击等。
这些算法可以在合理的时间内对大整数进行因数分解。
三、RSA公钥分解攻击方式1. Pollard-rho算法Pollard-rho算法是一种基于随机漫步的因数分解算法。
它通过在一个有限群中进行随机游走来寻找两个重复元素,从而找到n的因子。
该算法可以在O(√n)次步骤内找到n的一个非平凡因子。
2. 数域筛法数域筛法是一种基于多项式求解的因子分解算法。
它将大整数映射到一个有限域上,并使用多项式来表示这个有限域上的元素。
然后使用多项式求值和多项式求导等技术来寻找n的因子。
3. 共模攻击共模攻击是一种利用相同模数加密两个不同明文时所产生的信息泄露来推导出私钥d的攻击方式。
具体来说,如果两个明文m1和m2满足gcd(m1-m2,n)=1,则攻击者可以使用扩展欧几里得算法来计算私钥d。
RSA加密算法的证明
RSA加密算法的证明与实现一、RSA介绍:RSA加密算法1977是由美国麻省理工学院Ron Rivest,Adi Shamir 和Leonard Adleman 三人发明的RSA命名由三人的名字头字母而定。
进40年被证明是可以信赖的加密算法。
二、相关数学知识:1.费马里小定律:N P-1 MOD P=1 (说明:有N为任意正整数,P为素数,且N不能被P整除)用c++语言翻译为:pow(N,P-1)%2 。
2. 积模分解公式:(X*Y)MOD Z =((X MOD Z)*(Y MOD Z)) MOD Z3. 公式1Y MOD P=X 则:Y MOD Q=X Y MOD PQ=X4. 公式2Y MOD PQ=X 则:Y MOD P=X Y MOD Q=X注意:成立的条件是Y>P AND Y>Q5.这里介绍下什么是素数?素数:在一个大于1的自然数中,只能被1或本身整除的正数。
(计算方法见函数1)6.互质数或互素数:公约数只有1的两个数,叫做互质数。
判断方法:6.1.两个质数一个是互质数6.2.一个质数不能整除另一个合数(非质数)这两个数一定是互质数。
6.3. 1和任何自然数都是互质数。
6.4. 相邻的两个自然数是互质数。
6.5. 相邻的两个奇数数互质数。
关于上面的四个公式我就不再证明给大家啦!最简单的证明方法是自己对放上的公式写出4个程序用循环验证就可以啦!三、RSA加密算法:有了上面的数学知识我们就可以证明RSA加密算法是否正确。
下面我们看下RSA加密算法的定义:1.任意选P和Q 两个极大的素数(质数)2.选择一个与(P-1)*(Q-1)互质的数e 并且且1<e<(P-1)*(Q-1)。
(e不一定数素数)3. e*d ≡ 1 mod (P-1)*(Q-1) “≡”同模符号。
等价于e*d mod ( P-1)*(Q-1)=1。
(在程序可以采用循环选出一个d值)。
到这里我们有啦P 、Q、e、d 就可以现实RSA加密算法啦。
RSA加密算法及实现
RSA加密算法及实现RSA 是一种非对称加密算法,由Rivest、Shamir 和Adleman 三位数学家于1977年提出,现在广泛应用于电子邮件加密、数字签名和安全传输等领域。
RSA 算法基于两个大素数的乘积难以分解的特性,实现了安全的加密和解密过程。
RSA算法的核心原理是利用数论中的欧拉函数、模逆和模幂运算。
下面将详细介绍RSA算法的加密和解密流程。
1.生成密钥对首先选择两个不同的大素数p和q,计算它们的乘积n=p*q。
然后计算欧拉函数φ(n)=(p-1)*(q-1)。
选择一个与φ(n)互质的整数e,作为公钥的指数。
再利用模逆运算求解整数d,使得(d*e)%φ(n)=1,d即为私钥的指数。
2.加密过程假设要加密的消息(明文)为m,公钥为(n,e)。
将明文转换成整数M,并满足0≤M<n。
加密过程即为计算密文C=M^e%n,然后将密文发送给接收者。
3.解密过程接收者使用私钥(n,d)进行解密。
将密文C转换成整数,并计算明文M=C^d%n。
最后将整数M转换成消息,并得到解密后的明文。
RSA算法的安全性基于分解大整数n的困难性,如果有人能够有效地分解n,并得到p和q,那么整个算法的安全性将被破坏。
目前,分解大整数依然是一个非常耗费计算资源的问题,因此RSA算法在理论上是安全的。
实现 RSA 加密算法需要涉及大数运算和模幂运算等复杂的数学运算。
下面是一个简化版的 RSA 加密算法的 Python 代码实现:```pythonimport random#扩展欧几里得算法求解模逆def extended_gcd(a, b):if b == 0:return a, 1, 0gcd, x, y = extended_gcd(b, a % b)return gcd, y, x - (a // b) * y#计算模幂运算def mod_exp(a, b, n):result = 1while b > 0:if b % 2 == 1:result = (result * a) % na=(a*a)%nb//=2return result#生成密钥对def generate_keys(:p = random.randint(100, 1000)q = random.randint(100, 1000)while p == q or not is_prime(p) or not is_prime(q): p = random.randint(100, 1000)q = random.randint(100, 1000)n=p*qphi = (p - 1) * (q - 1)e = random.randint(2, phi - 1)gcd, d, _ = extended_gcd(e, phi)#确保d为正数if d < 0:d += phireturn (n, e), (n, d)#加密过程def encrypt(message, public_key):n, e = public_keym = int.from_bytes(message.encode(, 'big')c = mod_exp(m, e, n)return c#解密过程def decrypt(ciphertext, private_key):n, d = private_keym = mod_exp(ciphertext, d, n)message = m.to_bytes((m.bit_length( + 7) // 8, 'big').decode return message#判断一个数是否为素数def is_prime(n):if n <= 1:return Falsefor i in range(2, int(n ** 0.5) + 1):if n % i == 0:return Falsereturn True#示例运行代码if __name__ == '__main__':public_key, private_key = generate_keysmessage = "Hello, RSA!"ciphertext = encrypt(message, public_key)plaintext = decrypt(ciphertext, private_key)print("Public key:", public_key)print("Private key:", private_key)print("Ciphertext:", ciphertext)print("Decrypted plaintext:", plaintext)```以上代码是一个简单的实现,仅用于理解RSA加密算法的基本原理。
rsa算法的描述
rsa算法的描述RSA算法是一种非对称加密算法,其名称来自于三位发明者Rivest、Shamir和Adleman的姓氏的首字母。
RSA算法的原理是基于数论中的大整数分解问题和欧拉函数的性质,具有安全性高、可靠性强的特点,在信息安全领域得到广泛应用。
RSA算法的核心思想是使用两个大质数的乘积作为公钥的一部分,而私钥是这两个大质数的积的逆元。
这意味着,只有知道这两个大质数才能破解RSA算法,而大质数的分解是一个极其困难的问题,目前还没有找到有效的算法可以在多项式时间内解决。
因此,RSA 算法的安全性依赖于大质数分解的困难性。
RSA算法的加密过程是通过对明文进行数学运算来实现的。
具体而言,加密者使用公钥对明文进行加密,得到密文;而解密者则使用私钥对密文进行解密,还原为原始的明文。
这种加密和解密的过程是互逆的,即加密和解密操作可以通过互相逆运算来实现。
在RSA算法中,加密者首先将明文转换为一个整数,然后使用公钥中的指数和模数对其进行加密。
解密者则使用私钥中的指数和模数对密文进行解密,还原为原始的明文。
在加密和解密的过程中,指数和模数的选择是关键。
通常情况下,指数选取较小的素数,而模数选择两个较大的质数的乘积。
RSA算法还具有数字签名的功能。
数字签名是一种用于验证数据完整性和身份认证的技术。
在数字签名过程中,私钥持有者可以使用自己的私钥对数据进行签名,而任何人都可以使用公钥对签名进行验证。
通过数字签名,接收者可以确保数据的来源和完整性。
总结起来,RSA算法是一种非对称加密算法,通过利用大质数分解的困难性来保证数据的安全性。
它具有安全性高、可靠性强的特点,并且可以实现加密和解密、数字签名等多种功能。
在信息安全领域,RSA算法被广泛应用于加密通信、数字签名、身份认证等方面,为保障数据的安全提供了重要的保障。
小素数筛值法生成素数实现RSA加密算法
河北工业大学成人教育学院学报
2006 年
a) 计算。 M m p 以 ,.- " od 及a2+ M9m q - d od b) 计 算C< a, +p * ( (a2一 *r m q) a,) od
rith m etic .
Key words :RSA encr ption arithmetic ; Strong prime ; Little Prime Number Building Method ; Rabin y
一Mille r Tes t
1
算法设计与编程
1. 1 素数的生成
在RSA公钥密码的实现中, 构造密钥是至关重要的, 而在构造密钥的过程中, 关键就在于选取大素 数p,q, 大素数的产生及测试是密码学领域中的一个重要课题。在一般的RSA 公钥密码加密系统中, 素
图 1 素数生成的实现流程图
图2 Rabin - miller 测试流程图
另外, 为加快运算速度、 减小素数生成的时间, 在测试前必须增加小素数筛值这个重要处理环节〔 21,
这样不仅可以大大加快运算速度, 而且在同样的时间内可以增加 Rabin 一 l er 测试的次数, mil 以提高确定 是素数的概率。对于素数生成的实现我们只实现了32 位二进制, 但思路和方法适用于所有系统, 而且
1. 2 快速加解密与源程序 我们知道, 应用中国余数定理, 私钥的运算可比计算单一方幂的通常方法要快约四倍。其相应算法
过程是:对给定的私钥 < d,n > ,n 二 * q, dp : = d mod (p 一 和dq: = p mod( q 一 两 , p 计算 1) 1) 并运用扩
毕业设计(论文)-rsa加密算法的分析与实现[管理资料]
河南科技大学毕业设计(论文)题目:__RSA加密算法的分析与实现__姓名:__考号:_院系:_信系工程系_专业:计算机及应用指导教师:__2011年04月24日摘要随着信息产业的迅速发展,人们对信息和信息技术的需要不断增加,信息安全也显得越来越重要。
基于对网络传输数据安全性的考虑,保障网络信息安全的加密产品具有广泛的应用前景,密码技术则是保障信息安全的一个重要手段。
密码学是信息安全技术的核心,现代密码体制分为公钥体制和私钥体制两大类:私钥体制又称单钥体制,其加密密钥和解密密钥相同;公钥体制又称为双钥体制,其加、解密密钥不同,可以公开加密密钥,而仅需保密解密密钥,从而具有数字签名、鉴别等新功能,被广泛应用于金融、商业等社会生活各领域。
RSA是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,不仅可以进行加密,还可以用来进行数字签名和身份验证,是公钥密码体制的代表。
大数模幂乘运算是实现RSA等公钥密码的基本运算,该算法存在的问题是在实现时耗时太多,这也是制约其广泛应用的瓶颈。
本论文的第一章介绍了国内外密码学和RSA的有关动态以及本论文的意义,第二章介绍密码学的有关知识,第三章对RSA算法进行分析、介绍,第四章是RSA 加密与解密的实现的代码和测试,第五章对本课题的结论。
最后是致谢和参考文献。
关键词:密码学,RSA公钥密码体制,信息安全ABSTRACTWith the rapid development of IT technology, people depend on it increasingly, As a result, information security is getting more and more important. Meanwhile, Products that ensure network information show a great prospect due to the importance .Of transmitting data by network safely, and as an important means of information Security, cryptography must be is the core of the information security. Modern cryptograph is, Divided into the public key system and the private key system. The private key system, Is also called the single key system, in which the encryption process is the same as the. Decryption process. The public key system is also called the double key system, Where the encryption process is different with the decryption process. Since the Public key system can publish its public key and keep its private key secret, it has, Many new applications such as the digital signature and authentication, which is. ideally used in every field of the the various public key cryptosystem, RSA algorithm is the best choice in, Both theory and application, and it is open used in digital signature and identificationSystem. Modular exponentiation and modular multiplication are the basic algorithms. For implementing the public key algorithms such as RSA, etc. However the, Time-consuming modulo exponentiation computation, which has always been the, Bottle-neck of RSA restricts its wider application.The first chapter introduces the domestic and foreign progress of cryptograph; The RSA related tendency as well as the meaning of the research. The second chapter Explains cryptograph. The third chapter describes and analyzes the RSA algorithm. The fourth chapter discusses the improvement of the RSA algorithm including the big,Number restore and operation, and the improvement algorithm of the” Square multiply" algorithm. The fifth chapter reprints an improved algorithm and Comparisons.KEY WORDS: cryptography, RSA, public key cryptosystem, information security目录摘要 (1)ABSTRACT (2)第一章引言 (6)研究背景 (6)信息加密技术 (6)密码技术研究现状 (8)研究本课题的意义 (9)第二章密码学概论 (11)密码学的基本概念 (11)古典密码体制 (14)对称密码体制 (14)DES (Data Encryption Standard) (16)AES(Advanced Encryption Standard) (18)公钥密码体制 (19) (21)第三章 RSA公钥密码体制 (24) (24)因子的概念 (24)素数与合数 (25)公约数与最大公约数 (26).4 互质数 (27)RSA算法 (28)RSA体制描述 (28)RSA工作原理 (28)第四章 RAS的加密与解密技术的实现 (32)RSA加密与解密代码 (32)测试的环境与工具 (34)测试的结果 (35)第五章结论 (36)结论 (36)致谢 (37)参考文献 (38)第一章引言研究背景自20世纪90年代以来,计算机网络技术得到了空前飞速的发展和广泛的应用,但网络在带给我们方便快捷的同时,也存在着种种安全危机,随着计算机应用的日益广泛和深入,信息交流和资源共享的范围不断扩大,计算机应用环境日趋复杂,计算机的数据安全问题也越来越重要。
网络安全 rsa共模攻击
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工)开发的。
RSA取名来自开发他们三者的名字。
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
2、什么是RSARSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。
即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。
RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
B)分组长度太大,为保证安全性,n 至少也要600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。
目前,SET(Secure Electronic Transaction)协议中要求CA 采用2048比特长的密钥,其他实体使用1024比特的密钥。
C)RSA密钥长度随着保密级别提高,增加很快。
这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。
它易于理解和操作,也很流行。
算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。
早在1973年,英国国家通信总局的数学家Clifford Cocks就发现了类似的算法。
但是他的发现被列为绝密,直到1998年才公诸于世。
用实例讲解RSA加密算法(精)
可能各位同事好久没有接触数学了,看了这些公式不免一头雾水。
别急,在没有正式讲解RSA加密算法以前,让我们先复习一下数学上的几个基本概念,它们在后面的介绍中要用到:一、什么是“素数”?素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。
例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。
另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。
素数也称为“质数”。
二、什么是“互质数”(或“互素数”)?小学数学教材对互质数是这样定义的:“公约数只有1的两个数,叫做互质数。
”这里所说的“两个数”是指自然数。
判别方法主要有以下几种(不限于此):(1)两个质数一定是互质数。
例如,2与7、13与19。
(2)一个质数如果不能整除另一个合数,这两个数为互质数。
例如,3与10、5与26。
(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。
如1和9908。
(4)相邻的两个自然数是互质数。
如15与16。
(5)相邻的两个奇数是互质数。
如49与51。
(6)大数是质数的两个数是互质数。
如97与88。
(7)小数是质数,大数不是小数的倍数的两个数是互质数。
如7和16。
(8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。
如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。
等等。
三、什么是模指数运算?指数运算谁都懂,不必说了,先说说模运算。
模运算是整数运算,有一个整数m,以n 为模做模运算,即m mod n。
怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。
例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。
模指数运算就是先做指数运算,取其结果再做模运算。
如53 mod 7=125 mod 7=6好,现在开始正式讲解RSA加密算法。
rsa共模攻击原理
rsa共模攻击原理
RSA算法是一种非对称加密算法,被广泛应用于安全通信领域。
其强大的安全性取决于两个大素数的难度性问题,但是在一定的条件下,攻击者仍有可能利用共模攻击的方法破解RSA加密。
所谓共模攻击指的是在针对多个RSA密钥,它们所使用的模数是
相同的情况下,通过求数学关系来破解其中的某个密钥。
在实际应用中,由于性能和时间成本的原因,使用相同的模数往往是必要的。
这
种情况下,RSA密钥中的指数d和e必须满足d×e=1 mod φ(n),其
中φ(n)是n的欧拉函数。
攻击者可以通过计算求解d或e,从而轻松
破解RSA加密。
具体来说,共模攻击流程如下:
1. 攻击者获得两个或多个RSA公钥,它们共用相同的模数n。
2. 攻击者选取一个消息m,并对其进行加密,得到密文c1=m^e1 mod n和c2=m^e2 mod n,其中e1和e2分别是两个公钥中的指数。
3. 攻击者寻找模数n和两个指数e1和e2的最大公约数
gcd(e1,e2),并将其命名为g。
4. 如果g不等于1,则说明攻击者找到了至少一个质因数p或q,并可以用它来推导RSA私钥中的指数d。
5. 通过继续计算,攻击者可以确定私钥中的指数d,并从而获得
原始消息m。
为了避免RSA共模攻击,在生成密钥时需要采取一定的措施,例如确保每个密钥使用不同的模数或将RSA私钥参数设置为随机数。
总之,在应用RSA加密算法时,必须严格遵守安全规范,以避免可能的攻击。
同时,对于RSA共模攻击,我们需要了解攻击原理和方法,并不断调整和升级加密算法来保护数据安全。
质数的安全性和加密技术
质数的安全性和加密技术随着网络的发展和人们对隐私保护的重视,加密技术正变得越来越重要。
而在加密技术中,质数又扮演着不可替代的角色。
本文将会深入探讨质数的安全性和其在加密技术中的应用。
什么是质数?质数,就是只能被1和自身整除的正整数。
比如2、3、5、7等就是质数,而6、8、9、10就不是。
质数的分布非常随机,因此我们可以通过质数的特性来加强密码的安全性。
质数的安全性首先,我们来看质数的安全性。
质数的数目是无穷的,但质数的判断已经可以使用计算机算法来完成了。
质数之间是相对的独立的,这也就保证了我们使用质数作为加密的基础之一。
当我们使用两个大质数乘起来作为密钥的时候,这个数的因子只有这两个质数。
由于质数的分布很随机,因此这种密钥更难被破解。
而且,当我们取够大的质数的时候,破解者需要花费巨大的计算量来破解密钥。
因此,使用质数作为密钥的基础,能有效保护数据的安全。
质数在加密技术中的应用质数广泛应用在了各种加密技术中。
下面,我们将探讨其中的两个热门加密算法:RSA和Diffie-Hellman。
RSA算法是一种非对称加密算法,它利用两个大质数的乘积作为密钥,实现了加密和解密的分离。
具体来说,RSA算法通过选取两个很大的质数p和q,然后计算它们的乘积n=pq,再选取一个小于n的整数e作为加密密钥。
而解密密钥则是根据p、q和e 计算出来的。
特别地,当p和q的位数越大的时候,破解的难度就会越大,因此RSA算法的安全性非常高。
Diffie-Hellman算法是一种密钥交换算法,它主要用于网络通信中。
双方需要在不泄露密钥的情况下进行密钥的交换,因此Diffie-Hellman算法主要解决了密钥共享的问题。
具体来说,Diffie-Hellman算法通过选取一个大质数p和一个小于p的整数g,然后双方各自选取一个大于0小于p的整数a和b,然后计算g^a mod p和g^b mod p,再进行交换。
最后,双方通过计算对方发来的值来得到共同密钥。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、证明素数为无限的用反证法证明。
假设素数只有有限的n个,从小到大依次排列为p1,p2,...,pn,则x = (p1·p2·...·pn)+1 显然是不能被p1,p2,...,pn中的任何一个素数整除的,因此x也是一个素数,这和只有n个素数矛盾,所以素数是无限多的。
2、针对RSA的攻击潜在攻击的分类:(1)因数分解攻击(Factorization Attack)RSA的安全性基于这么一种想法,那就是模要足够大以至于在适当的时间内把它分解是不可能的。
乙选择p和q,并且计算出n = p×q。
虽然n是公开的,但p和q是保密的。
如果甲能分解n并获得p和q,她就可以计算出。
然后,因为e是公开的,甲还可以计算出。
私密指数d是甲可以用来对任何加密信息进行解密的暗门。
有许多种因数分解算法,但是没有一种可以分解带有多项式时间复杂度的大整数。
为了安全,目前的RSA要求n必须大于300个十进制数位,这就是说模必须最小是1024比特。
即使运用现在最大最快的计算机,分解这么大的整数所要花费的时间也是不可想象的。
这就表明只要还没有发现更有效的因数分解算法,RSA就是安全的。
(2)选择密文攻击(chosen-Ciphertext attack)针对RSA的潜在攻击都基于RSA的乘法特性,我们假定丙创建了密文C = Pe mod n并且把C发送给乙。
我们也假定乙要对甲的任意密文解密,而不是只解密C。
甲拦截C并运用下列步骤求出P:(1) 甲选择中的一个随机整数X。
(2) 甲计算出。
(3) 为了解密甲把Y发送给乙并得到;这个步骤就是选择密文攻击的一个例子。
(4) 甲能够很容易地得到P,因为甲运用扩展的欧几里得算法求X的乘法逆,并最终求得。
(3)对加密指数的攻击为了缩短加密时间,使用小的加密指数e是非常诱人的。
普通的e值是e = 3(第二个素数)。
不过有几种针对低加密指数的潜在攻击,在这里我们只作简单的讨论。
这些攻击一般不会造成系统的崩溃,不过还是得进行预防。
为了阻止这些类型的攻击,我们推荐使用(或者一个接近这个值的素数)。
Coppersmith定理攻击:主低加密指数攻击称为Coppersmith定理攻击(Coppersmith theorem attack)。
该项定理表明在一个e阶的modulo-n多项式f(x)中,如果有一个根小于n1/e,就可以运用一个复杂度log n的算法求出这些根。
这个定理可以应用于C = f (P) = Pe mod n的RSA密码系统。
如果e = 3并且在明文当中只有三分之二的比特是已知的,这种算法可以求出明文中所有的比特。
广播攻击:如果一个实体使用相同的低加密指数给一个接收者的群发送相同的信息,就会发动广播攻击(broadcast attack)。
例如,假设有如下的情节:丙要使用相同的公共指数e = 3和模给三个接收者发送相同的信息。
对这些等式运用中国剩余定理,甲就可以求出形式的等式。
这就表明。
也表明是在规则算法中(不是模算法)。
甲可以求出的值。
相关信息攻击:相关信息攻击(related message attack)是由Franklin Reiter提出来的,下面我们就简单描述一下这种攻击。
丙用e = 3加密两个明文P1和P2,然后再把C1和C2发送给乙。
如果通过一个线性函数把P1和P2联系起来,那么甲就可以在一个可行的计算时间内恢复P1和P2。
短填充攻击:短填充攻击(short pad attack)是由Coppersmith提出来的,下面我们就简单描述一下这种攻击。
丙有一条信息M要发送给乙。
她先用r1对信息填充,加密的结果是得到了C1,并把C1发送给乙。
甲拦截C1并把它丢掉。
乙通知丙他还没有收到信息,所以丙就再次使用r2对信息填充,加密后发送给乙。
甲又拦截了这一信息。
甲现在有C1和C2,并且她知道C1和C2都是属于相同明文的密文。
Coppersmith证明如果r1和r2都是短的,甲也许就能恢复原信息M。
(4)对解密指数的攻击可以对解密指数发动攻击的两种攻击方式就是:暴露解密指数攻击(revealed decryption exponent attack)和低解密指数攻击(low decryption exponent attack)。
我们简单讨论一下这两种攻击。
暴露解密指数攻击很明显,如果甲可以求出解密指数d,她就可以对当前加密的信息进行解密。
不过,到这里攻击并还没有停止。
如果甲知道d的值,她就可以运用概率算法(这里不讨论)来对n进行因数分解,并求出p和q值。
因此,如果乙只改变了泄露解密指数但是保持模n相同,因为甲有n的因数分解,所以她就可以对未来的信息进行解密。
这就是说,如果乙发现解密指数已经泄露,他就要有新的p和q的值还要计算出n,并创建所有新的公钥和私钥。
在RSA中,如果d已经泄露,那么p、q、n、e和d就必须要重新生成。
低解密指数攻击:丙也许会想到,运用一个小的私钥d就会加快解密的过程。
Wiener 表示如果d < 1/3 n1/4,一种基于连分数(一个数论当中的问题)的特殊攻击类型就可以危害RSA的安全。
要发生这样的事情,必须要有q < p < 2q。
如果这两种情况存在,甲就可以在多项式时间中分解n。
在RSA中,我们推荐用来防避低加密指数攻击。
(5)明文攻击(plaintext attack)因为是相同间隔(0~n 1)的整数,RSA中的明文和密文是相互置换的。
也就是说,甲已经知道了有关明文的一些内容。
这一特征也许就会引起一些针对明文的攻击。
在这一部分中我们提到三种攻击:短信息攻击、循环攻击和公开攻击。
短信息攻击(short message attack) 在短信息攻击中,如果甲知道可能的明文组,那么她除了知道明文是密文的转换之外,还知道一些别的信息。
甲可以对所有可能的信息进行加密,直到结果和所拦截的信息相同。
例如,如果知道丙正在发送一个4位数的数字,甲就可以轻易地试验0000~9999的明文数字,来发现明文。
为此,短信息必须要在开头和结尾用随机比特进行填充,来阻止这类攻击。
强烈建议在用OAEP方法加密之前,要用随机比特填充信息。
循环攻击(cycling attack):循环攻击是基于这样一个事实,那就是密文是明文的一个置换,密文的连续加密最终结果就是明文。
也就是说,如果对所拦截的密文C连续加密,甲最终就得到了明文。
不过,甲不知道明文究竟是什么,所以她就不知道什么时候要停止加密。
她就要往前多走一步。
这样如果她再次得到了密文C,她只要返回一步就得到了明文。
对于RSA来说,这种攻击很严重吗?已经表明算法的复杂性和分解n的复杂性是相当的。
也就是说,如果n足够大,就不会有一种有效的算法可以在多项式时间内发动这种攻击。
公开信息攻击(unconcealed message attack):另一种基于明文和密文之间置换关系的攻击是公开信息攻击。
一则公开信息就是自身加密(不被隐藏)的信息。
已经证明总有一些信息是自身加密的。
因为通常加密指数是一个奇数,有一些明文如P = 0和P = 1,都是自身加密的。
如果加密指数是仔细选出来的,那就会有更多的这种信息被忽略。
如果算出来的密文和明文相同,加密程序总要在提交密文之前阻止并拒绝明文。
(6)对模的攻击正如我们在前面讨论的那样,针对RSA的主要攻击就是因数分解攻击。
因数分解攻击可以看成对低模的攻击。
不过,这种攻击已经讨论过了,我们现在集中讨论一下针对模的另一种攻击:同模攻击。
同模攻击(common modulus attack):如果一个组织使用一个共同的模n,那就有可能发动同模攻击。
例如,一个组织中的人也许会让一个可信机构选出p和q,计算出n和 (n),并为每一个实体创建一对指数(ei, di)。
现在假定丙要发送一则信息给乙。
发给乙的密文是C = mod n。
乙用他的私密指数dB来对他的信息P = mod n解密。
问题是如果甲是该组织中的一个成员,并且像我们在"低解密指数攻击"那一部分中学过的那样,她也得到了分配的指数对(eE和dE),这样她也就可以对信息解密。
运用她自己的指数对(eE和dE),甲可以发动一个概率攻击来分解n并得到鲍勃的dB。
为了阻止这种类型的攻击,模必须不是共享的。
每一个实体都要计算她或他的模。
(7)执行攻击前面所述的攻击都基于RSA的基本的结构。
正像Dan Boneh所论述的那样,有几种针对RSA执行的攻击。
这些攻击中我们论及两种:时序攻击和能量攻击。
时序攻击(timing attack):Paul Kocher精密地论证了这种纯密文攻击,我们称为时序攻击。
这种攻击基于快速指数算法。
如果私密指数d中的相关比特是0的话,这种算法只应用平方;如果相关的位是1,这种算法就既应用平方也应用乘法。
也就是说,如果相关的比特是1,完成每一个迭代需要的时序会更长。
这种时序上的不同就可以使甲逐一找出d中的比特值。
假定甲已经拦截了一个密文的一个大数,C1 ~ Cm。
我们还假定甲已经注意到乙对密文进行解密所用的时间,T1~Tm。
由于甲知道基本硬件处理乘法运算所用的时间,她就可以计算出t1~tm的值,这里ti就是计算乘法运算Result = Result×Ci mod n所需要的时间。
甲可以运用算法10.5,这是一个实践中所用算法的简化版,用来计算d (d0~dk 1)中所有的比特。
算法设置d0 = 1(因为d应该是奇数),并且计算出Ti的新值(与从d1~dk 1有关的解密时间)。
然后该算法假定下一个比特值是1。
并求出一些基于假定的D1~Dm的新值。
如果这个假定是正确的,每一个Di也许就小于相应的Ti。
不过算法运用方差(或别的相关标准)来考虑Di 和 Ti的所有变化。
如果在方差上的不同为正,算法就假定下一个比特为1;否则,就假定下一个比特为0。
然后算法计算出新的Ti并用作冗余比特。
算法10.5 针对RSA的时序攻击有两种方法可以阻止时序攻击:(1) 把随机延迟加到指数上使每一个指数所消耗的时间相同。
(2) Rivest引入了盲签名(blinding)。
这个概念就是在解密前用一个随机数乘以密文。
过程如下:能量攻击(power attack) 能量攻击和时序攻击相似。
Kocher表示,如果甲能够准确测量出解密过程中所消耗的能量,她就可以发动一个基于时序攻击原则的能量攻击。
涉及乘法和平方的迭代所消耗的能量要比只涉及平方的迭代多。
可以用来避免时序攻击的同类技术也可以用来阻止能量攻击。
3、针对ElGamal的攻击两种针对ElGamal密码系统的攻击:基于低模的攻击(low-modulus attacks)和基于已知明文的攻击(known-plaintext attack)。