0

我想提高我的网络应用程序的安全性,以防受到攻击。我的系统中存在以下组件:

  • Azure 网络应用
  • Azure Blob 存储
  • Azure SQL Azure
  • Azure KeyVault

现在有应用程序加密和存储上传文档的场景。这如描述的那样工作:

1) 用户将文档上传到 Web 应用程序 2) 生成随机加密密钥 3) 随机加密密钥存储到 azure 密钥库 4) sql azure 存储 blob url 和密钥 url

现在我的问题是:在黑客入侵 Web 应用程序实例的情况下,如何更安全地使用密钥库?我的意思是 app.config 中有客户端 ID 和客户端密码来访问密钥库,我们需要它来读取和写入密钥。因此,无论我是否使用密钥保管库都不会增加黑客攻击 Web 应用程序的安全性,对吧?

4

3 回答 3

5

Key Vault 是一个围绕HSM包装的 API 。使 Key Vault 或 HSM 安全的原因在于,一旦导入/创建,就无法从中提取密钥。此外,加密(在您的情况下为加密/解密)操作发生在保险库内,因此密钥永远不会暴露,即使在内存中也是如此。

如果有人能够破解您的 Web 应用程序并获得您的密钥保管库的凭据,他们可以使用该保管库来解密数据。因此,在这种情况下,您可以重新生成 Key Vault 的凭据,并且仍然继续使用保管库中的相同密钥 - 因为它们从未公开。这意味着攻击者尚未解密的任何加密数据仍然是安全的,因为密钥从未暴露。

通常,HSM 并非旨在仅将大量密钥存储在几个真正重要的密钥中。您可能需要考虑使用密钥包装解决方案,其中您在保管库中有一个密钥。

您可能希望在配置中加密客户端 ID 和客户端密码并在运行时解密它们 - 这增加了另一层安全性。现在攻击者要么需要在你的云服务/虚拟机上运行时从你的应用程序内存中读取密钥(这不是一件容易的事)。或者攻击者需要获取配置文件和用于加密您的配置值的证书的私钥(比读取内存更容易,但仍然需要大量访问您的系统)。

于 2015-10-22T19:34:08.607 回答
1

因此,无论我是否使用密钥保管库都不会增加黑客攻击 Web 应用程序的安全性,对吧?

这一切都取决于他们能够入侵该网站的级别。在您描述的情况下,如果他们获得了您的源代码,那么 - 是的,游戏结束了。但不一定是这样。它真正归结为您的配置。

然而,大多数时候,开发人员忘记了安全性是一种分层的方法。当您谈论数据和相关主题的加密时,它们通常是最后一道防线。因此,如果恶意行为者获得了对加密敏感数据的访问权限,他们就已经破坏了其他易受攻击的区域。

于 2015-10-22T13:06:54.530 回答
0

问题不在于 Key Vault,而是您使用客户端密码的解决方案。客户端密码是一个不安全的常量字符串。您可以使用证书和指纹作为“客户端密码”。您的应用程序需要读取存储在 Web 应用程序中的 .pfx 文件,然后解密以获取指纹。成功检索指纹后,您的 Key Vault 机密即可检索。此外,在 Key Vault 中,您可以使用自己的证书,而不仅仅是 Secret 中的屏蔽字符串。这就是所谓的“嵌套加密”。

在此处输入图像描述

黑客如果访问您的 app.config,除了 .pfx 文件的路径,他什么也得不到,他不知道在哪里存储,即使它看起来如何。生成相同的 pfx 文件变得不可能。如果可以的话,他会打破整个加密世界。

于 2018-02-04T10:42:55.570 回答