在ASP.Net应用程序中安全地存储(加密)数据

我有一个asp.net应用程序,可以通过互联网使用Web浏览器访问。 它在Web服务器上运行,并与后端数据库进行通信。

一些用户希望使用该应用程序来存储一些私人数据。 这个要求是:

1)只有存储数据的用户才能看到它。

2)开发人员/ dbas不应该能够看到数据。

3)如果Web服务器和数据库服务器受到攻击,则黑客必须无法解密数据。

所以,很明显我将不得不加密这些数据。 如果我加密它会在某个地方有一个密钥,可能是盐/ IV。 问题是我在哪里存储用于执行解密的数据? 如果我将它存储在数据库或Web服务器中,那么开发人员,dba或黑客可以访问它并解密数据。

我认为我理想的解决方案是将私钥放在客户机上,这样他们就完全负责了。 但我不知道如何使用asp.net Web应用程序来解决这个问题。

我相信我可以创建一个也存储私钥(PFX)的证书。 客户公司可以使用组策略将证书部署到其域。 但是,ASP.Net应用程序可以请求Web浏览器向其发送私钥,以便它可以执行解密吗? 解密客户端将是最好的,但除了在JavaScript中创建一些东西,我不知道这是如何可能的。

欢迎任何建议。

将密钥存储在用户的脑海中。 使用您喜欢的任何基于密码/密码的密钥派生算法。 标准是PBKDF2 。 算法的最佳选择将取决于您的安全要求和威胁模式。 理想情况下,该决定和实施至少应由安全专家审核。

是否有可能将ClickOnce应用程序部署为解决方案的一部分? ClickOnce可以轻松访问本地计算机上的证书存储,从而允许您执行客户端加密。