Brute-Force-Attack

是否可以對 LFSR 進行純密文攻擊?

  • April 14, 2018

閱讀有關LFSR的內容,我知道通過了解 LFSR 的設計並擁有足夠的**(明文、密文)**對來破壞 LFSR 是一項相對容易的任務,但我們假設我們知道 LFSR 的設計和一個長密文,這是異或的結果明文和 LFSR 輸出。有沒有辦法解密密文?

例如,假設我們有一個具有原始特徵多項式的 LFSR $ x^{51}+x^{9}+1 $ 和一個 5600 位的密文,有沒有辦法獲得我們已經知道是英文明文的明文?

一種蠻力方法是嘗試所有 $ 2^{51} $ 可能的種子值,將密文與 LFSR 輸出異或併檢查生成的明文是否具有正常的英文字母熵,但這種方法變得越來越難,因為 LFSR 度數越大。

對於已知為 ASCII 編碼為八位字節的文本,八位字節的高位位為零,這揭示了 LFSR 輸出的 8 位。它允許從(例如)前 51 個八位字節中找到 LFSR 的原始狀態僅通過求解線性布爾方程組來求解密文;然後破譯其餘的。不涉及猜測。

對於 7 位加奇偶校驗(其中每個八位字節的高位是其他 7 個字節的異或或補碼),線性代數也適用。

隨著明文變得不那麼冗餘,事情變得更加困難。使用 7 位 ASCII,注意空格、數字、常用標點符號和所有小寫字母都在範圍內 $ [\mathtt{0x20}\dots\mathtt{0x3F}]\cup[\mathtt{0x60}\dots\mathtt{0x7F}] $ ,我們知道每個這樣的 7 位符號都有一個權重為 5 的位,並且很有可能在 800 個字元的明文中某處連續出現 51 個這樣的字元。猜測哪裡可以解碼其餘部分,並且很容易檢測猜測是否正確,這要歸功於英文文本的特性。

更一般地說,如果幾乎任何位置的 51 位都可以被猜到,那麼其餘部分由基本線性代數唯一確定,並且可以通過檢查生成的明文是否適當冗餘來驗證猜測。LFSR 是這樣的,即使用非常簡單的測試以非常高的可能性排除錯誤的猜測,不太可能錯誤地排除錯誤的猜測。我們甚至可以做一個寬鬆的卡方檢驗,即猜測產生的明文是隨機的,如果不是,它就是正確的。這具有無論語言如何都可以工作的優勢。

只要可以猜到足夠多的位,這些技術就可以處理數百位的 LFSR,包括未知的回饋多項式(只需添加抽頭作為額外的未知數)。

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