【发布时间】:2012-09-23 16:16:11
【问题描述】:
我设计了以下机制,以便在不直接连接到服务器的情况下授权软件,看起来很简单,但我没有发现任何严重的缺陷:
我计划使用非对称加密,以便从 1 个服务器(许可证服务器)向 n 个客户端(安装了软件的 n 台计算机)发送消息
-
客户端发送(例如通过邮件)有关计算机的一些信息(MAC 地址、机器名称、您的名字)
-
在许可证服务器上,这些信息使用安全可靠的公共(不那么公开)RSA 密钥进行加密,这个加密的有效负载就是许可证。
-
加密的许可证发送给客户端
-
当软件启动时,它会检查许可证文件,它能够确保使用每个版本的软件随附的相应 RSA 私钥使用服务器密钥对有效负载进行加密。
-
许可证解密后,软件会检查它是否在获得许可证的同一台机器上运行。
在我看来,如果不访问许可证服务器 RSA 密钥,任何人都无法伪造加密的有效负载。
当然,许可证可能被盗,然后在模拟真正客户端机器的虚拟机中启动软件,或者软件可能被反汇编以拔掉许可证检查。
但是这个方案足够好,还是我在这方面完全天真?
谢谢
【问题讨论】:
-
可能足以阻止随意篡改。没有任何方案足以阻止严重的篡改。只有当破解它所需的成本超过合法许可证的价格时,保护方案才有效。反汇编可能是认真考虑破坏您的软件的人会采取的途径。
-
谢谢,这个想法确实是为了阻止随意的攻击。该软件没有广泛的公众,也不是极客。
标签: licensing rsa public-key-encryption