本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
產生資料金鑰
經授權使用者可以使用 GenerateDataKey API (與相關 API),請求特定類型的資料金鑰或任意長度的隨機金鑰。本主題提供此 API 操作的簡化檢視。如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 GenerateDataKey API。
以下是 GenerateDataKey
請求語法。
{ “EncryptionContext”: {“string” : “string”}, “GrantTokens”: [“string”], “KeyId”: “string”, “NumberOfBytes”: “number” }
請求接受採用 JSON 格式的下列資料。
- KeyId
-
用於加密資料金鑰之金鑰的金鑰識別符。此值必須能識別對稱加密 KMS 金鑰。
此為必要參數。
- NumberOfBytes
-
包含要產生之位元組數量的整數。此為必要參數。
呼叫者必須提供
KeySpec
或NumberOfBytes
,但不能同時提供兩者。 - EncryptionContext
-
(選用) Name-value (名称-值) 對,其中包含要在使用金鑰的加密和解密程序期間進行驗證的其他資料。
- GrantTokens
-
(選用) 授予字符清單,代表授予提供產生或使用金鑰的許可。如需授予和授予字符的詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的 AWS KMS的身分驗證與存取控制。
驗證命令之後, AWS KMS會取得目前與 KMS 金鑰相關聯的作用中 EKT。它透過 AWS KMS 主機與網域中的 HSM 之間的受保護工作階段,將 EKT 連同您提供的請求和任何加密內容傳遞至 HSM。
HSM 執行下列操作:
-
產生請求的機密材料,並將其存放在揮發性記憶體中。
-
解密符合請求中所定義 KMS 金鑰之金鑰 ID 的 EKT,以取得作用中 HBK = Decrypt(DKi, EKT)。
-
產生隨機 nonce N。
-
從 HBK 和 N 產生 256 位元 AES-GCM 衍生的加密金鑰 K。
-
加密機密材料 ciphertext = Encrypt(K, context, secret)。
GenerateDataKey
透過 AWS KMS 主機和 HSM 之間的安全通道,將純文字秘密材料和加密文字傳回給您。 AWS KMS 然後, 會透過 TLS 工作階段將其傳送給您。 AWS KMS 不會保留純文字或加密文字。如果沒有擁有加密文字、加密內容,以及使用 KMS 金鑰的授權,則無法傳回基礎機密。
以下是回應語法。
{ "CiphertextBlob": "blob", "KeyId": "string", "Plaintext": "blob" }
作為應用程式開發人員,資料金鑰的管理將交給您。如需使用 AWS KMS 資料金鑰 (但非資料金鑰對) 進行用戶端加密的最佳實務,您可以使用 AWS Encryption SDK。
資料金鑰可以依任何頻率輪換。此外,資料金鑰可以使用 ReEncrypt
API 操作,根據不同的 KMS 金鑰或輪換的 KMS 金鑰重新加密資料金鑰。如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 ReEncrypt。