Aes

如何選擇 AES-CCM 和 AES-GCM 進行儲存卷加密

  • March 12, 2021

我們正在使用 Solaris 11 ZFS 中內置的加密,它提供了 CCM(CBC 計數器模式)和 GCM(Galois 計數器模式)之間的選擇。選擇這些密碼模式的優缺點是什麼?

TL;DR 如果您在 2020 年閱讀本文,應用程序應該使用 GCM 模式。

CCM(帶 CBC-MAC 的計數器)

  • 消息認證(通過 CBC-MAC)是在明文而不是密文上完成的。(這通常不是一個理想的功能。)

    • 在加密操作中,加密和 MAC可以並行發生,但通常不會(通常因為晶片中只有一個 AES 引擎,一次只有一個 AES 執行緒等)。類似的聲明也適用於解密。
  • 每個塊的性能成本基本上是 2 x AES 操作

  • 無法並行化

  • 自 TLS 1.3 (2018) 起,CCM 密碼在 OpenSSL 中可用,但預設禁用。

GCM(伽羅瓦計數器模式)

  • GCM 密碼是全球使用最廣泛的分組密碼。自 TLS 1.2 (2008) 起強制使用,大多數客戶端預設使用。
  • 消息認證(通過 GMAC/GHASH)在密文上完成。(這在大多數情況下都是可取的。)請注意,在大多數實現中,出於性能原因,身份驗證檢查和解密並行發生。
  • 性能成本 1 x AES 操作和每塊 1 x GHASH(GHASH 通常比 AES 快,因此 GCM 更快)
  • 多個塊的加密/解密可以很好地並行化

對於大多數需要經過身份驗證的加密的應用程序,GCM 應該被認為優於 CCM。由於發生了身份驗證,GCM 不易受到可以針對計數器模式或其他流模式安裝的位翻轉和其他攻擊。

在使用 GCM 之前應該注意一些細微差別,這些細微差別涉及加密消息的最大大小和 MAC 大小。這些在標準 (NIST SP800-38D) 中被提及。

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