关于IP安全等问题,已经有一些及时的帖子了,但我没有找到专门讨论算法的。在我目前的项目中,我们决定采用离线注册密钥系统。
我想我们最终的用户群大部分都是诚实的,所以我认为我们不需要太担心。另一方面,我宁愿不让随意破解者轻松获得访问权限。
那么,有哪些选项可以生成(和验证)密钥?硬件键入最有可能被排除,因为安装模型是从Samba共享运行在Intranet服务器上。此外,密钥应该有多长?
其次,验证算法被反射出来的危险有多大,即使它被混淆了?写非托管代码是否更好?
关于IP安全等问题,已经有一些及时的帖子了,但我没有找到专门讨论算法的。在我目前的项目中,我们决定采用离线注册密钥系统。
我想我们最终的用户群大部分都是诚实的,所以我认为我们不需要太担心。另一方面,我宁愿不让随意破解者轻松获得访问权限。
那么,有哪些选项可以生成(和验证)密钥?硬件键入最有可能被排除,因为安装模型是从Samba共享运行在Intranet服务器上。此外,密钥应该有多长?
其次,验证算法被反射出来的危险有多大,即使它被混淆了?写非托管代码是否更好?
我认为你将面临的主要问题并不在于你的注册算法及其难度(或缺乏难度)。
相反,问题出在这里:在你的代码中的某个点上,它仅涉及到简单的二进制决策 - 运行还是退出。攻击你的系统只需要找到并调整此决策点。
其他所有内容 - 代码混淆、强签名、篡改检测 - 都是为了使这一点更加困难,但不能够使其变得非常困难。
就重构密钥而言,如果从托管代码到非托管代码的调用点被删除,那么将其编写为非托管代码可能并没有什么帮助。如果您使用Dotfuscator专业版,则可以通过启用其“篡改检测”选项来进行混淆。基本上,它会标记您的程序集,如果有人修改了它,您的代码可以执行各种操作。当然,黑客可以删除这个选项,但这需要更多的时间和精力。