从KMS CipherTextBlob获取KMS密钥

时间:2016-07-28 19:52:02

标签: aws-kms

如何从密文blob中获取KMS密钥信息?

以aws网站为例

AWS KMS doc

aws kms encrypt --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --plaintext fileb://ExamplePlaintextFile --output text --query CiphertextBlob | base64 --decode > ExampleEncryptedFile

有没有办法查看ExampleEncryptedFile并找出用于加密它的KMS密钥?

我问,因为我在读取加密的内容时遇到问题,我想验证它是否使用我认为的密钥加密。

3 个答案:

答案 0 :(得分:1)

我担心你无法做到这一点。 encrypt API使用客户主密钥(CMK)来加密数据,并且该密钥永远不会离开AWS。除非您在某处保存了密钥ID(这不是一个很好的做法),否则您将无法从加密文件中获取密钥ID。

如果您拥有对AWS控制台的管理访问权限,可以提供一些帮助:

  • 字面上尝试使用您拥有的主密钥调用aws kms decrypt(假设它们不多,而原始密钥尚未删除);
  • 查看您的CloudTrail日志,如果您大致了解使用的时间(假设您有CloudTrail enabled on your KMS operations),您可能能够找出使用了哪个密钥。

答案 1 :(得分:0)

是的,您可以使用aws kms decrypt(将其传递给密文和区域)来获取密钥ID,该密钥不需要密钥ID即可执行解密。有关用于加密的密钥的信息是密文的一部分,因此,KMS将能够获取此信息,并向您返回“纯文本”和“ KeyId”。

答案 2 :(得分:0)

加密的Blob包含对其解密所需的密钥信息。无法确定加密的Blob使用哪个密钥作为加密值的一部分进行加密。 如果您不确定要使用哪个密钥,则必须滚动该值并再次对其进行加密,或者开始尝试一次只能访问一个密钥的权限进行解密。