我正在做一个项目来管理S3&SimpleDB。
我想要关于加密上传到S3 bucket的构建工件的不同策略的反馈。
在存储之前对文件进行对称加密。
- 从文件中读取机密
- 直接AES256将该秘密作为密钥对要存储在S3中的文件进行加密
- 将加密文件上传到S3
- 解密将通过从S3下载文件并使用相同的密钥进行解密来完成
使用随机字符串加密文件。对称加密字符串并将其与文件一起存储。
- 从文件中读取机密
- 生成一个随机字符串。使用随机字符串对文件进行加密
- 加密随机字符串
- 将加密的随机字符串存储在SimpleDB中。解密将通过从S3下载对象以及从SimpleDB下载字符串来执行。使用机密解密加密的字符串,并使用未加密的字符串解密文件
我倾向于后者,因为它提供了通过用新的秘密重新加密存储在SimpleDB中的字符串来旋转加密密钥的能力。
有人解决了这个问题,谁能评论每种策略的长处和短处?
从加密的角度来看,两种方案都提供了类似的安全性。主要区别在于组织特征。第二种方案使您能够通过简单地删除SimpleDB来使所有加密文件不可读。此外,正如您所说,您可以更改密码以解密文件密钥。这就是解密密钥在LUKS分区上的存储方式。所以我也倾向于第二个版本。
如果你想让不同的人访问这些文件,我会考虑使用混合方案,即存储用公钥系统加密的文件密钥。
Btw。你选择了哪种加密方式?