RSA算法:
大数分解问题:
计算两个素数的乘积非常容易
分解该乘积却异常困难
特别是在这2个素数都很大的情况下
1、起源
1978年美国MIT的三名数学家R.Rivest,A.Shamir和L.Adleman提出了著名的公钥密码体制:RAS公钥算法
2、思想
RAS算法基于指数加密概念,以2个大素数的乘积作为算法的公钥来加密消息,密文的解密必须知道相应的两个大素数
3、RSA公钥算法特点
- 思想最简单
- 分析最透彻
- 应用最广泛
- 易于理解和实现
- 经受住了密码分析,具有一定的可信度
4、加密变换
将信息划分成数值小于n的一系列数据分组
对每个明文分组m进行如下的加密变换得到密文c:
c=m的e次方 mod n
5、解密变换
m=c的d次方 mod n
6、RSA算法的安全性
为了保证算法的安全性,普遍认为RAS的模数长度介于1024bit和2048bit之间
除了对RSA算法本身的攻击外,RSA算法还面临着攻击者对密钥协议的攻击
共用模数攻击
低加密指数攻击
中间相遇攻击
7、RSA算法的参数选择
1)模n的确定
p,q要足够大
p,q应为强素数
p,q之差要合适
(p-1)与(q-1)的最大公因数要小(防止迭代攻击)
2)加密密钥e的选取
- e要与模数n的欧拉函数值互素
- e不能太小,e太小容易遭受低加密指数攻击
- e在模数g(n)下的阶要足够大
3)解密密钥d的选取
不能太小