差分密碼分析 - 如何將攻擊擴展到最後一輪?
假設我們有一個分組密碼,使得密碼的最後一輪取決於密鑰的一半,而倒數第二輪使用另一半。還假設我使用差分密碼分析攻擊了最後一輪,並將我的搜尋空間從 2^8 減少到 2 個選擇,用於該一半密鑰的每個字節。
結束攻擊的一種方法是在剩餘的密鑰空間上執行暴力破解,但我想繼續使用差分密碼分析來攻擊倒數第二輪,以實現比暴力破解更好的複雜性。
作為對這個問題的評論,使用者“kelalaka”似乎暗示我們仍然可以使用差分密碼分析來恢復倒數第二輪中使用的密鑰,因為“機率會更好”。使用者“kodlu”在對同一問題的回答中說:“然後可以像評論中一樣將這些輪子一個接一個地剝下來。”但是他們沒有描述如何做到這一點。
有人可以向我解釋如何在我提到的特定設置甚至一般情況下將差分攻擊擴展到倒數第二輪嗎?(我給出的“密鑰時間表”並不是特別重要,只是說明我們不能僅使用最後一輪密鑰來恢復完整密鑰)
直覺當然是最後幾輪可以一一去掉。如果一個微分區分器允許我們辨識 $ n $ -th 輪密鑰,那麼肯定是之後的微分不均勻性 $ n-1 $ 允許我們這樣做的回合將在回合中變得更糟 $ n-2 $ ,所以很明顯可以使用相同的技巧來恢復輪密鑰 $ n-1 $ 等等……對吧?
就像任何好的直覺一樣,這張事物的畫面非常有用,同時也存在嚴重缺陷。
對此最實際相關的反對意見可能是,在許多逐輪攻擊密碼的攻擊(差分或其他)中,我們在每一步僅獲得有關目標子密鑰的部分資訊。換句話說,當我們用完我們的差分區分器為我們提供的關於最後一個子鍵的所有資訊時,可能仍然有相當多的剩餘合理候選者。現在,如果我們有一個區分器,那麼這些候選者的數量確實會比我們必須嘗試所有最後的子鍵的數量要少,但是向下循環回到源頭,結果搜尋仍然很有可能如果我們剛剛進行了詳盡的搜尋,樹最終會大於我們必須考慮的可能性數量。
解決這個問題的攻擊通常有兩種方法,要麼表明區分器確實足以防止搜尋樹爆炸,要麼表明在某些時候,我們不必將後續輪密鑰視為獨立於我們目前的最後一輪密鑰假設不再是因為我們可以反向執行密鑰時間表。在前一種情況下,我們確實可以逐輪求解密碼,而在後一種情況下,我們最終得到一組候選主密鑰,它可能很大,但對於成功的攻擊,仍然小於所有萬能鑰匙。然後可以針對一些其他已知資訊(最常見的明文-密文對)一一測試這些密鑰。
一旦我們知道足夠數量的子密鑰,我們就可以反向執行密鑰調度的假設對於大多數實際密碼來說是滿足的,但這肯定不是自然法則。可以很容易地想像一種密碼,其中子密鑰將通過單向函式從主密鑰派生,在這種情況下,攻擊確實必須訴諸暴力搜尋或解決子密鑰,就好像它們是獨立的一樣。
還有其他各種情況,直覺失敗,一種允許我們解決的技術 $ n $ 回合也可以讓我們解決 $ n-1 $ 回合;例如,在差分攻擊中,區分器用來破壞 $ n $ 回合可能取決於回合的特定差異 $ n-1 $ 過渡到圓形 $ n-2 $ 確定性地,在這種情況下,當我們下降到round時,我們不會獲得新資訊 $ n-2 $ ,或者密鑰調度中的依賴關係可能會使密碼的預期差異不均勻性隨著輪數的增加而上升而不是下降(儘管不可否認,最後一種情況僅發生在病態情況下)。