背景
已知e,n,c(其中n太大,分解不了),和p的高位或m的高位或d的高位
基础知识
(1)生成一个以x为符号的一元多项式环
PR.<x> = PolynomialRing(Zmod(n)) |
(2)定义求解的函数
f = x + p4 |
(3)多项式小值根求解及因子分解,其中X表示求解根的上界
roots = f.small_roots(X=2^kbits, beta=0.4) |
coppersmith的定理:
对任意的a > 0 , 给定N = PQR及PQ的高位(1/5)(logN,2)比特,我们可以在多项式时间logN内得到N的分解式。这是三个因式的分解。也就是说我们现在是由理论依据的,已知高位是可以在一定时间内分解N。
Coppersmith证明了在已知p和q部分比特的情况下,若q和p的未知部分的上界X和Y满足XY <= N 0.5则N的多项式可以被分解。这里的0.5可以替换成其他的数,具体原因不详。
已知p高位
知道p的高位为p的位数的约1/2时即可
已知e,n爆破 1024的P,至少需要知道前576位二进制,即前144位16进制
脚本:
n= |
已知m高位
由于$m^{e} \equiv c \pmod{n} $,已知m的高位,我们不妨设低位数据为x,高位数据后面缺的补0并设为mh,则前式可写为$(mh+x)^{e} \equiv c \pmod{n} $,进一步可写为模n下的多项式:$f=(mh+x)^{e}-c $
n = |