第八讲 公钥密码学与RSA

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参数 •n : RSA 的模 •k0 , k1:协议参数 •m :明文,长 (n − k0 − k1) bit •G , H :Hash函数. 加密 •对m进行k1个0填充 •r 是随机的 k0比特 •G:将 r 扩展为to n − k0 bit •X = m00..0 ⊕ G(r) •H:将X压缩到k0 bits. •Y = r ⊕ H(X) •W=X||Y •C≡We(mod n) 评价: •具有可证安全性 •相当于两轮的Feistel结构 •目前进入工业标准的为OAEP+ 解密 •对C解密得到X和Y •r = Y ⊕ H(X) •m00..0 = X ⊕ G(r) •返回m
C
≡ (Me)d (mod n) ≡ M (mod n)
因为0<M<n,因此M
= Cd (mod n)
RSA公钥算法举例
密钥生成 选素数p=47和q=71,得n=3337, (n)=(p-1)(q-1)=46×70=3220; 选择e=79,求得私钥 d=e -1 1019(mod 3220)。 公开n=3337和e=79. 加密 要发送明文688 计算:
RSA算法(教科书版)
Diffie和Hellman开创性的论文为密码学带来新的方
法和挑战。
RSA公钥算法是由Rivest,Shamir和Adleman在1978
年提出来的
Communications of the ACM. Vol.21.No.2.
Feb.1978, PP.120-126)
该算法的数学基础是初等数论中的Euler定理,并
建立在大整数因子分解问题(NP问题)的困难性 之上
RSA是最早的公钥体制的挑战响应者,也是最受
广泛接受和实现的公钥体制
MIT的Ron Rivest, Adi Shamir, Len Adleman
RSA公钥算法的参数
RSA密码体制描述如下:
p, q必须是强素数:p= 2p1+1, q= 2q1+1
RSA公钥加密体制的攻击

主要攻击 穷举攻击:穷举所有可能的私钥 数学攻击: 因式分解攻击 参数的选取不当造成的攻击 选择密文攻击 共模攻击 Hastad对广播信息的攻击 (小e攻击) 小指数攻击(可以用连分数方法) 加密及签名攻击 鲁棒性攻击 数学性的鲁棒性攻击 计时攻击 用定时攻击方法分解出私钥d 基于密码分析的错误攻击(基于脆弱性的中国剩余定理) 对于已知部分密钥位的攻击
分解n为p,q 直接确定

