计算机系统与网络安全技术(第2版)-课件 1-5-8 公钥密码学基础(RSA算法的攻击)_第1页
计算机系统与网络安全技术(第2版)-课件 1-5-8 公钥密码学基础(RSA算法的攻击)_第2页
计算机系统与网络安全技术(第2版)-课件 1-5-8 公钥密码学基础(RSA算法的攻击)_第3页
计算机系统与网络安全技术(第2版)-课件 1-5-8 公钥密码学基础(RSA算法的攻击)_第4页
计算机系统与网络安全技术(第2版)-课件 1-5-8 公钥密码学基础(RSA算法的攻击)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章信息安全概述-RSA算法计算机系统与网络安全技术

分组大小为k,2k<n

2k+1公开密钥n(两素数p和q的乘积)(推荐p,q等长)

e(与(p-1)(q-1)互素)

ed1(mod(p-1)(q-1))私人密钥d(e-1mod(p-1)(q-1))加密c=memodn解密m=cdmodnRSA算法的描述RSA算法第一章信息安全概述

令n=pq,p

q都是素数,

(n)=(p-1)(q-1)是n的Euler数Euler定理推论:若n=pq,p

q都是素数,k是任意整数,则mk(p-1)(q-1)+1

mmodn,对任意0

m

n只要选择e,d,满足ed=k

(n)+1,即

ed

1mod

(n)

de-1mod

(n)公钥:KU={e,n},私钥:KR={d,n}RSA算法密钥的生成原理RSA算法第一章信息安全概述每个用户生成一对密钥(公钥和私钥):(1)用户选择两个大的随机素数

p,q

(2)计算N=p.q(3)计算N的欧拉数:

ø(N)=(p-1)(q-1)

(4)随机算则一个加密密钥e:1<e<ø(N),gcd(e,ø(N))=1(5)解以下方程得到解密密钥

d

:e.d=1modø(N)and0≤d≤N

公布自己的公钥:KU={e,N}保密自己的私钥:KR={d,p,q}使用RSA算法的过程RSA算法第一章信息安全概述为了加密消息M,发送这:得到接收者的公钥KU={e,N}

加密:

C=MemodN,其中

0≤M<N为了解密,接收者对密文C做以下运算:取出自己的私钥

KR={d,p,q}

解密:

M=CdmodN

注意:消息M必须小于模数NRSA算法的加密与解密过程RSA算法第一章信息安全概述算则两个素数:p=17&q=11计算

n=pq=17×11=187计算ø(n)=(p–1)(q-1)=16×10=160选择e:gcd(e,160)=1;其中e=7计算d:de=1mod160andd<160

d=23

(因为23×7=161=10×160+1)公布公钥KU={7,187}保存私钥KR={23,17,11}RSA算法示例RSA算法第一章信息安全概述如果待加密的消息M=88(注意:88<187)加密:C=887mod187=11

解密:M=1123mod187=88

RSA算法示例RSA算法第一章信息安全概述

若Bob选择了p=101和q=113那么,n=11413,

(n)=100×112=11200然而11200=26×52×7,一个正整数e能用作加密指数,当且仅当e不能被2,5,7所整除。假设Bob选择了e=3533,那么用Euclidean算法将求得:d=e-1

6597(mod11200),于是Bob的解密密钥d=6597RSA算法示例RSA算法第一章信息安全概述

Bob在一个目录中公开n=11413和e=3533现假设Alice想发送明文9726给Bob,她计算:97263533(mod11413)=5761,且在一个信道上发送密文5761。当Bob接收到密文5761时,他用他的秘密解密指数(私钥)d=6597进行解密:57616597(mod11413)=9726RSA算法示例RSA算法第一章信息安全概述理论:Euler'sTheorem:aø(n)modN=1gcd(a,N)=1在RSA中有:N=p.qø(N)=(p-1)(q-1)

如果仔细选择e&d使得对某些k有:

e.d=1+k.ø(N)成立于是就有:

Cd=(Me)d=M1+k.ø(N)=M1.(Mø(N))q=M1.(1)q=M1=MmodN

RSA算法示例RSA算法第一章信息安全概述RSA的安全性是基于加密函数ek(x)=xe(modn)是一个单向函数,所以对攻击的人来说求逆计算不可行。而Bob能解密的陷门是分解n=pq,知

(n)=(p-1)(q-1),从而用欧氏算法解出解密私钥d。RSA算法的安全性RSA算法第一章信息安全概述

每个合数都可以唯一地分解出素数因子

6=2·3 999999=3·3·3·7·11·13·37 27641=131·121

从2开始试验每一个小于等于√27641的素数。素数:只能被1和它本身整除的自然数;否则为合数。整数n的十进制位数因子分解的运算次数所需计算时间(每微秒一次)

50 1.4x1010 3.9小时 75 9.0x1012 104天 100 2.3x1015 74年

200 1.2x1023 3.8x109年 300 1.5x1029 4.0x1015年

500 1.3x1039 4.2x1025年因子分解的难度和时间RSA算法第一章信息安全概述对RSA的具体实现存在一些攻击方法,但不是针对基本算法的,而是针对协议的。对RSA的选择密文攻击对RSA的公共模攻击对RSA的小加密指数攻击对RSA的小解密指数攻击时间性攻击:取决于解密算法的运算时间针对RSA的攻击RSA算法第一章信息安全概述例1:E监听A的通信,收集由A的公开密钥加密的密文c,E想知道消息的明文m,使

