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,則需要了解如何 AWS Encryption SDK 實現支持的算法套件來加密原始數據。

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

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

可唯一識別演算法實作的 2 位元組十六進位值。這個值會儲存在加密文字的郵件標頭中。

訊息格式版本

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

演算法套件資料長度

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

資料金鑰長度

資料金鑰的長度 (以位元為單位)。 AWS Encryption SDK 支援 256 位元、192 位元和 128 位元金鑰。資料金鑰由金鑰或主要金鑰產生。

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

加密演算法

使用的加密演算法的名稱和模式。算法套件中 AWS Encryption SDK 使用高級加密標準(AES)加密算法與伽羅瓦/計數器模式(GCM)。

關鍵承諾演算法

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

如需將金鑰承諾加入演算法套件的技術說明,請參閱密碼學 ePrint 封存中的金鑰提交 AEAD

金鑰衍生演算法

基於 HMAC 的 extract-and-expand 密鑰派生功能(HKDF)用於導出數據加密密鑰。RFC 58 AWS Encryption SDK 69 中定義的香港港元化基金的用途。

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

  • 使用的哈希函數是 SHA-384 或 SHA-256,這取決於算法套件。

  • 對於擷取步驟:

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

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

  • 對於擴展步驟:

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

    • 輸入信息是算法 ID 和消息 ID 的串聯(按該順序)。

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

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

  • 使用的哈希函數是 SHA-512。

  • 對於擷取步驟:

    • 鹽是 256 位元的密碼編譯隨機值。在郵件格式版本 2 (0x02) 中,此值會儲存在MessageID欄位中。

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

  • 對於擴展步驟:

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

    • 索引鍵標籤是以大端位元組順序排列的字DERIVEKEY串 UTF-8 編碼位元組。

    • 輸入信息是算法 ID 和密鑰標籤的串聯(按該順序)。

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

訊息格式版本

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

簽章演算法

用於在密文標頭和內文上生成數字簽名的簽名算法。 AWS Encryption SDK 使用具有下列細節的橢圓曲線數位簽章演算法 (ECDSA):

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

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