加密密钥存储

时间:2012-10-26 13:23:59

标签: c# encryption

我正在尝试在我的项目中实现文件加密,但我想知道密钥存储的最佳实践。

我们的应用程序已部署到各种客户端组。每个组由多个地理站点组成,每个站点又由多个用户组成。用户创建文件,然后通过中央同步服务器与其他站点同步。这些文件必须在保存点加密,并且只有在客户端站点加载时才能解密。

因此,任何对称密钥在组级别都必须是唯一的,并且安全地存储在每个站点。

我们正在使用AES,但密钥目前是硬编码的并存储在应用程序中,因此可以通过反编译轻松访问,所有客户端都可以访问,这让我非常担心。一旦您访问我们的应用程序,破解这种设置似乎是非常简单的。

那么,如何确保为每个组生成唯一密钥,然后在每个站点安全地存储该密钥?

3 个答案:

答案 0 :(得分:1)

保持单个对称密钥的唯一真正安全方法是让它们输入密码/密码并从中生成密钥。这样,没有用户输入,您的应用程序就不知道密钥。

或者在某个单独的文件中提供他们需要提供给应用程序的密钥(通过接口,注册表或只是将其置于适当的路径),以便加密工作。

最后,安全性总是归结为用户。

答案 1 :(得分:0)

这有点超出了我的联盟,所以我只是告诉我所知道的。

您是否考虑过使用证书并在Windows证书存储中使用它们?

我的意思是,这基本上是安全存放它的唯一地方,我认为......

答案 2 :(得分:0)

这不是对称加密的好用例。这是非对称安全性实际上是一个要求。您可以分发公钥(使用PKI,或通过在应用程序内的信任存储中分发)。然后使用接收方的公钥加密对称密钥(例如,属于中央服务器的密钥对之一或组中的一个),并使用对称密钥加密实际数据。

有时使用对称密码术,例如,在智能卡中存储密钥,但与非对称加密相比,密钥管理总是可怕的。