You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用AWS KMS解密外部用其公钥加密的载荷?

问题

能否通过AWS KMS服务解密外部用其公钥加密的载荷?

场景说明:将KMS非对称密钥的公钥提供给客户端,客户端无需调用KMS服务,直接用公钥加密生成JWE载荷,服务端通过KMS服务解密该载荷。已知KMS私钥无法下载,解密必须在KMS服务内完成,但尝试基础场景时抛出<InvalidCiphertextException>异常,似乎KMS无法解密非自身加密的内容。

使用环境:.NET 8、AWSSDK.KeyManagementService.3.7.304版本

测试代码:

var pkey = await _kmsClient.GetPublicKeyAsync(new GetPublicKeyRequest { KeyId = _keyId});

using (RSA rsa = RSA.Create())
{
    rsa.ImportSubjectPublicKeyInfo(pkey.PublicKey.ToArray(), out _);
    rsa.ExportParameters(false);
    encryptedCek = rsa.Encrypt(cek, RSAEncryptionPadding.OaepSHA256);
}

var dec = await _kmsClient.DecryptAsync(new DecryptRequest
{
    CiphertextBlob = new MemoryStream(Convert.FromBase64String(Convert.ToBase64String(encryptedCek))),
    KeyId = _keyId,
    EncryptionAlgorithm = EncryptionAlgorithmSpec.RSAES_OAEP_SHA_256
});

预期载荷能被解密,但KMS服务SDK抛出InvalidCiphertextException异常,尝试不转换Base64也得到相同结果。


回答

不行,AWS KMS的Decrypt API仅支持解密由KMS自身加密生成的密文,无法直接处理外部用KMS公钥加密的内容。原因是KMS加密产出的密文包含专属元数据(如密钥ID、加密上下文等),Decrypt API依赖这些元数据完成解密流程,而外部加密的内容没有这类元数据,因此会触发InvalidCiphertextException。

要实现客户端用KMS公钥加密、服务端通过KMS解密的场景,需使用KMS的AsymmetricDecrypt API,该接口专门用于解密用KMS公钥加密的内容,只要加密算法与KMS密钥支持的算法匹配即可。

修改后的代码示例:

var pkey = await _kmsClient.GetPublicKeyAsync(new GetPublicKeyRequest { KeyId = _keyId});

using (RSA rsa = RSA.Create())
{
    rsa.ImportSubjectPublicKeyInfo(pkey.PublicKey.ToArray(), out _);
    encryptedCek = rsa.Encrypt(cek, RSAEncryptionPadding.OaepSHA256);
}

// 替换为AsymmetricDecryptAsync接口
var dec = await _kmsClient.AsymmetricDecryptAsync(new AsymmetricDecryptRequest
{
    CiphertextBlob = new MemoryStream(encryptedCek),
    KeyId = _keyId,
    EncryptionAlgorithm = EncryptionAlgorithmSpec.RSAES_OAEP_SHA_256
});

注意事项:

  • 确保你的KMS密钥为非对称密钥(类型为RSA或ECC),对称密钥不支持AsymmetricDecrypt操作。
  • 加密时使用的算法必须与KMS密钥配置的加密算法一致,例如示例中的RSAES_OAEP_SHA_256,需确认目标KMS密钥支持该算法。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:32:20