如何在.NET程序集中安全地存储加密密钥

Ale*_*lex 10 .net encryption compact-framework key-storage

为了防止有人轻易抓取我的数据,我将来自我服务的数据缓存为加密文件(基本上是复制保护).

但是,为了做到这一点,我必须将加密密钥存储在.NET程序集中,以便能够加密和解密这些文件.

知道像Red Gate的.NET Reflector这样的工具可以直接拉出我的钥匙,我觉得这不是一种非常安全的方式......有没有最好的做法呢?

小智 11

您必须确定什么是可接受的风险级别.这样做没有"安全"的方法.

如果有人使用反射器,或者只是使用System.Reflection.Assembly类打开程序集并以这种方式获取资源的风险太大,那么下一步可能就是在启动时从服务器下载密钥.

然后,有人必须在使用代码时执行类似调试的操作,并以此方式获取密钥.您可以使缓存的内容过期并交换密钥.您可以使每个人都有自己的密钥来保护一个用户的数据与另一个用户.

你可以做很多事情,但如果你的目标是让某人无法解密你正在他们的机器上装配的装配具有解密能力的信息,你应该知道这几乎是不可能的.您所能做的就是提高盗版密钥/数据的成本 ; 你不能阻止它.