RSA 共素数攻击
原理
RSA 的公钥模数 N = p * q,其安全性建立在分解大数 N 的困难性上。如果两个不同的设备、用户或应用生成了各自的模数 N_1 和 N_2,但碰巧使用了同一个素数作为因子
N_1 = p × q_1N_1 = p × q_1
那么,攻击者只要计算一次最大公约数就能立即得到公共因子 p,进而求出 q_1 和 q_2,两个模数同时被攻破
实战案例
rsa(共素数攻击)

题目源码
1 | from Crypto.Util.number import getPrime,bytes_to_long |
输出里一共有四个重要值
1 | 第一组: |
两组 RSA 生成过程
1 | p = getPrime(1024) |
两个模数共用了同一个素数 q
1 | n_1 = p_1 * q |
那么直接计算 gcd(n_1, n_2) 就能得到 q
1 | #!/usr/bin/env python3 |
强网先锋-辅助(共素数攻击)
题目中的关键代码,它只重新生成了 p,但是没有重新生成 q
1 | p = getPrime(1024) |
1 | from math import gcd |