如果省略 S-boxes 替換,AES-CTR 安全性?
我理解為什麼通常需要 S-box,尤其是在
ECB
使用模式時(因為使用相同的密鑰來加密其他塊)但我想知道如果我們在這些情況下省略 S-box 替換步驟是否仍然相對安全
- 使用
AES-CTR
模式確保具有相同塊的相同密鑰將加密為不同的密文- 如果我們選擇一個總隨機密鑰
我在問,因為這種方式似乎就像我們以與一次性填充加密類似的方式(不完全是)加密,因為加密的結果(將與明文進行 x-ored)將是隨機的。我知道使用 S-box 會增加安全性,但這種方式對於非絕密文件來說很好,所以我們可以為嵌入式設備獲得一些額外的性能,而不會犧牲太多的安全性,以及什麼樣的攻擊可以使用。
Sbox 是 AES 或類似分組密碼安全性的必要條件,但可能還不夠。我們可以將所有 AES 操作在高層次上列出為
- SubBytes –一個非線性替換步驟,其中每個字節根據查找表被另一個字節替換。
- ShiftRows – 一個轉置步驟,其中狀態的最後三行循環移動一定數量的步驟。
- MixColumns – 一種線性混合操作,對狀態的列進行操作,將每列中的四個字節組合在一起。
- 加圓鍵
想知道如果我們在這些情況下省略 S-boxes 替換步驟是否仍然相對安全
如果省略SubBytes,那麼新的 AES 密碼將是一個完全線性的密碼。這對於分組密碼來說是完全失敗的。當攻擊者在簡單攻擊中獲得已知明文時,他們將為任何 AES 建立總共 128 個線性方程。如果方程沒有線性相關性,那麼他們可以用一個已知的明文對來求解 AES-128。
您的設計沒有 KPA 安全性,在現代密碼學中,我們至少需要 CPA 安全性。
使用 AES-CTR 模式確保具有相同塊的相同密鑰將加密為不同的密文
我有兩種理解。
您為每個塊使用一個新密鑰。這是沒用的。
一個人使用這麼多密鑰來加密消息
取而代之的是,將 OTP 與有其他問題的密鑰一起使用。
需要一次又一次地執行關鍵計劃
使用一鍵
KPA 攻擊可以打破這一點。
這種方式看起來就像我們以類似的方式(不完全是)加密,就像一次性加密一樣,因為加密的結果(將與明文進行 x-ored)將是隨機的。
不是真正隨機的,線性取決於密鑰。
取而代之的是,在現代密碼學中,我們將 PRF 或 PRP 轉換為類似 CTR 模式的流密碼。PFR 可以工作,因為 CTR 模式不需要 PRF 的反向。這樣我們就可以長時間使用一鍵一鍵調度。AES-CTR 或 ChaCha 就是其中的例子。AES 被認為是 PRP,但未被證明是 PRP。和。請記住,對於 CTR 模式,不應再次使用 key-IV 對。
對於文件加密,最好使用 AES-GCM 或 ChaCha20-Poly1305,它們也提供完整性和身份驗證。由於英特爾的 AES-NI 等硬體支持,AES-GCM 更快。我的機器對 AES-128 NI 的打擊
openssl speed -elapsed -evp aes-128-ctr The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-ctr 556160.77k 1822893.03k 3765397.08k 5115820.71k 5694253.74k 5739358.89k
如果有對 ChaCha 和 Poly1305 的硬體支持,它可以擊敗 AES。