AWS Encryption SDK 演算法參考 - AWS Encryption SDK

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

AWS Encryption SDK 演算法參考

本頁面上提供的參考可讓您建置自己的並與 AWS Encryption SDK相容的加密儲存庫。如果您不是自己建置相容的加密儲存庫,可能不需要此資訊。

若要在支援的其中一種程式設計語言 AWS Encryption SDK 中使用 ,請參閱 程式設計語言

如需定義適當 AWS Encryption SDK 實作元素的規格,請參閱 GitHub 中的AWS Encryption SDK 規格

如果您要建置自己的程式庫,可以讀取和寫入與 相容的密碼文字 AWS Encryption SDK,您將需要了解 如何 AWS Encryption SDK 實作支援的演算法套件來加密原始資料。

AWS Encryption SDK 支援下列演算法套件。所有 AES-GCM 演算法套件都有 12 位元組初始化向量和 16 位元組 AES-GCM 身分驗證標籤。預設演算法套件會隨 AWS Encryption SDK 版本和選取的金鑰承諾政策而有所不同。如需詳細資訊,請參閱 承諾政策和演算法套件

AWS Encryption SDK 演算法套件
演算法 ID 訊息格式版本 加密演算法 資料金鑰長度 (位元) 金鑰衍生演算法 簽章演算法 金鑰承諾演算法 演算法套件資料長度 (位元組)
05 78 0x02 AES-GCM 256 HKDF 搭配 SHA-512 ECDSA,P-384 和 SHA-384 式 HKDF 搭配 SHA-512 32 (金鑰承諾)
04 78 0x02 AES-GCM 256 HKDF 搭配 SHA-512 HKDF 搭配 SHA-512 32 (金鑰承諾)
03 78 0x01 AES-GCM 256 HKDF,SHA-384 式 ECDSA,P-384 和 SHA-384 式 N/A
03 46 0x01 AES-GCM 192 HKDF,SHA-384 式 ECDSA,P-384 和 SHA-384 式 N/A
02 14 0x01 AES-GCM 128 HKDF,搭配 SHA-256 ECDSA,搭配 P-256 和 SHA-256 N/A
01 78 0x01 AES-GCM 256 HKDF,搭配 SHA-256 N/A
01 46 0x01 AES-GCM 192 HKDF,搭配 SHA-256 N/A
01 14 0x01 AES-GCM 128 HKDF,搭配 SHA-256 N/A
00 78 0x01 AES-GCM 256 N/A
00 46 0x01 AES-GCM 192 N/A
00 14 0x01 AES-GCM 128 N/A
演算法 ID

可唯一識別演算法實作的 2 位元組十六進位值。此值會存放在加密文字的訊息標頭中。

訊息格式版本

訊息格式的版本。具有金鑰承諾的演算法套件使用訊息格式第 2 版 (0x02)。沒有金鑰承諾的演算法套件使用訊息格式版本 1 (0x01)。

演算法套件資料長度

演算法套件特定資料位元組的長度。此欄位僅支援訊息格式版本 2 (0x02)。在訊息格式第 2 版 (0x02) 中,此資料會出現在訊息標頭的 Algorithm suite data 欄位中。支援金鑰承諾的演算法套件會使用 32 個位元組做為金鑰承諾字串。如需詳細資訊,請參閱此清單中的關鍵承諾演算法

資料金鑰長度

位元的資料金鑰長度。 AWS Encryption SDK 支援 256 位元、192 位元和 128 位元金鑰。資料金鑰是由 keyring 或主金鑰產生。

在某些實作中,此資料金鑰會用作 HMAC extract-and-expand金鑰衍生函數 (HKDF) 的輸入。HKDF 的輸出做為加密演算法中的資料加密金鑰。如需詳細資訊,請參閱此清單中的金鑰衍生演算法

加密演算法

使用的加密演算法名稱和模式。中的演算法套件 AWS Encryption SDK 使用進階加密標準 (AES) 加密演算法搭配 Galois/計數器模式 (GCM)。

金鑰承諾演算法

用來計算金鑰承諾字串的演算法。輸出會存放在訊息標頭的 Algorithm suite data欄位中,用來驗證金鑰承諾的資料金鑰。

如需將金鑰承諾新增至演算法套件的技術說明,請參閱 Cryptology ePrint Archive 中的金鑰承諾 AEADs

金鑰衍生演算法

用於衍生資料加密金鑰的 HMAC 式擷取和擴展金鑰衍生函數 (HKDF)。 AWS Encryption SDK 使用 RFC 5869 中定義的 HKDF。

沒有金鑰承諾的演算法套件 (演算法 ID 01xx03xx)

  • 使用的雜湊函數是 SHA-384 或 SHA-256,取決於演算法套件。

  • 對於擷取步驟:

    • 不使用 salt。根據 RFC, salt 設定為字串零。字串長度等於雜湊函數輸出的長度,SHA-384 為 48 個位元組,SHA-256 為 32 個位元組。

    • 輸入鍵控材料是來自 keyring 或主金鑰提供者的資料金鑰。

  • 對於擴展步驟:

    • 輸入虛擬亂數金鑰是來自擷取步驟的輸出。

    • 輸入資訊是演算法 ID 和訊息 ID 的串連 (依此順序)。

    • 輸出鍵控材料的長度為資料鍵控長度。此輸出將當做加密演算法中的資料加密金鑰。

具有金鑰承諾的演算法套件 (演算法 ID 04xx05xx)

  • 使用的雜湊函數是 SHA-512。

  • 對於擷取步驟:

    • salt 是 256 位元密碼編譯隨機值。在訊息格式第 2 版 (0x02) 中,此值會存放在 MessageID 欄位中。

    • 初始金鑰材料是來自 keyring 或主金鑰提供者的資料金鑰。

  • 對於擴展步驟:

    • 輸入虛擬亂數金鑰是來自擷取步驟的輸出。

    • 金鑰標籤是以大端位元組順序排列的DERIVEKEY字串 UTF-8-encoded位元組。

    • 輸入資訊是演算法 ID 和金鑰標籤 (依此順序) 的串連。

    • 輸出鍵控材料的長度為資料鍵控長度。此輸出將當做加密演算法中的資料加密金鑰。

訊息格式版本

與演算法套件搭配使用的訊息格式版本。如需詳細資訊,請參閱 訊息格式參考

簽章演算法

用來透過加密文字標頭和內文產生數位簽章的簽章演算法。 AWS Encryption SDK 使用橢圓曲線數位簽章演算法 (ECDSA) 搭配下列詳細資訊:

  • 使用的橢圓曲線為 P-384 或 P-256 曲線 (如演算法 ID 所指定)。這些曲線定義於數位簽章標準 (DSS) (FIPS PUB 186-4) 中。

  • 使用的雜湊函數是 SHA-384 (搭配 P-384 曲線) 或 SHA-256 (搭配 P-256 曲線)。