我想对要上传到S3存储桶的数据实施客户端加密。但是,由于我仅具有加密方面的基本知识,因此与为解决该问题而找到的示例有些困惑。
对于Java,.NET,Ruby,Go等其他编程语言,AWS开发工具包提供了用于客户端加密的方法。我还发现了示例[1] [2],它们为python复制了相同的行为。
但是,所有这些示例最终都使用AWS KMS服务来生成,存储和接收它们的加密密钥,这让我感到困惑。据我了解,您有两种常规选择:
您信任AWS或您的数据不是很敏感:然后您可以使用AWS服务器端加密或完全不使用加密。
您的数据很敏感,并且/或者您不想信任AWS:在这种情况下,我必须在除AWS之外的其他位置生成和管理密钥(正确吗?)。还是有障碍阻止AWS读取您的加密数据?
按照基本的AES教程[3]并上传加密的数据来实施客户端加密是否有明显的弊端?
答案 0 :(得分:2)
密钥管理(和轮换)是一个缺点。现在,您必须安全地管理密钥。
客户端无法实际加密数据是另一个缺点。使用AWS托管的加密,您可以设置拒绝未加密上传的策略。
您的加密客户端也有可能被窃听了。编写加密软件并不容易。