為什麼臨時/會話/臨時密鑰有用?
通信協議使用臨時密鑰的一個原因是幫助實現完美前向安全性。
它們還用於 SSL 從使用 RSA 到使用更快的對稱加密。
為什麼還要使用臨時密鑰?特別是,如果我不關心完美前向安全性,並且我已經有兩台具有共享對稱密鑰的機器,是否有任何理由使用臨時密鑰?
在 AES-GCM 中,96 位 IV 是否足以不需要臨時密鑰?
為什麼還要使用臨時密鑰?
臨時密鑰不是特定形式的密鑰,它們只是密鑰建立協議中的短期密鑰。通常它們不被直接信任,因為它們是動態生成的。
ECIES 還可以使用臨時私鑰來命名單個其他用途。
特別是,如果我不關心完美前向安全性,並且我已經有兩台具有共享對稱密鑰的機器,是否有任何理由使用臨時密鑰?
您可能希望生成只能用於特定會話的對稱會話密鑰。臨時-臨時 DH 密鑰協議可以正常工作,儘管其他方案也是可能的。您可能還希望為不同的發送者和不同的目的(例如加密和 MAC)使用單獨的密鑰。
否則,您可以例如重播使用主密鑰加密的消息。同樣,還有其他方法可以防止這種情況,但建立會話密鑰是一種常見的方法。
在 AES-GCM 中,96 位 IV 是否足以不需要臨時密鑰?
除非您將臨時密鑰簡單地定義為短期密鑰,否則 AES 密鑰本身並不是真正臨時的。它們通常用於多條消息,而不僅僅是在密鑰建立期間。
在合理範圍內,AES-GCM 可以與一個密鑰一起用於多條消息。是的,nonce 可以幫助解決這個問題。界限已在NIST SP800-38D中定義,它指定了在美國聯邦機構中使用的 GCM 模式。
正如第二段中已經提到的,無論密碼的安全性如何,在傳輸協議中使用會話密鑰都是有充分理由的。
它通常是關於與密鑰關聯的狀態的儲存。如果您使用您的長期共享密鑰來加密和發送消息,那麼您發送的消息應該明顯少於 $ 2^{48} $ 隨機 96 位 GCM IV 的消息,或者如果它基於計數器,則需要儲存 IV。如果不這樣做,可能會導致系統重新使用相同的密鑰和 IV,從而導致身份驗證的災難性妥協和顯著的機密性問題。基於 KE 和長期機密正確生成的臨時密鑰可以保護我們免受這些問題的影響。