RSA保护的程序 注册机制作思路总结
【文章标题】: RSA保护的程序注册机制作思路总结
【文章作者】: FishSeeWater
【作者声明】: 前几天分析了一个RSA保护的软件,把与RSA相关的部分知识整理一下,以做备忘,
本想与软件分析一起发了,但感觉还是分离出来比较清晰,失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
预备知识:
(一)RSA密码学的介绍:
这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。
算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个
才能解密。
RSA的算法涉及三个参数,n、e、d。
其中,n是两个大质数p、q的积。n的二进制表示时所占用的位数,就是所谓的密钥长度。
e和d是一对相关的值,e可以任意取,但要求满足e<(p-1)*(q-1)并具 e与(p-1)*(q-1)互质(就是最大公约数为1);
再选择d,要求(d*e)mod((p-1)*(q-1))=1。
(n及e),(n及d)就是密钥对。
RSA加解密的算法完全相同,设M为明文,c为密文,则:
加密:C=M^e mod n;
解密:m=c^d mod n;
注:上面两式中的e和d可以互换。
n d两个数构成公钥,可以告诉别人;
n e两个数构成私钥,e自己保留,不让任何人知道。
给别人发送的信息使用私钥e加密,只要别人能用公钥d解开就证明信息是由你发送的,构成了签名机制,起验证身份的作用。
别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密,起到数据保密的作用。
整理一下:
为实现RSA的加解密
最终目标:找三个参数 n,e,d
1、n = p*q (p,q 是两个质数)
2、
1)、φ(N)=(p-1)*(q-1)
2)、取任何一个数e,要求满足e<φ(N)并且e与φ(N)互质
3、(d*e) modφ(N)=1
(二)采用RSA算法保护软件的攻击方法
1、分解RSA三个参数中的 n (使用前提条件:n的位数小于512的时候可行):
如果n位数太大,一般分解是很困难的。一旦分解成功,就可以通过d与分解的质数求出e。求e方法见后。
2、RSA小指数攻击法(使用前提条件:知道了 n、d,并且 e 较小):
RSA加密方法为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,有一种提高RSA
速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但也降低了加密的安全性。
例如:
如果加密时选用一个小e,而将 d,n发送给对方进行解密,如果对方想获取e,就可以用穷举方法小e。
伪码如下:
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
