Encryption

為什麼分組密碼主 要用作流密碼?

  • July 8, 2021

使用 CTR 或 GCM 模式的分組密碼為我們提供了流密碼,唯一的區別是 CTR 不包含 MAC 標籤或 AAD,但 GCM 包含。我認為這些是分組密碼最常用的操作模式,因為 ECB 不安全且 CBC 不可並行化。

當一位根據密鑰流位映射到另一位時,這是否不會將有效算法塊大小減少到 1 位?保持密碼的塊大小不是更好嗎?

為什麼分組密碼主​​要用作流密碼?

CTR 模式不需要像 CBC 模式那樣的填充,多年來導致許多攻擊被稱為填充預言攻擊$$ 1 $$ $$ 2 $$. 最後,CBC 從 TLS 中刪除,TLS 1.3 只有 CTR 模式密碼(rfc 8446)。

         +------------------------------+-------------+
         | Description                  | Value       |
         +------------------------------+-------------+
         | TLS_AES_128_GCM_SHA256       | {0x13,0x01} |
         |                              |             |
         | TLS_AES_256_GCM_SHA384       | {0x13,0x02} |
         |                              |             |
         | TLS_CHACHA20_POLY1305_SHA256 | {0x13,0x03} |
         |                              |             |
         | TLS_AES_128_CCM_SHA256       | {0x13,0x04} |
         |                              |             |
         | TLS_AES_128_CCM_8_SHA256     | {0x13,0x05} |
         +------------------------------+-------------+

攻擊和 TLS 的決定增加了 CTR 模式的使用。請記住,幾乎所有網際網路安全都基於 TLS。根據 SSLlabs 的調查,有 %46.6 的站點接受 TLS 1.3(協議支持

CTR 模式、CBC 和 CFB(所有歸檔操作模式)都沒有設計為 MAC。要擁有 Mac,請使用 HMAC 或使用 GCM、CCM、Poly1305 等。

如果從理論上講模式CBC和CTR只能提供Ind-CPA。除此之外,還需要 Ind-CCAx 的完整性。另一方面,經過身份驗證的加密(GCM、CCM、Poly1305)提供了比 Ind-CCAx 更高的安全性,

當一位根據密鑰流位映射到另一位時,這不會將有效算法塊大小減少到 1 位嗎?

好吧,如果你使用 CBC 並應用填充,那麼你執行的東西比丟棄塊中不必要的位要多。在這兩種情況下,加密塊的數量幾乎相同(除非塊已滿,否則對於 PKCS#7,需要一個額外的塊)。然後,應用填充和取消填充是要應用的附加功能。CTR 模式需要 x-or 流。

正如評論中所指出的,CTR 模式是高度可並行化的,甚至可以實現隨機訪問或預查流。我機器上的以下 OpenSLL 性能

openssl speed -evp aes-128-cbc aes-128-ctr

正如我們所看到的,除了非常短的消息 CTR 在 AES-NI 中擊敗了 CBC。

保持密碼的塊大小不是更好嗎?

  • 我們必須處理填充及其不安全問題,當我們有 CTR 模式時,為什麼不完全刪除它。
  • 對於 AES,它還將數據的大小最多增加 16 字節。
  • CTR 模式設計使用 PRF 而不是 PRP(分組密碼是 PRP),這提供了更廣泛的功能使用 - 就像我們使用 ChaCha20 一樣。在 CBC 模式下,我們必須使用 PRP。

當然,沒有什麼是完美的!每種模式都有其優點和缺點。根據上下文,人們可以更喜歡一個。按照常識,在現代密碼學中,我們更喜歡經過身份驗證的加密模式,例如 AES-GCM(可能帶有 SIV)和 ChaCha20-Poly1305(對於 192 位隨機數更好的 xChaCha20-1305)。

引用自:https://crypto.stackexchange.com/questions/91934