1

我正在开发一个项目来分别管理 S3 和 SimpleDB 中的构建工件和相应的元数据。

我想要关于加密上传到 S3 存储桶的构建工件的不同策略的反馈。

在存储之前对文件进行对称加密。

  • 从文件中读取秘密。
  • 直接 AES256 加密要存储在 S3 中的文件,并以此秘密为密钥。
  • 将加密文件上传到 S3。
  • 解密将通过从 S3 下载文件并使用相同的密钥解密来完成。

用随机字符串加密文件。用文件对称加密和存储字符串。

  • 从文件中读取秘密。
  • 生成随机字符串。用随机字符串加密文件。
  • 加密随机字符串。
  • 在 SimpleDB 中存储加密的随机字符串。将通过从 S3 下载对象以及从 SimpleDB 下载字符串来执行解密。用秘密解密加密的字符串,并使用未加密的字符串解密文件。

我倾向于后者,因为它提供了通过使用新秘密重新加密存储在 SimpleDB 中的字符串来旋转加密密钥的能力。

有谁解决了这个问题,可以评论每种策略的优缺点吗?

4

1 回答 1

2

从密码学的角度来看,这两种方案都提供了相似的安全性。主要区别在于组织特征。第二种方案使您能够通过简单地删除 SimpleDB 使所有加密文件不可读。此外,正如您所说,您可以更改密码以解密文件密钥。这几乎就是解密密钥存储在 LUKS 分区上的方式。所以我也倾向于第二个版本。

如果您希望不同的人可以访问这些文件,我会考虑使用混合方案,即存储使用公钥系统加密的文件密钥。

顺便提一句。您为加密选择了哪种模式?

于 2012-09-22T17:39:47.637 回答