第20章 应用密码学-RSA算法及安全性分析

合集下载

RSA加密算法的原理和应用

RSA加密算法的原理和应用

RSA加密算法的原理和应用在当今信息时代,数据安全问题日益严峻,各种加密算法应运而生。

其中,RSA加密算法是一种常用的非对称加密算法,被广泛应用于网络通信、电子支付等领域。

本文将从原理和应用两方面,深入探究RSA加密算法。

一、RSA加密算法的原理RSA加密算法是一种基于大数因数分解的加密方法,其核心在于利用大素数相乘很容易,但是将结果分解质因数却很困难的数学特性。

其加密过程可以简单概括如下:1. 选择两个大质数p和q,计算其积n=pq,记作公钥n;2. 求出欧拉函数φ(n)=(p-1)(q-1);3. 选择一个大于1且小于φ(n)的整数e,使得e与φ(n)互质,称e为公钥的指数;4. 利用e和n计算出公钥e(n)=(n,e);5. 求出私钥d,满足ed≡1(mod φ(n)),即d为e关于φ(n)的乘法逆元,私钥为d(n);6. 利用私钥d对明文进行加密:将明文m转化为一个整数M,计算C≡M^d (mod n),得到密文C;7. 利用公钥(e,n)对密文进行解密:计算M≡C^e (mod n),得到原文M。

二、RSA加密算法的应用RSA加密算法在网络通信、电子支付、数字证书等领域都有广泛的应用:1. 网络通信领域:RSA加密算法被广泛应用于SSL/TLS等安全协议,用于确保网站与浏览器之间的通信安全;2. 电子支付领域:RSA加密算法在电子支付中被广泛使用,用于保障交易数据的安全性,防止数据被窃取;3. 数字证书领域:RSA加密算法可以用于数字证书的签发、验证和撤销,在网络安全领域具有重要的作用。

三、RSA加密算法的安全性RSA加密算法近年来也受到一些攻击,例如对其安全性产生挑战的著名攻击就是RSA算法中的莫尔根斯谷–维纳攻击(MVG攻击)。

该攻击利用了数学算法以及硬件上的漏洞来推算出RSA加密算法中的私钥,从而破解密文。

为了强化RSA加密算法的安全性,通常使用更长的密钥长度以及结合其他加密算法或者加密协议来加强安全性。

RSA算法描述范文

RSA算法描述范文

RSA算法描述范文RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由美国麻省理工学院的三位科学家Rivest、Shamir和Adleman于1978年提出。

RSA算法是目前应用最广泛的公钥加密算法之一,被广泛应用于数据传输、数字签名、电子支付等领域。

RSA算法基于两个相对质数的乘积难解问题,其核心思想是利用数论的特性,通过大数质因数分解的困难性来实现加密和解密的过程。

RSA算法的安全性基于一个重要的数论事实:两个大质数相乘容易,但是已知其乘积后,要分解出这两个质数则非常困难。

因此,RSA算法的安全性取决于质因数分解的困难性。

首先,密钥生成。

RSA算法使用一对密钥,包括公钥和私钥。

公钥用于加密数据,私钥用于解密数据。

密钥生成的过程如下:1.随机选择两个不同的质数p和q,计算n=p*q。

n称为模数,为公钥私钥生成的基础。

2. 计算欧拉函数phi(n)=(p-1)*(q-1)。

3. 选择一个整数e,1<e<phi(n),且e和phi(n)互质。

e称为加密指数,即公钥。

4. 计算一个整数d,满足d*e ≡ 1 (mod phi(n))。

d称为解密指数,即私钥。

其次,加密和解密。

加密和解密的过程如下:1. 加密:将明文M转换为整数m,满足0≤m<n。

加密的密文C计算公式为:C = m^e mod n。

2. 解密:将密文C转换为整数c,满足0≤c<n。

解密的明文M计算公式为:M = c^d mod n。

通过上述过程,实现了对明文的加密和对密文的解密。