(n), 而不确定p,q (n) (n )或者d的算法至少和因子分解一样费时。因此,
直接确定d,而不确定
可以证明,从e和n确定
将因子分解的困难性作为评价RSA安全性的基准。目前使用的方法都为数域 筛法。
猜想
攻破RSA与分解n是多项式等价的。然而,这个猜想至今没有给出可
而在公钥密码中很简单
公钥加密 VS 公钥签名
公钥加密:可以提供保密性,但不能提供认
证性。因为任何人都可以用Alice的公钥对消 息进行加密,并发送给Alice。
公钥签名:可以提供认证性,但不能提供保
密性。因为签名的验证过程中消息必须为明 文的形式。
要同时实现加密和认证,可以同时使用加密
和签名 (一般为:先签名,后加密)
公钥密码分析
穷举攻击:可使用长密钥来对抗 由公钥来计算私钥:目前为止,虽然对特定
公钥算法,均未证明该方法不可行。但公钥 仍广泛使用
穷举消息攻击:对可能被加密的消息全部加
密。再进行密文比对。如:DES密钥为56位, 则用RSA对256种密钥进行加密。此类攻击的 对抗方法为概率加密。
信的证明!!!
RSA公钥加密的攻击—参数选取不当
在选择p,q时,应注意 应该是随机素数并且不包含在素数表中 两个素数不应该太接近 对于前两点:因为n=pq=(p+q)2/4-(p-q)2/4,当(p-
q)/2 很小时,那么(p+q)/2 只比√n 稍大一点,那 么逐个检查大于√n的整数x,直到找到一个使得x2-n 是一个平方数,记作y2 ,那么就有p=x+y 和q=x-y.
在,则计算x使y=f(x)是容易的
δ称为陷门信息
公钥加密的主要步骤
每个用户产生一对密钥,用来加密和解密消息 每个用户将其中一个密钥(公钥)存放在公开的寄
存器或者其他可访问的文件中,该密钥称为公钥, 另一密钥保密。每个用户可以拥有若干其他用户的 公钥。
若Bob要发消息给Alice,则Bob用Alice的公钥对消
息加密
Alice收到消息后,用其私钥对消息解密。由于只有
Alice知道自身的私钥,因此其他接收者均不能解密 出消息
公钥加密体制的通信模型—加密来自称加密VS公钥加密
公钥密码体制的通信模型—签名(认证)
关于公钥密码的几个误解
公钥密码比对称密码更安全 对称密码已经过时 对称密码中用户与密钥中心握手异常麻烦,
68879(mod 3337)=1570=C
解密 收到密文C=1570后,用私钥d=1019进行解密
15701019(mod 3337)=688
RSA公钥加密算法的参数选择
密钥的选择 e的选择(EDI国际标准中规定 e=216+1,ISO/IEC9796中甚至允许取
e=3, e为小整数时运算快,但存在问题。)
第八讲 公钥密码学与RSA
上海交通大学计算机系 龙宇
E-mail longyu@
公钥密码体制 RSA及攻击
公钥密码
公钥密码 非对称密码 or 双钥密码 由W. Diffie和M. Hellman
于1976年在“密码学的新方向”中 提出
W.Diffie and M.E.Hellman, “New Directions in
RSA公钥加密的攻击—因子分解

对于合数n=pq,给定M和e,运算C ≡ Me(mod n)是一个简单的操作; 给定某个整数C≡Me (mod n) ,求C的模n的e次方根M ≡ C1/e (mod n)则 一个困难性问题;如果整数n的素数分解是已知的,那么求C模n的e次方 根的问题则变得可行 因子分解攻击RSA的途径包括
RSA公钥加密的攻击— 共模攻击
共模攻击:指通信系统中使用相同的n,且存在两
个用户的公钥e1和e2是互素的,则可以由这两个用 户对同一条明文的不同加密结果,恢复出原始明文
攻击方法:
设 c1≡me1(mod n)
c2 ≡ me2 (mod n)
攻击者知道e1, e2, n, c1, c2 根据中国剩余定理推论:
个用于解密
密文:加密算法的输出 解密算法:输入为密文和密钥,输出为原始的明文
公钥密码原理
每个用户拥有一对公私钥对(PK , SK)
公钥PK公开,私钥SK保密; 已知公钥算法,公钥PK,得不到SK的值。
用于加解密
加密C=EPK[M] 解密M=DSK[C]
用于数字签名
签名M || SigSK[M]
所以: ed ≡1 mod (n), 既ed=k (n)+1 根据Euler定理的推论
给定满足n=pq的两个素数p和q,以及满足0<M<n的整数M
m
k ( n ) 1
m
k ( p 1)( q 1) 1
m mod n
有:Med ≡ M mod n。
可以证明:
≡ Me (mod n) M ≡ Cd (mod n)
S≡Md (mod n)
得到签名S后,恢复消息
存在s, t 使 t×e1+s×e2=1 (注意是相等) 则c1t ×c2s=m (mod n)
结论:不能用同一个n来生成密钥
RSA公钥加密的攻击—小e攻击
小e攻击:指e很小时,若使用广播加密(即利用同
一个e对同一个消息m加密再分发给多个人)下遭遇 的攻击 设e=3,攻击方法如下
Cryptography”, IEEE Transaction on Information Theory, V.IT-22.No.6, Nov 1976, PP.644-654
动机 简化密钥分配和管理
实现签名等功能
是密码学几千年来的最大进步
公钥密码体制组成
明文:加密算法的输入 加密算法:对明文进行各种转换 公钥和私钥:加密算法的输入,一个用于加密,一
RSA公钥加密的攻击—计时攻击
思想:利用指数中某一位为0或者为1时,硬
件加密速度不同
解决方法
不变的幂运算时间:保证所有幂运算中返回结果
前执行的时间相同
随机延时 隐蔽:在密文上乘以随机数
RSA算法用于数字签名
直接的签名
参数n, p, q, e, d选择如RSA加密算法 待签名的消息为M,对M的签名为S
验证M=VerPK[SigSK[M]]
公钥加密/解密过程
公钥的“非对称”性
非对称性是公钥最为重要的性质
可以用来保证“真实”性,“不可否认”性
公钥密码系统的要求
每个用户可以方便快捷地产生自己的公私钥对
(SK ,PK); 方便快捷地利用公钥PK对某个消息M进行加密: C=EPK[M]; 如果拥有私钥SK可以方便快捷地对某个密文进行解 密: M=DSK[C]; 对于其他人:
d的选择(d要大于n1/4)
参数n的选择
国际数字签名标准ISO/IEC 9796中规定n的长度为512比特位,但已过

