- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
公钥密码学与RSA-Read
公钥密码学与RSA 对称密码体制的缺陷 公钥密码学 是密码学一次伟大的革命 1976年,Diffie和Hellman 在“密码学新方向”一文中提出 使用两个密钥:公密钥、私密钥 加解密的非对称性 公钥加密算法是基于数学函数而不是对位的形式的简单操作。 是对对称密码的重要补充 公钥加密一般用于消息认证和密钥分配。 公钥密码学解决的基本问题 密钥交换 对称密码进行密钥交换的要求: 已经共享一个密钥 利用密钥分配中心 数字签名 与传统的签名比较 公钥密码体制 重要特点 仅根据密码算法和加密密钥来推导解密密钥在计算上不可行 两个密钥中的任何一个都可用来加密,另一个用来解密。 六个组成部分: 明文、密文;公钥、私钥; 加密、解密算法 公钥密码体制 公钥密码体制的加密功能 A向B发消息X, B的公钥为KUb,私钥为KRb 加密 Y = EKUb(X) 解密 X = DKRb(Y) 公钥密码体制的加密 公钥密码体制的认证 A向B发送消息X A的公钥为KUa,私钥为KRa “加密”: Y = EKRa(X) (数字签名) “解密”: X = DKUa(Y) 注意:不能保证消息的保密性 具有保密与认证的公钥体制 对称密码 公钥密码 关于公钥密码的几种误解 公钥密码比传统密码安全? 任何加密方案的安全性都依赖于密钥的长度和破解密码的计算工作。所以公钥加密不必常规加密更安全。用户只要保护他的私钥,接收的通信就是安全的 公钥密码是通用方法,所以传统密码已经过时? 传统密码用来加密大批量数据,公钥密钥用来进行密钥分配。 RSA算法 由MIT的 Rivest, Shamir Adleman 在 1977 提出 最著名的且被广泛应用的公钥加密体制 明文、密文是0到n-1之间的整数,通常n的大小为1024位或309位十进制数 RSA算法描述 加密: C=Me mod N, where 0≤MN 解密: M=Cd mod N 公钥为(e,N), 私钥为(d,N) 必须满足以下条件: 计算Me和Cd是比较容易的 由e和n确定d是不可行的 RSA 密钥产生过程 随机选择两个大素数 p, q 计算 N=p.q 注意 ?(N)=(p-1)(q-1) 选择 e使得1e?(N),且gcd(e,?(N))=1 解下列方程求出 d e.d=1 mod ?(N) 且 0≤d≤N 公布公钥: KU={e,N} 保存私钥: KR={d,p,q} RSA 的使用 发送方要加密明文M: 获得接收方的公钥 KU={e,N} 计算: C=Me mod N, where 0≤MN 接收方解密密文C: 使用自己的私钥 KR={d,N} 计算: M=Cd mod N 注意:M必须比N小 为什么RSA 可以加解密 因为 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 RSA Example Select primes: p=17 q=11 Compute n = pq =17×11=187 Compute ?(n)=(p–1)(q-1)=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= 1×160+1 Publish public key KU={7,187} Keep secret private key KR={23,17,11} RSA Example cont sample RSA encryption/decryption is: given message M = 88 (nb. 88187) encryption: C = 887 mod 187 = 11 decryption: M = 1123 mod 187 = 88 RSA 密钥生成 必须做 确定两个大素数: p, q 选择e或者d,并计算d或者e 素数测试是重要的算法 由e求d要使用到扩展Euclid算法 RSA 的安全性 三种攻击 RSA的方法: 强力穷举密钥:尝试所有可能的密钥。因此,e 和d 的位数越大,算法就越安全。然而,在密钥产生和加密解密中使用的计算都非常复杂,所以密钥越大,系统运行越慢。 时间攻击:依赖解密算法的运行时间 RSA 的安全性 数学攻击 :实质上是对两个素数乘积的分解.
文档评论(0)