由于d是通过e和phi(n)计算得到的,只有知道p和q的值,才能计算出私钥d。

而质因数分解是一个非常复杂的问题,目前没有高效的算法可以在合理时间内分解出大数的质因数,因此保证了RSA算法的安全性。

1.强大的安全性:RSA算法的安全性基于质因数分解的困难性,目前尚未有高效的算法能够有效地分解大数的质因数。

2.非对称加密:RSA算法使用非对称加密,即加密和解密使用的是不同的密钥。

RSA公钥加密算法及其安全性讨论

RSA公钥加密算法及其安全性讨论

RSA公钥加密算法及其安全性讨论RSA algorithm for public-key encryption and its security摘要:RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

但是,RSA的安全性依赖于大数的因子分解,却并没有从理论上证明破译RSA的难度与大数分解难度等价,即RSA的重大缺陷是无法从理论上把握它的保密性能到底如何。

随着计算能力的不断进步和各种攻击方法的出现,RSA算法是否真的安全。

关键词:RSA,公钥,加密,大数分解,攻击,安全性1 RSA加密算法1.1公钥简介密码体制按密钥类型分为对称密钥和不对称密钥。

对称密钥即加密、解密用的是同一个密钥,又称为私钥。

不对称密钥即公钥加密,加密、解密用的是不同的密钥,一个密钥“公开”,即公钥,另一个自己秘密持有,即私钥,加密方用公钥加密,只有用私钥才能解密——史称公钥加密体系:PKI。

1.2 RSA算法简介RSA加密算法是一种非对称加密算法。

RSA加密算法是Ron Rivest、Adi Shamirh和Len Adleman于1977年在美国麻省理工学院开发出来的,次年首次对外公开宣布,是第一个既能用于数据加密也能用于数字签名的算法。

RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA是建立在“大整数的素因子分解是困难问题”基础上的,其安全性取决于大数分解,也就是大数分解质因数的困难性。

换言之,对一极大整数做因式分解愈困难,RSA演算法愈可靠。

假如有人找到一种快速因式分解的演算法的话,那么用RSA加密的信息的可靠性肯定会急剧下降,但找到这样的演算法的可能性是非常小的,今天只有短的RSA钥匙才可能被强力方式解破。

到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。

信息安全论文——RSA加密算法介绍及实现

信息安全论文——RSA加密算法介绍及实现

信息安全论文——RSA加密算法介绍及实现XXXXX信息安全xx论文RSA加密算法实现Administrator学号:xxxxxxxxxxRSA加密算法介绍及实现一、实验原理RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和Len Adleman 在(美国麻省理工学院)开发的。

RSA取名来自开发他们三者的名字。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

RSA的算法涉及三个参数,n、e1、e2。

其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。

(n及e1),(n及e2)就是密钥对。

RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;e1和e2可以互换使用,即:A=B^e2 mod n;B=A^e1 mod n。

二、RSA 的安全性RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA就一定需要作大数分解。

假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。

目前, RSA 的一些变种算法已被证明等价于大数分解。

不管怎样,分解n是最显然的攻击方法。

现在,人们已能分解多个十进制位的大素数。

因此,模数n 必须选大一些,因具体适用情况而定。

三、本程序实现的功能本程序的功能比较简单,基于C++语言实现RSA的算法,实现英文字母的加密以及解密。

浅析RSA算法的安全性

浅析RSA算法的安全性

浅析RSA算法的安全性1 RSA 公钥密码算法简介1978年美国麻省理工学院(MIT)的研究小组成员李维斯特(R.L.Rives)、沙米尔(A.Shamir)和艾德勒曼(L.Adelman)在杂志IEEE上发表论文,提出了一种以幂模函数为密码算法的公钥体制,通称RSA公钥密码体制。

它是一种比较典型的公开密钥加密算法,也是迄今为止理论上最为成熟和完善的一种公钥密码体制。

普遍认为是一个比较理想的公钥体制,到目前为止,仍不失为最有希望的一种公钥密码体制。

