Aes
加密大文件時如何認為 AES 是安全的?
由於算法是分組密碼,為什麼在加密大文件時認為 AES 是安全的?
我的意思是,如果文件大於塊大小,文件將被分解以適應塊。然後使用相同的密鑰對文件的每個塊進行加密。據我所知,使用相同的密鑰加密多個消息/塊並不是一個好主意。這不就是 AES 的工作原理嗎?
還是我誤解了什麼?:-)
加密大量數據對於分組密碼來說是沒有問題的——如果你記得一些重要的事情的話。
您不能加密大於塊大小的明文。你需要做一些額外的工作。大多數密碼操作模式首先將明文分成密碼大小的塊。現在你可以做不同的事情:加密每個單獨的塊怎麼樣,簡單明了?這就是所謂的歐洲央行模式。
如果您在文件的不同位置對同一個塊進行兩次加密,會發生什麼?你得到相同的密文。如果攻擊者看到這一點,他可以說:“在這兩個位置有相同的明文。” - 攻擊者還可以在不被檢測到的情況下交換兩個塊(至少在解密的明文仍然有意義的情況下)。
然後是CBC模式。您首先對第一個明文塊進行異或初始化向量 (IV)。IV 應該是隨機生成的,並且必須與塊大小一樣大。現在您加密生成的塊。這是您的第一個密文塊。作為下一步,您將第一個塊與下一個明文塊進行異或。塊密碼算法在加密後創建大部分看起來隨機的塊,因此,這個和一個明文塊的異或創建一個新的塊來加密。這消除了 ECB 模式中提到的兩個問題:交換兩個塊會導致至少一個垃圾明文塊。此外,相同的明文塊(幾乎在每種情況下)將加密成不同的密文。
還有更多的加密模式,例如計數器模式(CTR)。此外,您通常應該使用某種Authenticated encryption。使用良好的密碼模式不足以避免大多數攻擊。消息驗證碼(MAC) 之類的東西也很重要。結合這兩種方式的一種常用但相當複雜的方式是Galois/Counter Mode。