第四章公钥密码体制

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

单纯的单向函数不能用作加密函数
7
公钥方案的安全性 和对称方案一样,公钥密码体制不是无条件安全的,我们 只研究公钥体制的计算安全性 安全性基于一些陷门单向函数 –求逆只是计算上不可行 –要求使用非常大的数 –因此比对称方案计算速度慢
8
公开密钥算法
4.2 RSA算法
1977年,美国麻省理工学院(MIT)的研究小组成员:李维 斯特(Rivest)、沙米尔(Shamir)、艾德曼(Adleman)提出了一种 基于公钥密码体制的优秀加密算法——RSA算法。 RSA算法是 一种分组密码体制算法,它的保密强度是建立在具有大素数 因子的合数,其因子分解是困难 因子分解是困难的。(困难的衡量标准:是否是 因子分解是困难 是否是 NP问题 。 问题)。 问题 RSA得到了世界上的最广泛的应用,ISO在1992年颁布的 国际标准X.509中,将RSA算法正式纳入国际标准。1999年美国 参议院已通过了立法,规定电子数字签名与手写签名的文件、 邮件在美国具有同等的法律效力。
xed = x mod N 计算xe和yd是比较容易的 由e和n确定d是不可行的
16
RSA 密钥产生过程
随机选择两个大素数 p, q (保密) 计算 N=p.q(n公开)
注意 (N)=(p-1)(q-1) ((N) 保密)
随机选择 e使得1<e<(N),且 gcd(e,(N))=1 解下列方程求出 d
28
例:p=47, q=61, φ(n)=2760时,e=167是否为秘密密钥的候选者? 用欧氏算法计算:gcd(2760,167)=1即可证明。 (a) 2760=167x16+88 (b) 167=88x1+79 (c) (d) (e) (f) (g) 88=79x1+9 79=9x8+7 9=7x1+2 d公开密钥的计算: (F) 1=167x1223-2760x74 (E) 1=167x39-88x74 (D) 1=79x39-88x35 (C) 1=79x4-9x35 (B) 1==7x4 - 9x3
2
公开密钥算法
4.1公钥密码体制的基本原理
1976年,美国学者Diffie和Hellman发表了著名论文《密码学 的新方向》,提出了建立“公开密钥密码体制”:若用户A有 加密密钥ka(公开),不同于解秘密钥ka’(保密),要求ka的 公开不影响ka’的安全。若B要向A保密送去明文m,可查A的公 k B A m, A 开密钥ka,若用ka加密得密文c,A收到c后,用只有A自己才掌 握的解密密钥ka’对x进行解密得到m。
18
RSA Example cont
sample RSA encryption/decryption is: given message M = 88 (注意 88<187) encryption:
C = 887 mod 187 = 11
decryption:
M = 1123 mod 187 = 88
27
问题2:e的选取和 的计算 问题 的选取和d的计算 的选取和
欧几里得算法(Euclid Algorithm) 若r0=r1*q1+r2,则gcd(r0,r1)=gcd(r1,r2)。(r0,r1都为 正整数,q1为商,r2为余数,r2<r1) 例:a=38=2*19, b=26=2*13, gcd(a,b)=2; 用欧几里得算法, ①38=26*1+12 ②26=12*2+2 ③12=2*6 其最后一个非零余数就是所求的gcd。
6
公开密钥算法
公钥密码学的理论基础
公开密钥密码体制基于陷门单向函数 公开密钥密码体制基于陷门单向函数 单向函数f(x) P50 单向函数 (1)给定x,计算y=f(x)是容易的; (2)给定y, 计算x使y=f(x)是非常困难的,
具有陷门信息的单向函数 (3)存在δ,已知δ 时,对给定的任何y,若相应的x 存在,则计算x使y=f(x)是容易的。 单向陷门函数的例子 暗码锁 、 x b mod n
14
RSA算法 算法
由MIT的 Rivest, Shamir & Adleman 在 1977 提出 最著名的且被广泛应用的公钥加密体制 明文、密文是0到n-1之间的整数,通常n 的大小为1024位或309位十进制数
Biblioteka Baidu
15
RSA算法描述 算法描述
加密: y=xe mod N, where 0≤x<N 解密: x=yd mod N 公钥为(e,N), 私钥为(d,N) 必须满足以下条件:
26
公开密钥算法
在 2到X的区间中,随机选择一个值为素数的概率 近似等于π(X)/(X-1)。可以证明,在找到一个素数 之前,平均要进行(X-1)/ π(X)≈LN(X)次实验。
1. 随机选一个奇数n (如: 可使用伪随机数发生器) 2. 随机选择一个整数a < n 3. 执行概率素数判定测试(如:用WITNESS(a,n)),如果n 未测 试通过,则 拒绝数值n, 转向步骤1 4. 如果n已通过足够的测试, 则接受n, 否则转向步骤2;
第四章公钥秘密体制
1
传统密码体制的缺陷: 传统密码体制的缺陷
(1)密钥必须通过某一信道协商 密钥必须通过某一信道协商 对这个信道的安全性的要求比正常的传送消息的信道的安 全性要高 (2)密钥管理量的困难 传统密钥管理:两两分别用一个密钥时,则n个用户需要 C(n,2)=n(n-1)/2个密钥,当用户量增大时,密钥空间急剧 增大。如:n=100时,C(100,2)=4,995 n=5000时,C(5000,2)=12,497,500 (3)数字签名的问题 传统加密算法无法实现抗抵赖的需求。
13
数论知识简介
a,x,n都为整数 定义4 逆元。 定义 若ax mod m =1,则称a与x在乘法运算下关于模m互为逆元 逆元 如2和3关于模5互为逆元。 若a和m互素,则a在模m下有逆元。故z m*中每个元素关于模 都 中每个元素关于模m都 有逆元。 有逆元。用Euclid算法求乘法逆元 。 z m*定义为 m 中与 互素的数的集合 定义为z 中与m互素的数的集合 互素的数的集合. Euler函数:φ(n)=与n互素的、小于n的正整数的个数,即z m*中 元素的个数。例: φ(3)= φ(4) = φ(6) =2,φ(5)=4,φ(7) =6, φ(12)=6 若n是素数,则φ(n)=n-1 若n=p*q,p、q是不同素数,则φ(n)=(p-1)*(q-1) 例: φ(21)= φ(3*7)=2*6=12
10
定义2 互素:若a,b都为整数,且gcd(a,b)=1, 定义 互素 则整数a和b互素。
11
数论知识简介
定义3 定义 模运算 同余:如果a和b都是整数,而m是一个固定的正整数,则当m 同余 能够整除a-b时,称a,b对模m同余,记为 a≡b(mod m),如 果a除m的余数为r,则r称为a模m的剩余,记作 a mod m. 如a mod m=b mod m,表示(a-b)mod m=0; 定义:z m={0,1,2,3,……m-1}, 为模 剩余集 其中m为整数. 为模m剩余集 剩余集,
23
RSA 密钥生成
必须做
确定两个大素数: p, q 选择e或者d,并计算d或者e
素数测试是重要的算法 由e求d要使用到扩展Euclid算法
24
问题1:素数的产生 问题 素数的产生 目前,适用于RSA算法的最实用的办法是概 率测试法。该法的思想是随机产生一个大奇数 ,然后测试其是否满足条件,如满足,则该大 奇数可能是素数,否则是合数。素数定理说明 素数有无穷多个,同时也说明通过随机产生一 个大奇数来判断其素性是具有实用性的。
3
公钥密码体制
4
公钥密码学解决的基本问题
密钥交换
对称密码进行密钥交换的要求:
已经共享一个密钥 利用密钥分配中心
数字签名
与传统的签名比较
5
公钥密码学
是密码学一次伟大的革命 使用两个密钥:公钥、私钥 六个组成部分:
明文、密文;公钥、私钥; 加密、解密算法
仅根据密码算法和加密密钥来确定解密密钥在 计算上不可行 加解密的非对称性 是对对称密码的重要补充
21
解密过程的证明
定理:若n=pq是两个素数因子的乘积,X限制在加密与解 密所要求的集合{0,1,…,n-1}之中,则对于任何明文X 有 X mφ(n)+1 ≡X (mod n) 证明:1)X=0的情况显然是成立的。 2)下面要证明X>0的情况也是成立的: a) 若x与n互素,由欧拉定理可得证
b) 若X不是与n=pq互素的,则X必须包括p或者q作为一个因子。设p为 X的因子,对于某些正整数c,有关系式X=cp。 由于X限于集合{0,1,…,n-1}之中,且n=pq,从而可知X必定是与q互素 的,否则X将包含q作为一个因子,这种情况下X将越出n-1。 由欧拉定理有X φ(q) ≡1 (mod q),其中φ(q)=q-1, 所以 X m(p-1)φ(q) ≡ 1 m(p-1) ≡1 (mod q),对于任何整数m都成立, 并且(p-1) φ(q)=(p-1)(q-1)= φ(n), 因此有 X mφ(n) ≡ 1 (mod q),或对于某些整数k,有 1= X mφ(n) +kq 用X=cp分别乘以等式的两端,得 X= X mφ(n)+1 +(kq)(cp) = X mφ(n)+1 +kcn 因此 X mφ(n)+1 ≡X (mod n) 对于q为X的一个因子的情况,同理可证。
e.d=1 mod (N) 且 0≤d≤N
公布公钥: KU={e,N} 保存私钥: KR={d,p,q}
17
RSA Example
1. 2. 3.
4. 5.
6. 7.
Select primes: p=17 & q=11 Compute n = pq =17×11=187 Compute (n)=(p–1)(q1)=16×10=160 Select e : gcd(e,160)=1; choose e=7 Determine d: de=1 mod 160 and d < 160 Value is d=23 since 23×7=161= 10×160+1 Publish public key KU={7,187} Keep secret private key KR={23,17,11}
25
公开密钥算法 关于素数的分布 1 - 100 25 101 - 200 21 201 - 300 16 301 - 400 16 401 - 500 17 501 - 600 14 601 - 700 16 701 - 800 14 801 - 900 15 901 - 1000 14 素数定理:当X变得很大时,从2到X区间 的素数数目π(X)与X/ln(X)的比值趋近于1 ,即 π(X) lim x→∞ X/ln(X) = 1
12
数论知识简介
模运算: 模运算 9+9=6 mod 12 9×9=9 mod 12 9-10=11 mod 12 模运算的性质: 模运算的性质 [(a mod m) +(b mod m)]mod m=(a + b) mod m; * 例:152 mod 12 =(3*3) mod 12=9 * ; ;
19
注意: 注意:
对任意整数k, Xe (mod n)≡(X+kn)e (mod n),所以每 一个明文X,X+n,X+2n, …,X+mn将产生同样的密文。 若限定X在集合{1,2,…,n-1}之内时,明文与密文就是一对 一了。
20
解密过程的证明
因为 Euler 定理的一个推论: Mk(n)+1 = M mod N RSA 中: N=p.q (N)=(p-1)(q-1) 选择 e & d 使得ed=1 mod (N) 因此 存在k使得e.d=1+k.(N) 因此 Cd = (Me)d = M1+k.(N) = M mod N 具体证明过程见后:
9
数论知识简介
定义1 素数:只能被1和它本身整除的自然数;否则为合数。 定义 素数 每个合数都可以唯一 唯一地分解出素数因子 唯一 6 = 2 3 999999 = 3337111337 27641 = 131121 从2 开始试验每一个小于等于√27641 的素数。 整数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年
相关文档
最新文档