第10讲 非对称密码体制(续1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- 解密: 将对应的密文“2756 2001 0542 0669 2347 0408 1815” SK=167=10100111 =27+25+22+21+20
=128+32+4+2+1
M=2756167 (mod 2867) =2756128 · 275632· 27564· 27562· 27561(mod 2867)
应 用 密 码 学
张仕斌 万武南 张金全 孙宣东编著
西安电子科技大学出版社 二00九年十二月
2014-2-13 1
第5章 非对称密码体制
2014-2-13
2
知识点:
◇非对称密码体制的数学基础 ◇非对称密码体制的原理、设计准则及分类
◇ RSA密码算法
◇ ElGamal密码算法 ◇ 椭圆曲线密码算法 ◇ 其他非对称密码体制简介
m满足0<m<n。加密P时,计算C=Pe(mod n),解密C时计算P= Cd(mod n)。由于模运算的对称性,可以证明, 在确定的范围内,加密和解密函数是互逆的。 为实现加密,需要公开(e, n),为实现解密需要(d, n)。
2014-2-13 19
5.4.4 RSA算法的安全性及常用攻击
通过对RSA算法的学习,我们可以看到,因为{e,n}为公开密钥 ,破解 RSA算法最直接的方法,就是分解 n,计算n=p×q,φ(n)=(p1)×(q-1), 通过d×e≡1modφ(n)求出d。所以说,RSA算法的安全性 是基于分解大整数的难题的。 随着科学技术的不断发展,人类计算能力的提高,大整数分解
素数。
P1是素数时,形如p=2p1+1的素数通常称为安全素数。
2014-2-13
24
RSA的安全性-不同用户选用的素数不能相同
不同用户选用的素数不能相同
若用户B1与B2选用了同一个素数p,设n1=pq1与n2=pq2分别是他们
的模数,那么任何人都可以用欧几里德算法求得 (n1,n2)=p,从而得
到n1与n2的分解式。 当然,就是有用户选用了相同的素数,遭到攻击的可能性也是 微乎其微,但我们应该尽量避免。 但一个用户选择的素数别的用户是不知道的,所以,如果是密
由已知可得n=pq=13*23=299,φ(n)=(p-1)(q-1)=12*22=264。
264=29*9+3 29=3*9+2 3=2+1 1=3-2=3-(29-3*9) =3*10-29=(264-29*9)*10-29 =264*10-29*91 -91≡173mod264
由欧几里德扩展算法可得:d为173。
是奇数。
(4)因为满足gcd(φ(n),e)=1,即φ(n)与e互素。故e模φ(n)的逆
一定存在,可以通过扩展欧几里德算法求得。
2014-2-13 12
(5)加密的时候,要求明文m要小于n。因若m>n,由于计算
时使用了模运算,则不能通过解密算法正确求得明文m,只能得到 比n小且与m mod n同余的整数。 (6)至于密钥生成过程中的p,q,φ(n),一般的说法是安全地销 毁。由孙子定理,p,q也可用于提高RSA算法的解密速度。
现了 Diffie 和 Hellman 提出的思想的一种算法,简称 RSA 算法 ,即为三个人的名字的首字母的缩写。
2014-2-13
4
但据英国政府声称,他们在切尔特汉姆的政府通讯总部很早就 发明了公开密钥密码术。 1969 年年初.英国军方请求詹姆斯 · 埃利斯.一位前英国政府 的密码专家,找到一种能应付密钥分发问题的方法。埃利斯的个性 有点古怪。他很骄傲地吹嘘他在出生前就绕着地球转了半圈 ——他 是在英国受孕的,却是在澳大利亚出生的。 埃利斯的想法与笛福、赫尔曼和摩科尔的想法很相似,只是比 他们提前了好几年。然而,没有人知道埃利斯的工作.因为他是英 国政府的雇员,而且要发誓保密。到1969年末,埃利斯看来已经陷 入了僵局,这和斯坦福小组1975年陷入的僵局是同样的。他已证明 公开密钥是可能的,他也发明了公开密钥和私人密钥的概念。他也 知道他需要发现一种特殊的单向函数,这个单向函数在知道某些特 殊信息后可以逆转。
- 加密: •例:明文=“RSA ALGORITHM‖
(1) 明文用数字表示 空白=00, A=01, B=02, …, Z=26 (两位十 进制数表示) 1819 0100 0112 0715 1809 2008 1300
(2) 利用加密变换公式 C=mPK mod r, 即C = 18191223 mod 2867=2756
2014-2-13 14
(1)加密过程:设RSA算法的参数选择如上所述,当消息m=9所 对应的密文的计算过程为:929 mod 299=211 (2)解密过程:211173 mod 299≡9
这个过程可以采用平方乘算法或者模重复平方算法进行运算。
2014-2-13
15
•用RSA算法加密与解密的过程举例:
钥的产生由一个安全机构负责,才可能是一个需要注意的问题。
RSA的评价
RSA方法在理论上存在一个空白点,即不能确切知道它的保
密性能如何,能够作出的结论是:攻破RSA公开密钥系统不会比分
解因子的问题更困难。 这个结论并不排除找到一个破译RSA密码的有效算法,但找不 到相应的分解因子的快速算法的可能性。
2014-2-13
21
RSA的安全性-依赖大数分解
因为基于大整数分解的公开密钥体制的安全性依赖于大整数
(大合数分解)问题,所以RSA的安全性完全依赖于大数分解问
题。 但这只是一个推测,目前,还未能从数学上证明由d和e计算 它也就成为大数分解的一个新方法。而且这种方法并不比分解n
出m一定需要分解n。然而,如果新方法能使密码分析者推算出d,
例:q=313,p=311,则n=97343, (q+p)2 =389376 4n=389372, 则(q+p)2-4n=4,很简单就得到了k的值。 所以,q, p的差必须很大,最好差几个比特位。
2014-2-13 23
• p-1和q-1都应有大的素因子。
一般是选择两个大素数p1与q1,使得p=2p1+1与q=2q1+1也是
(7)这里介绍的只是理论上的RSA,在实践中使用RSA算法时
,还有一些注意事项,请关注后面的讨论。
(8)在公钥密码体制中,通常认为公钥具有较长的使用周期,
如1年或者三五年,就像学生证或者工作证一样,在一定时间内可 以认为代表了公钥持有者的身份。
2014-2-13 13
5.4.3 RSA算法举例
例5:在RSA算法密钥产生过程中,设p=13,q=23,取公钥e=29,则 私钥d可以用欧几里德扩展算法求出。
•对RSA算法的几点说明:
(1)对算法的理解,要放到保密通信模型中去。百度文库始学习时,
读者容易陷入去记忆和理解算法而忽视了算法应用的背景。
(2)按现在的计算能力,大素数p和q的大小,按二进制计算 长度,应该在512比特左右,且p和q只相差几个比特。关于这一点 ,后面还有说明。 (3)大素数p和q是奇数,φ(n)= (p-1)×(q-1)是偶数,故e一定
2014-2-13
8
• 把该算法用于保密通信模型中,可以有如下图所示的保密 通信示意图。
2014-2-13
9
RSA算法解密的正确性证明
证明:由加密过程知c≡me mod n,所以
cd mod n≡med mod n≡m1 mod φ(n) mod n≡mkφ(n)+1 mod n
下面分两种情况:
PK=1223=10011000111 =210+27+26+22+21+20 =1024+128+64+4+2+1 C=18191223 (mod 2867) =18191024 · 1819128· 181964· 18194· 18192· 18191(mod 2867) =2756
依次加密得到密文: 2756 2001 0542 0669 2347 0408 1815
- 密钥的选取: 例:p=47, q=61, (n)=(47-1)(61-1)=2760(n=47x61=2867)时, SK=167(d)是否为秘密密钥的候选者?
用欧几里得算法计算:gcd(2760,167)=1
而PK(e)的选取满足: de≡1 mod (n) 用扩展的欧几里德算法,求得d的逆元e=1223。
RSA的安全性-为什么要保密p,q,d
d是私钥,当然要保密。为什么要保密p,q?也就是说为 什么RSA是基于大数分解难题的? 因为知道了p和q,也就是说知道了n的因子分解,就可以 根据ed≡1 mod (n), 由e求出d.
算出Euler函数(n)=(p-1)(q-1), 也就可以利用辗转相除法,
2014-2-13 5
数学基础: Euler定理,并建立在大整数因子分解的困难 性之上。
定理1( Euler定理) 设m是大于1的整数, (a, m) 1, 则 a ( m ) 1 (mod m).
5.4.2 RSA算法描述
1.密钥产生
明文空间P = 密文空间C = Zn A.密钥的生成 (1)选两个大素数p和q。
2014-2-13 7
B.加密 (用e,n) 加密时首先将明文比特串分组,使得每个分组对应的十进 制数小于n,即分组长度小于log2 n。然后对每个明文分组m,
作加密运算:
c≡me 即:明文:M<n mod n
密文:C ≡ Me(mod n).
C.解密 (用d,p,q) 密文:C 明文:M ≡ Cd(mod n)
容易。
2014-2-13
22
RSA的安全性- |q – p|要大
*** |q–p|要大: 设q-p=k, 则: (q+p)2-(q-p)2=4pq=4n (q+p)2= (q-p)2 +4n=k2+4n
如果k的值小,则可以容易找到这样的k,使得k2+4n是一个完 全平方数,从得出q+p和q-p的值,联立求解可得到q、p。
2014-2-13
3
5.4 RSA密码算法
5.4.1 RSA算法简史
1976年,Diffie和Hellman发表了非对称密码的奠基性的论
文“密码学的新方向”,建立了公钥密码的概念。
1978年,麻省理工学院的 Rivest、Shamir和Adleman在他
们的论文“获得数字签名和公钥密码系统的一种方法”中,实
=1819
依次解密得到明文: 1819 0100 0112 0715 1809 2008 1300
RSA算法归纳
•选择两个大素数p和q,通常要求每个均大于10150。 计算n=pxq和z=(p-1)(q-1)。
选择一与z互素的数、令其为d 。
找到一个e满足e×d=1 (mod z)。
选好这些参数后,将明文划分成块,使得每个明文报文P长度
(2)计算 n=p×q, (n)=(p-1)(q-1),其中 (n) 是 n 的欧拉函 数值。
(3)选一整数e,满足1<e< (n),且gcd((n),e)=1。
(4)计算d,满足de≡1 mod (n) ,即d是e在模 (n)下的乘法 逆元。
(5){e,n}为公钥,{d,n}为私钥。
的理论和实现也取得了很大进展。RSA-155(即n为155位的十进制
,约512比特)于1999年8月被成功分解,得到两个78位的十进制素 数。因此在使用RSA的时候,要注意密钥的大小,现在使用的RSA 的n的长度一般是1024比特,估计在未来一段比较长的时间里,n的 长度为2048比特是安全的。
2014-2-13 20
① m与n互素。由Euler定理得
mφ(n)≡1 mod n, 则mkφ(n)≡1 mod n, 故mkφ(n)+1≡m mod n
即cd mod n≡m。
② gcd(m,n)≠1,即m与n不互素。m与n不互素且m<n, 意味着
m要么是p的倍数,要么q的倍数,不可能既是p的倍数也是q的倍数 (否则m也是q的倍数,从而是pq的倍数,与m<n=pq矛盾)。
2014-2-13 10
不妨设m=cp,其中c为正整数。此时gcd(m,q)=1。
由gcd(m,q)=1及Euler定理得:mφ(q)≡1 mod q,
所以
mkφ(q)≡1 mod q,[mkφ(q)]φ(p)≡1 mod q, mkφ(n)≡1 mod q
因此存在一整数r,使得mkφ(n)=1+rq,两边同乘以m=cp得 mkφ(n)+1=m+rcpq=m+rcn 即mkφ(n)+1≡m mod n, 所以cd mod n≡m。
=128+32+4+2+1
M=2756167 (mod 2867) =2756128 · 275632· 27564· 27562· 27561(mod 2867)
应 用 密 码 学
张仕斌 万武南 张金全 孙宣东编著
西安电子科技大学出版社 二00九年十二月
2014-2-13 1
第5章 非对称密码体制
2014-2-13
2
知识点:
◇非对称密码体制的数学基础 ◇非对称密码体制的原理、设计准则及分类
◇ RSA密码算法
◇ ElGamal密码算法 ◇ 椭圆曲线密码算法 ◇ 其他非对称密码体制简介
m满足0<m<n。加密P时,计算C=Pe(mod n),解密C时计算P= Cd(mod n)。由于模运算的对称性,可以证明, 在确定的范围内,加密和解密函数是互逆的。 为实现加密,需要公开(e, n),为实现解密需要(d, n)。
2014-2-13 19
5.4.4 RSA算法的安全性及常用攻击
通过对RSA算法的学习,我们可以看到,因为{e,n}为公开密钥 ,破解 RSA算法最直接的方法,就是分解 n,计算n=p×q,φ(n)=(p1)×(q-1), 通过d×e≡1modφ(n)求出d。所以说,RSA算法的安全性 是基于分解大整数的难题的。 随着科学技术的不断发展,人类计算能力的提高,大整数分解
素数。
P1是素数时,形如p=2p1+1的素数通常称为安全素数。
2014-2-13
24
RSA的安全性-不同用户选用的素数不能相同
不同用户选用的素数不能相同
若用户B1与B2选用了同一个素数p,设n1=pq1与n2=pq2分别是他们
的模数,那么任何人都可以用欧几里德算法求得 (n1,n2)=p,从而得
到n1与n2的分解式。 当然,就是有用户选用了相同的素数,遭到攻击的可能性也是 微乎其微,但我们应该尽量避免。 但一个用户选择的素数别的用户是不知道的,所以,如果是密
由已知可得n=pq=13*23=299,φ(n)=(p-1)(q-1)=12*22=264。
264=29*9+3 29=3*9+2 3=2+1 1=3-2=3-(29-3*9) =3*10-29=(264-29*9)*10-29 =264*10-29*91 -91≡173mod264
由欧几里德扩展算法可得:d为173。
是奇数。
(4)因为满足gcd(φ(n),e)=1,即φ(n)与e互素。故e模φ(n)的逆
一定存在,可以通过扩展欧几里德算法求得。
2014-2-13 12
(5)加密的时候,要求明文m要小于n。因若m>n,由于计算
时使用了模运算,则不能通过解密算法正确求得明文m,只能得到 比n小且与m mod n同余的整数。 (6)至于密钥生成过程中的p,q,φ(n),一般的说法是安全地销 毁。由孙子定理,p,q也可用于提高RSA算法的解密速度。
现了 Diffie 和 Hellman 提出的思想的一种算法,简称 RSA 算法 ,即为三个人的名字的首字母的缩写。
2014-2-13
4
但据英国政府声称,他们在切尔特汉姆的政府通讯总部很早就 发明了公开密钥密码术。 1969 年年初.英国军方请求詹姆斯 · 埃利斯.一位前英国政府 的密码专家,找到一种能应付密钥分发问题的方法。埃利斯的个性 有点古怪。他很骄傲地吹嘘他在出生前就绕着地球转了半圈 ——他 是在英国受孕的,却是在澳大利亚出生的。 埃利斯的想法与笛福、赫尔曼和摩科尔的想法很相似,只是比 他们提前了好几年。然而,没有人知道埃利斯的工作.因为他是英 国政府的雇员,而且要发誓保密。到1969年末,埃利斯看来已经陷 入了僵局,这和斯坦福小组1975年陷入的僵局是同样的。他已证明 公开密钥是可能的,他也发明了公开密钥和私人密钥的概念。他也 知道他需要发现一种特殊的单向函数,这个单向函数在知道某些特 殊信息后可以逆转。
- 加密: •例:明文=“RSA ALGORITHM‖
(1) 明文用数字表示 空白=00, A=01, B=02, …, Z=26 (两位十 进制数表示) 1819 0100 0112 0715 1809 2008 1300
(2) 利用加密变换公式 C=mPK mod r, 即C = 18191223 mod 2867=2756
2014-2-13 14
(1)加密过程:设RSA算法的参数选择如上所述,当消息m=9所 对应的密文的计算过程为:929 mod 299=211 (2)解密过程:211173 mod 299≡9
这个过程可以采用平方乘算法或者模重复平方算法进行运算。
2014-2-13
15
•用RSA算法加密与解密的过程举例:
钥的产生由一个安全机构负责,才可能是一个需要注意的问题。
RSA的评价
RSA方法在理论上存在一个空白点,即不能确切知道它的保
密性能如何,能够作出的结论是:攻破RSA公开密钥系统不会比分
解因子的问题更困难。 这个结论并不排除找到一个破译RSA密码的有效算法,但找不 到相应的分解因子的快速算法的可能性。
2014-2-13
21
RSA的安全性-依赖大数分解
因为基于大整数分解的公开密钥体制的安全性依赖于大整数
(大合数分解)问题,所以RSA的安全性完全依赖于大数分解问
题。 但这只是一个推测,目前,还未能从数学上证明由d和e计算 它也就成为大数分解的一个新方法。而且这种方法并不比分解n
出m一定需要分解n。然而,如果新方法能使密码分析者推算出d,
例:q=313,p=311,则n=97343, (q+p)2 =389376 4n=389372, 则(q+p)2-4n=4,很简单就得到了k的值。 所以,q, p的差必须很大,最好差几个比特位。
2014-2-13 23
• p-1和q-1都应有大的素因子。
一般是选择两个大素数p1与q1,使得p=2p1+1与q=2q1+1也是
(7)这里介绍的只是理论上的RSA,在实践中使用RSA算法时
,还有一些注意事项,请关注后面的讨论。
(8)在公钥密码体制中,通常认为公钥具有较长的使用周期,
如1年或者三五年,就像学生证或者工作证一样,在一定时间内可 以认为代表了公钥持有者的身份。
2014-2-13 13
5.4.3 RSA算法举例
例5:在RSA算法密钥产生过程中,设p=13,q=23,取公钥e=29,则 私钥d可以用欧几里德扩展算法求出。
•对RSA算法的几点说明:
(1)对算法的理解,要放到保密通信模型中去。百度文库始学习时,
读者容易陷入去记忆和理解算法而忽视了算法应用的背景。
(2)按现在的计算能力,大素数p和q的大小,按二进制计算 长度,应该在512比特左右,且p和q只相差几个比特。关于这一点 ,后面还有说明。 (3)大素数p和q是奇数,φ(n)= (p-1)×(q-1)是偶数,故e一定
2014-2-13
8
• 把该算法用于保密通信模型中,可以有如下图所示的保密 通信示意图。
2014-2-13
9
RSA算法解密的正确性证明
证明:由加密过程知c≡me mod n,所以
cd mod n≡med mod n≡m1 mod φ(n) mod n≡mkφ(n)+1 mod n
下面分两种情况:
PK=1223=10011000111 =210+27+26+22+21+20 =1024+128+64+4+2+1 C=18191223 (mod 2867) =18191024 · 1819128· 181964· 18194· 18192· 18191(mod 2867) =2756
依次加密得到密文: 2756 2001 0542 0669 2347 0408 1815
- 密钥的选取: 例:p=47, q=61, (n)=(47-1)(61-1)=2760(n=47x61=2867)时, SK=167(d)是否为秘密密钥的候选者?
用欧几里得算法计算:gcd(2760,167)=1
而PK(e)的选取满足: de≡1 mod (n) 用扩展的欧几里德算法,求得d的逆元e=1223。
RSA的安全性-为什么要保密p,q,d
d是私钥,当然要保密。为什么要保密p,q?也就是说为 什么RSA是基于大数分解难题的? 因为知道了p和q,也就是说知道了n的因子分解,就可以 根据ed≡1 mod (n), 由e求出d.
算出Euler函数(n)=(p-1)(q-1), 也就可以利用辗转相除法,
2014-2-13 5
数学基础: Euler定理,并建立在大整数因子分解的困难 性之上。
定理1( Euler定理) 设m是大于1的整数, (a, m) 1, 则 a ( m ) 1 (mod m).
5.4.2 RSA算法描述
1.密钥产生
明文空间P = 密文空间C = Zn A.密钥的生成 (1)选两个大素数p和q。
2014-2-13 7
B.加密 (用e,n) 加密时首先将明文比特串分组,使得每个分组对应的十进 制数小于n,即分组长度小于log2 n。然后对每个明文分组m,
作加密运算:
c≡me 即:明文:M<n mod n
密文:C ≡ Me(mod n).
C.解密 (用d,p,q) 密文:C 明文:M ≡ Cd(mod n)
容易。
2014-2-13
22
RSA的安全性- |q – p|要大
*** |q–p|要大: 设q-p=k, 则: (q+p)2-(q-p)2=4pq=4n (q+p)2= (q-p)2 +4n=k2+4n
如果k的值小,则可以容易找到这样的k,使得k2+4n是一个完 全平方数,从得出q+p和q-p的值,联立求解可得到q、p。
2014-2-13
3
5.4 RSA密码算法
5.4.1 RSA算法简史
1976年,Diffie和Hellman发表了非对称密码的奠基性的论
文“密码学的新方向”,建立了公钥密码的概念。
1978年,麻省理工学院的 Rivest、Shamir和Adleman在他
们的论文“获得数字签名和公钥密码系统的一种方法”中,实
=1819
依次解密得到明文: 1819 0100 0112 0715 1809 2008 1300
RSA算法归纳
•选择两个大素数p和q,通常要求每个均大于10150。 计算n=pxq和z=(p-1)(q-1)。
选择一与z互素的数、令其为d 。
找到一个e满足e×d=1 (mod z)。
选好这些参数后,将明文划分成块,使得每个明文报文P长度
(2)计算 n=p×q, (n)=(p-1)(q-1),其中 (n) 是 n 的欧拉函 数值。
(3)选一整数e,满足1<e< (n),且gcd((n),e)=1。
(4)计算d,满足de≡1 mod (n) ,即d是e在模 (n)下的乘法 逆元。
(5){e,n}为公钥,{d,n}为私钥。
的理论和实现也取得了很大进展。RSA-155(即n为155位的十进制
,约512比特)于1999年8月被成功分解,得到两个78位的十进制素 数。因此在使用RSA的时候,要注意密钥的大小,现在使用的RSA 的n的长度一般是1024比特,估计在未来一段比较长的时间里,n的 长度为2048比特是安全的。
2014-2-13 20
① m与n互素。由Euler定理得
mφ(n)≡1 mod n, 则mkφ(n)≡1 mod n, 故mkφ(n)+1≡m mod n
即cd mod n≡m。
② gcd(m,n)≠1,即m与n不互素。m与n不互素且m<n, 意味着
m要么是p的倍数,要么q的倍数,不可能既是p的倍数也是q的倍数 (否则m也是q的倍数,从而是pq的倍数,与m<n=pq矛盾)。
2014-2-13 10
不妨设m=cp,其中c为正整数。此时gcd(m,q)=1。
由gcd(m,q)=1及Euler定理得:mφ(q)≡1 mod q,
所以
mkφ(q)≡1 mod q,[mkφ(q)]φ(p)≡1 mod q, mkφ(n)≡1 mod q
因此存在一整数r,使得mkφ(n)=1+rq,两边同乘以m=cp得 mkφ(n)+1=m+rcpq=m+rcn 即mkφ(n)+1≡m mod n, 所以cd mod n≡m。