本文介绍了谷歌的密钥管理系统:密钥轮换后的数据解密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
上下文
我正在遵循Storing Secrets在存储存储桶中的GCP说明。KMS在上传到存储存储桶之前用于file encryption。
在2017-01-01我创建了一个密钥环和一个密钥A(实际上是A_ver1,因为密钥是版本化的)。此外,密钥轮换策略设置为触发每年轮换。
2017-01-15我运行了一个命令,用A_ver1加密some_file.txt:
curl -s -X POST "cloudkms.googleapis/v1/projects/my-project/<...>"
-d "{"plaintext":"<...SOME_FILE_CONTENT...>"}"
-H "Authorization:Bearer $(gcloud auth application-default print-access-token)"
-H "Content-Type:application/json"。
我立即将加密结果保存到存储存储桶中,保存为some_file.txt.encrypted。
我什么都不做,在2018-01-01发生密钥轮换。据我所知A_ver1被禁用,A_ver2被生成并激活。这两个事件几乎同时发生。
在2018-06-01我意识到我需要解密some_file.txt.encrypted。我正在下载文件,然后尝试运行命令以使用A_ver2... 解密文件
问题
由于数据加密是在谷歌存储之外进行的,我对密钥轮换的一个方面感到有点困惑。
方案让我们考虑一个特定的场景:
问题1:如果文件是用较早版本A_ver1加密的,尝试使用A_ver2解密会发生什么情况?
问题2:如果解密失败,我首先应该做些什么来防止它?
推荐答案在您的场景中,第4步中对循环的描述不太正确。当您轮换CryptoKey时,会生成一个新的CryptoKeyVersion,并使其成为CryptoKey的主版本,但旧版本不会发生任何变化。也就是说,对于您的方案,A_ver1仍处于启用状态,但另一个启用的版本A_ver2是主要版本。
要回答您的问题,
问题1:尝试解密文件时,不需要指定CryptoKeyVersion,只需指定CryptoKey;服务将为您获取正确的版本。如果尝试解密已使用现在已禁用(或已销毁)的CryptoKeyVersion加密的文件,则解密调用将失败。
问题2:这取决于您针对什么进行优化。例如,如果您使用轮换来尝试限制使用任何一个版本加密的数据量,那么您可能不想禁用旧版本,并将其保留较长时间。您可能只想禁用超过某些大量版本的密钥版本。在这种情况下,您可以跟踪特定数据使用的密钥版本,并重新加密所有受影响的数据。
更多推荐
谷歌的密钥管理系统:密钥轮换后的数据解密
发布评论