模n的长度要求至少是1024比特,甚至更大(现在1024和2048(本世纪
中))
建议选择p和q大,约是100位的十进制素数。 |p - q|大
gcd(p-1, q-1)小
已知公钥PK 不能得出私钥SK; 已知公钥PK和密文C,不能得出明文M;
回顾:陷门单向函数
(回顾)单向陷门函数
陷门单向函数(trapdoor one-way function)
给定x,计算y=f (x)是容易的;
(P)
给定y, 计算x使y=f (x)是困难的;(NP) 存在δ:已知δ时对给定的任何y,只要相应的x存
公开参数:大模数n,公钥e 秘密参数:大素数p,q;私钥d
RSA公钥加密算法
RSA密码体制描述如下:
加密 (用e,n)
明文:0<M<n
解密 (用d,n)
密文:C≡Me(mod n)
密文:C
明文:M ≡ Cd(mod n)
nB
RSA公钥加密算法正确性证明
因为: 选择d,e使得d≡e-1 mod (n),
解决方法:选择p和q使其二进制位表示的长度有几
比特不同。
RSA公钥加密的攻击—选择密文攻击
针对RSA公钥加密的使用过程,而不是攻击算法本身。RSA
算法是一个判定性加密算法。
攻击者得到对两个明文m0,m1的加密结果,就可以获得对
m0×m1的结果
c0≡m0e(mod n), c1 ≡m1e(mod n)
那么对 m0×m1的加密结果为
m0e×m1e (mod n)≡c0×c1(mod n)
由对m0的加密结果,可以获得对m0r的加密结果 (m0r)e ≡c0r (mod n) 由(c×2e)(mod n)的解密结果,可以恢复出c对应的明文m
对抗方法:使用概率加密(见下页)
RSA-OAEP (Optimal Asymmetric Encryption Padding )
有三个成员的公钥e均为3,但他们彼此的n不同,记为n1,
n2,n3
c1 ≡ m3 (mod n1) c2 ≡ m3 (mod n2) c3 ≡ m3 (mod n3)
因为n1,n2,n3一般是互素的 (否则。。),因此由中国剩
余定理可得:
C≡m3 (mod n1×n2×n3) 又因为m<n1,n2,n3;所以可得m3<n1×n2×n3,则m为C开三次方
明文空间P等于密文空间C:均为Zn={0,1,…,n-1}. 既分组是小于或等于log2n的整数.
密钥的生成
选择p,q,p,q为大素数 计算n=p*q, (n)=(p-1)(q-1) 选择整数e 使 gcd( (n),e)=1,1<e< (n)) 计算d,使d≡e-1 mod (n),
相关文档
最新文档