先加密後 MAC 範式
我讀到Encrypt-then-MAC範式可證明是安全的。
據我了解,當使案例如 AES 進行加密和 HMAC_SHA256 用於 MAC 生成(以及密鑰 $ K_1 \neq K_2 $ ),這意味著以下內容:
- $ ciphertext = AES_{K_1}{plaintext} $
- $ mac = HMAC_SHA256_{K_2}{ciphertext} $
- 發送: $ ciphertext ;|; mac $
關於這個結構,我有兩個問題:
- 在 MAC 計算之前計算密文的雜湊值是否會對安全性產生負面影響?像交換步 $ 2. $ 有了這個: $ HMAC_SHA256_{K_2}{SHA256(ciphertext)} $ .
- 這種結構一般提供了哪些安全屬性——因為我不明白,這種結構如何證明是安全的。
在 MAC 計算之前計算密文的雜湊值是否會對安全性產生負面影響?就像交換步驟 2. 一樣:HMAC-SHA256(SHA256(ciphertext))。
從技術上講,是的,但並不重要。為了攻擊您提出的方案,攻擊者必須至少能夠做以下兩件事之一:(1)找到對(標準)HMAC-SHA256 方案的攻擊;或 (2) 查找 SHA256 的衝突。目前,加密社區認為,可以安全地假設攻擊者不能做這兩件事。(與某些人的預期相反,能夠做第二件事並不意味著有能力做第一個。)
這種結構一般提供了哪些安全屬性——因為我不明白,這種結構如何證明是安全的。
“這種結構”是什麼意思?您是指 Encrypt-then-Mac 還是 HMAC-SHA256?
如果您的意思是 Encrypt-then-MAC,David Cary 提供了指向此問題的連結,您可能會發現這些答案很有幫助。總而言之,可以證明攻擊者無法了解有關明文的資訊(除了它們的長度),也無法創建將通過 MAC 完整性檢查的密文。在這裡,假設攻擊者有能力進行選擇的消息攻擊; 也就是說,我們假設攻擊者可以說服或欺騙其中一方發送一些攻擊者選擇的消息,並表明擁有這種權力不足以讓攻擊者“破壞”該計劃。(這是非常保守的:在現實世界中,大多數攻擊者都不具備這種能力。)我們還假設加密算法和 MAC 算法本身是安全的,並且使用獨立選擇的隨機密鑰。
如果您的意思是 HMAC-SHA256,請參閱我對另一個問題的回答的第二部分。證明 HMAC-SHA256 具有那裡討論的屬性需要對 SHA256 做出一些(合理的)假設。
在這兩種情況下,證明都不是“絕對的”。我們需要對底層算法進行假設,而證明只表明攻擊者成功的機率非常小,前提是你不做類似使用相同密鑰加密 PB 數據的事情。
注意: 在您的問題中,您寫了
Ciphertext = AES_K(Plaintext)
. 但這(幾乎總是)是錯誤的!AES 只能處理 16 字節的字元串。要加密較長的字元串,您需要在某種操作模式中使用 AES 。