Cbc
CBC 模式適用於大於“b”位的輸入。那個“b”位是什麼?
geeksforgeeks.org 上的這篇關於分組密碼操作模式的文章說,CBC 的優點之一是它適用於大於 b 位的輸入。我還在《William Stallings 的密碼學和網路安全》一書中看到了這一點。但他們都沒有說 b 位到底是什麼。誰能解釋一下?謝謝。
那裡 $ b $ 位表示加密的塊大小,DES 為 64,AES 為 128。
因此,您可能需要多個塊來加密明文(消息)。如果您的郵件大小是 $ \ell $ 比你需要的$$ \lfloor \frac{\ell}{b} \rfloor + 1 $$塊進行加密。
與 CTR 不同,CBC 模式的塊性質需要填充以填充最後一個塊的空位。通常,為此使用 PKCS#7 填充。PKCS#7 可以將塊數增加一,如果 $ b|m $ .
請注意,如果 CBC 模式與 TLS 等伺服器一起使用,那麼它很容易受到類似於解密 oracle 的填充 oracle 攻擊。在這種情況下,您可能需要像 TLS 1.3 一樣擺脫 CBC 並使用像 CTR 這樣的槳模式。更好的是使用經過身份驗證的加密模式,例如 AES-GCM,它在內部使用 CTR 模式並通過 GMAC 提供完整性和身份驗證。
請記住,維基百科是查看這些內容的第一個來源,而不是任何其他網站。
如果你真的想使用 CBC 模式,那麼
您的義務
- 您必須生成一個統一的隨機 256 位密鑰,並始終保密;
- 對於將在同一密鑰下加密的每條消息,選擇一個必須唯一且不可預測的****初始化向量(IV) 。您可以將 IV 發送到密文前面
- 確保消息大小是 128 的倍數並帶有適當的填充。
- 消息大小不得超過 $ 2^{60} $ .
- 密鑰的使用時間不得超過 $ 2^{45} $ 由於生日攻擊導致的IV碰撞。這將產生$$ (2^{45})^2/2^{128}/2 = 2^{90 - 128-1} = 1/2^{39} $$碰撞機率而不是 $ 1/2 $ 的機率 $ 2^{64} $
作為回報:CBC擔保
- 註冊會計師安全;即對手無法區分兩個長度相同的密文,因此無法讀取發送的消息。
如果使用得當,這就是您從 CBC 模式中獲得的全部內容。要實現經過身份驗證的加密,建議在encrypt-than-MAC中使用 HMAC 和 CBC 。