1.1 RSA 公钥密码算法的数学基础同大多数公钥密码体制一样,RSA的安全性主要取决于构造其加密算法的数学函数的求逆的困难性,我们称这样的函数为单向函数。

单向函数在密码学中起一个中心作用。

它对公钥密码体制的构造是非常重要的。

单向函数的研究是公钥密码体制理论中的一个重要课题。

但是,虽然很多函数(包括RSA算法的加密函数)被认为或被相信是单向的,但目前还没有一个函数能被证明是单向的。

所谓“单向函数”就是极难求得其反函数的函数。

单向函数是贯穿整个公钥密码体制的一个核心概念。

RSA的基础是数论的欧拉定理。

欧拉定理:若整数a和n互素,则a?渍(n)≡1 mod n其中?准(n)是比n小但与n互素的正整数个数。

推论(Fermat):若p是素数,(a,p)=1,则ap-1≡1 mod p1.2 RSA加密算法的流程1) 找到三个数:p, q, d,其中p和q是两个相异的质数,d是与(p-1)(q-1)互质的数。

计算出n=pq。

2) 寻找另一个数e,使得ed ≡1 mod ?准(n)。

因为d与?准(n)互质,所以用辗转相除法一定可以找到e。

3) 把{n, e}公开,作为公钥,(n, d)就是私钥;加密时,将待加密信息M看成一个大整数,假设M<n,计算c = me mod n ,显然o<c<n, c就是加密后的信息。

注意,这里的假设条件总是可以成立的,因为当m ≥ n 的话,我们可以将m表示成s进位(s ≤ 通常s=“2t),则每一位数均小于n,然后就可以分段应用上面的方法加密。

安全课件第20讲-rsa算法及安全性分析

安全课件第20讲-rsa算法及安全性分析

RSA算法的安全性分析
密码分析者攻击RSA体制的关键点在于如何分解n若分解成功使n=pq,则可以算出φ(n)=(p-1)(q-1),然后由公开的e,解出秘密的d若使RSA安全,p与q必为足够大的素数,使分析者没有办法在多项式时间内将n分解出来 n取1024位或取2048位,这样p、q就应该取512位和1024位。
密钥大小
MIPS年
512比特
768比特
1024比特
2048比特
RSA算法的安全性分析
为了抵抗现有的整数分解算法,对RSA模n的素因子p和q还有如下要求(即是强素数): (1) p-1 和q-1分别含有大素因子p1和q1 (2) P1-1和q1-1分别含有大素因子p2和q2 (3) p+1和q+1分别含有大素因子p3和q3
RSA算法的实现
实现的步骤如下:Bob为实现者 (1) Bob寻找出两个大素数p和q (2) Bob计算出n=pq 和φ(n)=(p-1)(q-1) (3) Bob选择一个随机数e (0<e< φ(n)),满足(e,φ(n))=1 (4) Bob使用辗转相除法计算d=e-1(modφ(n)) (5) Bob在目录中公开n和e作为公钥密码分析者攻击RSA体制的关键点在于如何分解n。若分解成功使n=pq,则可以算出φ(n)=(p-1)(q-1),然后由公开的e,解出秘密的d
Euler 函数举例
设p=3, q=5, 那么 φ(15)=(3-1)*(5-1)=8 这8个模15的剩余类是: {1,2,4,7,8,11,13,14}
Euler定理、Fermat定理
Euler定理:设 x 和 n 都是正整数,如果gcd(x,n)=1,则 x φ(n)≡1 (mod n).Fermat定理:设 x 和 p 都是正整数,如果gcd(x,p)=1,则 x p-1≡1 (mod p).

rsa加密算法在网络安全世界的用途

rsa加密算法在网络安全世界的用途

rsa加密算法在网络安全世界的用途【篇一:rsa加密算法在网络安全世界的用途——构建安全通信的基石】引言在数字化时代,网络安全已成为各行各业不可忽视的重要议题。

