15

我对如何在 Windows Azure 中存储密钥(用于数据加密)有点困惑。

根据以下两个链接(#1#2),建议将密钥/密钥库存储在 Windows Azure 存储中:

在 Windows Azure 存储服务中存储您自己的密钥库是保存一些秘密信息的好方法,因为您可以依赖这些数据在多租户环境中是安全的,并由您自己的存储密钥保护。

但是“开发 Windows Azure 应用程序的安全最佳实践”(#3)建议不要在 Windows Azure 中存储任何与密钥相关的材料:

此外,开发人员不应将密钥或任何密钥材料上传到 Windows Azure 存储,无论他们在隐藏它时多么小心。如果任何计算机或存储服务遭到破坏,可能会导致加密密钥被泄露。

在 Windows Azure 中存储加密密钥的最佳方法是什么?

4

5 回答 5

11

您会从我在第一个链接中的评论中看到我同意您的担忧。:)

除了自己的证书存储之外,Azure 没有安全的密钥存储方式。这是一篇关于使用这种方法的文章:

现场注释:在 Windows Azure 应用程序中使用基于证书的加密

你会注意到我也评论了那篇文章的缺点,链接到这个问题:

使用 c# 读取 azure ServiceConfiguration 文件的证书部分

可以在此项目中找到使用 Azure 内置证书存储加密 AES 密钥(避免 RSA 对加密数据长度的限制,同时保持 AES 密钥安全)的示例:

Codeplex:通过属性进行 Azure 表加密

EncryptDecrypt 项目中的SymmetricKeyHelper类特别有趣。

感谢@breischl 提到它,以及他对项目的贡献。

于 2012-07-11T11:53:40.050 回答
7

最近发布的 Azure Key Vault 服务可能非常适合解决这个问题。引入了这一点,以便可以在中心位置管理密钥并且可以轻松控制访问。它还支持 HSM 支持的服务,使其非常安全。

这是一篇关于Azure Key Vault 入门的文章

于 2015-01-26T17:17:24.780 回答
2

对于未来的 Google 员工 - 我已经实现了 Stuart Pegg 上面描述的解决方案,但与 Azure Tables 分离。

有关文章,请参阅https://www.fasterweb.io/Blog/two-way-encryption-for-azure-web-roles,或仅有关代码的https://gist.github.com/strommen/20905504949072fe5e16

于 2014-10-14T20:48:58.080 回答
1

总是有风险的。如果有人通过任何方式(例如使用工具)获得对您存储帐户的访问权限,他们或许能够找到您的密钥。所以最后,需要保护存储帐户本身免受未经授权的访问。

例如,请不要让开发人员访问生产存储帐户。这包括不允许他们使用工具访问帐户。请保护存储帐户密钥,不要在任何应用程序中泄露任何信息。

只有存储管理员(以及您 100% 信任的开发人员)才能拥有对生产存储帐户的完全访问权限。然后,您可以安全地将密钥存储在您的存储帐户中。

于 2012-07-11T11:21:14.280 回答
1

我知道这可能有点晚了,但是如果有人正在为 Azure 网站寻找一种快速简便的加密实现,我已经创建了一个(Azure.Security并且源代码目前在GitHub 上。该项目基于松散在Codeplex: Azure Table Encryption via Attribute项目上,但它更直接且易于使用。稍后将发布一篇博文,说明如何设置和使用它。

于 2014-06-02T22:59:07.413 回答