Encryption

如果沒有機密性,消息完整性是否可能?有沒有主流的協議?

  • December 26, 2017

我知道許多提供數據完整性的方案都涉及雜湊然後加密的方法。我想知道是否可以在沒有保密性的情況下實現數據完整性?有沒有這方面的主流協議?

Hash-then-encrypt 不是一個經常使用的方案。它可能不一定在所有情況下都是安全的。


而是使用消息驗證碼 (MAC)。這些會產生所謂的身份驗證標籤(符號: $ t $ ); 已處理數據上的固定大小的鍵控散列。顯然,作為密鑰散列,它需要一個密鑰作為輸入,最好是一個特定於 MAC 的密鑰。

MAC 可以拆分為基於塊密碼或散列的散列。MAC 的一個例子是 AES-CMAC;它基於 CBC 模式下的 AES,但它不加密明文(不保留中間密文)。如果分組密碼(通常是 AES)可以與硬體加速一起使用,那麼使用基於分組密碼的 MAC 是有意義的。

HMAC - 簡單地代表基於雜湊的 MAC - 可以與 MD5、SHA-1 和 SHA-2 一起用作底層雜湊結構。由於 SHA-3 已經受到保護以免受長度擴展攻擊,因此可以將其與稱為 KMAC 的更優雅的方法一起使用。


如今,經過身份驗證的密碼(例如 AES-GMAC)正變得流行。認證密碼​​通常是 AEAD 密碼:提供帶有關聯數據的認證加密的密碼。這些方案中的關聯數據 (AD) 或附加認證數據 (AAD) 也受到完整性保護且未加密。

通過這種方式,您可以自行決定要對哪些數據保密。如果您願意,您可以將所有內容都放在 AD 中,這樣您就不會有任何密文,只有明文和身份驗證標籤。

通常您只需要提供一個既可用於機密性又可用於真實性的密鑰,從而在一定程度上簡化了密鑰管理。


筆記:

  • 您可能需要其他構造,例如每個發送實體的消息計數器或會話密鑰,以創建安全協議;僅擁有 MAC 或經過身份驗證的密碼可能還不夠。
  • 大多數密碼學家都同意,在大多數情況下,先加密後 MAC 比先加密後 MAC 更安全,因此如果您確實需要對部分數據保密,請記住這一點。
  • 如有疑問:使用 HMAC;它是最常見的 MAC,它已經老化得很好,並提供了很多安全性。HMAC-SHA-256 - 以 SHA-256 作為底層雜湊算法(配置參數)的 HMAC 是一種良好、安全、普遍可用的算法。如果您認為 32 字節的標籤有點太大,您可以只使用最左邊的 16 個字節。

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