Crypto-多项式环链表求解
多项式环上求解问题:
引自 Lazzaro @ https://lazzzaro.github.io
1.对于一些模n运算的求解,我们可以将问题转化为模n多项式环上求解答问题
1 | R.<X> = PolynomialRing(Zmod(n)) |
现在,观察如下方程式,
1 | n = p * q |
其中 y,a,b已知,根据常规方程我们是无法求出x的解的,因为对于第二个方程,我们未知的变量有x和n,单个方程无法解决二元变量求解问题,因此我们需要将改方程转换到模n多项式环上求解,在多项式环上寻找可行解。
具体方法如下:
1 | from sage.all_cmdline import * |
其中,R定义了一个整数多项式环,f定义为方程 模n等于0,f.monic表示首一多项式,X定义求求解x的最大范围,最后x0即为在多项式环上求得的可行解x。之后我们只需用
1 | gcd(n,y**2 - x0 ** 3 - a * x0 - b) |
即可求得p,之后分解得到q,就是常规rsa了。
2.同样,解释一下之前用到的扩充明文,同样是在多项式环n上求解原明文。
即:给出了p,或者q的部分高位,求完整p/q
1 | ('n=','0xb50193dc86a450971312d72cc8794a1d3f4977bcd1584a20c31350ac70365644074c0fb50b090f38d39beb366babd784d6555d6de3be54dad3e87a93a703abddL') |
可以发现p的低位是未知的,我们同样可以在多项式环n上去搜寻完整的p,使其满足f = x + p % n == 0
1 | kbits = 60 |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
ValineDisqus