Amazon 的 S3 服务器端加密可以防止什么?

信息安全 密码学 磁盘加密
2021-08-28 05:39:47

亚马逊的 S3 存储服务提供对象的服务器端加密,自动为用户管理(亚马逊的文档)。它很容易启用,所以我在想“为什么不呢?”,但这真的提供了什么样的安全性?

我想它可以防止有人进入 AWS 数据中心并抢夺硬盘,但这似乎不太可能,而且大概任何具有此类访问权限的人也可以获得 AES 密钥,无论它们存储在何处。

一旦数据离开驱动器,它似乎就无法保护数据,因为此时它已被解密,任何拥有您的凭据或可以拦截流量的人都会清楚地看到数据。那么重点是什么,真的吗?只是说数据是“加密的”?

4个回答

简短的回答是:我们不知道,可能没有。

可以防止备份被盗。但这假设亚马逊甚至会进行备份。这似乎不太可能。如果他们这样做了,为什么他们不能从上次 S3 数据丢失中恢复数据?仅使用多个 Live Copy 会更便宜、更高效。

此外,亚马逊每次访问都需要密钥。因此,他们似乎不太可能将密钥存储在存储数据的大致相同位置以外的任何地方。因此,如果您正在想象实时数据设备被盗,那么他们也很可能会获得密钥。

但我们不知道亚马逊如何存储、复制和/或备份数据。我们也不知道他们将密钥存储在哪里或如何分发它们。但是,我还没有听到一个合理的论点,即存在他们所保护的现实威胁。“被盗备份”理论似乎是基于一个错误的前提,即当所有证据表明亚马逊使用多个实时副本且密钥就在附近时,他们会使用备份。

然而,Dropbox 的加密确实可以抵御一种真正的威胁模型,尽管这种威胁非常不可能。Dropbox 存储自己的密钥并将其发送给您,因此它确实可以保护您免受亚马逊流氓员工的侵害。作为交换,您很容易受到恶意 Dropbox 员工或 Dropbox 安全漏洞的攻击。

我自己的观点是,亚马逊添加了这个功能只是为了让他们说数据可以加密存储。有些人会盲目地比较功能列表上的复选框,而亚马逊希望在“安全/加密”行上有一个复选框。无论哪种方式,最薄弱的环节很可能是亚马逊的内部网络和人员安全以及决定是否允许访问的代码实施的有效性。

我想它可以防止有人进入 AWS 数据中心并抢夺硬盘,但这似乎不太可能,而且大概任何具有此类访问权限的人也可以获得 AES 密钥,无论它们存储在何处。

吉尔斯的评论确实有效地回答了您的问题,但我自己会回答更长的答案,因为我很好。当磁盘被盗且密钥未被盗时,磁盘加密可保护您免受数据丢失。正如 Gilles 所说,这样的例子可能是备份被盗,但也可能是在移动的笔记本电脑中,或者为了防止从退役磁盘中挽救数据而进行有意义的尝试而丢弃了硬盘。

当您将密钥和磁盘放在一起时,磁盘加密对您没有多大帮助,因为安全性依赖于密钥,如果可以截获密钥,则可以解密数据。当操作系统打开并使用磁盘(每次读取都需要该密钥)时,密钥和磁盘总是必须靠近,因此任何可以合理拦截密钥的靠近它的人都应该能够读取数据。当然,您确实需要能够恢复密钥以进行任何类型的攻击,因此它比仅复制硬盘稍微困难一些(但不是很多)。所以基本上,是的,你是对的。

但是,保护磁盘以最大程度地减少因盗窃和磁盘处置等事情而造成的潜在数据丢失仍然是一个好主意。您不知道亚马逊如何或如何销毁这些磁盘,因此如果您有任何有价值的信息,那么将它们加密是一个好主意。

那么重点是什么,真的吗?只是说数据是“加密的”?

这实际上是一个可能的因素。正如我所说,加密数据的实际好处并不完全是您所期望的,但仍然存在。也就是说,我有客户要求在与营销点类似的场景中在服务器端加密数据(我们加密您的数据)。我认为安全人员面临着教育挑战。

一些要记住的事情:

  • 亚马逊被大量公司使用
  • 里面有很多有价值的数据:财务数据、知识产权等
  • 犯罪分子喜欢这样的目标,可以返回高现金价值
  • 犯罪集团不反对将个人安置在数据中心内,或强迫员工执行邪恶的任务

不要忽视您的数据被第三方(甚至是像亚马逊这样大的第三方)故意或以其他方式泄露的问题。

当您使用 S3 SSE 时,任何拥有正确 IAM 凭证的人都可以读取和/或写入您的 S3 对象,就像您没有使用 SSE 一样。乍一看,唯一的额外好处是保护数据免受某人以离线方式访问 S3 的情况,例如磁盘驱动器或备份(我怀疑 AWS 制造的,他们更有可能依赖仅复制)。但是,我认为您需要将其与替代方案进行比较才能获得真正的好处:

使用 S3 进行客户端加密需要两个组件:加密密钥和用于身份验证和授权的 IAM 凭证。使用服务器端加密时,您只需要 IAM 凭证。

使用客户端加密时,您需要将加密密钥分发给对 S3 上的加密数据具有读取和/或写入访问权限的所有机器。在这两种情况下,您还需要分发 IAM 凭证。

如果您的机器受到威胁,您的加密密钥就会受到威胁。一旦您知道入侵,您就可以使 IAM 凭证无效,如果您使用 IAM 角色或临时 IAM 凭证,攻击者只有在控制机器的情况下才能访问您的数据(这已经够糟糕了,但是可能不是世界末日,您还需要考虑接下来会发生什么)。通过客户端加密,攻击者将拥有您的加密密钥,并且所有使用受损加密密钥加密的数据都需要重新加密。使用服务器端加密,您不必重新加密您的数据,因为您和攻击者都没有加密密钥。

即使您没有中断,您的加密密钥也可能被泄露,如果笔记本电脑丢失或被盗,如果不知道更好的人通过电子邮件将其发送给某人,或者如果有人退出并且您不能完全确定他们没有带东西。此时您的加密密钥已泄露,您可能应该重新加密所有数据。这可能是很多工作。使用服务器端加密,您所要做的就是使 IAM 凭证无效并发出新凭证。

可能有一些方法可以缓解我上面提到的客户端加密问题,但对我来说,感觉使用 SSE 和 S3 比自己管理它的缺点更少。

最后,还有一个问题是让 AWS 管理您的加密密钥有多安全:

根据 AWS 的说法,管理加密密钥的系统与 S3 是分开的,目的是如果有人从外部闯入 S3,他们将无法获取您的数据,因为他们没有加密密钥。如果他们仅侵入密钥管理系统(无论如何可能无法从外部直接访问),他们将不会拥有您的数据,因为他们无法在 S3 上访问它。他们需要闯入S3密钥管理系统才能获取您的数据。

如果他们改为闯入物理数据中心,他们可能会同时访问密钥管理系统和 S3,但问题是这是否会使事情变得更容易。我认为首先我们需要相信 AWS 有适当的安全措施来阻止人们进入他们的数据中心,其次要真正从密钥管理系统中获取密钥,你需要做的不仅仅是只需拉动一些磁盘驱动器。据我所知,AWS 并没有准确地公布密钥管理系统是如何受到保护的,而不仅仅是说它受到多层安全保护。这是猜测,但磁盘加密可能是其中之一。