Aes-Gcm
使用 AES-256 GCM 加密/解密
我是密碼學新手,我在加密解密方面面臨一些複雜問題。我正在嘗試將 AES-GCM 與 256 位 AES 密鑰和 96 位隨機數一起使用。我使用開源項目 ( Vault ) 創建加密密鑰。Vault 可以使用生成的密鑰進行加密/解密。
問題是我應該使用 Vault 生成的密鑰在不同的應用程序中加密數據(以便 Vault 之後可以解密)?只有加密密鑰就足夠了,還是應該從 Vault 中導出更多數據,例如 IV?
如果您有一些建議並希望我的問題很清楚,請提前感謝
導出密鑰就足夠了。
使用 GCM(以及一般的塊模式),密鑰和隨機數扮演著非常不同的角色。
密鑰是秘密的;它被加密器和解密器知道,其他人都不知道。而且,您可以使用相同的密鑰來加密多條消息。
隨機數(或 IV)不必是秘密的;通常的做法是將其與加密消息一起發送。但是,GCM 的一個限制是,雖然您可以使用相同的密鑰加密多條消息,但您必須為使用相同密鑰加密的每條消息使用不同的隨機數。而且,通常,加密器在加密消息時會選擇隨機數。
因此,詢問 Vault 希望使用哪個 nonce 來解密是沒有意義的;加密器選擇它(如果 Vault 能夠使用相同的密鑰解密多條消息,那麼無論如何它都必須使用不同的隨機數)。