

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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


|  | 
| --- |
|  本頁面上提供的參考可讓您建置自己的並與 AWS Encryption SDK相容的加密儲存庫。如果您不是自己建置相容的加密儲存庫，可能不需要此資訊。 若要在其中一個支援的程式設計語言 AWS Encryption SDK 中使用 ，請參閱 [程式設計語言](programming-languages.md)。 如需定義適當 AWS Encryption SDK 實作元素的規格，請參閱 GitHub 中的[AWS Encryption SDK 規格](https://github.com/awslabs/aws-encryption-sdk-specification/)。  | 

 AWS Encryption SDK 提供所有支援的[演算法套件](algorithms-reference.md)所需的[初始化向量](https://en.wikipedia.org/wiki/Initialization_vector) (IVs)。開發套件使用框架序號來建構 IV，因此同一訊息沒有兩個框架可使用相同的 IV。

每個 96 位元 (12 位元組) IV 由兩個大端序位元組陣列建構得來，並以下列順序串連：
+ 64 位元：0 (保留以供日後使用)。
+ 32 位元：框架序號。對於標頭驗證標籤，這個值全是零。

在引進[資料金鑰快取](data-key-caching.md)之前， AWS Encryption SDK 一直使用新的資料金鑰來加密每則訊息，並隨機產生所有 IV。因為資料金鑰從未重複使用，因此隨機產生的 IV 在密碼演算法上是安全的。當開發套件引進資料金鑰快取 (特意重複使用資料金鑰)，我們也變更開發套件產生 IV 的方式。

在訊息中使用無法重複的決定性 IV，會大幅增加可在單一資料金鑰下安全執行的呼叫數量。此外，快取的資料金鑰一律使用演算法套件搭配[金鑰衍生函數](https://en.wikipedia.org/wiki/Key_derivation_function)。使用確定性 IV 搭配虛擬隨機金鑰衍生函數，從資料金鑰衍生加密金鑰 AWS Encryption SDK ，可讓 加密 2^32 則訊息，而不會超過密碼編譯邊界。