<分区>
我计划在 GCM 模式下使用 AES 加密来保护我的应用程序的静态数据。
我阅读了 NIST 对 GCM 模式的建议。它提到IV的唯一性非常重要。它说如果 (key, IV) 对重复,对手可以构造密文伪造。
现在应用程序的设计是这样的,每当用户访问数据时,整个数据库都会被解密并加载到内存中。关闭应用程序时,数据会被加密并保存到数据库中。
在这种情况下生成和处理 IV 的最佳方法是什么?
<分区>
我计划在 GCM 模式下使用 AES 加密来保护我的应用程序的静态数据。
我阅读了 NIST 对 GCM 模式的建议。它提到IV的唯一性非常重要。它说如果 (key, IV) 对重复,对手可以构造密文伪造。
现在应用程序的设计是这样的,每当用户访问数据时,整个数据库都会被解密并加载到内存中。关闭应用程序时,数据会被加密并保存到数据库中。
在这种情况下生成和处理 IV 的最佳方法是什么?
最佳答案
每次加密都需要一个新的NONCE,即使是同一个字段也不应该用同一个NONCE加密。最好用一个新的、随机生成的 IV 开始每次加密,并将这个随机值添加到密文中。否则,您可能会泄露数据,甚至是整个纯文本。
关于database - IV 对静态数据的认证加密(GCM 模式)的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036271/