Aes

AES256-GCM auth 標籤如何用於解密

  • September 1, 2022

我一直在 NodeJS 加密庫中使用 AES256-GCM,它表明可以在不關心 auth 標籤的情況下解密原始消息。

那麼非標籤驗證解密是否安全?只將密文+iv 發送給攻擊者並假設他/她知道加密方法(在開源 github 中)?

更新:例如:假設在我的開放原始碼中使用離線客戶端加密,即使在解密中涉及標籤,它在安全性方面仍然只是 CTR 等效?

由於攻擊者只需下載該開原始碼並建構應用程序,而無需原始碼中的標籤驗證步驟。假設攻擊者可以訪問其他使用者的密文+iv。

我認為 GCM 增強了密文安全性,而不僅僅是真實性。

那麼非標籤驗證解密是否安全?只將密文+iv 發送給攻擊者並假設他/她知道加密方法(在開源 github 中)?

為什麼攻擊者會從獲得更少的資訊中受益?普通的 GCM 依賴 CTR 模式來保證消息的安全:沒有認證標籤的密文CTR 模式。唯一的區別可能是隨機數處理。

更新:例如:假設在我的開放原始碼中使用離線客戶端加密,即使在解密中涉及標籤,它在安全性方面仍然只是 CTR 等效?

不,完整性和真實性帶來了重要的好處,它們絕對是安全方程式的一部分。它們不允許攻擊者更改密文,從而更改解密後的明文。


這甚至可能會影響密文的機密性,因為明文預言機肯定是一回事。

想像一下,您想將值 0、1 或 2 傳達給另一方。你很聰明,可以用兩位編碼(否則你會立即向攻擊者顯示資訊:1 位編碼意味著 0 或 1,兩位編碼意味著 2)。因此,您將這些值分別加密000110

現在攻擊者翻轉了最低有效位,並註意到接收系統產生了一個內部錯誤:系統不期望11被發送。根據這些資訊,攻擊者可以直接假設最高有效位是 a 1,因此發送的值必須是 2。唯一的要求是錯誤以某種方式顯而易見。


所以我們已經看到,是的,經過身份驗證的密文更安全——如果使用得當。

萬一攻擊者可以破壞 CTR,那麼無論是否使用 GCM,消息的機密性都會失去。

Auth-tag 是Authentication tag 的縮寫,是認證所需要的。

如果你省略它,你實際上是在做 AES-CTR。它提供保密但不提供身份驗證。

如果您有密鑰,您仍然可以解密消息並檢索沒有 auth-tag 的純文字。但是,消息可能已被攻擊者修改。

CTR 加密特別具有可塑性,攻擊者可以獲取加密消息並將其與任何他想要的東西進行異或,從而對秘密純文字進行等效修改。在 GCM 中驗證 auth 標籤可防止此類攻擊。

顯然,刪除資訊,特別是 auth 標籤不會損害保密性。

為什麼要刪除 auth 標籤,驗證和防止真正的攻擊相當便宜。

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