我被要求为我们的产品实施许可模式。它们是非常昂贵的产品,几乎没有客户分布在世界各地,基本上每个客户都有一个设计环境(安装在单个Windows机器上的Windows应用程序,每个客户1到150台客户端机器)和一个托管生产环境的Web服务器(每位客户1至8台机器)。我们的产品已获得服务器使用许可,因此客户可以使用任意数量的客户;我们决定不许可服务器部分(因为它受SLA协议约束),但只限于客户端,因为在一段时间没有使用客户端的能力后,系统变得基本无用。
我们的基本假设是客户“足够诚实”,而且我们想要涵盖的唯一事情就是如果未获得时间过期许可证,则停止客户端设计环境。
我评估了不同的许可产品,它们太昂贵或太难管理,所以我想出了这个简单的解决方案:
关于可能出现的问题或如何改进方案的任何想法?
答案 0 :(得分:10)
如果有足够的兴趣,我还没有看到在几周内没有被破坏的许可计划。你的计划看起来非常好(但要确定,如果有人真的想要,他们会打破它)。
无论你做什么,都应该关注Eric Sink的advice:
目标应该只是“保持 诚实的人诚实“。如果我们去 除此之外,只有两件事 发生:
- 我们打一场我们无法取胜的战斗。那些想作弊的人会成功。
- 我们通过让产品变得更加困难来伤害我们产品的诚实用户 使用。
醇>
由于您正在为专为企业使用而设计的程序实施许可方案,因此您可以更简单,只需保留某种ID和到期日期以及客户端上的简单签名,并且如果许可证已过期则拒绝启动或签名失败。打破它并不难,但没有许可计划,如果你认为你的客户诚实,这将是绰绰有余。
答案 1 :(得分:1)
从您的问题来看,您的计划是如何运作的并不完全清楚。客户端软件的每个实例都有不同的密钥吗?许可证持续多久了?每个客户有不同的密钥吗?许可证是如何支付的?如何更新许可证?
如果您试图控制客户端代码的使用次数,那么只有上面的第一个会这样做。
在一天结束时,在您看来居住的世界中,我怀疑您将不得不相信没有明显侵犯您的执照。大多数体面的组织(听起来像您的客户)都有责任不侵犯,如果他们违反许可协议就会导致严重后果。他们也会定期接受审计,你可能有一些法定权利去检查他们的使用情况(如果不是,你应该把它写进你的许可协议中)。
如果USB密钥的内容在网上找到,那么对您来说非常危险。在这方面,任何使用已发布密钥的方案都容易被故意泄露秘密。
我确信有很多关于这个主题的文献,所以你可能值得继续研究。
BTW我不确定您在服务器许可的中间部分是否提到了SLA。许可和SLA非常不同。许可证是SLA是您的客户义务。
答案 2 :(得分:1)
如果你给他们私钥,是什么阻止他们创建更多签名的XML文件,而不是从你那里购买额外的许可证?还是网站许可?如果是后者,是什么阻止他们为其他人/网站创建许可证?
通常,开发许可方案使用MAC地址和/或硬盘序列号将许可证绑定到特定计算机,或者有时只使用激活密钥(通常只是硬件信息的哈希)
通常使用您保密的私钥完成编码,并使用公钥验证许可证;客户端永远不会拥有私钥,否则他们可以 - 如果是这样倾向 - 生成自己的许可证
答案 3 :(得分:1)
我同意Steven A. Lowe(我没有15点声望,所以我不能投票给他)。
这似乎也太复杂了。你想让它牢不可破吗?你不能。任何有足够动力的大师都会找到解决办法。
有时,简单的许可方案效果最好:
我建议管理员放置一个客户端可以访问的简单加密文件 - 它将包含客户端名称和到期日期。您可以在所有打印报告中使用文件中的客户端名称(这是大多数PHBs关注的内容,这样他们就不会使用打印别人姓名的许可证。)