【发布时间】:2016-04-21 06:08:12
【问题描述】:
我一直在使用 AES-CBC 进行加密,每次加密纯文本时都会使用随机 IV。据我所知,这是推荐的方法。
我一直在研究 AES-GCM / AES-CTR,主要用于 AEAD。我还没有用这个实现任何东西,但从我读过的所有内容来看,基本上nonce只是一个短路的IV,并且有一个用于每个加密调用的内部计数器。开发人员 / 需要确保在 32 位计数器循环返回之前更改随机数,否则相同的随机数 (IV) 可能与相同的密钥一起使用,这可能会加密相同的纯文本并泄漏加密密钥。
我不太明白为什么 AES-CBC 可以使用随机 IV,但我读过的一些内容表明 AES-GCM 的随机随机数 (IV) 是一个坏主意。我唯一能想到的是 AES-CBC 的 IV 比 AES-GCM 的 nonce 长,因此 AES-GCM 的重复 nonce 可能更大。
我需要加密从几个字节到 10 - 20 GB 的数据。我知道 AES-GCM 在计数器循环之前可以加密的数据大小(~60GB)有限制。我可以绕过这个限制,因为我的数据低于这个限制。
有人能解释一下为什么不建议为 AES-GCM 使用随机随机数吗?
【问题讨论】:
-
我对此有一个后续问题。使用 AES-CBC,我使用长期密钥并生成随机 IV,并将 IV 与加密数据一起保存,并将数据保存到磁盘,一切正常。在这个实现中,我不关心 AEAD。使用 AES-GCM / CTR,我仍然想使用长时间密钥。我的计划是设置加密,使用 nonce / key 加密数据并使用加密数据保存 nonce。要解密,我将设置随机数并解密数据。使用 AES-GCM / CTR 以普通形式保存 nonce 是否安全?
-
使用 AES-CTR / GCM,我希望对于密码的每个设置,内部计数器都设置为 0,所以如果我要加密数据以进行长期存储,不存在NONCE 与数据一起使用的感知顺序?如果我在同一个密码会话中使用相同的 NONCE 加密 PlainText1、PlainText2、PlainText3,我不需要以相同的顺序解密它们吗?
-
我投票结束这个问题,因为它属于 crypto.stackexchange.com
标签: encryption cryptography initialization-vector aes-gcm