我有一个asp.net应用程序,可以通过互联网使用网络浏览器访问。它在Web服务器上运行,并与后端数据库进行通信。
有些用户希望使用该应用程序来存储一些私人数据。对此的要求是:
1)只有存储数据的用户才能看到它。
2)开发人员/ dbas应该无法查看数据。
3)如果Web服务器和数据库服务器遭到入侵,黑客就无法解密数据。
所以,很明显我将不得不加密这些数据。如果我加密它会在某个地方有一个密钥,可能是盐/ IV。问题是我在哪里存储用于执行解密的数据?如果我将它存储在数据库或Web服务器中,那么开发人员,dba或黑客可以访问它并解密数据。
我认为我理想的解决方案是将私钥放在客户机上,这样他们就完全负责了。但我不确定如何使用asp.net Web应用程序来解决这个问题。
我相信我可以创建一个也存储私钥(PFX)的证书。客户公司可以使用组策略将证书部署到其域。但是,ASP.Net应用程序可以请求Web浏览器向其发送私钥,以便它可以执行解密?解密客户端是最好的,但除了在javascript中创建一些内容之外,我不知道这是怎么回事。
欢迎任何建议。
答案 0 :(得分:2)
将密钥存储在用户的脑海中。使用您喜欢的任何基于密码/密码的密钥派生算法。标准是PBKDF2。算法的最佳选择将取决于您的安全要求和威胁模式。理想情况下,该决定和实施至少应由安全专家审核。
答案 1 :(得分:0)
您是否可以将ClickOnce应用程序部署为解决方案的一部分? ClickOnce可以轻松访问本地计算机上的证书存储区,从而允许您执行客户端加密。