- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RSA算法的数论基础
公钥密码体制基础
一个好的密码体系的必要条件是合法用户能够很容易对秘密消息进行加密和解密,而这些过程对于其他人则是非常难的。
公钥密码体制的实现基于单向陷门函数。
单向陷门函数:
设f是一个函数,t是与f有关的一个参数。对于任意给定的x,计算y,使得y=f(x)是容易的。
如果当不知道参数t时,计算f的逆函数是难解的。
但当知道参数t时,计算f的逆函数是容易的。
则称f是一个单向陷门函数,参数t称为陷门。
二、RSA算法的安全基础
计算机科学家Rivest、Shamir和Adleman提出了基于素性检测和整数分解的第一个使
用公钥密码体制。算法的安全性建立这一数论难题基础上:将两个大素数相乘是容易计算的,而将该乘积分解成两个大素数因子是困难的。
素性检测问题:检测n的素性的最好额判定算法运行时间为,关于输入长度呈超越多项式速度增长。
整数因子分解问题:分解一个一般的整数n的最好的算法运行时间为,关于输入长度呈亚指数速度增长。
三、RSA算法实现的基础定理
算术基本定理:
任何大于1的整数n能被因式分解为如下唯一形式:
n=p1p2…pl(p1,p2,…,pl为素数)
费马小定理:
若p是素数,a与p互素,则
欧拉定理:
欧拉函数表示不大于n且与n互素的正整数的个数。
当n是素数,。,p,q均为素数时,则
对于互素的a和n,有
RSA算法的实现
1. 密钥的产生
① 选两个互异的大素数p和q。
② 计算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函数值。
③ 选一随机整数e,满足1eφ(n),且gcd(φ(n),e)=1。
④ 计算d,满足d·e≡1 mod φ(n),即d是e在模φ(n)下的乘法逆元,因e与φ(n)互素,由模运算可知,它的乘法逆元一定存在。
⑤ 以{e,n}为公开钥,{d,p,q}为秘密钥。
2. 加密
加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于。然后对每个明文m,作加密运算:
3. 解密
对密文分组的解密运算为:
五、证明RSA算法中解密过程的正确性
设p,q是不同的素数,n=pq记φ(n)=(p-1)(q-1),如果e,d是与φ(n)互素的两个正整数(e,dφ(n)),并满足ed≡1(mod φ(n)),则对于每个整数x,都有。
分析:为了证明,只要证明φ(n)是的因数即可。又因为n=pq,而p,q都是素数,故只要证明p和q都是的因数即可,即
(1)
(2)
证明:证明式1,若p是x的因数则式1必然成立
若p不是x的因数,则由ed≡1(mod φ(n))得ed-1=k(p-1)(q-1),k为任意整数
则
根据费马小定理
因为x与p互素所以
所以
同理可证
即证
六、RSA算法中的计算问题
1.模运算性质
RSA的加密、解密过程的运算都为求一个整数的整数次幂,再取模。如果按其含义直接计算,则中间结果非常大,有可能超出计算机所允许的整数取值范围。而用模运算的性质:(a×b) mod n=[(a mod n)×(b mod n)] mod n就可减小中间结果。
2.模重复平方计算法
例如求,直接计算的话需做15次乘法。然而如果重复对每个部分结果做平方运算即求x,,,,则只需4次乘法。
3、乘法逆元的求法(欧几里德算法)
整数e,满足1eφ(n),且gcd(φ(n),e)=1
计算d,满足d·e≡1 mod φ(n),即d是e在模φ(n)下的乘法逆元,因e与φ(n)互素,它的乘法逆元一定存在。
求法可用欧几里得算法。
七、素性判定
在建立RSA密码的过程中,需要生成大量的随机素数,一般是先生成大量的随机整数,再通过算法检测其是否为素数。
判别给定的正整数是否素数简称素性判定。
举例Miller-Rabin素性检验:
给定奇整数和安全参数k
写,其中t为奇整数
1. 随机选取整数b,
2. 计算
3.(a)如果或,则通过检验,可能为素数。回到1.继续选取另一个随机整数b,
(b)否则,有以及,计算
4.(a)如果,则通过检验,可能为素数。回到1.继续选取另一个随机整数b,
(b)否则,有,计算
如此继续下去。
需要检测多少个随机整数(特定)才能找到一个素数。定义为不超过x的素数的个数,素数定理:
在1~x中随机选取一个整数,其为素数的概率大约为1/Inx。
八、因子分解
分解任意正整数n是,要寻找n的一个非平凡因子。对RSA的公开模数n,找到其任意一个非平凡因子即意味这彻底分解n和该RSA密码的破解。
举例Pollard p-1分解算法:
选择一个界B
选择一个整数k,k是大部分b的乘积满足
选择一个随机整数
计算
计算d=gcd(r-1,n)
6.如果1dn,d就是n的非平凡因子;如果d=1或d=n就回到2.
九、R
文档评论(0)