

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

# 解密
<a name="decrypt-operation"></a>

 AWS KMS 對 進行解密的呼叫會接受加密的值加密文字和加密內容。 會使用[AWS 簽章第 4 版簽署的請求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)來 AWS KMS 驗證呼叫，並從加密文字中擷取包裝金鑰的 HBKID。HBKID 是用來取得解密加密文字、金鑰 ID 和金鑰 ID 政策所需的 *EKT*。請求是根據金鑰政策、可能存在的授予和參考金鑰 ID 的任何關聯 IAM 政策進行授權。`Decrypt` 函數類似於加密函數。

以下是 `Decrypt` 請求語法。

```
{
	"CiphertextBlob": "blob",
	"EncryptionContext": { "string" : "string" }
	"GrantTokens": ["string"]
}
```

以下是請求參數。

**CiphertextBlob**  
包括中繼資料的加密文字。

** EncryptionContext**  
(選用) 加密內容。如果這是在 `Encrypt` 函數中指定的，則必須在此處指定，否則解密操作會失敗。如需詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt-context.html)。

**GrantTokens**  
(選用) 授予字符清單，代表授予提供執行解密的許可。

*加密文字*與 *EKT* 會連同加密內容，透過已驗證的工作階段傳送至 HSM 以進行解密。

HSM 會執行下列項目：

1. 解密 *EKT*，以取得 *HBK = Decrypt(DKi, EKT)*。

1. 從*加密文字*結構擷取 nonce *N*。

1. 從 *HBK* 和 *N* 重新產生 256 位元 AES-GCM 衍生的加密金鑰 *K*。

1. 解密*加密文字*以取得 *plaintext = Decrypt(K, context, ciphertext)*。

產生的金鑰 ID 和純文字會透過安全工作階段傳回給 AWS KMS 主機，然後透過 TLS 連線傳回給呼叫的客戶應用程式。

以下是回應語法。

```
{
    "KeyId": "string",
    "Plaintext": blob
}
```

如果呼叫的應用程式想要確保純文字的真實性，則必須驗證傳回的金鑰 ID 是預期的。