求解方程組,包括 XOR 和模加法
下圖顯示了一個虛擬密碼。明文是 16 位 ( $ X_1 $ 和 $ X_2 $ 每個是 8 位)。使用兩個輪密鑰在兩輪後計算密文 $ K_1 $ 和 $ K_2 $ . 可以圓鍵嗎 $ K_1 $ 和 $ K_2 $ 通過求解涉及異或和模加法的方程組找到?
$ \boxplus $ = 加法模 $ 2^8 $
$ \oplus $ = 異或
$ X_1 $ , $ X_2 $ , $ Y_1 $ , $ Y_2 $ 是 8 位的。 $ i=1,2 $ .
我對如何解決這種涉及 XOR 和模加法的方程組感到困惑。求解這樣的方程組需要多少個 PT-CT 對?方程組中有多少線性、非線性/二次項?
好的,這似乎是家庭作業,所以我不會給出完整的答案;我會讓你開始。
首先要做的事情(使用這種攻擊方法)是寫出系統的完整方程,如下所示:
$$ T_0 = P_0 \oplus K_0 $$ $$ T_1 = P_1 \boxplus T_0 $$ $$ T_2 = T_0 \oplus T_1 $$ $$ T_3 = T_2 \oplus K_1 $$ $$ C_1 = T_3 \boxplus T_1 $$ $$ C_0 = T_3 \oplus C_1 $$ 你知道的地方 $ P_0, P_1 $ (明文), $ C_0, C_1 $ (密文),你不知道 $ K_0, K_1 $ (鑰匙)或 $ T_0, T_1, T_2, T_3 $ (密碼在各個點的內部狀態)。而且,我們假設我們有一個明文/密文對(這對這個密碼來說就足夠了)。
從這裡到哪裡去?嗯,第一個明顯的步驟是注意最後一個關係 $ C_0 = T_3 \oplus C_1 $ ; 我們知道 $ C_0, C_1 $ ,所以我們可以推導出值 $ T_3 = C_0 \oplus C_1 $ . 然後,我們注意到關係 $ C_1 = T_3 \boxplus T_1 $ , 我們知道 $ C_1 $ 和 $ T_3 $ ,所以我們可以推導出值 $ T_1 = C_1 \boxminus T_3 = C_1 \boxminus (C_0 \oplus C_1) $ . 我們接下來要去哪裡?
現在,這種方法很好地分解了這兩個循環密碼;但是它不能很好地擴展;在這個玩具密碼中添加第三輪將打破這依賴的關係。另一方面,我想這可能是學習如何思考如何攻擊密碼的開始,儘管您需要找到其他方法來攻擊不那麼瑣碎的密碼。fgrieu 關於首先查看低位位的建議是一種更通用的方法,在這種情況下不起作用。