Amazon SSE-S3密钥轮换如何工作?

mik*_*ail 7 encryption amazon-s3 amazon-web-services

我试图围绕亚马逊的服务器端加密选项,所以当我的应用程序上传文件时,我可以开始要求S3在静止时加密我的数据.

到目前为止,AWS-Managed Encryption Keys选项听起来像我正在寻找的(模型C):

在此输入图像描述

但随后它说

作为额外的安全措施,此密钥本身使用Amazon S3独有的定期轮换主密钥进行加密,该主密钥安全地存储在AWS控制下的单独系统中.

这个轮换如何工作?这是否意味着每次AWS旋转其密钥加密密钥时,它们都必须重新加密Data Key存储在S3中的每个单个???

这对我来说似乎很疯狂,当我试图说服我的老板这是个好主意时,我不想听起来很疯狂:)

Mic*_*bot 9

对于您上载的每个对象,都会生成一个新的加密密钥,用于在将对象存储到磁盘之前加密该对象.

将对象存储为加密意味着拥有存储在磁盘上的原始数据以解密它的人在计算上是不可行的......但是,当然,拥有该密钥的任何人都可以对其进行解密,因此必须存储密钥安全地,并且以相对无用的形式,并且通过使用主密钥加密它们来完成.

要破坏存储的对象,您必须拥有该对象的特定加密密钥......但即使您拥有它,它也是无用的,因为它也被加密了.要使其解密,或至少代表您使用它,您必须拥有主密钥,或与控制主密钥的实体建立信任关系,并可代表您使用它.

到目前为止,当然,我所做的一切都是显而易见的.

加密密钥本身很小,每个只有几十个字节.当旋转主密钥时,使用旧密钥解密特定于对象的加密密钥,并使用新密钥重新加密.存储新版本,旧版本将被丢弃.

由于密钥很小,如果对象本身被解密和重新加密,这不是大量的操作......但是当主密钥是主密钥时,它只是被解密和重新加密的每对象加密密钥.旋转.

可以对公寓大楼进行一些类比,其中钥匙存储在公共密码箱中,其中通过限制对公共密码箱的访问来限制对单个公寓钥匙的访问,更改密码箱锁将限制将来访问单个公寓.类比分解,因为物理键很容易被复制,除了其他原因......但在这个例子中,显而易见的是,更改锁箱锁(相对简单的操作)与更改一个或多个公寓的锁定无关(a更实质的操作).

最重要的是,在这种情况下,他们创建了一个新的密钥来加密/解密您上传的每个对象,然后以加密的形式存储该密钥...定期,并且透明地向您,他们更改其存储的该秘密的表示作为预防措施的关键.

  • `"当主键旋转时,与具体对象相关的加密密钥解密利用旧的密钥,和重新加密用新密钥."`< - 这是我不清楚的部分.我无法在亚马逊的文档中找到它. (4认同)

Cla*_*ire 7

Michael 的回答很好地解释了信封加密和无支持主密钥材料的轮换。

不幸的是,这不是 AWS 的工作方式。当您轮换主密钥时,AWS 永远不会重新加密任何数据密钥(或数据)。如果您要轮换使用 AWS 密钥材料生成的 CMK,则只需将新的支持密钥添加到现有 CMK。AWS 托管的 CMK 由当前支持密钥和所有历史支持密钥(用于解密旧的、轮换的数据密钥)组成。AWS 从不丢弃 HBK 支持材料,除非客户删除整个钥匙串。每次轮换密钥时,CMK 都会积累更多的 HBK 材料。

导入的主密钥不支持密钥备份。如果您手动轮换使用客户导入的密钥材料的 CMK,并且您希望在轮换之前解密使用此密钥加密的旧数据,则必须保留旧密钥。您可以将新密钥与旧密钥别名相关联,以在应用程序中切换安全上下文,而无需更改任何代码。

按照上面的类比,AWS 永远不会替换密码箱。它在旧密码箱旁边创建了另一个(新)密码箱(并假装它们都是“密码箱”)。它继续使用旧锁箱中的钥匙打开现有公寓,而新钥匙则放入新锁箱。当您指示它“删除”时,它会破坏所有关联的密码箱。

您可以在此处阅读 AWS“加密详细信息”白皮书第 11 和 12 页的完整详细信息:

https://d0.awsstatic.com/whitepapers/KMS-Cryptographic-Details.pdf