Stream-Cipher
E0加密算法攻擊向量
[E0](https://en.wikipedia.org/wiki/E0_(cipher)用於對藍牙通信進行加密,使用最多 128 位的密鑰進行初始化。E0 的安全性如何,E0 加密攻擊向量是什麼?
基於 LFSR 的 E0 不是特別安全的流密碼。給定足夠的明文,可以通過已知明文攻擊來恢復密鑰。二級 E0,它使用一個 E0 實例的密鑰流來初始化第二個實例的狀態,該實例本身只加密一個 2745 位幀,在給定 2 23.8幀的初始 24 位的情況下,容易受到需要 2 38 次簡單操作的攻擊. 即使使用兩級 E0 進行保密,這對藍牙也是實用的。請注意,僅將 E0 直接用作流密碼的一級 E0 更容易受到已知明文攻擊。
直接回答您的問題:
- E0 是不安全的,即使在所謂的兩級 E0 方案中使用時也是如此。
- 已知明文攻擊可用於在可忽略的時間內恢復密鑰。
如果您需要一個非常輕量級的流密碼,請考慮使用 ChaCha8,它能夠在 Core2Duo 上以每字節 1.88 個週期的速率進行加密。重度優化可能會進一步提高密鑰流的生成率。ChaCha是一種 ARX 密碼,僅使用加法、旋轉和按位異或。最安全的基於移位寄存器的流密碼,速度更快,是Trivium,它只需要 80 位密鑰。我建議不要這樣做,但它仍然比 E0 好。