许可模式
在我几乎所有的职业生涯中,我都致力于构建解决方案(针对单个客户的定制应用程序)。现在我的公司正在为大众开发软件,很多包装正在等待着我们。
我想问一下许可软件。如何生成序列号和激活号。我总体上可以选择哪些许可软件。
我意识到这是一个普遍的问题,但这是一个对话开始者。
解决方案
回答
如果我们使用.Net来构建解决方案,则值得检查Xheo。在使用之前,我已经使用它们来实现许可,并且它们与.net解决方案很好地集成在一起。我们可以做一些事情,例如需要基本的串行密钥来激活产品,直至设置激活服务器,并要求人们激活和停用其产品,以在机器之间使用和移植它们。
回答
我们的许可证模型使用公钥/私钥加密技术工作。他们向我们发送他们的姓名和联系方式,我们使用私钥对其进行加密。然后,加密的文件将被发送回被许可人,许可人将其输入到应用程序中。该应用程序将我们的公钥嵌入到二进制文件中(或者如果它们与网络连接,则会将其从我们的站点中删除),并使用它来解密许可证信息。如果解密后的许可证与他们输入的详细信息匹配,则它们被许可使用该产品!
通过使用私钥/公钥加密,我们可以使我们的应用程序相信许可证密钥中的数据实际上来自我们(许可证的真实性)
我们还可以执行其他一些整洁的操作,例如将订阅级别编码到许可证密钥中。该应用程序将解密许可证密钥,并看到它们仅被允许使用某些功能。
但这可以受到攻击。例如,黑帽可以删除二进制文件中的整个许可证密钥检查部分,也可以将应用程序中存储的公共密钥更新为已生成的公共密钥。然后,他们将能够使其接受自己的许可证。但是,由于我们的应用程序不是主流,因此我们认为这不是主要威胁。
回答
由一个构建并销售小型.NET应用程序的人撰写的有关盗版的这篇文章非常有用。他的应用程序是盗版的,这给了他一个有趣的观点:
http://kalzumeus.com/2006/09/06/yo-ho-me-hearties-yo-ho/
他的观点基本上是,我们需要使激活系统成为普通用户的屏障,如果应用程序非常流行而无法被破解组盗版,那么我们将无能为力。最重要的是要确保程序的破解版本(如果存在)对于99%的公众是不可见的。