公钥密码算法RSA
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现证: 现证: med mod N = m 已证:对所有 x ,都有 孙子定理 x ed mod p = x mod p ed p与q 互素 与 x mod q = x mod q ed x mod pq = x mod pq 当0≤ x<N 时,有
x mod N = x
ed
(2) RSA的改进 ---- e 和 d 可以更小 ) 的改进 将φ(N)=(p-1)(q-1)由p-1和q-1最小公倍数 = 由 和 最小公倍数 λ(N)=lcm(p-1, q-1) = 代替,就可得到改进后的RSA体制。 体制。 代替,就可得到改进后的 体制 改进的RSA : N=pq 和 λ(N)=lcm(p-1, q-1) 改进的 = 0<e, d<λ(N), 使得 e 与λ(N)互素 且 互素, < < 互素 ed modλ(N)=1 公开密钥: 秘密密钥: 公开密钥:(e , N) 秘密密钥:(d , N) 明文空间和密文空间: Z/(N)={0,1,…,N-1} 明文空间和密文空间: = 加密算法: c=me mod N λ(N)整除 整除φ(N) 整除 d mod N 脱密算法: m=c
《信息安全概论》课程幻灯片
第6讲 公钥密码算法 讲
主要内容
• RSA公钥密码算法 公钥密码算法 • Diffie-Hellman密钥交换协议 密钥交换协议 • EIGamal公钥加密算法 公钥加密算法
一、传统加脱密方式分析 密钥 发方
破译者 不知道 收方
加密的目的: (1) 不让窃听者读懂----信道上是密文! (2) 收方能够正常脱密----有脱密密钥即可! 结论: (1) 发方可以不具有脱密的能力! (2) 加密密钥可与脱密密钥不同,可以 公开
一、传统加脱密方式分析(续) 绝对可靠 传统加脱密方式分析( 的信道 密钥 发方 收方
传统加密的缺点: 1. 密钥必须通过可靠信道在脱密前分发完毕! 2. 密钥的分配、存储与管理非常棘手! 3. 互不信任的收发双方的抵赖与否认无法判 决 解决方案:加密密钥公开,脱密密钥保密--非对称的 要求:由公开的密钥在实际上求不出保密的密钥
三、 RSA密码算法 RSA密码算法 作 者:R. Rivest;A.Shamir;L.Adlman ; ; (美国麻省理工学院) 美国麻省理工学院) 提出时间:1977年研制,1978发表。 年研制, 发表。 提出时间: 年研制 发表 数学难题:大合数分解是计算上不可行的。 数学难题:大合数分解是计算上不可行的。
有关RSA公钥密码的 几个问题
的脱密算法为何正确? (1) RSA的脱密算法为何正确? ) 的脱密算法为何正确 N=pq 和 φ(N)=(p-1)(q-1) = 0<e, d<φ(N), 使得 e 与 (p-1)(q-1) 互素 且 互素, < < ed mod φ(N)=1 公开密钥: 秘密密钥: 公开密钥:(e , N) 秘密密钥:(d , N) 明文空间和密文空间: 明文空间和密文空间:Z/(N) ={0,1,…,N-1} 加密算法: c=me mod N 脱密算法: m=cd mod N cd mod N= (me mod N)d mod N = 问题: 问题: ed mod N ? m =m =
的安全特征( (3) RSA的安全特征(续5) ) 的安全特征 ) 目前分解大合数的最好算法是数域筛法, 目前分解大合数的最好算法是数域筛法, 的二进制位数log 的亚指 其计算复杂性是 n 的二进制位数 2n的亚指 1 2 数时间: 数时间 3 3
O (e
(1.92 + o (1)(ln n ) (ln ln n )
RSA密码算法: RSA密码算法: 密码算法 Step 1 用户 用户Bob首先选取两个不同的大素数 p, 首先选取两个不同的大素数 q, 并计算出 N=pq 和φ(N)=(p-1)(q-1) 。 = Step2 选加密密钥 e: 0<e<φ(N), 使得 e 与 (p< < 1)(q-1) 互素。 互素。 最大的公因子是1 Step3求出满足 <d<φ(N)和ed mod φ(N)=1的d 求出满足0< < 求出满足 的 公开密钥: 公开密钥:(e , N) ed 被φ(N)除后 秘密密钥: 秘密密钥:(d , N) 所得的余数 明文空间和密文空间:Z/(N) ={0,1,…,N-1} 明文空间和密文空间: 加密算法: c=me mod N Bob Alice 脱密算法: m=cd mod N
(3) RSA的安全特征 ) 的安全特征 ① 已知 p 和 q、已知φ(N)=(p-1)(q-1)、 已知 = 、 或者已知λ(N)=lcm(p-1, q-1),都可由公开密 或者已知 = , 钥求出秘密密钥,还可分解n。 钥求出秘密密钥,还可分解 。 原因:此时, 已知, 原因:此时,由于 e 和λ(N)=lcm(p-1, q-1)已知, = 已知 通过解方程 ed modλ(N)=1 就可求出秘密参数d。 就可求出秘密参数 。 已知证明,即使只知道λ(N)=lcm(p-1, q-1) 已知证明,即使只知道 = 的一个倍数,也可分解n,从而破解RSA。 的一个倍数,也可分解 ,从而破解 。
秘密参数: 秘密参数: p , q , φ(N) , d
例:设RSA体制中 p=3, q=11,取加密密钥 e=7 (1) 求脱密密钥d; (2) 写出相应的加密算法和脱密算法 解: 此时N=p×q=33,且 φ(N)=(p-1)(q-1) = (3-1)(11-1) =20 = 因e=7与φ(N)=20互素,故可解模方程 = ed mod φ(N)=1 = 即 7d mod 20=1 = 得到d=3。故RSA体制为: 加密算法: c=m7mod33 = 明、密文空间: Z/(33) 加密密钥:(e, n) =(7, 33) 脱密算法: : m=c3mod33 = 脱密密钥:(d, n) =(3, 33) :
加密实例: 算法为: 加密实例 设RSA算法为 算法为 明、密文空间: Z/(33) 对密文c=2的脱密: = 加密密钥:(e, n) =(7, 33) : m=c3mod33 脱密密钥:(d, n) =(3, 33) : =23mod33 =8mod33 加密算法: c=m7mod33 = =8 脱密算法:m=c3mod33 = 当明文m=8时,密文为: = c=m7mod33 =87mod33=221mod33 = (1024)2×2mod33 =(210)2×2mod33 =(1024mod33)2×2mod33 = [(31×33+1)mod33]2×2mod33=2mod33 = 2
大合数分解问题的困难性 已知 p 和 q ,很容易计算出 p×q = ?; × 但是, 但是,如果已知 p×q = n,由 n 计算 × , p= ? 和 q = ? = 却是十分困难的。这就是因式分解问题。 却是十分困难的。这就是因式分解问题。 例如: 例如:345677 × 135317 = 46775974609 困难! 计算 46773080681 = ?× ?困难! 解决该问题的一种最直接的方法就是利 )。但当 用每个可能的 p 试除 n(穷举 )。但当 很 (穷举p)。但当n很 大时,该方法的计算量太大。 大时,该方法的计算量太大。最多需试除 n次
的安全特征( (3) RSA的安全特征(续3) ) 的安全特征 ) ④ 两个素数 p 和 q 不能选择的太接近。 不能选择的太接近。 ± 和 ± 应当有大的素因子。 ⑤ p±1和q±1应当有大的素因子。 应当有大的素因子 一般取p-1=2p*是素数 *的2倍,这样 是素数p 一般取 倍 的素数称为安全素数。 的素数称为安全素数。 脱密密钥不能选择的太小: ⑥ 脱密密钥不能选择的太小 当脱密指数的位数小于模数N的位数 当脱密指数的位数小于模数 的位数 分之一时, 的4分之一时,就可利用连分数方法或 3 分之一时 就可利用连分数方法或L 算法求出秘密指数d. 算法求出秘密指数
)百度文库
穷举攻击的计算复杂性是log2n的指数时间: 的指数时间: 穷举攻击的计算复杂性是 的指数时间
n=e
ln n
=e
(ln n )1 (ln ln n ) 0
关键参数:1/3
关键参数:1 注意:能分解 未必不能破解RSA。(没有证明 没有证明) 注意:能分解n 未必不能破解 。 没有证明
(4) RSA的安全界限 ) 的安全界限 时可分解n 已有实验报道) ① 当 log2n≤512时可分解 (已有实验报道) 时可分解 已有实验报道 ② 当 log2n≤512+256时,已证明分解 的计算 时 已证明分解n的计算 量可以实现。 量可以实现。 密码学界普遍认为,要使RSA安全,log2n 安全, ③ 密码学界普遍认为,要使 安全 至少要大于1024,一般应取 至少要大于 ,一般应取2048;更保守的选 ; 择是取log 择是取 2n = 4096。 。
的安全特征( (3) RSA的安全特征(续1) ) 的安全特征 ) 已知一对公、私钥(e,n)和(d,n),就可分解 ② 已知一对公、私钥 和 ,就可分解n 原因:此时, 可推知ed 是 原因:此时,由 ed modλ(N)=1可推知 –1是 可推知 λ(N)的一个倍数,因而可分解 。 的一个倍数,因而可分解n。 意义:只要掌握一个模数 n 对应的一对密钥, 对应的一对密钥, 意义: 就可破解基于该模数n设计的所有 设计的所有RSA算法。 算法。 就可破解基于该模数 设计的所有 算法 因此,不同的RSA用户,应配发不同的模 用户, 因此,不同的 用户 数n。 。
的安全特征( (3) RSA的安全特征(续4) ) 的安全特征 ) 不动点: 不动点: (A)m = 0 ) (B)m = 1 ) (C)m = N-1 ) c=me mod N= (N-1)e mod N= (-1)e mod N = = = (-1) mod N = N-1 c=me mod N=0 = c=me mod N=1 =
二、公钥密码体制的基本思想 (Diffie-Hellman在1977年提出) 密码算法有一对密钥:一个用于加密,称为 加密密钥;另一个用于脱密,称为脱密密钥。 加密密钥是公开的,而脱密密钥是保密的, 且加密密钥的公开不会危及脱密密钥的安全。 此时,加密消息不受限制(加密密钥公开), 但只有能够脱密者只有一个!
二、公钥密码体制的基本思想 此时,如果一个用户使用秘密密钥处理信 息,其它用户都可使用公开密钥解读处理过的 信息。 该方法可实现数字签名。 识别签名 数字签名
基于公钥密码的保密通信和数字签名 公开密钥 难求出 秘密密钥
用 作 加密密钥 用 作 签名识别密钥
用 作 脱密密钥 用 作 签名密钥
依赖于特殊的 数学难题
的安全特征( (3) RSA的安全特征(续2) ) 的安全特征 ) 公开指数e太小 太小( ),通播信息不安全 ③ 公开指数 太小(如e=3),通播信息不安全 ), 向用户A1发送密文: m e mod n1 = c1 向用户A2发送密文: m e mod n2 = c2
… … … … … …
向用户At 发送密文: m e mod nt = ct 如果 e 很小, 可由密文c1 , c2 , …, ct求出消息 m 不妨设 互素, 不妨设n1, n2, …, nt互素,则由孙子定理可求出 y = m e mod n1 n2… nt 很小,就有 就有m 如果 e 很小 就有 e < n1 n2… nt , 从而 me mod n1 n2…nt = m e , 在实数域中可求出m = e y
现证: 现证:当0≤ x<N 时,有 xed mod N = x 首先: 首先:由ed mod φ(N)=1 和 φ(N)=(p-1)(q-1) = 存在整数k, 存在整数 ,使得 ed =k(p-1)(q-1)+1 Fermat小定理 设 p 是素数,则任意非零整 数 m,都有 x p-1 mod p = 1 xk(p-1)(q-1) mod p = 1 对所有整数 x,都有 + xk(p-1)(q-1)+1 mod p = x mod p 即: xed mod p = x mod p 对所有 x 都成立 同理可证:xed mod q = x mod p 对所有 x 都成立