

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

# AWS Encryption SDK 初始化向量参考
<a name="IV-reference"></a>


|  | 
| --- |
|  本页面提供了在您构建与 AWS Encryption SDK兼容的加密库时可供参考的信息。如果您不需要构建自己的兼容加密库，则可能不需要此信息。 要 AWS Encryption SDK 在支持的编程语言之一中使用，请参阅[编程语言](programming-languages.md)。 有关定义适当 AWS Encryption SDK 实现要素的规范，请参阅中的[AWS Encryption SDK 规范](https://github.com/awslabs/aws-encryption-sdk-specification/) GitHub。  | 

 AWS Encryption SDK 提供所有支持的[算法套](algorithms-reference.md)件所需的[初始化向量](https://en.wikipedia.org/wiki/Initialization_vector) (IVs)。该开发工具包使用帧序列号构造一个 IV，以便同一消息中的两个帧不能具有相同的 IV。

每个 96 位（12 字节）IV 是通过两个按以下顺序串联的 big-endian 字节数组构造的：
+ 64 位：0（保留以供将来使用）
+ 32 位：帧序列号。对于标头身份验证标签，该值全部为零。

在引入[数据密钥缓存](data-key-caching.md)之前， AWS Encryption SDK 总是使用新的数据密钥来加密每条消息，而且所有消息都是 IVs随机生成的。随机生成的数据密钥 IVs 在密码学上是安全的，因为数据密钥从未被重复使用。当 SDK 引入数据密钥缓存（故意重复使用数据密钥）时，我们改变了 SDK 的生成 IVs方式。

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