我设计了以下机制,以便在不直接连接到服务器的情况下授权软件,看起来很简单,但我没有发现任何严重的缺陷:
我计划使用非对称加密,以便将消息从 1 个服务器(许可证服务器)发送到 n 个客户端(安装该软件的 n 个计算机)
客户端发送(例如,通过邮件)有关计算机的一些信息(MAC 地址、机器名称、您命名)
在许可证服务器上,这些信息使用安全性良好的公共(不那么公共)RSA 密钥进行加密,这个加密的有效负载就是许可证。
加密的许可证被发送到客户端
当软件启动时,它会检查许可证文件,它能够确保使用每个版本的软件附带的相应 RSA 私钥使用服务器密钥对有效负载进行加密。
许可证解密后,软件会检查它是否在授予许可证的同一台机器上运行。
在我看来,没有人能够在没有访问许可证服务器 RSA 密钥的情况下伪造加密的有效负载。
当然,也有可能是许可证被盗,然后软件在模拟正版客户端机器的虚拟机中启动,或者软件可能被反汇编以拔掉许可证检查。
但是这个方案足够好,还是我在这方面完全天真?
谢谢