AES256-GCM auth 標籤如何用於解密
我一直在 NodeJS 加密庫中使用 AES256-GCM,它表明可以在不關心 auth 標籤的情況下解密原始消息。
那麼非標籤驗證解密是否安全?只將密文+iv 發送給攻擊者並假設他/她知道加密方法(在開源 github 中)?
更新:例如:假設在我的開放原始碼中使用離線客戶端加密,即使在解密中涉及標籤,它在安全性方面仍然只是 CTR 等效?
由於攻擊者只需下載該開原始碼並建構應用程序,而無需原始碼中的標籤驗證步驟。假設攻擊者可以訪問其他使用者的密文+iv。
我認為 GCM 增強了密文安全性,而不僅僅是真實性。
那麼非標籤驗證解密是否安全?只將密文+iv 發送給攻擊者並假設他/她知道加密方法(在開源 github 中)?
為什麼攻擊者會從獲得更少的資訊中受益?普通的 GCM 依賴 CTR 模式來保證消息的安全:沒有認證標籤的密文是CTR 模式。唯一的區別可能是隨機數處理。
更新:例如:假設在我的開放原始碼中使用離線客戶端加密,即使在解密中涉及標籤,它在安全性方面仍然只是 CTR 等效?
不,完整性和真實性帶來了重要的好處,它們絕對是安全方程式的一部分。它們不允許攻擊者更改密文,從而更改解密後的明文。
這甚至可能會影響密文的機密性,因為明文預言機肯定是一回事。
想像一下,您想將值 0、1 或 2 傳達給另一方。你很聰明,可以用兩位編碼(否則你會立即向攻擊者顯示資訊:1 位編碼意味著 0 或 1,兩位編碼意味著 2)。因此,您將這些值分別加密
00
為01
或10
。現在攻擊者翻轉了最低有效位,並註意到接收系統產生了一個內部錯誤:系統不期望
11
被發送。根據這些資訊,攻擊者可以直接假設最高有效位是 a1
,因此發送的值必須是 2。唯一的要求是錯誤以某種方式顯而易見。所以我們已經看到,是的,經過身份驗證的密文更安全——如果使用得當。
萬一攻擊者可以破壞 CTR,那麼無論是否使用 GCM,消息的機密性都會失去。
Auth-tag 是Authentication tag 的縮寫,是認證所需要的。
如果你省略它,你實際上是在做 AES-CTR。它提供保密但不提供身份驗證。
如果您有密鑰,您仍然可以解密消息並檢索沒有 auth-tag 的純文字。但是,消息可能已被攻擊者修改。
CTR 加密特別具有可塑性,攻擊者可以獲取加密消息並將其與任何他想要的東西進行異或,從而對秘密純文字進行等效修改。在 GCM 中驗證 auth 標籤可防止此類攻擊。
顯然,刪除資訊,特別是 auth 標籤不會損害保密性。
為什麼要刪除 auth 標籤,驗證和防止真正的攻擊相當便宜。