我想要分发的应用程序,但有许可证的关键,他们可以进入以解锁。什么是一个很好的算法,以创建一个简明关键的信息包含关于什么的版本,他们已购买,以及额外的事情,如时间许可证,等等。

我意识到这种保护可以被破解,但它保持诚实的人诚实的。我可以或不可以实施在线激活,但是我主要关心的一个好办法来产生这些钥匙。

我们都看到这种情况下,什么样的算法的最佳作品?我应该问的一个明文名称的用户和使用,创建一个独特的产品的关键基于他们自己的信息?

是有一个系统,该系统可以用来使这附近不可能生成一个有效的钥匙?

也许是一个公共/私人加密钥对种情况,唯一的制造商拥有的私人钥匙和数据可以通过验证公用钥匙,但是公众的关键不能被劫持为创建有效的钥匙。

因为这是一个产品的关键,这将是巨大的,如果它是相当短,64个字或者,也许128最大,但越短越好,32个或更少将是巨大的。

有帮助吗?

解决方案

你没有说出你所使用的平台,但这里是微软.Net中的一个:

http://jclement.ca/devel/dotnet/reallysimplelicensing.html

  

此页面记录非常简单   您可以使用的许可方案   你的.NET应用程序。它的目的是   相当安全,易于实施   并且易于扩展。样本版本   允许您提供许可证文件   其中嵌入了客户名称   但你可以轻松扩展它来添加   其他识别信息,机器   绑定,到期日等。

     

这个方案利用了微软的   RSA库和XML签名。基本上   你把任何你想要的东西放到XML中   记录并签署该文件。然后   您可以将该文件提供给您   客户和应用程序可以阅读   许可证信息   文件。由于文件是数字的   签署许可证文件不能   篡改,除非你释放你的   私钥(你真的   不应该这样做。)

其他提示

没有互联网接入和拍摄的钥匙

关于序的关键尺寸,有一个贸易之间的短暂/人可读的钥匙 (不太安全)和具有漫长的钥匙或可能许可证文件(更安全).

如果你想简短和人可读的钥匙,让你店里的东西比如有效期限和功能,可以使用SKGL一起软件保护,这两者都是开放源(https://help.cryptolens.io/faq/what-is-skgl).

然而,其缺点是,他们将最有可能的使用对称加密技术和/或存储的关键代算法内部应用程序。这意味着对终端用户可以试图发现的加密钥和/或算法(请参阅 http://www.codeproject.com/Articles/764610/Licensing-systems-in-NET).

互联网接入(或离线与激活的文件)

一个更好的选择是使用一个基于云的系统,该系统跟踪所有的许可证,并允许修改他们在任何时候。

如果你有一个基于网络的许可系统,可以保持键较短和不必储存的信息实际的关键(这种情况与大多数离线的基础系统)。

而且,你将能够支持更多授权许可模型,例如,订阅基础的模式。

该方案是:

  • 建立这样的系统自己的 -这将要花很多时间和分散你的注意力从核心功能的应用程序。

  • 使用现有的开放源代码系统作为起点 -虽然它可能被诱惑,因为它的开放源代码和免费的,它将需要时间来把他们带到云+配置给您的特殊需要+保持它。开放源码系统,我已经观察到的往往是非常广泛的功能,这有助于复杂性。

  • 外包给第三方 -缺点是,他们大多都不是免费的。

在我头脑,整个程序应该外包给第三方,是一家专业发展,特别是组成部分。一旦您的规模,可能需要改变授权的逻辑。而不是开发它自己,机会是第三方已经支持该方案。

有几种解决方案(一定要寻找那些是基于网络), Cryptolens 就是一个例子。如果你是发展中的一个。网应用程序,这里是一步一步的例子: https://help.cryptolens.io/examples/key-verification.


免责声明:我是作者的SKGL/软件保护条约的许可证制度,并Cryptolens.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top