RSA加密算法,作为一种非对称加密算法,凭借其强大的安全性和广泛的应用性,在网络安全领域扮演着举足轻重的角色。

本文将深入探讨RSA加密算法在网络安全世界的用途,特别是其在构建安全通信方面的基石作用。

一、RSA加密算法的基本原理RSA加密算法的安全性基于大数分解的复杂性。

简而言之,它是在具体加密时,使用公钥对数据明文进行加密;解密时,使用私钥对密文进行解密。

二、RSA加密算法在网络安全中的应用1.安全通信保护:RSA加密算法是安全通信协议的核心组成部分。

在安全通信中,服务器使用RSA私钥加密随机生成的对称密钥,并将加密后的密钥发送给客户端。

客户端使用RSA 公钥解密密钥,并使用该密钥加密通信数据。

这样,即使数据在传输过程中被截获,也无法被解密,从而保证了通信的安全性。

2.电子邮件加密:RSA加密算法还可以用于电子邮件的加密。

发送方可以使用接收方的公钥对邮件内容进行加密,只有持有对应私钥的接收方才能解密邮件内容。

这样,即使邮件在传输过程中被截获,也无法被读取,保护了邮件的私密性。

3.数字签名:RSA加密算法还可以用于数字签名,确保数据的完整性和真实性。

发送方使用私钥对数据的哈希值进行签名,接收方使用公钥验证签名。

如果签名验证通过,则说明数据在传输过程中未被篡改,保证了数据的完整性。

三、RSA加密算法的优缺点优点:-安全性高:基于大数分解的复杂性,RSA加密算法具有很高的安全性。

-应用广泛:RSA加密算法不仅可以用于数据加密,还可以用于数字签名和身份认证等多种应用场景。

缺点:-运算速度慢:RSA加密算法的运算速度相对较慢,不适合用于大量数据的加密。

-密钥管理复杂:RSA加密算法需要管理公钥和私钥两套密钥,增加了密钥管理的复杂性。

四、总结RSA加密算法在网络安全世界中具有广泛的应用和重要的价值。

RSA加密算法的安全性分析

RSA加密算法的安全性分析

