文章目录
前言
针对自己学习需要,做个学习笔记。
参考资料涉及很多,懒得写。
就各种密码学的书和MOOC上有个区块链中的密码学的课里的。
一. RSA密码涉及到的数学基础
-
欧拉函数φ(n):小于n,大于0,与n互素的数的数量。
若n=p1l1p2l2……psls,则
-
欧拉定理:若(a,n)= 1,则aφ(n) mod n = 1。
欧拉定理的推论:
(1)akφ(n) mod n = 1,如果0<a<n,(a,n)= 1;
(2)akφ(n)+1 mod n = a,如果0<a<n,(a,n)= 1;
(3)aed mod n = a,如果0<a<n,(a,n)= 1,ed mod φ(n) = 1;
(4)(ae mod n)d mod n= a,如果0<a<n,(a,n)= 1,ed mod φ(n) = 1。
二.RSA密码机制
1.传递消息的过程中RSA加密的过程
2. RSA密钥生成及信息加密过程
(1)随机生成两个大素数p、q(每个1024位),计算n = pq;
(2)计算
(3)随机生成一个与φ(n) 互素的整数e,1<e<φ(n);
(4)计算d,满足ed mod φ(n) = 1;
(5)获得公钥<n,e>,私钥<n,d>;
(6)对于传递信息M,记m为明文,c为密文,则
加密:c=me mod n 公钥:<n,e>;
解密:m=cd mod n 私钥:<n,d>.
3.攻击者破解私钥逻辑
- 攻击者破解私钥的线索
公钥<n,e>
ed mod φ(n) = 1
此时只要知道φ(n),便可以用扩展的欧几里得算法求解d: 若n=p1l1p2l2……psls,则
-
破解私钥的关键在于对n做素因子分解。
因此当n只有两个大素因子时,对n做素因子分解是极难的。
三. RSA公钥加密体制的安全性
-
参数的选取
现在普遍认为,RSA算法中的n=pq的取值为2048 bits是安全的,这相当于600位十进制整数。
1.攻击方式
(1)共模攻击(扩展欧几里得算法)
(2)直接分解模数n攻击(欧几里得算法)
(3)计时攻击
计时攻击就类似于窃贼通过观察他人转动保险柜拨号盘的时间长短来猜测密码,这种攻击不仅可用于攻击RSA,也可以攻击任何运行时间不固定的算法。
尽管计时攻击会造成严重的威胁,但仍有一些简单可行的解决办法:
- 不变的幂运算时间
- 随机延时
- 隐蔽
(4)低指数攻击(中国剩余定理)
(5)选择密文攻击(CCA)
进行CCA攻击时,攻击者选择一些密文,并获得相应的明文,这些明是利用目标对象的私钥解密获得的。
总结
这里只简单阐述了RSA的运作思路。