Aes
AES-256、CBC、明文長度是塊大小的倍數:PKCS #7 填充是否會削弱加密?
當然,如果您知道明文長度是塊大小的倍數,那麼在使用 AES 和 CBC 時,填充是多餘的。
但是填充是否會導致加密的弱點?
因為由於塊長度為 16 字節的填充,最後一個塊總是只包含 0x10。因此,據我了解,這是“已知明文”。
這可以在現實生活中(今天)加以利用嗎?或者這只是一個理論問題(今天)?
這個答案聽起來好像沒問題。
如果密碼無法抵抗已知的明文攻擊,那麼問題在於密碼,而不是填充。
但這對 AES-256 來說是真的嗎?
但是填充是否會導致加密的弱點?
如果存在填充預言,那麼您可以在每字節 128 次嘗試中解密整個密文(平均而言)。然而,類似的明文預言機攻擊可能同樣強大,而且明文預言機也不僅僅與 CBC 模式有關。您將需要使用經過身份驗證的密碼(例如 AES-GCM)來避免明文預言機攻擊。
否則答案是正確的,它不會削弱加密。好的密碼甚至應該是 IND-CPA 安全的,這意味著即使對手控制了明文,它們也是安全的。
是的,填充可能會隱藏一些關於明文大小的資訊,但你不應該高估它提供的安全性。例如,攻擊者可能會嘗試讓您將明文放在塊邊界上,從而在明文大小估計時恢復精度。
但這對 AES-256 來說是真的嗎?
AES 是分組密碼;填充僅適用於使用密碼的特定模式。從這個意義上說,操作模式的問題比密碼的問題更大。AES-256 當然被認為是一種安全的分組密碼,所以訣竅是使用正確的模式。通常應該首選不需要填充的密碼模式,例如前面提到的 GCM 模式(它又基於 CTR 模式)。
實際上,只有少數模式,如 CBC(以及幾乎沒有提到的 PCBC)和 ECB需要填充。現代密碼學家不再將它們過多地用於新系統。