软件许可方案

时间:2012-10-02 19:03:29

标签: licensing rsa public-key-encryption

我已经设计了以下机制,以便在没有直接连接到服务器的情况下许可软件,这看起来很简单,但我没有发现任何严重的缺陷:

我计划使用不对称加密,以便从1台服务器(许可证服务器)向n个客户端(安装软件的n台计算机)发送消息

  1. 客户端(例如通过邮件)发送有关计算机的一些信息(MAC地址,机器名称,您的名字)

  2. 在许可证服务器上,这些信息使用安全性很高的公共(非公共)RSA密钥加密,此加密的有效负载是许可证。

  3. 将加密的许可证发送到客户端

  4. 当软件启动时,它会查找许可证文件,它可以确保使用服务器密钥加密有效负载,使用随每个软件版本附带的相应RSA私钥。

  5. 许可证解密后,软件会检查它是否在授予许可证的同一台计算机上运行。

    在我看来,如果没有访问许可证服务器RSA密钥,任何人都无法伪造加密的有效负载。

  6. 当然,许可证可能被盗,然后软件在虚拟机中启动,模拟真正的客户端机器,或者软件可能会被拆解以便拔掉许可证检查。

    但这个计划是否足够好,或者我在这方面完全天真?

    由于

1 个答案:

答案 0 :(得分:3)

这是一个不错的方案,虽然你确定你希望客户端拥有私钥,服务器是公钥吗?除非你每次安装都生成一个密钥对,否则不应该反过来呢?

方案很简单,但实用吗?如果您的目标是防止应用程序的偶然破解,那么更简单的解决方案同样有效。如果您的目标是阻止破解者运行您的应用程序,那么很可能(a)您将无法成功;(b)您的计划不够重要,无法获得此类关注。

为什么有人试图攻击许可证方案的加密部分,只需对二进制文件进行十六进制编辑以将许可证检查代码更改为NOP几乎肯定能正常工作?

如果我是你,我会重新考虑授权策略及其对您的产品及其成功的重要性。