Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption Amazon SSE-S3键旋转是如何工作的?_Encryption_Amazon Web Services_Amazon S3 - Fatal编程技术网

Encryption Amazon SSE-S3键旋转是如何工作的?

Encryption Amazon SSE-S3键旋转是如何工作的?,encryption,amazon-web-services,amazon-s3,Encryption,Amazon Web Services,Amazon S3,我正试图将注意力集中在Amazon的服务器端加密选项上,这样当我的应用程序上传文件时,我就可以开始要求S3对我的静态数据进行加密 到目前为止,AWS管理的加密密钥选项听起来像我正在寻找的(): 但是它说 作为额外的保护措施,此密钥本身使用 Amazon S3独有的定期旋转主密钥 储存在AWS控制下的单独系统中 这个旋转是如何工作的?这是否意味着每次AWS旋转其密钥加密密钥时,他们都必须重新加密存储在S3中的每个数据密钥 这对我来说似乎很疯狂,当我试图说服老板这是一个好主意时,我不想听起来很疯狂

我正试图将注意力集中在Amazon的服务器端加密选项上,这样当我的应用程序上传文件时,我就可以开始要求S3对我的静态数据进行加密

到目前为止,AWS管理的加密密钥选项听起来像我正在寻找的():

但是它说

作为额外的保护措施,此密钥本身使用 Amazon S3独有的定期旋转主密钥 储存在AWS控制下的单独系统中

这个旋转是如何工作的?这是否意味着每次AWS旋转其密钥加密密钥时,他们都必须重新加密存储在S3中的每个
数据密钥


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

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

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

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

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

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

由于密钥很小,如果对象本身被解密和重新加密,那么这不是需要的大规模操作。。。但只有每对象加密密钥在主密钥旋转时被解密和重新加密

可以对公寓大楼进行几个类比,其中钥匙存储在公共锁箱中,如果更改锁箱锁,将通过限制对公共锁箱的访问来限制对单个公寓钥匙的访问,从而限制未来对单个公寓的访问。这个类比失败了,因为物理键很容易被复制,还有其他原因。。。但很明显,在这幅图中,更改锁箱锁(相对简单的操作)与更改一个或多个公寓的锁(更实际的操作)无关


底线是,在这个场景中,他们创建一个新的密钥来加密/解密您上载的每个对象,然后以加密的形式存储该密钥。。。作为一种预防措施,他们会定期且透明地更改该密钥的存储表示形式。

Michael的回答很好地解释了信封加密和未打包主密钥材料的旋转

不幸的是,AWS不是这样工作的。旋转主密钥时,AWS从不重新加密任何数据密钥(或数据)。如果要旋转使用AWS密钥材质生成的CMK,只需将新的备份密钥添加到现有CMK。AWS管理的CMK由当前备份密钥和所有历史备份密钥(用于解密旧的旋转数据密钥)组成。除非客户删除整个钥匙链,否则AWS从不丢弃HBK背衬材料。每次旋转关键点时,CMK会累积更多HBK材质

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

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

您可以阅读AWS“加密详细信息”白皮书第11页和第12页的完整详细信息,如下所示:


“当主密钥旋转时,对象特定的加密密钥将使用旧密钥解密,并使用新密钥重新加密。”
我认为这也解释了与Claire白皮书类似的情况-