Gcm
當擁有除附加數據之外的所有內容時,是否可以恢復 AES-GCM 明文?
我
window.crypto
在瀏覽器中使用該庫。我使用
iv
fromwindow.crypto.getRandomValues
、key
fromwindow.crypto.subtle.generateKey
和additionalData
from 使用者輸入的密碼。加密後,我將
iv
,key
, 和encrypted_content
儲存在本地儲存中。如果有人得到了這三樣東西,他們有沒有可能破解它
additionalData
?
AES-GCM 在內部直接使用給定的密鑰用於 AES-CTR 模式,而不執行任何派生。該模式的初始計數器僅依賴於 IV/nonce;給定 12 字節 IV 的推薦預設值,IV/nonce 也直接使用。因此,當攻擊者獲得密鑰時,絕對沒有什麼可以阻止攻擊者解密消息。計算正確的認證標籤需要額外的數據,但它根本不影響解密。因此,在附加數據中設置密碼並不能確保消息的機密性。
身份驗證標籤也依賴於相同的密鑰來保證安全。儘管攻擊者可能無法驗證身份驗證標籤的正確性,但可以將數據附加到未檢測到的消息中(解密最後的 GHASH 結果,然後繼續 GHASH 計算,最後再次加密結果 - 基本上是執行長度擴展攻擊)。生成的明文可能與預期結果不匹配,但它是否會產生錯誤以及該錯誤是否表明被篡改取決於協議。因此,出於這些原因,將密碼放入附加數據中並不能提供消息的完整性或真實性。
對於任何對稱密碼,失去密鑰都是致命的。最好使用基於密碼的密鑰派生函式(又名密碼雜湊),例如 Argon2 - 正如cipherfox正確辨識的那樣。將結果值用作鍵,將結果的另一部分用作 IV。即便如此,密碼的強度對於密碼散列提供的安全性也是至關重要的。