使用相同的密钥加密许多缓冲区

时间:2018-06-03 06:12:27

标签: security encryption aes aes-gcm

我有一个由许多块组成的大型数据集(比如说1GB),有些块的大小约为100字节,有些大约是一兆字节。每个块都由AES-GCM加密,相同 128b密钥(当然,不同的IV)。我有一个结构,它保留每个加密块的偏移和长度,以及它的IV和GCM标记。

问题:如果我加密结构(从而隐藏每个加密块的开头,长度和IV /标签),它会使我的数据更安全吗?或者可以将所有千位加密块保留在开放状态,以便任何人查看每个开始和结束的位置,以及它的IV /标记是什么?块大小是相当标准的,并没有透露太多关于数据的信息。我担心的是直接攻击密钥和数据(有数千个加密样本可用) - 或其他间接攻击。

2 个答案:

答案 0 :(得分:1)

我相信您已经回答了大部分问题的评论。如果问题是"我是否需要加密结构?"然后下一个问题(如YAHsaves所说)是#34;结构本身是敏感信息吗?"如果答案是否定的,那么这就是你的答案。如果结构本身是敏感的,它应该受到保护。

如果由于重复使用唯一的IV而导致您的密钥受到攻击,则表明GCM的使用不正确,应予以解决。如果使用正确,GCM旨在支持密钥重用。 NIST就如何在NIST 800-38d中设计GCM系统提供了良好而明确的指导。特别是,您希望阅读第8节,尤其是8.2.1关于IVs的推荐构造(如果不使用推荐的IV构造,则阅读8.3)。

大多数NIST的指导可以总结为"确保Key + IV永远不会被重复使用,如果你不能100%保证它,那么保证它在至少2 ^ -31(99.9999999%),不认真,我们不开玩笑,不重复使用Key + IV,甚至不重复一次。"

答案 1 :(得分:0)

看起来我找到了另一个答案here。它解决了一个不同的问题,但适用于我的,它意味着:是的,它可以在开放视图中留下数千个块,用相同的密钥加密。实际上,在AES-GCM的随机和确定IV模式下,最多可达到10亿 -