关于存储对称密钥,我有一个特别令人沮丧的问题。
背景:
我有一些敏感数据存储在需要加密/解密的数据库中。目前我正在使用 Rijndael 算法。该应用程序是基于 Web 的 (ASP.NET MVC)。多个实例的密钥需要相同(如果这些实例连接到同一个数据库)。
问题:
记住以上内容,存储密钥的最佳位置在哪里?或者也许我应该使用非对称算法?有人还建议我使用 .cer 文件。那将如何运作?
关于存储对称密钥,我有一个特别令人沮丧的问题。
背景:
我有一些敏感数据存储在需要加密/解密的数据库中。目前我正在使用 Rijndael 算法。该应用程序是基于 Web 的 (ASP.NET MVC)。多个实例的密钥需要相同(如果这些实例连接到同一个数据库)。
问题:
记住以上内容,存储密钥的最佳位置在哪里?或者也许我应该使用非对称算法?有人还建议我使用 .cer 文件。那将如何运作?
这里很好地描述了加密在 Windows/.NET 上的工作原理。基本上,您会将您的证书存储在 Windows 证书存储中并使用 Crypt API 来使用它。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa388162(v=vs.85).aspx
与对称相比,非对称加密使用更多的资源。对称加密数据和非对称加密密钥(如 SSL)是一个好主意。
由于您可能需要多个实例,因此如果没有互补的不对称解决方案,风险会更高。
CertMgr.msc
您已经完成了第一部分,只需通过 Windows 证书管理控制台(运行 => )使用非对称算法保持密钥安全
使用一次性、随机生成的对称密钥。将此密钥直接添加到消息中,使用非对称加密算法对其进行加密。接收者首先解码对称密钥,然后使用它来解码消息的其余部分;之后,对称密钥被丢弃并且永远不会重复使用 - 因此不需要存储。
您将获得非对称加密的所有逻辑,即使好的加密密钥的大小也不应该是一个大的性能问题。