我有一个可供各种用户使用的应用程序,当用户开始使用该应用程序时,它将在安装位置生成一个许可证文件(加密),并且每次应用程序运行时,都会解密该文件,验证所有参数,并根据验证结果更新其中几个参数,并将对更新的文件进行加密。
这是一个使人痛苦的真正问题,每当应用程序运行时,它都需要加密密钥(AES)进行加密和解密,并且该密钥在我的.NET dll中进行了硬编码。因此,用户可能会提取密钥并更改许可证参数以运行该应用程序。
因此,我担心的是如何保护文件免遭篡改?有什么办法可以将一些重要的许可证参数放在其他位置,而不是保存在文件中?如何确保加密密钥的安全和防范欺诈活动?应用程序完全处于脱机状态。
请给我您的宝贵建议和见解。
提前致谢
用.net编写的脱机应用程序不能得到保护。您不能合理地在其他人的计算机上“隐藏秘密”。您需要提供一个您可以控制的位置(即Web服务端点)来存储这些机密。无论您以何种方式查看应用程序,无论是在某个时间点还是在其他时间,应用程序的用户都将在环境中拥有所有逻辑和所有数据。您已经给了他们锁和钥匙,只是希望他们没有持久性用钥匙打开锁。
另外,正如本周另一线程所建议的那样,您可以在VB6中编写文件访问逻辑和密钥,并对其进行互操作调用-VB6可以反编译,但难度很大。但是,有人可以拿起SysInternals并查看您的文件IO发生情况,并推断出您的机密所在的文件或注册表项。如果它的AES加密对他们来说很难,但是他们将知道哪个进程正在打开它...现在,他们有了反编译代码的目标。破解它并非易事,但我也不称其为安全的。
防止用户在自己的PC上访问数据的唯一方法是不将其放在他们的PC上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句