我的公司将为我们的客户存储敏感数据,并将使用托管.NET加密算法类之一对数据进行加密。大部分工作已经完成,但我们还没有弄清楚如何/在哪里存储密钥。我做了一些简单的搜索和阅读,似乎硬件解决方案可能是最安全的。有人对密钥存储解决方案或方法有什么建议吗?
感谢大家的回复。
spoulson,问题实际上是你提到的两个“范围”。我想我应该说得更清楚些。
数据本身以及加密和解密数据的逻辑都被抽象到ASP.NET配置文件提供程序中。此配置文件提供程序既允许加密配置文件属性,也允许纯文本属性。加密属性值的存储方式与纯文本值完全相同--唯一明显的例外是它们被加密了。
也就是说,出于以下三个原因之一,密钥需要能够被召唤:
我想象的方式是,没有人会真正知道密钥--会有一个软件来控制数据的实际加密和解密。也就是说,关键仍然需要来自某个地方。
完全公开-如果你还不知道,我以前从来没有做过这样的事情,所以如果我对这应该如何工作的看法是完全错误的,请让我知道。
发布于 2008-09-16 09:15:50
这个问题只有两个真正的解决方案(技术方面)。假设只有应用程序本身需要访问密钥...
添加:最好使用DPAPI来保护您的主密钥,而不是直接加密您的应用程序的数据。别忘了在你的加密密钥上设置强ACL...
发布于 2008-09-20 10:14:28
响应来自OP的此answer的#3
为使授权成员能够查看加密数据,但他们实际上不知道密钥,一种方法是使用密钥托管(rsa labs) (wikipedia)
由于私钥的性质,每个段对它自己来说都是无用的。
发布于 2008-09-30 15:05:58
我们有同样的问题,也经历了同样的过程。
我们需要在一台计算机(客户端)上启动一个进程,然后登录到另一台计算机(数据库服务器)。
https://stackoverflow.com/questions/50142
复制相似问题