RSA公钥密码体制简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
* a Zn
a n1 1 modn
反过来若: a n1 1 modn ,则n必为合数。

a n1 1 modn
则n可能为素数,也可能为合数。 Rabin由此设计 了一个判定n是否为素数的算法。
23
1、产生大素数的算法——Rabin素性检测算法 Rabin素性检测法是一种概率素数测试法。
32
例:
计算:
1520 (mod 2539) 13 23 1 2 2 0 2 1 1101 B (e3 , e2 , e1 , e0 ) (1,1,0,1)
(mod 2539)
13
13 1520 mod2539
(((1520e3 )2 1520e2 )2 1520e1 )2 1520e0
25
1 P(n判定为素数 n是合数) 4
Miller-Rabin算法
随机选择一个奇整数n(如利用伪随机数产生 器 );

随机选择一个整数a<n;
执行诸如Miller-Rabin等概率素数测试。若n 未通过测试,则转到第一步;
若n通过足够多次的测试,则接受n;否则转 向第2步。

26
在实际使用中,通过首先检验待检测的随机数是否 是小素数(例如所有小于1000的素数)的倍数,待检测 通过后再执行Rabin检测。 Miller-Rabin素数检测算法,已经作为标准的检测 算法列入IEEE P1363的附录和NIST的数字签名标准的 附录,作为密码学标准使用。
前尚不能证明两者是否能确切相等,因为不能确知除了对
n进行因子分解的方法外,是否还有别的更简捷的破译方 法。
16
3、例子:
假设RSA体制中p=3,q=11,取加密密钥e=7. (1) 求脱密密钥d; (2) 写出相应的加密算法和脱密算法; (3) 对明文m=8加密。
解: 此时n=p×q=33,且
(n) ( p 1)(q 1) 20
27
①快速乘方算法 RSA的加脱密计算都是在模N运算下 进行的,尽管这两个加脱密计算公式形式 上比较简单,但由于其加、脱密的两个主 要运算,即指数运算与模大整数运算均涉 及到很大的数,故RSA的实现还是有较大 的难度。
28
指数运算 m 最简单而直接的计算方 法,就是将m连续乘e-1次,如此就可 以获得的值了。 当m或e很大时,其计算复杂度将是 非常高的。 在指数运算中,比较有名的是二元法 (也称为平方乘法)
e是公开的,要从中求出d,必须先求出φ(n),而
φ(n)是保密的。但他又知道, φ(n)=(p-1)(q-1),
15
RSA算法论证
要从中求出φ(n),必须先求出p和q,而p和q是保密的。
但他知道,
n=pq, 要从n求出p和q,只有对n进行因子分解。而当n足够大时, 这是很困难的。 只要能对n进行因子分解,便可攻破RSA密码。由此可以 得出,破译RSA密码的困难性≤对n因子分解的困难性。目
32nmmmmmeeeeemod01510511222?????23120212222modlllleeeeemmmmmn???????????nmemod3412302122222modlllleeeeeemmmmmmn??????????????331201222modlleeeemmmmn???????201222modleeemmmmn??????当要对明文进行加密时可先进行预处理计算出m2m3等这种方法我们称之为窗口法
3
2、工作原理
定义:任给一个正整数 m,如果用 m去除任意两个整 数a、b所得的余数相同,称a、b对模m同余。记 a b mod m 为: ,若余数不同,则a、b对模m不同余。 记为: a b mod m 。 定理: a b mod m ,当且仅当m|(a-b)。 定理:欧拉定理,对任意
解却是十分困难的。关于大合数的因子分解的时间
复杂度下限目前尚没有一般的结果,迄今为止的各 种因子分解算法提示人们这一时间下限将不低于 O(EXP(lnNlnlnN)1/2)。 根据这一结论,只要合数足够大,进行因子分解是
相当困难的。
14
RSA算法论证
假设截获密文C,从中求出明文M。他知道 M≡Cd mod n , 因为n是公开的,要从C中求出明文M,必须先求 出d,而d是保密的。但他知道, ed≡1 mod φ(n),
11
RSA算法论证
②加密和解密运算的可交换性
D(E(M))=(Me)d =Med =(Md))e =E(D(M)) mod n 所以,RSA密码可同时确保数据的秘密性和数据的
真实性。
12
RSA算法论证
③加解密算法的有效性
RSA密码的加解密运算是模幂运算,有比较有效 的算法。
13
RSA算法论证
④在计算上由公开密钥不能求出解密钥 小合数的因子分解是容易的,然而大合数的因子分
因e=7与 (n) 20 互素, 故可解模方程 ed mod (n) 1 ,即 7d mod20=1
得到d=3。
17
故RSA体制明、密文空间: Z/(33) 加密密钥:(e, n) =(7, 33) 脱密密钥:(d, p, q) =(3, 3,11)
加密算法: c=m7mod33 脱密算法: m=c3mod33 对明文m=8加密,得: c=87mod33=2
t为某整数。所以, Med =Mtφ(n)+1 mod n 。 因此要证明Med =M mod n ,只需证明 M tφ(n)+1 =M mod n 。
5
RSA算法论证
在(M,n)=1的情况下,根据数论(Euler定理),
M tφ(n) =1 mod n ,
于是有, M tφ(n)+1 =M mod n 。
18
二、RSA算法的参数选择
为了确保RSA密码的安全,必须认真选择密码参数:
① p和q要足够大;
一般应用:p和q应512 bits
重要应用:p和q应1024 bits ②p和q应为强素数 文献指出,只要(p-1)、(p+1)、(q-1)、(q+1)四 个数之一只有小的素因子,n就容易分解。 ③ p和q的差要大;
(2)任取 a {2,3,, n 2}
且(a,n)=1
(3)如果, n pn 则判n是素数;
否则判n是合数,重新选取n重复上过程。
Rabin证明了由上述算法所产生的素数的误判概率: 由此,我们将算法中的第(2)和(3)步骤重复k次, 这样判定n为素数的误判概率小于等于(1/4)k。 计算复杂度为:O((log2n)3)
其输入为一奇数,输出为两种状态Yes或 No。若输入一奇数N,而输出为No,即表示 N必定为合数。若输出为Yes,则表示N为素 数的概率为1-ε,其中ε为此素数测试法中可 控制的任意小数,但不能为0。( ε是在N是 合数的条件下误判为素数的条件概率。)
24
Rabin素性检测算法: (1)任取一个大奇数n
19
④(p-1)和(q-1)的最大公因子要小。
如果( p-1)和(q-1)的最大公因子太大,则易受迭代加密 攻击。
⑤ e的选择
随机且含1多就安全,但加密速度慢。于是,有的学者建议取 e=216+1=65537 ⑥ d的选择 d不能太小,要足够大
⑦ 不要许多用户共用一个模n;易受共模攻击
20
1989年Lenstra, Manasse利用二次筛法使用数百 台工作站分解了106位十进制数; 1990年Lenstra, Manasse, Pollar利用数域筛法 使用700台工作站花费4个月时间将155位十进制 数分解成三个素数之积; 1994年Atkins, Graff, Lenstra, Lerland利用 多重二次筛法的双重大素数算法动用1600台计算 机联网,600名志愿者花费9个月时间分解了129 位十进制数; 2002年成功分解158位的十进制数。 结论:154位十进制数(512bit)的模长已经不 安全,应使用308位十进制数(1024bit)模长。
最后一步计算
306 1520 483 (mod 2539)
结论: 152013
483 (mod 2539)
34
②快速模乘算法
反复平方乘算法解决了快速乘方取模的问题,
仍未解决快速模乘的问题; Montgomery算法是一种快速模乘的好算法;
6
RSA算法论证
在(M,n)≠1的情况下,分两种情况: 第一种情况:M∈{1,2,3,…,n-1} 因为n=pq,p和q为素数, M∈{1,2,3,…,n-1},且(M,n)≠1 。
这说明M必含p或q之一为其因子,而且不能同
时包含两者, 否则将有M≥n , 与 M∈{1,2,3,…,n-1}矛盾。
29
e
设e为k位二进制数,w(e)为e的二进制系数中为1的个 数,则最多只需要计算w(e) -1次平方和w(e)次数的模
乘。从而大大简化了计算。
30
以512比特加密指数为例,整数e的二进制表示为:
e e0 e1 2 e2 22 e511 2511
一般的加密过程为:
9
RSA算法论证
于是,M tφ(n) =bq+1,其中b为某整数。 两边同乘M, M tφ(n)+1 =bqM+M 。 因为M=ap,故 M tφ(n)+1 =bqap+M =abn+M 。 取模n得, M φ(n)+1 =M mod n 。
10
RSA算法论证
第二种情况:M=0 当M=0时,直接验证,可知命题成立。

