1

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

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

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

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

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

4

3 回答 3

1

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

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

归根结底,安全始终取决于用户。

于 2012-10-26T13:37:58.283 回答
0

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

有时以这种方式使用对称加密,例如将密钥存储在智能卡中,但与非对称加密相比,密钥管理总是很糟糕。

于 2012-10-26T18:13:48.713 回答
0

这有点超出我的范围,所以我只是说出我所知道的。

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

我的意思是,那基本上是唯一可以安全存放它的地方,我想...

于 2012-10-26T13:38:35.710 回答