公钥密码RSA算法记录

介绍: RSA算法是1978年由 R.Rivest、A.Shamir、L.Adleman提出的一种用数论构造的、也是迄今为止理论上最为成熟、完善的公钥密码体,该体制已得到广泛的应用。

算法描述:

1. 密钥的产生
(1) 选两个保密的两个大素数 p 和 q 。
(2) 计算 n=p*q,φ(n) = (p-1)*(q-1),其中,φ(n)是n的欧拉函数值 (即满足和n互素的在[1,n)区间的数的个数,定理[ φ(m*n) = φ(m)*φ(n),仅当m,n互素时]);
(3) 选一个整数 e ,满足 1 < e < φ(n),且  gcd(φ(n),e) = 1;
(4) 计算 d,满足 d*e ≡ 1 mod φ(n),即 d 是 e 在摸φ(n) 下的乘法逆元,因e与φ(n)互素,由模运算可知,他的乘法逆元一定存在[贝祖等式:s*a + t*b = (a,b),此时(e,φ(n))=1,因此必然存在逆元];
(5) 以 {e,n} 为公钥,以 {d,n} 为私钥。
2.加密

   加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2(n)(目的应该在于解密时答案的唯一性,即模余值)。然后对每个明文分组m,做加密运算,即
         c ≡ m^e mod(n)

4. 解密

  对密文分组的解密运算为
         m ≡ c^d mod(n)

其中的原理易于理解,利用欧拉定理 $a^{φ(m)} ≡ 1 (mod m)$ 以及 $d*e ≡ 1 mod φ(n)$可以得出结论。

攻击:
  对 n 进行暴力分解出 p 和 q,从而轻易的到密钥 e;本地的工具有windows上的RSATool2v17,可分解256 比特的n,yafu CTF比赛中遇到难以分解的 n 可以试一下,rsa-wiener-attack 用于当e过大或过小时;而目前1024~2048 比特之间的RSA是安全的;
  共模攻击、两大数 n1 和 n2 用相同大素数公约数和低指数攻击;
  重复加密攻击:若 m^{e^{t+1}} ≡ c(mod n),即 (m^{e^t})^e ≡ c(modn),则有 m^{e^t} ≡ m(mod n) ,即 c^{e^{t-1}} ≡ m(mod n) ;这种攻击只有在t较小的时候才是可行的,和pq的取值有关。具体如下:
     c^e≡(m^e)^e≡m^{e^2}(mod n)
     c^{e^2}≡(m^e)^{e^2}≡m^{e^3}(mod n)
    ...
     c^{e^{t-1}}≡(m^e)^{e^{t-1}}≡m^{e^t}(mod n)
     c^{e^t}≡(m^e)^{e^t}≡m^{e^{t+1}}(mod n)
重复对以e密文c进行加密,并且与 c 进行比对,若一致,得到t值,则攻击成功。



之前看过的一篇关于ctf中对于rsa破解的技巧分享,感觉很受用 【技术分享】CTF中RSA的常见攻击方法

转载于:https://www.cnblogs.com/zUotTe0/p/10083825.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值