m=cdmodn他首先选择随机数r,使r<n.然后用A的公开密钥e计算

x=remodny=xcmodnt=r-1modn如果x=remodn,则

r=xdmodn现在E让A对y签名,即解密y,A向E发送u=ydmodn而E计算

tumodn=r-1ydmodn=r-1xdcdmodn=cdmodn=m针对RSA的选择密文攻击RSA算法第一章信息安全概述例2:E让A对m3签名。他产生两个消息m1和m2,满足

m3=m1m2(modn)如果E能让A分别对m1和m2签名,则可以计算m3:

m3d=(m1dmodn)(m2dmodn)注意:不要用RSA对陌生人的随机文件签名,签名前先使用一个散列函数针对RSA的选择密文攻击RSA算法第一章信息安全概述一种可能的RSA实现方法是给每个人相同的n,但指数d和e不同。问题:如果相同的消息曾用两个不同的指数加密,而这两个指数是互素的,则明文可以不用任何一个解密密钥来恢复。令m为明文消息,两个加密密钥为e1,e2,两个密文消息为c1,c2c1=me1modnc2=me2modn由于e1和e2互素,所以可以用扩展的Euclid算法找到r,s使re1+se2=1,假设r是负数,可以用扩展的Euclid算法计算c1-1,而(c1-1)-r*c2s=mmodn注意:不要让一群用户共享一个模n针对RSA的公共模攻击RSA算法第一章信息安全概述

对RSA的小加密指数攻击如果使用一个较小的e值,则进行RSA签名和加密会很快,但也不安全。如果用相同e值的不同公开密钥加密e(e+1)/2个线性相关的消息,则系统是可破的。如果有少于这些的消息或消息不相关,则无问题。比如:消息为mj,使用同样的指数e,模数分别为q1,q2,…qs(两两互素),则密文为mjemodq1,mjemodq2,…mjemodqs,根据中国剩余定理,m'=mjemodq1q2…qs.可以计算出来,对于较小的e,可以解出mj。解决办法:加密前将消息与随机值混合,并保证m与n有相同的长度。RSA算法第一章信息安全概述使用较小的d会产生穷尽解密攻击的可能当d为n的1/4长度时,而e小于n时,可以恢复d,当e,d是随机选择的时,这种情况很少发生,当e很小时不会发生。对RSA的小加密指数攻击应选择一个大的d值RSA算法第一章信息安全概述实现要求若使RSA安全,p与q必为足够大的素数建议选择p和q大约是100位的十进制素数。模n的长度要求至少是512比特。EDI攻击标准使用的RSA算法中规定n的长度为512至1024比特位之间,但必须是128的倍数。国际数字签名标准ISO/IEC9796中规定n的长度位512比特位.至1996年,建议使用768位的模n。对RSA的实现要求-p和q的要求RSA算法第一章信息安全概述用户密钥生成问题:使用RSA算法的用户必须决定以下数据:随机选择两个大素数

p,q

选择

e

并计算

d素数p,q

必须不易通过模数

N=p.q计算得到必须足够大采用概率猜测测试方法来生成指数e,d是互逆,因此可以通过互逆算法来计算对RSA的实现要求-密钥要求RSA算法第一章信息安全概述为了抵抗现有的整数分解算法,对RSA模n的素因子p和q还有如下要求:(1)|p-q|很大,通常p和q的长度相同;(2)p-1和q-1分别含有大素因子p1和q1(3)P1-1和q1-1分别含有大素因子p2和q2(4)p+1和q+1分别含有大素因子p3和q3对RSA的实现要求-模数n的要求RSA算法第一章信息安全概述为了提高加密速度,通常取e为特定的小整数如EDI国际标准中规定e=216+1ISO/IEC9796中甚至允许取e=3这时加密速度一般比解密速度快10倍以上

e=216+1优于e=3之处在于它能够抵抗对RSA的小加密指数攻击对RSA的实现要求-e的选择要求RSA算法第一章信息安全概述如何计算abmodn如何判定一个给定的整数是素数?如何找到足够大的素数p和q?RSA实现中的问题RSA算法第一章信息安全概述

要点1:(axb)modn=[(amodn)x(bmodn)]modn]要点2:a16=aaaaaaaaaaaaaaaa =a2,a4,a8,a16更一般性的问题:am m的二进制表示为bkbk-1…b0,

则m=2ii

0c0;d1forikdownto0 doc2xc d(dd)modn ifbi=1 thencc+1 d(da)modnreturnd计算ammodnammodn=[

a(2i)]modn =

[a(2i)modn]bi

0bi

0如何计算abmodnRSA算法第一章信息安全概述如何判定一个给定的整数是素数?目前还没有一个高效的办法,实际中应用最多MillerandRabin,WITNESS算法1.令bkbk-1…b0

为(n-1)的二进制表示,2.d13.forikdownto04. doxd5. d(dd)modn6. ifd=1andx1andxn-17. thenreturnTRUE8. ifbi=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论