谷歌的密钥管理系统:密钥轮换后的数据解密 [英] Google's Key Management System: data unencryption after key rotation

查看:6
本文介绍了谷歌的密钥管理系统:密钥轮换后的数据解密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

上下文

我正在遵循Storing Secrets在存储存储桶中的GCP说明。KMS在上传到存储存储桶之前用于file encryption

由于数据加密是在谷歌存储之外进行的,我对密钥轮换的一个方面感到有点困惑。

方案

让我们考虑一个特定的场景:

  1. 在2017-01-01我创建了一个密钥环和一个密钥A(实际上是A_ver1,因为密钥是版本化的)。此外,密钥轮换策略设置为触发每年轮换
  2. 2017-01-15我运行了一个命令,用A_ver1加密some_file.txtcurl -s -X POST "https://cloudkms.googleapis.com/v1/projects/my-project/<...>" -d "{"plaintext":"<...SOME_FILE_CONTENT...>"}" -H "Authorization:Bearer $(gcloud auth application-default print-access-token)" -H "Content-Type:application/json"
  3. 我立即将加密结果保存到存储存储桶中,保存为some_file.txt.encrypted
  4. 我什么都不做,在2018-01-01发生密钥轮换。据我所知A_ver1被禁用A_ver2被生成并激活。这两个事件几乎同时发生。
  5. 2018-06-01我意识到我需要解密some_file.txt.encrypted。我正在下载文件,然后尝试运行命令以使用A_ver2...
  6. 解密文件

问题

问题1:如果文件是用较早版本A_ver1加密的,尝试使用A_ver2解密会发生什么情况?

问题2:如果解密失败,我首先应该做些什么来防止它?

推荐答案

在您的场景中,第4步中对循环的描述不太正确。当您轮换CryptoKey时,会生成一个新的CryptoKeyVersion,并使其成为CryptoKey的主版本,但旧版本不会发生任何变化。也就是说,对于您的方案,A_ver1仍处于启用状态,但另一个启用的版本A_ver2是主要版本。

要回答您的问题,

问题1:尝试解密文件时,不需要指定CryptoKeyVersion,只需指定CryptoKey;服务将为您获取正确的版本。如果尝试解密已使用现在已禁用(或已销毁)的CryptoKeyVersion加密的文件,则解密调用将失败。

问题2:这取决于您针对什么进行优化。例如,如果您使用轮换来尝试限制使用任何一个版本加密的数据量,那么您可能不想禁用旧版本,并将其保留较长时间。您可能只想禁用超过某些大量版本的密钥版本。在这种情况下,您可以跟踪特定数据使用的密钥版本,并重新加密所有受影响的数据。

这篇关于谷歌的密钥管理系统:密钥轮换后的数据解密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