AWS Encryption SDK初始化向量参考 - AWS Encryption SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Encryption SDK初始化向量参考

本页面提供了在您构建与 AWS Encryption SDK 兼容的加密库时可供参考的信息。如果您不需要构建自己的兼容加密库,则可能不需要此信息。

要AWS Encryption SDK在支持的编程语言之一中使用,请参阅编程语言

有关定义适当AWS Encryption SDK实现要素的规范,请参阅中的AWS Encryption SDK规范 GitHub。

AWS Encryption SDK提供所有支持的算法套件所需的初始化向量 (IVs)。该开发工具包使用帧序列号构造一个 IV,以便同一消息中的两个帧不能具有相同的 IV。

每个 96 位(12 字节)IV 是通过两个按以下顺序串联的 big-endian 字节数组构造的:

  • 64 位:0(保留以供将来使用)

  • 32 位:帧序列号。对于标头身份验证标签,该值全部为零。

在引入数据密钥缓存之前,AWS Encryption SDK总是使用新的数据密钥来加密每条消息,而且所有消息都是 IVs随机生成的。随机生成的数据密钥 IVs 在密码学上是安全的,因为数据密钥从未被重复使用。当 SDK 引入有意重复使用数据密钥的数据密钥缓存时,我们改变了 SDK 的生成 IVs方式。

使用不能在消息中重复的确定性 IVs 会显著增加在单个数据密钥下可以安全执行的调用次数。此外,缓存的数据密钥始终使用具有密钥派生函数的算法套件。使用具有伪随机密钥派生函数的确定性 IV 从数据密钥派生加密密钥,可以在不超过加密边界的情况下加密 2^32 条消息。AWS Encryption SDK