精品课件-应用密码学-9-非对称密码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
证签名; • 私钥(private-key), 只能被消息的接收者或签名者知道,用
于解密或签名; • 由私钥及公开参数容易计算出公开密钥; • 由公钥及公开参数推导私钥是困难的;
99
单向陷门函数 定义 单向函数是两个集合X、Y之间的一个映射,使得Y中每 一元素y都有惟一的一个原像x∈X,且由x易于计算它的像y, 由y计算它的原像x是不可行的. 一个函数是单向陷门函数,是指该函数是易于计算的,但求 它的逆是不可行的,除非再已知某些附加信息。当附加信息 给定后,求逆可在多项式时间完成.
1=3-2=3-(29-3*9)=3*10-29=(264-29*9)*10-29
=264*10-29*91
=-91≡173mod264
由欧几里德扩展算法可得:d为173。
24
逆元
设m是正整数,a是整数,如果存在a’, 使得a×a’ ≡1(modm)成立,则a叫模m的可逆元,a’ 叫a模m的逆元。
证明RSA算法中解密过程的正确性. 证明: 由加密过程知c≡me mod n,所以 cd mod n≡med mod n≡m1 mod φ(n) mod n mod n
Biblioteka Baidu
≡mkφ(n)+1
17 17
RSA算法
下面分两种情况: ① 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,先看gcd(m,n)=1的含义,由于n=pq,所以 gcd(m,n)=1意味着m不是p的倍数也不是q的倍数。 因此gcd(m,n)≠1意味着m是p的倍数或q的倍数,不妨设m=tp, 其中t为一正整数。
23
RSA算法举例
在RSA算法密钥产生过程中,设p=13,q=23,取公钥e=29, 则私钥d可以用欧几里德扩展算法求出。
由已知可得n=pq=13*23=299,
φ(n)=(p-1)(q-1)=12*22=264。
e*d ≡1 mod φ(n) 怎么求解
264=29*9+3
29=3*9+2
3=2+1
例如,设m为11,则8模11的逆元为7,因为 8×7≡1(mod11)
当a和m互素的情况下,即(a,m)=1,则a的模m的逆元总 是存在的,且可以用上面的辗转相除法求得。
25
求逆元举例
例如,我们知道89是素数,求60模89的逆元,可以用下 面方法。
89=1×60+29 60=2×29+2 29=14×2+1 则1=29-14×2 =29-14×(60-2×29) =29×29-14×60 =(89-60) ×29-14×60 =89×29-60×43
5
公钥加密模型
公钥加密体制的原理
Bob (发送端)
公开的密钥
密钥分 配
Alice (接收端)
66
公钥密码体制的原理 77
公钥加密体制的原理 邮箱的例子 任何人可以向邮箱投举报信 用户(审计人员)才能打开邮箱,读信的内容
88
公钥加密体制的原理
公钥密钥对参数生成需满足的要求: • 公开密钥(public-key), 可以被任何人知道, 用于加密或验
关于欧拉函数的重要结论
关于欧拉函数的重要结论。 若(m1,m2)=1,则 (m1m2)= (m1) (m2), 尤其是当m1 ,m2都为素数时, (m1m2)= (m1) (m2) = (m1-1)(m2-1). 例如, (15)= (3) × (5)=2×4=8. 实际上,这些 数是1,2,4,7,8,11,13,14,共8个。 可以用等差数列的方式证明当m1,m2都为素数时的情形
27
RSA算法举例 (1)加密过程:设RSA算法的参数选择如上所述,当消 息m=9所对应的密文的计算过程为:929mod299=211 (2)解密过程:211173 mod299≡9
28
RSA算法 例: 选p=7,q=17.取e=5 ,设明文m=19,求密文c 求得n=p×q=119,φ(n)=(p-1)(q-1)=96. 取e=5,满足1<e<φ(n),且gcd(φ(n),e)=1, 计算满足d·e=1 mod 96且小于96的d. 因为77×5=385=4×96+1,所以d为77, 因此公开钥为{5,119},秘密钥为{77,119}.
非对称密码体制 (公钥密码体制)
1
• 公钥密码体制提出和分类 • 公钥密码体制概念 • 单陷门函数概念 • RSA算法 • EIGamal算法 • 椭圆曲线密码算法
2
公钥密码体制的提出
• 密钥分配:加密者指定一个密钥后,必须得想方设法把密钥 分发出去给解密者,同时还得小心翼翼确保密钥不被泄露。 这是对称密码算法固有的一个矛盾,如何解决呢? –对称密码进行密钥分配的要求: –已经共享一个密钥: –利用密钥分配中心: 第一个密钥如何获得
善的公钥密码体制,该体制已得到广泛的应用。
•
它既可用于加密、又可用于数字签字。
•
RSA算法的安全性基于数论中大整数分解的困难性。
•
R L Rivest, A Shamir, L Adleman, "On Digital
Signatures and Public Key Cryptosystems",
33
练习题 求解 1177mod 23 =?
34
求解 1177mod 23 =?
77=(1001101)2
i
bi
6
1
5
0
4
0
3
1
2
1
1
0
练习题
d d=1 1*11 mod 23≡ 11 11*11 mod 23≡6 6*6 mod 23≡ 13 13*13 mod 23≡ 8 8*11 mod 23≡ 19 19*19 mod 23≡16 16*11 mod 23≡15 15*15 mod 23≡18
10 10
单向陷门函数 单向陷门函数是一族可逆函数fk,满足 ① Y=fk1(X)易于计算(当k1和X已知时). ② X=f-1k2(Y)易于计算(当k2和Y已知时). ③ X=f-1k2(Y)计算上是不可行的(当Y已知,但k2未知时) ④ 已知K1,计算出K2是不可行的(当K1已知,但k2未知时) 研究公钥密码算法就是要找出合适的陷门单向函数
11 11
公钥密码体制的发展历史
• Diffie和Hellman
12
公钥密码体制的发展历史
Ronald Rivest, Adi Shamir, and Len Adleman
13
RSA算法
•
RSA算法是1978年由R.Rivest, A.Shamir和L.Adleman
提出的一种用数论构造的、也是迄今为止理论上最为成熟完
30 30
RSA算法模幂运算
2. 模指数运算的快速算法 例如求x16,直接计算的话需做15次乘法。然而如果重复对每 个部分结果做平方运算即求x,x2,x4,x8,x16则只需4次乘法。
求am可如下进行,其中a,m是正整数: 将m表示为二进制形式bk bk-1…b0,即 m=bk2k+bk-12k-1+…+b12+b0 因此bk=0 而 bk-i=1或者bk-i=0
和KDC之间的密钥如何获得
3
公钥密码---密钥问题
4
实际需要-密钥管理 使用非对称密钥密码体制进行秘密通信时,假设一个网络 中有n个用户,则需要2n个密钥,若n=1000,则2000,则与对 称密码体制的密钥500000,密钥管理的复杂度大大缩小。 非对称密码体制密钥的复杂度是线性的 2n 对称密码体制密钥的复杂度是平方级的 n(n-1)/2
设明文m=19,则由加密过程得密文为 c≡195 mod 119≡2476099 mod 119≡66; 解密过程为 m ≡ 6677mod 119≡19.
29 29
RSA算法模幂运算问题
RSA中的计算问题 1. RSA的加密与解密过程
RSA的加密、解密过程都为求一个整数的整数次幂, 再取模。如果按其含义直接计算,则中间结果非常大,有可 能超出计算机所允许的整数取值范围。如上例中解密运算6677 mod 119,先求6677再取模,则中间结果就已远远超出了计算 机允许的整数取值范围。而用模运算的性质: (a×b) mod n=[(a mod n)×(b mod n)] mod n 就可减小中间结果。
26
求逆元举例
等式两端同时mod89得:60×(-43) ≡1mod89
故60模89的逆元为-43,为方便记为最小非负数,因为43≡46 mod89,故一般说60模89的逆元为46.
如何用程序实现求逆元? 实际上,这里的逆元通常称为乘法逆元。从后面的学习 可以看到,定义不同的运算和单位元,就可能有不同情况下的 逆元。
Communications of the ACM, vol 21 no 2, pp120-126,
Feb 1978
14 14
RSA算法
1. 密钥的产生 ① 选两个安全的大素数p和q。 1该整选②数取数是大值计否素。算为数n素的=p数方×法q,:φ随(机n)产=(生p-一1)个(q大-1整),数其,中利φ用(n素)是性n检的测欧算拉法函判定 2 以③往素选检一测整的数算e法,都满是足概1<率e<性φ的(n,),即且存g在cd一(φ定(的n)错,e误)=概1。率; 3 20④03年计,算印d,度满人足发d表·文e章≡1“mPordimeφs(ni)s,i即nd是P”e在,模证φ明(了n)素下判的定乘问题 是一个法多逆项元式,时因间e与问φ题(。n)互素,由模运算可知,它的乘法逆元一 定存在。(一般公钥取值为65537(216+1)) ⑤ 以{e,n}为公开钥(PK),{d,n}为秘密钥(SK)。
/***令 m=bk2k+bk-12k-1+…+b12+b0,求am=? ***/ d=1; for i=k downto 0 {
d ≡(d×d) mod n; if bi=1 then { d ≡(d×a) mod n }
} return d 注意:在RSA中,运算的形式一般是memodn, 则在程序或 算法中,所有的乘法或乘方运算之后都有一个模运算。
1)辗转相除法 2)利用欧拉定理求e^{φ( φ(n))}-1 思考:分析两种计算方法的效率
15 15
RSA算法 2. 加密 加密时首先将明文比特串分组,使得每个分组对应的十进制 数小于n,即分组长度小于log2n。然后对每个明文分组m,作 加密运算:
c≡me mod n
16 16
RSA算法
3. 解密 对密文分组的解密运算为:m≡cd mod n
0
1
18*18 mod 23≡ 2 2*11 mod 23≡ 22
即mkφ(n)+1≡m mod n,所以cd mod n≡m.
19 19
RSA保密通信示意图
20
欧拉(Euler)函数 设 (m)为小于或等于m且与m互素的正整数个数,称 (m)为欧拉(Euler)函数。 例如, (3)=2, (5)=4, (8)=4。 显然,当p为素数时, (p)=p-1。
21
22
欧拉定理
欧拉定理 设n≥2且(a,n)=1,则a (n) 1(mod n) 例如,求132001mod17。 因 为 (13 , 17) = 1 , 所 以 13 (17) 1(mod 17) , 因 为 (17)=16,即1316≡1(mod 17)。 而 2001 = 125×16 + 1 , 132001 = ( 1316 ) 125 ·13 ≡13(mod 17),即被17除得的余数为13。 当n为素数p时,就是费尔马定理。 费尔马定理 若p是素数,(a,p)=1,则ap-1 ≡1(mod p).
此时必有gcd(m,q)=1,否则m也是q的倍数,从而是pq的倍数,与 m<n=pq矛盾 18 18
RSA算法 由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=tp 得mkφ(n)+1=m+rtpq=m+rtn
am
a a a bk 2
2 bk 1
2 bk 2
2
ab1 ab0
31 31
RSA算法 例:求a19 19=1×24+0×23+0×22+1×21+1×20 所以
a19=((((a1)2a0)2a0)2a1)2a1 练习:求a7和a8,并统计快速运算法的运算次数.
32 32
平方乘算法
于解密或签名; • 由私钥及公开参数容易计算出公开密钥; • 由公钥及公开参数推导私钥是困难的;
99
单向陷门函数 定义 单向函数是两个集合X、Y之间的一个映射,使得Y中每 一元素y都有惟一的一个原像x∈X,且由x易于计算它的像y, 由y计算它的原像x是不可行的. 一个函数是单向陷门函数,是指该函数是易于计算的,但求 它的逆是不可行的,除非再已知某些附加信息。当附加信息 给定后,求逆可在多项式时间完成.
1=3-2=3-(29-3*9)=3*10-29=(264-29*9)*10-29
=264*10-29*91
=-91≡173mod264
由欧几里德扩展算法可得:d为173。
24
逆元
设m是正整数,a是整数,如果存在a’, 使得a×a’ ≡1(modm)成立,则a叫模m的可逆元,a’ 叫a模m的逆元。
证明RSA算法中解密过程的正确性. 证明: 由加密过程知c≡me mod n,所以 cd mod n≡med mod n≡m1 mod φ(n) mod n mod n
Biblioteka Baidu
≡mkφ(n)+1
17 17
RSA算法
下面分两种情况: ① 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,先看gcd(m,n)=1的含义,由于n=pq,所以 gcd(m,n)=1意味着m不是p的倍数也不是q的倍数。 因此gcd(m,n)≠1意味着m是p的倍数或q的倍数,不妨设m=tp, 其中t为一正整数。
23
RSA算法举例
在RSA算法密钥产生过程中,设p=13,q=23,取公钥e=29, 则私钥d可以用欧几里德扩展算法求出。
由已知可得n=pq=13*23=299,
φ(n)=(p-1)(q-1)=12*22=264。
e*d ≡1 mod φ(n) 怎么求解
264=29*9+3
29=3*9+2
3=2+1
例如,设m为11,则8模11的逆元为7,因为 8×7≡1(mod11)
当a和m互素的情况下,即(a,m)=1,则a的模m的逆元总 是存在的,且可以用上面的辗转相除法求得。
25
求逆元举例
例如,我们知道89是素数,求60模89的逆元,可以用下 面方法。
89=1×60+29 60=2×29+2 29=14×2+1 则1=29-14×2 =29-14×(60-2×29) =29×29-14×60 =(89-60) ×29-14×60 =89×29-60×43
5
公钥加密模型
公钥加密体制的原理
Bob (发送端)
公开的密钥
密钥分 配
Alice (接收端)
66
公钥密码体制的原理 77
公钥加密体制的原理 邮箱的例子 任何人可以向邮箱投举报信 用户(审计人员)才能打开邮箱,读信的内容
88
公钥加密体制的原理
公钥密钥对参数生成需满足的要求: • 公开密钥(public-key), 可以被任何人知道, 用于加密或验
关于欧拉函数的重要结论
关于欧拉函数的重要结论。 若(m1,m2)=1,则 (m1m2)= (m1) (m2), 尤其是当m1 ,m2都为素数时, (m1m2)= (m1) (m2) = (m1-1)(m2-1). 例如, (15)= (3) × (5)=2×4=8. 实际上,这些 数是1,2,4,7,8,11,13,14,共8个。 可以用等差数列的方式证明当m1,m2都为素数时的情形
27
RSA算法举例 (1)加密过程:设RSA算法的参数选择如上所述,当消 息m=9所对应的密文的计算过程为:929mod299=211 (2)解密过程:211173 mod299≡9
28
RSA算法 例: 选p=7,q=17.取e=5 ,设明文m=19,求密文c 求得n=p×q=119,φ(n)=(p-1)(q-1)=96. 取e=5,满足1<e<φ(n),且gcd(φ(n),e)=1, 计算满足d·e=1 mod 96且小于96的d. 因为77×5=385=4×96+1,所以d为77, 因此公开钥为{5,119},秘密钥为{77,119}.
非对称密码体制 (公钥密码体制)
1
• 公钥密码体制提出和分类 • 公钥密码体制概念 • 单陷门函数概念 • RSA算法 • EIGamal算法 • 椭圆曲线密码算法
2
公钥密码体制的提出
• 密钥分配:加密者指定一个密钥后,必须得想方设法把密钥 分发出去给解密者,同时还得小心翼翼确保密钥不被泄露。 这是对称密码算法固有的一个矛盾,如何解决呢? –对称密码进行密钥分配的要求: –已经共享一个密钥: –利用密钥分配中心: 第一个密钥如何获得
善的公钥密码体制,该体制已得到广泛的应用。
•
它既可用于加密、又可用于数字签字。
•
RSA算法的安全性基于数论中大整数分解的困难性。
•
R L Rivest, A Shamir, L Adleman, "On Digital
Signatures and Public Key Cryptosystems",
33
练习题 求解 1177mod 23 =?
34
求解 1177mod 23 =?
77=(1001101)2
i
bi
6
1
5
0
4
0
3
1
2
1
1
0
练习题
d d=1 1*11 mod 23≡ 11 11*11 mod 23≡6 6*6 mod 23≡ 13 13*13 mod 23≡ 8 8*11 mod 23≡ 19 19*19 mod 23≡16 16*11 mod 23≡15 15*15 mod 23≡18
10 10
单向陷门函数 单向陷门函数是一族可逆函数fk,满足 ① Y=fk1(X)易于计算(当k1和X已知时). ② X=f-1k2(Y)易于计算(当k2和Y已知时). ③ X=f-1k2(Y)计算上是不可行的(当Y已知,但k2未知时) ④ 已知K1,计算出K2是不可行的(当K1已知,但k2未知时) 研究公钥密码算法就是要找出合适的陷门单向函数
11 11
公钥密码体制的发展历史
• Diffie和Hellman
12
公钥密码体制的发展历史
Ronald Rivest, Adi Shamir, and Len Adleman
13
RSA算法
•
RSA算法是1978年由R.Rivest, A.Shamir和L.Adleman
提出的一种用数论构造的、也是迄今为止理论上最为成熟完
30 30
RSA算法模幂运算
2. 模指数运算的快速算法 例如求x16,直接计算的话需做15次乘法。然而如果重复对每 个部分结果做平方运算即求x,x2,x4,x8,x16则只需4次乘法。
求am可如下进行,其中a,m是正整数: 将m表示为二进制形式bk bk-1…b0,即 m=bk2k+bk-12k-1+…+b12+b0 因此bk=0 而 bk-i=1或者bk-i=0
和KDC之间的密钥如何获得
3
公钥密码---密钥问题
4
实际需要-密钥管理 使用非对称密钥密码体制进行秘密通信时,假设一个网络 中有n个用户,则需要2n个密钥,若n=1000,则2000,则与对 称密码体制的密钥500000,密钥管理的复杂度大大缩小。 非对称密码体制密钥的复杂度是线性的 2n 对称密码体制密钥的复杂度是平方级的 n(n-1)/2
设明文m=19,则由加密过程得密文为 c≡195 mod 119≡2476099 mod 119≡66; 解密过程为 m ≡ 6677mod 119≡19.
29 29
RSA算法模幂运算问题
RSA中的计算问题 1. RSA的加密与解密过程
RSA的加密、解密过程都为求一个整数的整数次幂, 再取模。如果按其含义直接计算,则中间结果非常大,有可 能超出计算机所允许的整数取值范围。如上例中解密运算6677 mod 119,先求6677再取模,则中间结果就已远远超出了计算 机允许的整数取值范围。而用模运算的性质: (a×b) mod n=[(a mod n)×(b mod n)] mod n 就可减小中间结果。
26
求逆元举例
等式两端同时mod89得:60×(-43) ≡1mod89
故60模89的逆元为-43,为方便记为最小非负数,因为43≡46 mod89,故一般说60模89的逆元为46.
如何用程序实现求逆元? 实际上,这里的逆元通常称为乘法逆元。从后面的学习 可以看到,定义不同的运算和单位元,就可能有不同情况下的 逆元。
Communications of the ACM, vol 21 no 2, pp120-126,
Feb 1978
14 14
RSA算法
1. 密钥的产生 ① 选两个安全的大素数p和q。 1该整选②数取数是大值计否素。算为数n素的=p数方×法q,:φ随(机n)产=(生p-一1)个(q大-1整),数其,中利φ用(n素)是性n检的测欧算拉法函判定 2 以③往素选检一测整的数算e法,都满是足概1<率e<性φ的(n,),即且存g在cd一(φ定(的n)错,e误)=概1。率; 3 20④03年计,算印d,度满人足发d表·文e章≡1“mPordimeφs(ni)s,i即nd是P”e在,模证φ明(了n)素下判的定乘问题 是一个法多逆项元式,时因间e与问φ题(。n)互素,由模运算可知,它的乘法逆元一 定存在。(一般公钥取值为65537(216+1)) ⑤ 以{e,n}为公开钥(PK),{d,n}为秘密钥(SK)。
/***令 m=bk2k+bk-12k-1+…+b12+b0,求am=? ***/ d=1; for i=k downto 0 {
d ≡(d×d) mod n; if bi=1 then { d ≡(d×a) mod n }
} return d 注意:在RSA中,运算的形式一般是memodn, 则在程序或 算法中,所有的乘法或乘方运算之后都有一个模运算。
1)辗转相除法 2)利用欧拉定理求e^{φ( φ(n))}-1 思考:分析两种计算方法的效率
15 15
RSA算法 2. 加密 加密时首先将明文比特串分组,使得每个分组对应的十进制 数小于n,即分组长度小于log2n。然后对每个明文分组m,作 加密运算:
c≡me mod n
16 16
RSA算法
3. 解密 对密文分组的解密运算为:m≡cd mod n
0
1
18*18 mod 23≡ 2 2*11 mod 23≡ 22
即mkφ(n)+1≡m mod n,所以cd mod n≡m.
19 19
RSA保密通信示意图
20
欧拉(Euler)函数 设 (m)为小于或等于m且与m互素的正整数个数,称 (m)为欧拉(Euler)函数。 例如, (3)=2, (5)=4, (8)=4。 显然,当p为素数时, (p)=p-1。
21
22
欧拉定理
欧拉定理 设n≥2且(a,n)=1,则a (n) 1(mod n) 例如,求132001mod17。 因 为 (13 , 17) = 1 , 所 以 13 (17) 1(mod 17) , 因 为 (17)=16,即1316≡1(mod 17)。 而 2001 = 125×16 + 1 , 132001 = ( 1316 ) 125 ·13 ≡13(mod 17),即被17除得的余数为13。 当n为素数p时,就是费尔马定理。 费尔马定理 若p是素数,(a,p)=1,则ap-1 ≡1(mod p).
此时必有gcd(m,q)=1,否则m也是q的倍数,从而是pq的倍数,与 m<n=pq矛盾 18 18
RSA算法 由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=tp 得mkφ(n)+1=m+rtpq=m+rtn
am
a a a bk 2
2 bk 1
2 bk 2
2
ab1 ab0
31 31
RSA算法 例:求a19 19=1×24+0×23+0×22+1×21+1×20 所以
a19=((((a1)2a0)2a0)2a1)2a1 练习:求a7和a8,并统计快速运算法的运算次数.
32 32
平方乘算法