谷歌的密钥管理系统:密钥轮换后的数据解密 [英] Google's Key Management System: data unencryption after key rotation
本文介绍了谷歌的密钥管理系统:密钥轮换后的数据解密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
上下文
我正在遵循Storing Secrets在存储存储桶中的GCP说明。KMS在上传到存储存储桶之前用于file encryption。由于数据加密是在谷歌存储之外进行的,我对密钥轮换的一个方面感到有点困惑。
方案
让我们考虑一个特定的场景:
- 在2017-01-01我创建了一个密钥环和一个密钥
A
(实际上是A_ver1
,因为密钥是版本化的)。此外,密钥轮换策略设置为触发每年轮换。 - 2017-01-15我运行了一个命令,用
A_ver1
加密some_file.txt
:curl -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"
。 - 我立即将加密结果保存到存储存储桶中,保存为
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:这取决于您针对什么进行优化。例如,如果您使用轮换来尝试限制使用任何一个版本加密的数据量,那么您可能不想禁用旧版本,并将其保留较长时间。您可能只想禁用超过某些大量版本的密钥版本。在这种情况下,您可以跟踪特定数据使用的密钥版本,并重新加密所有受影响的数据。
这篇关于谷歌的密钥管理系统:密钥轮换后的数据解密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文