Authentication

我們應該在哪裡使用經過身份驗證的加密模式?

  • May 25, 2019

我從 Wikipedia 了解到,認證的加密模式包括 OCB、CCM、EAX、GCM 等。這是否意味著當我們要使用經過身份驗證的加密時,我們將使用這些模式?但這些模式不使用公鑰加密或基於雜湊的 MAC,這可能更先進。那麼我們什麼時候應該使用經過身份驗證的加密模式,什麼時候應該使用其他 MAC,例如 HMAC-SHA-256?

OCB、CCM、EAX 和 GCM 作為操作模式,僅適用於分組密碼。其中一些,如 GCM,只為具有特定塊大小的塊密碼定義。請注意,這些經過身份驗證的塊模式確實使用 MAC(例如,GCM 本質上是帶有 GMAC 的 CTR 模式)。HMAC 和 Poly1305 等其他 MAC 可用於任何對稱密碼,包括流密碼。因此,例如,如果您想使用 ChaCha20 或在 CBC 模式下使用 AES,您可以使用 HMAC-SHA-256 或 Poly1305。

這些模式都以不同的方式工作,實際上並不總是基於相同的概念。它們唯一的相似之處是它們都可以用來將未經身份驗證的對稱密碼系統轉變為經過身份驗證的對稱密碼系統。在內部,每個構造都是不同的。例如,GCM 是一種經過身份驗證的密碼操作模式,HMAC 是一種帶密鑰的偽隨機函式,Poly1305 是一種通用散列一次性 MAC。它們完全不同,但它們都恰好對經過身份驗證的加密有用。

儘管您提供的特定模式都提供了有效的身份驗證,但它們並不總是適合在任何地方使用。它們每個都基於完全不同的概念,並且每個都只能用於特定目的。它們唯一的相似之處是它們都可以用來驗證對稱密碼。以下是各種模式的快速摘要以及您可以在何處使用它們:

  • OCB是一種經過身份驗證的密碼塊密碼操作模式,速度快、重量輕,但已獲得專利,因此可能並非對所有人都合法可行。
  • CCM是一種經過身份驗證的密碼塊密碼操作模式,被編寫為 OCB 的非專利替代方案,用於 802.11,但速度非常慢。
  • EAX是一種經過身份驗證的密碼塊密碼操作模式,旨在解決對 CCM 模式的一些批評,但它的速度和它一樣慢。
  • GCM是加密分組密碼的一種經過身份驗證的操作模式,在硬體中速度快且得到廣泛支持,但容易受到側通道攻擊。
  • HMAC是一種特定類型的消息驗證碼 (MAC),涉及加密散列函式和密鑰,在 ETM (Encrypt-Then-MAC) 模式下很容易插入任何密碼,但速度不快。
  • Poly1305是一種通用雜湊一次性 MAC,速度極快,幾乎總是一個不錯的選擇。它最近才流行起來。

一般來說,您不需要考慮您使用的特定身份驗證模式。您應該使用一個簡單且友好的庫來為您完成所有這些工作,例如 NaCl(我相信它使用 Poly1305)。

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