本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 版本和選取的金鑰承諾政策而有所不同。如需詳細資訊,請參閱 承諾政策和演算法套件。
演算法 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
01xx
–03xx
)-
使用的雜湊函數是 SHA-384 或 SHA-256,取決於演算法套件。
-
對於擷取步驟:
-
不使用 salt。根據 RFC, salt 設定為字串零。字串長度等於雜湊函數輸出的長度,SHA-384 為 48 個位元組,SHA-256 為 32 個位元組。
-
輸入鍵控材料是來自 keyring 或主金鑰提供者的資料金鑰。
-
-
對於擴展步驟:
-
輸入虛擬亂數金鑰是來自擷取步驟的輸出。
-
輸入資訊是演算法 ID 和訊息 ID 的串連 (依此順序)。
-
輸出鍵控材料的長度為資料鍵控長度。此輸出將當做加密演算法中的資料加密金鑰。
-
具有金鑰承諾的演算法套件 (演算法 ID
04xx
和05xx
)-
使用的雜湊函數是 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 曲線)。
-