- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 公钥密码;对称算法;对称算法不适合于大规模使用;密钥交换协议;Diffie-Hellman密钥交换;非对称算法/公钥算法;非对称算法/公钥算法;*;*;基于公钥的加密过程;1.1 公钥密码体制简介;公钥密码的理论基础: 陷门单向函数;公钥密码算法应满足以下要求:
① 接收方B产生密钥对(PKB和SKB)在计算上是容易的。
② 发方A对消息m加密以产生密文c,即
c=EPKB[m]
在计算上是容易的。
③ 收方B用自己的秘密钥对c解密,即m=DSKB[c]在计算上是容易的。;④ 敌手由PKB求SKB在计算上是不可行的。
⑤ 敌手由密文c和PKB恢复明文m在计算上是不可行的。
;(1)大整数分解问题(factorization problem)
若已知两个大素数p和q,求n = pq是容易的,只需一次乘法运算,而由n,求p和q则是困难的,这就是大整数分解问题。
(2)离散对数问题(discrete logarithm problem)
给定一个大素数p,p?1含另一大素数因子q,则可构造一个乘法群,它是一个p?1阶循环群。设g是的一个生成元,1<g<p?1。已知x,求y=gx mod p是容易的,而已知y、g、p,求x使得y=gx mod p成立则是困难的,这就是离散对数问题。
;;;;4.2 RSA密码算法;;一个数学题;(1). 费尔玛定理
定理1 (Fermat)若p是素数,a是正整数且gcd(a, p)=1,则ap-1≡1 mod p。
;例如: 由21=3×7,得φ(21)=φ(3)×φ(7)=2×6=12。;4.3.1 算法描述-----密钥生成;加密
将明文分组,各组对应的十进制数mn, 计算
c =E(m)≡ me mod n
解密 m = D(c)≡ cd mod n;RSA算法解密过程的正确性。
证明: 由加密过程知c≡me mod n,所以
cd mod n≡med mod n ≡mkφ(n)+1 mod n;由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=cp得
mkφ(n)+1=m+rcpq=m+rcn
即mkφ(n)+1≡m mod n,所以cd mod n≡m。(证毕);例: p=7, q=17. n=p×q=119, φ(n)=(p-1)(q-1)=96。取e=5,满足1eφ(n),且gcd(φ(n),e)=1。
确定满足d·e=1 mod 96且小于96的d,因为77×5=385=4×96+1,故d=77。
因此公钥为{5, 119},私钥为{77, 119}。
设明文m=19,则由加密过程得密文为
c≡195 mod 119≡2476099 mod 119≡66
解密为
6677mod 119≡19;1. RSA的加密与解密过程
RSA的加密、解密过程都为求一个整数的整数次幂,再取模。如果按其含义直接计算,则中间结果非常大,有可能超出计算机所允许的整数取值范围。而用模运算的性质:
(a×b) mod n=[(a mod n)×(b mod n)] mod n
就可减小中间结果。; 再者,考虑如何提高加、解密运算中指数运算的有效性。例如求x16,直接计算的话需做15次乘法。然而如果重复对每个部分结果做平方运算即求x,x2,x4,x8,x16则只需4次乘法。
求am可如下进行,其中a,m是正整数:
将m表示为二进制形式bk bk-1…b0,即
因此
;d=1;
For i=k downto 0 do {
d=(d×d) mod n;
if bi=1 then {
d=(d×a) mod n
}
}
return d.;2. RSA密钥的产生
两个大素数p、q的选取。
Miller-Rabin算法;
(2) e的选取和d的计算。
选取满足1eφ(n)和gcd(φ(n),e)=1的e,并计算满足d·e≡1 mod φ(n)的d。这一问题可由推广的Euclid算法完成。
;素性检验是指对给定的数检验其是否为素数。对于大数的素性检验来说没有简单直接的方法,本节介绍一个概率检验法,为此需要以下引理。;引理 如果p为大于2的素数,则方程x2≡1(mod p)的解只有x≡1和x≡-1。
;引理的逆否命题为:如果方程x2≡1 mod p有一解x0{-1,1},那么p不为素数。
;定理4.2 (Fermat)若p是素数,a是正
文档评论(0)