本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Encryption SDK 演算法參考
本頁面上提供的參考可讓您建置自己的並與 AWS Encryption SDK相容的加密儲存庫。如果您不是自己建置相容的加密儲存庫,可能不需要此資訊。 若要在其 AWS Encryption SDK 中一種受支援的程式設計語言中使用,請參閱程式設計語言。 如需定義適當 AWS Encryption SDK 實作之元素的規格,請參閱中的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-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
01xx
—03xx
)-
使用的哈希函數是 SHA-384 或 SHA-256,這取決於算法套件。
-
對於擷取步驟:
-
不使用 salt。根據 RFC,鹽被設置為一個零字符串。字串長度等於雜湊函數輸出的長度,SHA-384 為 48 個位元組,SHA-256 則為 32 個位元組。
-
輸入鍵控材料是來自金鑰圈或主要金鑰提供者的資料金鑰。
-
-
對於擴展步驟:
-
輸入虛擬亂數金鑰是來自擷取步驟的輸出。
-
輸入信息是算法 ID 和消息 ID 的串聯(按該順序)。
-
輸出鍵合材料的長度為資料鍵長度。此輸出將當做加密演算法中的資料加密金鑰。
-
具有金鑰承諾量的演算法套件 (演算法 ID
04xx
和05xx
)-
使用的哈希函數是 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 曲線)。
-