- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
crypto4c-ch09-公钥密码学和RSA要点
公钥算法加密 加密(如果有人要给该用户A发送消息P) 他先获得该用户的公开钥Ke 加密 C = E(P,Ke) 传输 解密 D(C,Kd)=P 除非拥有Kd,象该用户A,否则不能解开 构造公钥算法的考虑 对称算法 替换 混乱 基于某些数学特性 从公钥推导私钥理论可能,但计算困难 (从私钥到公钥容易) 单向函数(one-way function) 1977年,R, S, A Ron Rivest /~rivest/ Adi Shamir http://www.wisdom.weizmann.ac.il/~shamir/ Len Adleman /dept/molecular-science/ 9.2 RSA算法 RSA算法基本参数 分组密码算法 基于整数乘法 明/密文分组以及公/私钥被看作小于n的整数 加/解密是模乘运算 RSA算法参数建立 找素数 选取两个512bit的随机素数p,q 计算模n和Euler函数φ(n) n=pq φ(n)=(p-1)(q-1) 找ed≡1 mod φ(n) 选取数e,用扩展Euclid算法求数d 发布 发布(e,n),这是公钥ke d保密,(d, n)是私钥 kd RSA加解密 加密 明文分组m做为整数须小于n c = me mod n 解密 m = cd mod n RSA的正确性 证明 依据Euler定理,在mod n的含义下 cd=(me)d=med mod n =mkφ(n)+1 mod n =(mφ(n))km1 mod n =m mod n // 据Euler定理 关于mkφ(n)+1 如果n=pq,则mkφ(n)+1 =m mod n 如果m和n互素,直接使用欧拉定理即得 如果m和n不互素,则公因子必是p(或者q) 事实上,此时 mkφ(n)+1≡m mod p (因为m是p的倍数) mkφ(n)+1≡m mod q (根据Fermat小定理) mkφ(n)+1≡m mod pq (由以上两式) 关于推广到n=pqr的情形 RSA计算实例 选p=7,q=17 则n=pq=119 且φ(n)=(p-1)(q-1)=6×16=96 取e=5 则d=77 (5×77=385=4×96+1≡1 mod 96) 公钥(5,119),私钥(77,119) 加密m=19 则c=me mod n= 195 mod 119 = 66 mod 119 解密c=66 m=cd mod n = 6677mod 119=19 mod 119 演示实现 程序功能: 用p和q为素数,则n=pq且f(n)=(p-1)(q-1) e为加密指数, 则求得解密指数d满足ed=1 mod f(n) 加密明文x,则得密文y=x^e mod n 解密密文y,则得解密明文x2=y^d mod n 注意:e必须和fn互素 用法:pqex p q e x p和q都是素数 e和(p-1)(q-1)互素 x小于pq 举例 RSA实现考虑 素数 必须够大,否则对手可能很快分解n 判定,试除法不可行 判定,采用Miller-Rabin概率测试方法 强素数 (p-1)/2和(q-1)/2应是素数 选取较小的e(较大的d) e:3、65537 快速计算 X^Y%Z ? X^Y%Z模幂乘举例 97221 % 2003 (都在模2003意义下) 97221 = 97128+64+16+8+4+1 = 97128 9764 9716 978 974 971 依次计算971、 972、 974、 978、 9716… 97128 一直平方下去即可,并保持模2003 如果某次方在1式出现,则累乘 累积开始是1 * 乘法次数O(log2Y) 模幂乘算法实现 计算W=X^Y mod Z W=1 For each bit of Y=Y1Y2…Yk W=W*W % Z if Yi=1 then W=W*X % Z End For 使用中国剩余定理(n=pq) m ≡ m1 mod p m ≡ m2 mod q m ≡ ? mod pq m=m1*q*q-1modp+m2*p*p-1modq 可加快约4倍 RSA-CRT 解密(签名) N = p * q mp = cd mod (p-1) mod p mq = cd mod (q-1) mod q Find m Gauss m = (mp*q*(q-1mod p)+mq*p*(p-1mod q)) mod N Garner m = mq + ((mp-mq) * (q-1 mod p) mod p) * q “multi-prime” RSA 区别 模n是多
原创力文档


文档评论(0)