El Gamal 簽名:攻擊以恢復私鑰,如果ķķk生成為ķ我+1=ķ一世+一個ķ一世+1=ķ一世+一個k_{i+1}=k_{i}+a在哪裡一個一個a是一個很大的未知常數
$ k_0 $ 是隨機生成的,隨後 $ k_{i+1} = k_{i}+a $ , 在哪裡 $ a $ 是一個很大的未知常數
我試過這樣制定攻擊:
給出 3 條消息 $ M_0 $ , $ M_1 $ $ M_2 $ 與 $ (r_0,s_0) $ , $ (r_1,s_1) $ 和 $ (r_2,s_2) $ 分別。我們可以寫 $ r_0 $ , $ r_1 $ 和 $ r_2 $ 像這樣:
$$ r_0 = g^{k_0} {\ }mod{\ } p $$ $$ r_i = g^{k_i} {\ }mod{\ } p = g^{k_0}g^{ai} {\ }mod{\ } p = r_0g^{ai} {\ }mod{\ } p $$ $ s_0 $ , $ s_1 $ 和 $ s_2 $ 然後可以改寫如下:
$$ s_0k_0 = M_0-xr_0{\ } mod{\ } p-1 $$ $$ s_1(k_0+a) = M_1-xr_0g^{a}{\ }mod{\ } p-1 $$ $$ s_2(k_0+2a) = M_2-xr_0g^{2a}{\ }mod{\ } p-1 $$ 並製作 $ xr_0 $ 我們得到以下主題:
$$ xr_0 = M_0 - s_0k_0 $$ $$ xr_0 = g^{-a}(M_1 - s_1(k_0+a)) $$ $$ xr_0 = g^{-2a}(M_2 - s_2(k_0+2a)) $$ 但我不認為我們可以用線性方程來解決這個問題,因為我們不知道什麼是 $ g^{-a} $ 和 $ g^{-2a} $ .
其實可以恢復 $ g^{-a} $ .
你知道的 $ r_i = g^{k_i} \mod p $ 和 $ r_{i+1} = g^{k_i + a} \mod p = r_i \cdot g^a \bmod p $ , 因此 $ g^a = r_{i+1} \cdot r_i^{-1} \bmod p $ ; 從那裡開始,計算 $ g^{-a} $ 和 $ g^{-2a} $ 簡單。
這樣,線性方程就變得容易求解了……