了解 LFSR 流密碼和內容加擾系統
我對線性回饋移位寄存器(LFSR)的工作原理有點困惑,我有點明白,但不是真的,有人能幫我理解嗎?我知道它在一個循環中對某個遮罩進行異或位,如何定義改組?
內容加擾系統是由 2 個不同長度的 LFSR 組成的同步流密碼,一個具有 17 位,另一個具有 25 位。如果將 40 位密鑰載入到 LFSR 中,則第一個 LFSR 中的 2 個字節和第二個剩餘位中的 3 個字節全部設置為 1。輸出被組合以產生密鑰流。
我將如何找到每個 LFSR 的最大周期?是不是這麼簡單 $ 2^d-1 $ (簡單的 ( $ 2^{17})-1=131071 $ 和 ( $ 2^{25})-1=33554431 $ ) 還是更複雜一點?
為什麼內容加擾系統使用不同的 LFSR 長度,為什麼它必須是 17 和 25 而不是不同的東西?
我將如何進行暴力破解,暴力破解的複雜性是什麼?
如果我只是對兩個 LFSR 輸出進行異或運算,結果會是什麼(我假設會有某種方式來辨識其中的資訊)?已知的純文字攻擊會被證明有效嗎?
- 我將如何找到每個 LFSR 的周期?
如果生成 LFSR 的多項式是原始多項式,則 LFSR 具有最大周期, $ 2^\ell-1 $ 在哪裡 $ \ell $ 是 LFSR 的長度。通常將它們選為原始多項式。在你的情況下,時期是 $ 2^{17}-1 $ 和 $ 2^{25}-1 $ 為了 $ L_1 $ 長度為 17 和 $ L_2 $ 長度分別為 25。
在 LFSR 中,密鑰全為零的可能性可以忽略不計,然後流將全為零。為了消除全零的情況,第四位被注入 1 $ L_1 $ 和 $ L_2 $ .
- 為什麼內容加擾系統使用不同的 LFSR 長度?
如果 LFSR 長度和抽頭相同,則可能會出現兩個 LFSR 產生相同流以相互抵消的情況。我們可以稱之為弱鍵。
更重要的是,LFSR 是線性的,而線性系統在密碼學中並不安全。您需要添加非線性。實現此目的的一種方法是使用非線性函式過濾 LFSR 的狀態或使用 CSS 中的組合函式。
在 CSS 中,組合函式是 8 位加法器。在每個 LFSR 產生 8 位的 8 時鐘之後,添加這 2 個字節。進位被保存以備下次添加。
由於在位情況下加法是非線性的,因此實現了非線性。當然,為了安全**,非線性是必要的,但還不夠**。具有非線性組合函式的 LFSR 的一個很好的讀物是相關攻擊。一篇著名的文章是*Decrypting a class of stream ciphers using ciphertext only* by Siegenthaler (pay-walled)。他表明可以對非線性組合器執行相關攻擊。
- 我將如何進行暴力破解,暴力破解的複雜性是什麼?
要執行暴力破解,您需要密碼中的密鑰流。假設你有;
- $ 2^{40} $ - keyspace 在 1996 年並不難達到。低 keyspace 的原因在Wikipedia中有很好的說明;
在引入 CSS 時,美國禁止製造商出口使用超過 40 位密鑰的密碼系統
- 1999 年,Stevenson展示了 3 次攻擊,包括對 CSS 的蠻力攻擊。
- 甚至 DES 與 $ 2^{56} $ - 在 1999 年代,可以使用特殊硬體§、‡或集群輕鬆搜尋鍵空間。
- 還有一種相關性攻擊可以恢復密鑰 $ 2^{16} $ 複雜。
- 也可以,用猜測攻擊 $ L_1 $ 並確定 $ L_2 $ 和 $ 2^{16} $ 複雜
- 如果我只是對兩個 LFSR 輸出進行異或運算,結果會是什麼(我假設會有某種方式來辨識其中的資訊)?
它將是完全線性的,並且更容易被攻擊;首先,產生代數方程,然後通過高斯消元法求解。如前所述,基本對策是增加非線性。
- 已知的純文字攻擊會被證明有效嗎?
您需要一個密鑰流來進行攻擊,因此您需要知道明文。