RSA加密算法的安全性分析向进【摘要】RSA加密算法是一种使用较多、安全性较高的非对称加密算法,分析了非对称加密体制中RSA加密算法的数学基础,讨论了其破译的可能方法,并根据目前的计算机运行速度,计算了常用的密钥长度破译时所需时间,并对RSA算法的安全性进行了定量分析.【期刊名称】《吉首大学学报(自然科学版)》【年(卷),期】2011(032)001【总页数】3页(P42-44)【关键词】RSA;数据加密;数据安全;密钥破解【作者】向进【作者单位】湘西经济贸易学校,湖南,吉首,416000【正文语种】中文【中图分类】TP393随着网络技术的迅速发展和应用,人们已越来越依赖于计算机网络,现在人们普遍将互联网作为信息传送的平台,但在互联网上进行信息的传送存在许多不安全因素.为了确保重要信息在网上安全传输,目前采用的措施主要有3种[1]:安全信道、加密技术和信息隐藏,其中加密技术是应用最广的一种,虽然目前理论上没有不能被破解的加密算法,但只要加密后的数据在要求的时间内不被破解,数据就是安全的.目前的密码体制分为对称密码体制和非对称密码体制2种,非对称密码体制的密钥的管理和传送很方便,在通过网络传输信息时,公钥密码算法体现出了单密钥加密算法不可替代的优越性,其中公钥密码体制的算法中最著名的代表是RSA算法[2],RSA算法的安全性问题尚未得到理论上的证明[3],笔者就其安全性进行了一定的分析.RSA算法是一个基于初等数论定理的公钥密码体制加密算法,它的实现过程为:选取2个大素数p与q,然后算出n=pq,φ(n)=n-p-q+1,再选取一个正整数e,使之满足(e,φ(n))=1,1<e<φ(n);再求出正整数d,使之满足1<d<φ(n),且使de≡1modφ(n).RSA体制的公钥是<n,e>,而密钥是< n,d>.明文消息m满足0≤m<n,加密过程为m的e次方用n除后所得的余数,即为密文c;解密过程为c的d次方用n 除后所得的余数,即为明文m.例取2个质数p=11,q=13,p和q的乘积为n=p×q=143,算出φ(n)=n-p-q+1=120;再选取一个与φ(n)互质的数,例如e=7,则公开密钥=<n,e>=<143,7>.对于这个e值,用欧几里德扩展算法可以算出其逆:d=103.因为e×d=7×103=721,满足e×d mod z=1;即721 mod 120=1成立.则秘密密钥=<n,d>=<143,103>,设发送方需要发送机密信息(明文)m=85,发送方已经从公开媒体得到了接收方的公开密钥<n,e>=<143,7>,于是发送方算出加密后的密文c=memod n=857 mod 143=123并发送给接收方.接收方在收到密文c=123后,利用只有他自己知道的秘密密钥计算m=cd mod n=123103mod 143 =85,所以,接收方可以得到发送方发给他的真正信息m=85,实现了解密.用RSA体制加密时,先将明文数字化再进行加密,在实际应用中m值的长度一般要远大于n的长度,因此实际加密消息m时,首先将它分成比n小的数据分组(采用二进制数,选取小于n的2的最大次幂),再每组单独加密和解密.比如说,选用的p和q为100位的素数,那么n将有200位,每个数据分组应小于200位长,但为保证安全性,每个数据的长度应尽量接近n的长度.目前密码的破译主要有2种方法.方法之一是密钥的穷尽搜索,其破译方法是尝试所有可能的密钥组合.虽然大多数的密钥尝试都是失败的,但最终有一个密钥让破译者得到原文,这个过程称为密钥的穷尽搜索.方法之二是密码分析.由于RSA算法在加密和解密过程都是用指数计算,其计算工作量巨大,用穷尽搜索法进行破译是根本不可能的.因此要对RSA算法加密后的信息进行破译只能采用密码分析法,用密码分析法攻击RSA密码系统,途径之一是直接计算“n的e次方根”,但目前还没有解决这一问题的算法,这个问题是现实不可计算的问题;途径之二[4]是想办法计算出d,欲得到d,可考虑从以下3个方面入手.(1)将数n分解因子.密码分析员一旦分解出n的因子p和q,就可以先后求出φ(n)和d,从而攻破RSA公开钥密码系统.由此得出如下结论:破译RSA密码不可能比分解因子的问题更困难.(2)不分解n的因子计算φ(n).显然,如果密码分析员能够求出φ(n),由于e是公开的,就可以通过de≡1(modφ(n))算出d,从而攻破RSA密码系统.但是,一旦密码分析员知道了φ(n),他就可以很容易地分解出n的因子.究其原因为所以,由n及φ(n)可以计算出(p+q).有了(p+q),就可以通过求出(p-q),因而最终解出p和q.计算φ(n)的方法并不比分解n的因子容易,换言之,通过计算φ(n)破译RSA密码的方法不会比通过分解n的因子破译RSA密码的方法更容易.(3)不分解n的因子或计算φ(n)确定d.如果能够知道d,分解n的因子问题也同样会变得容易起来.因为φ(n)=(ed-1)×k,其中k为任意整数,已知d(e是公开的)时,可求出φ(n),根据φ(n)=n-(p +q)+l,由于n是已知的(公开的),在求出φ(n)时可求出p+q,设求出的p+q=r,又由于n=p×q,从而可得p×p-p×r+n=0,这是一个一元二次方程,自然可非常简单求出p,同理可求出q,分解n完成.G.L.M iller在1975年指出,利用φ(n)的任何倍数都可以容易地分解出n的因子.因此,用M iller算法就可以由(ed-1)分解出n的因子,也就是说计算d并不比分解n 的因子更容易.密码分析员还可能希望找到某个与d等价的d′,从而攻破RSA密码.但是,所有这样的d′只相差(p-1)和(q-1)的最小公倍数的整数倍,因此,找到一个这样的d′就可以使分解n的因子问题变得容易起来,也即找到这样的d′并不比分解n的因子更容易.综上所述,破译RSA密码系统和分解因子问题同样困难,尽管目前还不能完全证实它,即在目前状况下,如果参数p,q和e选取恰当的话,RSA的加密强度,就取决于的抗因子分解强度.著名数学家费马(1601—1665)和勒让德((1752—1833)都研究过分解因子的算法,现代某些更好的算法是勒让德方法的扩展.其中,R.Schroeppel算法是好算法中的一类,用此法分解因子仍然需要大约次运算,其中ln表示自然对数,可见分解n所需的运算次数与密钥的长度有关,随着密钥长度的增加,分解所需的时间会成指数倍增加.对于不同长度的十进制数n,Schroeppel算法分解n的因子时所需的运算次数如表1所示.若用1台1 s能进行1亿次因子分解的高速计算机来计算,分解十进制长度为200位的n,其所需时间为3 800 000年.由此可见,对于RSA系统,如果用一个长度为200位(十进制)的n,认为它是比较安全的,如果n的长度更长,因子分解越困难,一般来说,每增加10位二进制数,分解的时间就要加长1倍.密码就越难以破译,加密强度就越高.不过随着计算机运算速度的提高和并行计算的发展,破解的速度也会同步提高,这时可能要求使用更长的密钥.70年代末,RSA算法的3个发明人曾经提出一道RSA 129挑战问题.在其后的近20年里,该问题竟然无人敢于问津,密底似乎将永远不会揭开.1993年,在美国Bellcore公司A rjen Lenstra,Derek A tkins,M ichael Graff和Paul Leyland的领导下,一个国际研究小组决定接受16年前Rivest教授等人在《科学美国人》杂志上提出的挑战.他们之所以能这样做,主要因为近20年来,计算机运算速度突飞猛进的提高,在大数分解理论上也有新的突破.该小组在国际互联网上集合来自世界各地的志愿参加者,向他们分发因数分解软件.这个分解软件可以利用计算机的空闲时间进行RSA 129的公开钥匙分解工作,可以自动避免与用户工作时间的冲突.每个参加者都领取了不同的因数分解子任务,在自己的计算机上独立运算,然后把计算结果寄回M IT总部,列表归纳.到1994年4月,共有600余名志愿者参加了这项破译活动.他们总共动用了1 600多台工作站、大型机和超级计算机,花费了8个月的时间,终于分解了RSA 129问题中的公开钥匙.在2005年有研究人员破解了RSA 640问题中的公开钥匙[5].不过破解的难度随着n长度而不断增加,因此可以根据被加密文件的重要程度及对加密时间的要求这2个因素来选择n的长度,这种选择密钥长度的灵活性(密钥长度决定保密的等级)是许多密码系统所没有的,是RSA算法的一个特点.通常选取n=512,1 024,2 048 bit.就目前的计算机水平用1 024位二进制(约340位十进制)的密钥是安全的,2 048位是绝对安全的.RSA实验室认为,n=512已不够安全,应停止使用,目前个人需要用n=668,公司要用n=1 024,极其重要的场合应该用n=2 048.RSA的安全性依赖于大数的因子分解,这样攻击RSA系统的难度就是大整数因子分解的难度,一般认为这是一个NPC问题,尽管尚未在理论上证明分解因子的问题一定困难,但千百年来经过众多学者的研究,迄今没有找到一种有效算法,绝大多数数论学家倾向于认为不存在大整数因子分解的多项式算法,因此目前这一破译只能依赖于现代的计算机技术,用程序进行尝试分解,从而对大数的因子分解.不过随着计算机运算速度的提高和并行计算的发展,加上因子分解方法的改进,低位数的密钥的破解已成为可能.因子分解需的时间随密钥长度的增加而成指数指增加,只要n的长度达到一定要求,并且参数p,q和e选取恰当的话,RSA系统是相当安全的.【相关文献】[1] 夏煜,郎荣玲,戴冠中,等.基于图像的信息隐藏分析技术综述[J].计算机工程,2003,29(7):1-3.[2] 邱梅,罗守山,刘文.利用RSA密码体制解决安全多方多数据排序问题[J].电子学报,2009,27(5):1 119-1 123.[3] 姜正涛,怀进鹏,王育民.RSA推广循环攻击实效性与弱模问题的研究与分析[J].通信学报,2009,30(6):70-74.[4] 谢建全,阳春华.RSA算法中几种可能泄密的参数选择[J].计算机工程,2006,32(16):118-120.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RSA 算法及安全性分析
量子密码研究室
王滨
2005.4.13
Euler 函数
所有模m和 同余的整数组成剩余类 同余的整数组成剩余类[r] 所有模 和r同余的整数组成剩余类 剩余类[r]中的每一个数和 互素的充要条件是 剩余类 中的每一个数和m互素的充要条件是 和m互素 中的每一个数和 互素的充要条件是r和 互素 互素的同余类数目用φ(m)表示,称m的Euler函数 表示, 和m互素的同余类数目用 互素的同余类数目用 表示 的 函数 当 m是素数时 , 小于m的所有整数均与 互素 , 因此 是素数时, 小于 的所有整数均与m互素 是素数时 的所有整数均与 φ(m)=m-1 对n=pq, p和q 是素数,φ(n)=φ(p)φ(q)=(p-1)(q-1) 和 是素数,
2
作业
1.求φ(160)、 φ(72) 。 、 2.P98-5.3,5.4。
Euler 函数举例 函数举例
设p=3, q=5, 那么 φ(15)=(3-1)*(5-1)=8 ) ( ) ) 个模15的剩余类是 这8个模 的剩余类是: 个模 的剩余类是: {1,2,4,7,8,11,13,14} , , , , , , ,
Euler定理、Fermat定理 定理、 定理 定理
2 ×108 3 × 1011 3 × 1020
RSA算法的安全性分析 算法的安全性分析
为了抵抗现有的整数分解算法, 为了抵抗现有的整数分解算法,对RSA模n的素因子 模 的素因子 p和q还有如下要求(即是强素数): 和 还有如下要求 即是强素数) 还有如下要求( (1) p-1 和q-1分别含有大素因子 1和q1 分别含有大素因子p 分别含有大素因子 (2) P1-1和q1-1分别含有大素因子 2和q2 分别含有大素因子p 和 分别含有大素因子 (3) p+1和q+1分别含有大素因子 3和q3 分别含有大素因子p 和 分别含有大素因子
密码分析者攻击RSA体制的关键点在于如何分解 。若分 体制的关键点在于如何分解n。 密码分析者攻击 体制的关键点在于如何分解 解成功使n=pq,则可以算出φ(n)=( ,则可以算出 =(p-1)(q-1),然后由公 解成功使 =( , 开的e,解出秘密的d 开的 ,解出秘密的
RSA算法编制 算法编制
如果用MIPS年表示每秒钟执行一百万条指令 年表示每秒钟执行一百万条指令 如果用 的计算机计算一年时间的计算量, 的计算机计算一年时间的计算量,下表给出了不同 比特的整数的因子分解所需的时间。 比特的整数的因子分解所需的时间。
密钥大小 512比特 768比特 1024比特 2048比特
MIPS年
3 ×104
设 p=7, q=17, n=7*17=119; 参数T={n=119}; p=7 q=17 n=7 17=119; 参数T={n=119} 17, T={n=119 φ(n)=(7-1)(17-1)=96; (n)=(7 )(17 )=96 1796; 选择e= 选择e=5, gcd(5,96)=1; e=5 gcd(5 96)= )=1 计算d, 计算d, ( d*e) mod 96=1; d=77; 96= d=77 77; 设:明文m=19 明文m= m=19 加密:(19)5 mod 119 = 66 加密: 19) 脱密:(66)77 mod 119 = 19 脱密: 66) 公钥pk= 公钥pk=5; pk=5 私钥sk=77; 私钥sk=77; sk=77
参数T={N}; 参数T={N}; T={N} 私钥SK=D; 私钥SK=D; SK=D 公钥PK=E; 公钥PK=E; PK=E 设:明文M,密文C,那么: 明文M 密文C 那么: 用公钥作业:ME mod N = C 用公钥作业: 用私钥作业: 用私钥作业:CD mod N = M
RSA算法举例 算法举例
RSA算法的安全性分析 算法的安全性分析
密码分析者攻击RSA体制的关键点在于如何分解 体制的关键点在于如何分解n 密码分析者攻击 体制的关键点在于如何分解 若分解成功使n=pq,则可以算出 ,则可以算出φ(n)=(p-1)(q-1), 若分解成功使 = , 然后由公开的e,解出秘密的 然后由公开的 ,解出秘密的d 若使RSA安全,p与q必为足够大的素数,使分析者 安全, 与 必为足够大的素数 必为足够大的素数, 若使 安全 没有办法在多项式时间内将n分解出来 没有办法在多项式时间内将 分解出来 n取 1024位或取 取 位或取2048位 , 这样 、 q就应该取 位或取 位 这样p、 就应该取 512位和 位和1024位。 位和 位
实现的步骤如下: 实现的步骤如下:Bob为实现者 为实现者
(1) Bob寻找出两个大素数 和q 寻找出两个大素数p和 寻找出两个大素数 (2) Bob计算出 计算出n=pq 和φ(n)=(p-1)(q-1) 计算出 (3) Bob选择一个随机数 (0<e< φ(n)),满足 φ(n))=1 选择一个随机数e 选择一个随机数 ,满足(e,φ (4) Bob使用辗转相除法计算 使用辗转相除法计算d=e-1(modφ(n)) 使用辗转相除法计算 φ (5) Bob在目录中公开 和e作为公钥 在目录中公开n和 作为公钥 在目录中公开
RSA算法的安全性分析 算法的安全性分析
建议选择p和 大约是 大约是100位的十进制素数 建议选择 和q大约是 位的十进制素数 模n的长度要求至少是 比特 的长度要求至少是512比特 的长度要求至少是 EDI 攻击 标准 使用的 RSA 算 法中规 定 n的长 度 为 512 至 攻击 的长 1024比特位之间,但必须是128的倍数 比特位之间,但必须是 比特位之间 的倍数 国际数字签名标准ISO/IEC 9796中规定 的长度位 中规定n的长度位 国际数字签名标准 中规定 的长度位512比 比 特位
不动点分析
定义 如果
me mod N = m
RSA的一个不动点 的一个不动点。 则称 m 为RSA的一个不动就是明文,因而直
接暴露了明文。 接暴露了明文。 (2) 利用不动点m可能分解大合数N 利用不动点m可能分解大合数N。
下节内容
EIgamal公钥算法 公钥算法 ECC算法 算法 RSA的快速实现 的快速实现 1
Euler定理:设 x 和 n 都是正整数,如果 定理: 都是正整数, 定理 gcd(x,n)=1,则 x φ(n)≡1 (mod n). , Fermat定理 设 x 和 p 都是正整数,如果 定理:设 都是正整数, 定理 gcd(x,p)=1,则 x p-1≡1 (mod p). ,
RSA算法的实现 算法的实现
RSA算法的安全性分析 算法的安全性分析
其它参数的选择要求: 其它参数的选择要求: (1) |p-q|很大,通常 p和q的长度相同; 很大, 的长度相同; 很大 和 的长度相同 (2)p-1和q-1的最大公因子要小; 和 的最大公因子要小; 的最大公因子要小 (3)e的选择; 的选择; 的选择 (4)d的选择; 的选择; 的选择 (5)不要许多的用户共用一个 。 不要许多的用户共用一个n。 不要许多的用户共用一个
相关文档
最新文档