RSA加解密算法以及破解
已知 r=( g ^ k mod p ) mod q ,s=[ k^-1(H(M)+xr)] mod q ,签名=(r,s)
依题可知对多条消息数字签名时k是不变的,
所以 ks1 = H(M1) + xr (mod q) ①
ks2 = H(M2) + xr (mod q) ②
由①得 ks1s2 = s2 · H(M1) + s2 · xr (mod q) ③
由②得 ks1s2 = s1 · H(M2) + s1 · xr (mod q) ④
由③④得 s2 · H(M1) + s2 · xr = s1 · H(M2) + s1 · xr (mod q)
解得 x = [s2 · H(M1) - s1 · H(M2)] / [s1 · r - s2 · r]
其中s1,s2,r,H(M)都是已知的,从而计算出私钥x。
x = s 2 ∗ H ( M 1 ) − s 1 ∗ H ( M 2 ) s 1 ∗ r − s 2 ∗ r x=\frac{s_2*H(M_1)-s_1*H(M_2)}{s_1*r-s_2*r} x=s1∗r−s2∗rs2∗H(M1)−s1∗H(M2)