m m ) m ) m
me1 )2 me0 (mod N )
(mod N )
( (mel1 )2 mel2 )2
( (m2 mel2 )2
me1 )2 me0
(mod N )
当要对明文进行加密时,可先进行预处理, 计算出m2、m3等,这种方法我们称之为窗口法。
((15202 1520)2 15200 )2 1520 (mod 2539)
33
第一步首先计算
15202 2449 (mod 2539)
第二步计算
2449 1520 306 (mod 2539)
第三步计算
3062 2232 (mod 2539)
第四步计算
22322 306 (mod 2539)
2
一、RSA算法
1、RSA算法描述
假设m为要传送的报文。 1、任产生两个素数p与q,使得n=pq>m 2、随机选择数e:e与(p-1)(q-1) 互素 3、用辗转相除法求d:ed=1 mod(p-1)(q-1) 4、公开:(e,n),保密:d 加密过程:c=me mod n 解密过程:m=cd mod n
RSA公钥密码算法



主要内容:RSA公钥密码算法,RSA公钥密 码的实现。 重点: RSA算法,脱密的快速实现,素数 生成算法。 难点:素数生成算法。
1
RSA体制
由Rivest、Shamir、Adleman于1978年首次 发表; 最容易理解和实现的公钥算法; 经受住了多年深入的攻击; 其理论基础是一种特殊的可逆模幂运算,其 安全性基于分解大整数的困难性; RSA既可用于加密,又可用于数字签名,已 得到广泛采用; RSA已被许多标准化组织(如ISO、ITU、IETF 和SWIFT等)接纳; 目前许多国家标准仍采用RSA或它的变型
21
三、RSA算法中大素数生成
RSA的安全性基础是基于大合数分解的困 难性,在RSA算法中要求模数N是两个大素数 p和q的乘积。 用户选择模数N的方法是先找到两个素数, 然后生成相应的模数N。 素数判定是要解决的首要问题。
22
1、产生大素数的算法(Rabin素性检测算法)
由欧拉定理知,若n为素数:
7
RSA算法论证
8
RSA算法论证
不妨设M=ap 。
又因q为素数,且M不包含q,故有(M,q)=1, 于是有,M φ(q) =1 mod q 。 进一步有,M t(p-1)φ(q) =1 mod q。 因为q是素数,φ(q)=(q-1),所以t(p-1)φ(q) =tφ(n),
所以有
M tφ(n) =1 mod q。
* a Zn

a ( n) 1modn
* 其中 Z n {0,1,2,, n 1} Z n {a : a Z n , (a, n) 1}
p 1 a 1 mod p 推论:费尔马定理,若p为素数,则
4
ห้องสมุดไป่ตู้
RSA算法论证
① E和D的可逆性
要证明:D(E(M))=M M=Cd =(Me)d=Med mod n 因为ed=1 modφ(n),这说明ed=tφ(n)+1,其中
me ((me511 )2 me510 )2 me1 )2 me0 modN
31
m modN
e
(m
el 1 2l 2
el 1 2l 3
m
m
el 2 2l 3

m m ) m
e2 2 e1 2
e3 2 e2 2 e1 2
e0
(mod N )
e0
((m
el 2 2l 4
相关文档
最新文档