我必须使用密码保护记录文件的机密性,完整性和真实性。记录数可能超过32 ^ 2,每条记录可以独立访问。
实现它的一种方法是
但是NIST Special Publication SP800-38D defining GCM and GMAC要求初始化向量的记录数小于32 ^ 2是唯一的。
所以我设计了另一种解决方案:使用派生密钥作为密钥,使用HMAC-SHA256为每条记录创建密钥,并将文件中记录的位置作为要验证的消息(盐)。
所以问题是我是否需要将文件中记录的位置提供给经过身份验证的加密算法 作为一个额外的经过验证的数据,因为我在生成密钥时已经处理过这个数据了吗?
此外,我真的需要使用初始化向量,因为所有记录都将被加密 使用由HMAC-SHA256(PBKDF2(HMAC-SHA256,密码,salt,iterationCount,256),blockAddress)生成的假设不同的密钥进行身份验证?
我不知道文件的大小是多少,所以我认为它可能非常大。
答案 0 :(得分:0)
如果我理解正确(免责声明,对不起)那么你应该没有在档案中添加记录中的位置。
如果您只使用一次(会话)密钥,则不需要随机IV。使用由零组成的IV就足够了(确定性构造,使用一个设备和一个设置为零的计数器,如果我们遵守NIST命名法)。