AES GCM 模式可以檢測到不正確的密鑰並拒絕解密嗎?
我了解 GCM 模式下的 AES 會生成一個身份驗證標籤,用於確保篡改的密文不會被解密。但是,如果我傳遞了錯誤的密鑰,GCM 模式下的 AES 會檢測到我使用了錯誤的密鑰並給我一條錯誤消息,還是會因為我使用了錯誤的解密密鑰而返回亂碼數據?
AES-GCM 規範是否說如果使用錯誤的密鑰會引發錯誤?
更新錯誤不一定表明密鑰錯誤,只是解密應該失敗,所以不正確的明文不會返回給呼叫者。
每個加密密鑰都會獲得 AES-GCM 加密的消息 $ K_0 $ . 至於 AES-GCM 的任何正確實現,我們假設多個密文的合法加密 $ K_0 $ 用途 $ \text{IV} $ 這樣計數器(通過增加 $ \text{IV} $ ) 不重疊;並且當身份驗證檢查失敗時,解密的實現會給出錯誤消息。
GCM 模式下的 AES 會檢測到我使用了錯誤的密鑰並給我一條錯誤消息 (..) 嗎?
不,嚴格來說只有說明的內容。可以顯示密文(包括 $ \text{IV} $ ) 和兩個不同的鍵 $ K_0 $ 和 $ K_1 $ 都成功破譯(以及用密鑰加密的明文 $ K_0 $ 和 $ \text{IV} $ , 加密到密文包括 $ \text{IV} $ 和驗證器標籤,因此與上述問題重新陳述中的措辭相匹配)。
但是是的,如果密文是合法準備的(這是我在這個答案的第一個版本中的假設)。針對給定密文的攻擊,旨在展示 $ K_1 $ , 有成本 $ p,2^k $ 機率的 AES 加密 $ p $ 成功和 $ k $ -bit 身份驗證標記,即使有多個密文可用。如果以下一項(或兩項)成立, Prepared 就合法地持有:
- 鑰匙 $ K_0 $ 是隨機均勻選擇的,獨立於 $ \text{IV} $ 和明文(即使明文, $ \text{IV} $ , 和 $ K_1 $ , 被惡意選擇)。這包括任何情況 $ K_0 $ 至少在生成明文之前對對手保密,這是一個標准假設。
- 這 $ \text{IV} $ 是隨機均勻選擇的,獨立於 $ K_0 $ 和明文(在某些但並非所有合法使用 AES-GCM 加密的情況下);即使是明文, $ K_0 $ , 和 $ K_1 $ , 被惡意選擇。
論證:從GCM 的結構可以看出,在 AES 作為理想密碼的模型下,AES-GCM 認證器標籤是密鑰的PRF ,並且 $ \text{IV} $ ,對於任何固定消息(明文或密文,不包括 $ \text{IV} $ 和身份驗證器標籤)。
結論:使用密鑰的 AES-GCM 加密 $ K_0 $ ,或隨機不可預知 $ \text{IV} $ , 使得以後不可行(包括如果 $ K_0 $ 洩漏)任何人都可以找到(更不用說偶然遇到)另一把鑰匙 $ K_1 $ 允許解密未修改的密文(包括 $ \text{IV} $ 和身份驗證器),幾乎可以肯定會產生損壞的解密明文。但是,這可能會被選擇的政黨打敗 $ K_0 $ /進行加密/選擇消息;並且基本的未修改密文假設是人為的,因為它違背了使用經過驗證的加密的基本原理。