Block-Cipher

如何解密這種分組密碼的變體?

  • April 10, 2020

我有一個分組密碼 $ E $ 這是一個排列 $ {0,1}^\ell $ 鑰匙 $ K\in{0,1}^\ell $ .

$ c = E_{K_1}(m \oplus K_1 \oplus K_2) $ 對於未知鍵 $ K_1, K_2 $ 給出。我需要弄清楚找到消息的策略 $ m $ 及其複雜性。

但是,在選擇哪種攻擊來查找消息之前,我不知道如何破解這個分組密碼。我是塊密碼的新手,很難破解一種我沒見過的新密碼。我需要一些幫助。

如果我們有一些 (m, c),並且排列通常是已知的,那麼我想我們可以弄清楚 $ K_1 \oplus K_2 $ . 這是正確的嗎?然後,我們怎樣才能找到 $ K_1 $ 和 $ K_2 $ 分別?或者 $ K_1 \oplus K_2 $ 是否足以找到原始消息?

問題可能真的是:

我們都知道 $ c $ 和 $ c = E_{K_1}(m \oplus K_1 \oplus K_2) $ ,以及一些不同的明文/密文對 $ (m_i,c_i) $ ,即與 $ c_i = E_{K_1}(m_i \oplus K_1 \oplus K_2) $ . 然而, $ c $ 不是其中之一 $ c_i $ (這將使發現 $ m $ 瑣碎的)。

定義尋找策略 $ m $ , 儘管條款 $ \oplus K_1 \oplus K_2 $ 在密碼如何運作。這應該適用於任何內部結構 $ E $ (假設根據Kerckhoffs 原理已知,但未給出)。如有必要,假設有很多計算能力可用,足夠大約 $ 2^\ell $ 加密或解密使用 $ E $ 以及任何鍵,這足以蠻力正常使用 $ E $ 作為 $ m\mapsto E_K(m) $ .


提示 1:您將如何確認(非常有信心)或不充分(絕大多數情況下)一個假設的猜測 $ K_1 $ ,儘管不知道 $ K_2 $ ?


提示 2:將自己置於攻擊者的皮膚中。你有一個黑匣子實現 $ E $ ,您可以在其中輸入密鑰和數據,分別為 $ \ell $ 位,按下標有“加密”或“解密”的兩個按鈕之一,這適用 $ E $ 或者 $ E^{-1} $ 如要求的那樣,數據發生了變化,並且您看到了新值,這要歸功於 $ \ell $ 連接在數據位上的 LED。特別是,如果您按下另一個按鈕,數據將恢復到之前的值。那個黑匣子是一個加密/解密預言機 $ E $ (雖然一個人不知道密鑰,就像某些預言機那樣;相反,它使用任何給定的密鑰進行操作)。

假設某個仙女給了一個小費 $ K_1 $ 就是它 $ \ell $ 位值。您如何放置該框以及您所知道的(在此答案中說明)以確認或確認提示,然後(如果確認)找到 $ m $ ?

接下來,通過大量使用黑匣子來替換仙女(這些用矽晶片比預言更難實現)。


更多提示(滑鼠懸停查看)

  1. 你至少需要兩個明文/密文對來檢查仙女的提示,三個來進行攻擊。

 

  1. 你只需要兩次使用這個盒子來檢查那個仙女的說法,並且只需要很少的額外計算就可以用鉛筆和紙來記錄中間結果。相比之下,加法似乎很複雜。

 

5.你可以通過黑匣子的單個按鈕來實現,但不是任何按鈕。

 

6.如果仙女給了權利 $ K_1 $ ,也把值 $ m_0 $ 和 $ c_0 $ 使用,一次精確地使用黑匣子加上一點額外的允許找到 $ K_2 $ . 其餘的很容易。

引用自:https://crypto.stackexchange.com/questions/79777