我正在开发一个项目来分别管理 S3 和 SimpleDB 中的构建工件和相应的元数据。
我想要关于加密上传到 S3 存储桶的构建工件的不同策略的反馈。
在存储之前对文件进行对称加密。
- 从文件中读取秘密。
- 直接 AES256 加密要存储在 S3 中的文件,并以此秘密为密钥。
- 将加密文件上传到 S3。
- 解密将通过从 S3 下载文件并使用相同的密钥解密来完成。
用随机字符串加密文件。用文件对称加密和存储字符串。
- 从文件中读取秘密。
- 生成随机字符串。用随机字符串加密文件。
- 加密随机字符串。
- 在 SimpleDB 中存储加密的随机字符串。将通过从 S3 下载对象以及从 SimpleDB 下载字符串来执行解密。用秘密解密加密的字符串,并使用未加密的字符串解密文件。
我倾向于后者,因为它提供了通过使用新秘密重新加密存储在 SimpleDB 中的字符串来旋转加密密钥的能力。
有谁解决了这个问题,可以评论每种策略的优缺点吗?