如何保护加密密钥

本文关键字:加密 密钥 保护 何保护 | 更新日期: 2023-09-27 18:30:27

>我有一个应用程序,可供各种用户使用,当用户开始使用该应用程序时,它将在安装它的位置生成一个许可证文件(加密),并且每次应用程序运行时,它将解密文件,将验证所有参数并根据验证结果更新其中的一些参数,并将加密更新的文件。

这是一个真正的问题,每次应用程序运行时都需要加密密钥(AES)来加密和解密,并且密钥在我的.NET dll中是硬编码的。 因此,用户可以提取密钥并更改许可证参数以运行应用程序。

所以我关心的是如何保护文件不被篡改?有什么方法可以将一些重要的许可证参数放在其他位置而不是将其保存在文件中?如何确保加密密钥的安全和免受欺诈活动的影响?应用程序处于纯脱机状态。

请给我您宝贵的建议和见解。

提前致谢

如何保护加密密钥

无法保护用 .net 编写的脱机应用程序。您不能合理地在别人的机器上"隐藏秘密"。您需要提供您控制的位置(即 Web 服务终结点)来存储这些机密。无论您从哪个角度看,在某个时候,应用程序的用户在其环境中都有您的所有逻辑和所有数据;你给了他们锁和钥匙,只是希望他们没有坚持用钥匙打开锁。

或者,正如本周另一个线程所建议的那样,您可以在 VB6 中编写文件访问逻辑和密钥并对其进行互操作调用 - VB6 可以反编译,但它很难。但是,有人可以拿起SysInternals并观察您的文件IO发生并推断您的机密所在的文件或注册表项。如果它的 AES 加密,那对他们来说会很困难,但他们会知道哪个进程正在打开它......因此,他们现在有一个目标来反编译您的代码。破解它并非易事,但我也不会称其为安全。

防止用户在自己的PC上访问数据的唯一方法是不要将其放在PC上。