AWS Encryption SDK中的支援演算法套件 - AWS Encryption SDK

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

AWS Encryption SDK中的支援演算法套件

演算法套件是加密演算法與相關數值的集合。密碼編譯系統使用演算法實作來產生加密文字訊息。

AWS Encryption SDK演算法套件會使用 Galois/Counter Mode (GCM) 中的進階加密標準 (AES) 演算法 (簡稱為 AES-GCM) 來加密原始資料。所以此AWS Encryption SDK支援 256 位元、192 位元和 128 位元的加密金鑰。初始向量 (IV) 的長度一律是 12 個位元組。驗證標籤的長度一律是 16 個位元組。

在預設情況下,AWS Encryption SDK使用具有 AES-GCM 的算法套件,並且具有基於 HMAC 的extract-and-expand鍵派生函數(香港發展基金)、簽署和 256 位元加密金鑰。如果承諾需要關鍵承諾,AWS Encryption SDK選擇同時支持密鑰承諾的算法套件;否則,它會選擇具有密鑰派生和簽名的算法套件,但不是關鍵承諾。

所以此AWS Encryption SDK推薦一個算法套件,該算法套件通過向基於 HMAC 的extract-and-expand密鑰派生函數(HKDF)。所以此AWS Encryption SDK會添加橢圓曲線數位簽章演算法 (ECDSA) 簽章。支援關鍵承諾,這個算法套件也派生一個密鑰承諾字符串— 一個非機密的資料金鑰標識符,存放在中繼資料的中繼資料。此密鑰承諾字符串也通過 HKDF 派生,使用類似於派生數據加密密鑰的過程。

AWS Encryption SDK演算法套件
加密演算法 資料加密金鑰長度 (以位元為單位) 金鑰衍生演算法 簽章演算法 A. 主要承諾
AES-GCM 256 HKDF,SHA-384 式 ECDSA,P-384 和 SHA-384 式 HKDF,SHA-512 式

HKDF 可協助您避免意外重複使用資料加密金鑰,並降低資料金鑰過度使用的風險。

對於簽署,這個演算法套件會搭配加密哈希函數演算法 (SHA-384) 來使用 ECDSA。預設會使用 ECDSA,即使基礎主金鑰政策未指定使用。簽署訊息驗證郵件發件人是否有權加密郵件並提供不可否認性。當主金鑰的授權政策允許一組使用者進行資料加密,並允許另外一組使用者進行資料解密時,這種做法特別有用。

具有關鍵承諾的算法套件可確保每個密文只解密為一個明文。他們通過驗證用作加密算法輸入的數據密鑰的身份來完成此操作。加密時,這些算法套件派生一個密鑰承諾字符串。在解密之前,他們會驗證數據密鑰是否與密鑰承諾字符串匹配。如果沒有,解密呼叫就會失敗。

其他支援的演算法套件

AWS Encryption SDK 支援以下替代演算法套件,以提供回溯相容性。一般而言,我們不建議這些演算法套件。但是,我們認識到簽名可能會嚴重影響性能,因此我們為這些情況提供了一個帶有密鑰派生的密鑰提交套件。對於必須做出更重要的性能權衡的應用程序,我們將繼續提供缺乏簽名、關鍵承諾和密鑰派生的套件。

AES-GCM,不搭配金鑰承諾

沒有密鑰承諾的算法套件不會在解密之前驗證數據密鑰。因此,這些算法套件可能會將單個密文解密為不同的明文消息。但是,由於具有關鍵承諾的算法套件會產生稍大(+30 字節)的加密消息並且需要更長的時間來處理,但它們可能不是每個應用程序的最佳選擇。

所以此AWS Encryption SDK支持具有密鑰派生、密鑰承諾、簽名以及具有密鑰派生和密鑰承諾但不簽名的算法套件。我們不建議您使用沒有金鑰承諾的演算法套件。如果必須,我們建議使用具有密鑰派生和密鑰承諾的算法套件,但不要簽名。但是,如果您的應用程序性能配置文件支持使用算法套件,則使用具有密鑰承諾、密鑰派生和簽名的算法套件是最佳做法。

AES-GCM,不簽署

不搭配簽署的演算法套件會缺少提供真偽和不可否認性的 ECDSA 簽章。僅當負責資料加密和資料解密的用户之間彼此信任時,才能使用這些套件。

在沒有簽名的情況下使用算法套件時,我們建議您選擇具有密鑰派生和密鑰承諾的算法套件。

AES-GCM,不搭配金鑰衍生

不搭配金鑰衍生的演算法套件會使用資料加密金鑰做為 AES-GCM 加密金鑰,而不使用金鑰衍生函數來衍生唯一金鑰。我們不鼓勵使用這個套件來產生加密文字,但AWS Encryption SDK出於兼容性原因支持它。

如需這些套件在程式庫中如何表示與使用的詳細資訊,請參閱AWS Encryption SDK 演算法參考