Lfsr
是否可以在不使用暴力破解的情況下破解 LFSR 加密文件?
假設我得到了一個文件,我知道它是使用具有給定多邊形的 5 位 LFSR 加密的。
我已經知道,如果給定一定長度的 LFSR 輸出,則可以推斷出 LFSR 的狀態,從而推斷出所有未來的輸出。但是,如果該輸出與文件異或,我會假設您不能,因為您當然不知道文件的內容。
我是對的,還是有一種我沒有想到的方法?
首先:5 位 LFSR 非常小,因此獲得使用的初始種子是小菜一碟。
但事實上,它基本上可以歸結為一個(相當快的)蠻力工作,除非該文件包含純粹的隨機數據,否則你很有可能通過查看初始狀態來檢測初始狀態(從而成功解密)前幾個字節。
請記住,執行檔、圖像、壓縮文件和特定程序文件(如 MS Word 文件)都帶有特定的標題。文本文件也很容易被檢測到。UTF-8、UTF-16 等主要包括 BOM(字節順序標記),即使沒有,它們也是文本——這與隨機二進制數據有很大不同。這使得“攻擊”更容易,並且可以在您面臨多個加密文件的情況下加快速度,每個加密文件都使用不同的種子。
話雖如此——永遠不要使用普通的 LFSR 進行加密。如果您真的需要速度,請使用流密碼(不要忘記使用 MAC 進行身份驗證,如“encrypt-then-MAC”)。
不過,程式碼破解者的技巧之一是猜測該文件的內容。想像一下,如果你加密了天空的點陣圖。他們知道這一點。在雲層被吹散的地方,像素值 = 255 重複。您可以估計這些字節在圖像文件中的位置。然後,boffins 可以輕鬆打破非常大的 LFSR。
雖然 5 位(如 $ x^5 + x^3 +1 $ ) 只是一個 31 的句點。這可以很容易地強制,直到純文字有意義。31個週期甚至算作蠻力嗎?