1

关于存储对称密钥,我有一个特别令人沮丧的问题。

背景:

我有一些敏感数据存储在需要加密/解密的数据库中。目前我正在使用 Rijndael 算法。该应用程序是基于 Web 的 (ASP.NET MVC)。多个实例的密钥需要相同(如果这些实例连接到同一个数据库)。

问题:

记住以上内容,存储密钥的最佳位置在哪里?或者也许我应该使用非对称算法?有人还建议我使用 .cer 文件。那将如何运作?

4

4 回答 4

0

这里很好地描述了加密在 Windows/.NET 上的工作原理。基本上,您会将您的证书存储在 Windows 证书存储中并使用 Crypt API 来使用它。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa388162(v=vs.85).aspx

于 2013-02-20T13:49:34.370 回答
0

与对称相比,非对称加密使用更多的资源。对称加密数据和非对称加密密钥(如 SSL)是一个好主意。

由于您可能需要多个实例,因此如果没有互补的不对称解决方案,风险会更高。

CertMgr.msc您已经完成了第一部分,只需通过 Windows 证书管理控制台(运行 => )使用非对称算法保持密钥安全

于 2013-02-20T13:50:15.770 回答
0

存储密钥没有很好的解决方案。有很多不好的解决方案,比如硬编码密钥,或者将其存储在数据库中,因此将密钥存储在 .cer 之类的文件中比那些要好得多。

我已将 Google 的Keyczar框架移植到 C#,它主要将密钥存储在文件系统上。强调复数。

它在格式中内置了密钥轮换,因此您可以随着时间的推移轮换对称密钥,基本上允许您替换或增加新密文的密钥强度,而不会失去解密旧密文的能力,它通过添加一个小的密钥标识符来做到这一点到密文并使用经过身份验证的加密

能够更改您的加密密钥是在构建您自己的加密时经常被忽略的事情。

于 2013-02-20T14:16:44.870 回答
0

使用一次性、随机生成的对称密钥。将此密钥直接添加到消息中,使用非对称加密算法对其进行加密。接收者首先解码对称密钥,然后使用它来解码消息的其余部分;之后,对称密钥被丢弃并且永远不会重复使用 - 因此不需要存储。

您将获得非对称加密的所有逻辑,即使好的加密密钥的大小也不应该是一个大的性能问题。

于 2013-02-20T20:21:33.567 回答