相關概念
什麼是dp
\(dp ~ = ~ d ~ \mod ~(p-1)\)
推導過程
\(dp \equiv d \mod (p-1)\)
\(⇒dp \times e \equiv d \times e \mod(p-1)\)
\(⇒d \times e = k \times (p-1) +dp \times e\)
\(d \times e \equiv 1 \mod(p-1) \times(q-1)\)
\(⇒k\times(p-1) + dp \times e \equiv 1 \mod (p-1)\times(q-1)\)
\(⇒k \times (p-1) +dp \times e = k_1 \times (p-1) \times (q-1) + 1\)
\(⇒dp \times e = (k_1\times q + k_1 - k) \times (p-1) + 1\)
設:$x = (k_1\times q + k_1 - k) $
\(⇒dp \times e = x \times (p-1) +1\)
\(dp < (p-1)\)
\(⇒e>x\)
\(x \in [0,e]\)
結論或公式
\(\exists x \in [0,e],使得dp \times e = x \times (p-1) +1\)
解題過程
遍歷0~e種可能,找出乙個\(x\)滿足下列方程
$(dp \times e - 1) \mod x = 0 $
轉到已知\(p,q\)的rsa解密
實現**
#dp或dq洩露
from crypto.util.number import long_to_bytes
from gmpy2 import invert
from factordb.factordb import factordb
def rsa_dp_reveal(dp,e,n,c):
for x in range(2,e):
if (dp*e-1)%x==0:
p = (dp*e-1)//x + 1
if n%p == 0:
q = n // p
break
phi = (p-1)*(q-1)
d = invert(e,phi)
ci = long_to_bytes(pow(c,d,n))
return ci
實現**from crypto.util.number import long_to_bytes
from gmpy2 import invert
from egcd import egcd
#rsa共模攻擊
def rsa_mo(n,e1,c1,e2,c2):
'''#rsa共模攻擊'''
s,s1,s2 = egcd(e1,e2)
if s1<0:
s1,s2 = s2,s1
e1,e2 = e2,e1
c1,c2 = c2,c1
if s!=1:
return '不能進行共模攻擊'
c2 = invert(c2,n)
m = (pow(c1,s1,n)*pow(c2,-s2,n))%n
return long_to_bytes(m)
條件
明文之間存在簡單的線性關係,且係數較小時
滿足\(f(m_2) = a \times m_2 + b\)
推導\(m_1^e = c_1( \mod n)\)
$\rightarrow g_1(m_2) \equiv f(m_2) - c_1 (\mod n) $
\(m_2^e = c_2(\mod n)\)
\(\rightarrow g_2(m_2) \equiv m_2^e - c_2(\mod n)\)
\(\rightarrow m_2 是 g(x) = f(x)^e - c_1 \in \mathbb_n[x] 的根\)
結論或公式
\[m_2 = \dfrac \dfrac
\]·····
持續更新中
RSA 時序攻擊
rsa的破解從理論上來講是大數質數分解,可是就是有一些人另闢蹊徑,根據你解密的時間長短就能破解你的rsa私鑰。舉乙個不恰當但是比較容易理解的例子 密文 0101 私鑰0110 明文0100 問題的關鍵來了,進行 運算時如果有乙個0,那麼運算的時間為1ms,如果兩個都是1,運算的時間是10ms 只是個...
RSA攻擊之wiener攻擊
詳細資訊請參閱維基百科 連分數 在數學中,連分數或繁分數即如下表示式 這裡的a0是某個整數,而所有其他的數an都是正整數,可依樣定義出更長的表示式。下面通過實際的例子來學習如何將乙個實數轉換為連分數 eg 找出3.245的連分數 結合rsa演算法,我們理解上面的定理 根據上面的定理,我們根據給定的實...
RSA演算法總結
1 選擇一對不同的 足夠大的素數p,q。2 計算n pq。3 計算f n p 1 q 1 4 找乙個與f n 互質的數e,且1安全性方面需注意引數的選取 建議參考 應用密碼學 2017版 p156 p157 1 不同的使用者不能用相同的模數 n,即乙個模數只能乙個人用 2 p 和 q 的差值要大,一...