当前位置:  开发笔记 > 运维 > 正文

软件评估许可

如何解决《软件评估许可》经验,为你挑选了3个好方法。

我的公司正在寻求开始分发我们开发的一些软件,并希望能够让人们在购买前试用该软件.我们还希望确保不能将其复制并分发给客户的客户.

我们看到的一个模型是将许可证绑定到MAC地址,因此软件只能在一台机器上运行.

我想知道的是,生成许可证密钥的好方法是什么,其中嵌入了不同的信息,如许可证到期日期,MAC地址和不同的软件限制?



1> Larry Gritz..:

我使用了Macrovision(以前称为Globetrotter)的FLEXlm和Reprise Software的新版RLM(据我所知,由FlexLM的原作者编写).两者都可以关闭MAC地址或物理加密狗,可以是节点锁定(仅绑定到一台机器)或"浮动"(网络上的任何授权机器都可以获得由中央许可证服务器发出的许可证,向上最大数量的同时签出的副本由他们支付的金额决定).有多种灵活的方法可以设置它,包括到期日期,单独的子许可功能等.集成到应用程序中并不是很困难.这些只是我用过的两个,我敢肯定还有其他人也能做到这一点.

这些程序很容易破解,这意味着有一些已知的漏洞可以让人们绕过使用它们的应用程序的安全性,或者通过削减自己的许可证来欺骗许可证服务器,或者只是修补二进制文件以绕过许可证检查(基本上用代表"return'true'"的代码替换子程序对它们库的调用.它比这更复杂,但这就是它的主要归结.你会看到你的产品的破解版本发布到各个Warez网站.这可能是非常令人沮丧和沮丧的,更是如此,因为他们经常有兴趣破解破解的缘故,甚至没有任何使用你的产品或知道如何处理它.(这是显而易见的,如果你有一个足够专业的计划.)

因此,有些人会说你应该自己编写,甚至可能经常更改加密方案.但我不同意.确实,滚动自己意味着针对FLEXlm或RLM的已知漏洞不会立即适用于您的应用程序.但是,除非你是这种安全的全面专家(显然你不是或者你不会问这个问题),很可能在你缺乏经验的情况下你最终会写出一个不那么安全且更难破解的计划比市场领导者(他们可能很弱).

另一个不打自己的理由就是这是一场无尽的猫捉老鼠游戏.对您的客户和销售人员来说,最好的做法是尽量减少许可证安全性,并花时间调试或添加功能.您需要将许可计划仅仅称为"保持诚实的人诚实",而不是阻止确定的破解.无论如何,接受破解者不会为软件付费.

不是每个人都能采取这种禅宗的态度.有些人晚上无法入睡,因为知道有人在某个地方无所事事.但试着学会处理它.你不能阻止海盗,但你可以平衡你的时间/精力/费用,试图阻止所有盗版,而不是让你的产品更好地为用户服务.请记住,有时最盗版的应用程序也是最受欢迎和最有利可图的应用程序.祝你好运,睡个好觉.



2> Matt Sheppar..:

我建议你在密钥中获取你想要的信息,然后用md5哈希,然后只取第一个X字符(其中X是你认为可管理的密钥长度).

在密码学方面,它远非完美,但是这是一个你想要投入最小努力的区域,这将阻止一个偶然的攻击者 - 任何更快的变成黑洞.

哦,我还应该指出,如果你沿着这条路走下去,你会想要以纯文本(或略微混淆)的方式提供到期日期(以及你可能想要自己读出的任何其他信息)作为密钥的一部分. - md5只是为了阻止最终用户更改其到期日期以扩展许可证.

最简单的事情就是像这样的密钥文件......

# License key for XYZZY
expiry-date=2009-01-01
other-info=blah
key=[md5 has of MAC address, expiry date, other-info]


只要您使用MD5作为签名,您也可以使用适当的非对称密钥签名.

3> Jason Cohen..:

我们在我公司使用了以下算法多年没有发生过一次事故.

    在代码中确定所需的字段.尽可能包装.例如,日期可以是"自2007年以来的天数",然后您可以使用16位.

    添加额外的"校验和"字段.(您将在一秒钟内看到原因.)此字段的值是来自其他字段的压缩字节的校验和.我们使用"MD5的前32位".

    使用TEA加密所有内容.对于密钥,使用标识客户的东西(例如公司名称+个人电子邮件地址),如果有人想要在互联网上发布密钥,他们必须以纯文本形式包含他们自己的联系信息.

    以合理的方式将十六进制转换为字符串.您可以直接使用十六进制数字,但有些人喜欢选择不同的16个字符,以使其不那么明显.还包括破折号或其他东西,以便通过电话更容易阅读.

要解密,请将十六进制转换为字符串并使用TEA解密.但是还有这个额外的步骤:计算你自己的字段校验和(忽略校验和字段)并与给定的校验和进行比较. 这是确保没有人篡改密钥的步骤.

原因是TEA完全混合了比特,所以如果甚至一个比特被改变,所有其他比特在TEA解密期间同样可能改变,因此校验和将不会通过.

这可以破解吗?当然!几乎所有东西都是,但这足够紧凑,易于实施.

如果联系到联系信息是不够的,那么请包含"节点ID"字段并将其锁定到MAC地址或某些建议.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有