-->

如何创建连续密钥来保护应用程序(How to create serials key to prote

2019-07-30 19:45发布

我有如下创建一个Serial关键的应用程序:

Take customername
Sign customername using privatekey and sha/dsa algorithm

然后许可证可以通过公共密钥解码,并检查cuastomername匹配检查

这只是生成的序列是相当长的工作好。 因此,它是不是真的实用的客户在输入序列密钥,而不是他们必须提供一个串行在一个文件中,这是相当不同的如何雾的应用程序和工作,是混乱的。

许多其他应用程序只是提供一个GUID的用户,当他们做出购买

即5bd1060b-8608-4817-93ca-207f7c828e2f

并且,用户必须输入他们的电子邮件地址和GUID授权他们的应用程序。

这看起来像用户一个整洁的解决方案,但我不明白,怎么这样的应用程序从一个无效的GUID证实是有效的GUID,除非其做了所有通过在线的数据库上检查EMAILADDRESS / GUID对。 但我真的想某种验证,而不需要,否则网上支票来完成:

一>应用程序将无法正常工作,如果互联网连接/我的服务器停机或b>,他们可以通过禁用网络连接规避检查

编辑:

我的理解解决方案,提出如下的回答:

用户购买使
就拿EMAILADDRESS +盐
加密与SHA1给160bit的散列
转换为16进制给出20个进制值,即40个字符
最后8个字符的罗布泊给一个GUID
他们进入程序程序的电子邮件用户GUI和电子邮件地址采取的电子邮件地址,加入盐,加密ectera和检查生成有效的GUID验证此配对。

我的这个主要问题是,我需要的盐存放在某处的程序,因此,如果黑客发现的盐和使用的是哪种即时通讯做,他们可以创建任何电子邮件地址有效的许可证密钥生成器。

我现在对其他程序的方法:

我已生成的公钥/私钥对
用户购买使
我通过签署EMAILADDRESS生成许可证
BaseEncode生成的许可证
发送许可用户
计划通过basedecoding并用公钥解密验证许可证

我的问题一直是当我签署EMAILADDRESS太长所以我最终把它在一个文件,而不是进入它变成一个领域的用户,但也许问题在于我base64encoding而不是转换为十六进制。

多久可以签署的输出是,它依赖于输入的长度,或者是总是一样的吗?

因为我解密用公共密钥的密钥我canot罗布泊的许可证密钥的一些字符,但如果生成密钥只有40个字符,我想这是好的

我觉得这个方法的优点是即使黑客的作品出来我是如何做的事情,他们不能创建一个许可证发电机,因为他们不这样做,并不能得到私钥,因为它仅存储在我的服务器上。 他们只能生成许可证,如果他们创造了一个新的公/私钥配对,然后如果我的应用程序必须在自身编码后的公钥的应用程序可以反正拒绝许可。

当然,他们可以破解应用程序,但如果应用程序定期更新,这将成为很多努力。

因此,在总结:我有正确理解这一点,哪种方法是最好的,以及有多少数据第二种方法产生。

Answer 1:

我想签名的方法是目前最好的做法。 顺便说一句。 有许多的覆盖这个话题自由库。

许可密钥的长度至少由签名密钥长度来确定 - 1024位的密钥产生一个128字节的授权(如果不加入其它有效载荷)。

通常,许可文件包含对许可使用本身的详细信息,如有效期,许可的子模块,吞吐量... - 签名本身嵌入这种结构中。 这样,您将获得灵活,我强烈建议这个解决方案,即使牌照又进一步壮大了。

对于在应用程序中导入许可,您可以采用混合方式(像我们一样)。 一方面可以提供经典的“进口许可证文件”的解决方案。 另一方面,我们生成一个随机的,短的ID(如您的GUID),并将其与许可数据相关联。 在注册时,用户输入的短ID和应用程序经由HTTP查找完整的许可证。 你必须在线只有一次,你仍然可以提供复杂的许可证,用户只需要很短的ID。

编辑

  1. 签名的长度是关键的长度。 例如1024位(或128字节)
  2. 如果你的应用程序知道哪些数据进行签名您可以单独使用这个签名(如电子邮件)
  3. 您可以登录含有不仅仅是邮件更多属性的“许可文件”。 在这种情况下,许可证包含属性和签名(并且,因此,长于仅签名)
  4. 你不需要许可证检查在线连接。 刚刚导入与应用程序的许可证,并检查,只要你喜欢。
  5. 一个除了许可证文件导入您可以使用短ID作为密钥采用许可文件的在线下载。 该许可证是下载和离线。 所以,你有两全其美的。


Answer 2:

你可能只是哈希以“秘密”盐连接起来的用户信息,然后截断哈希值。

黑客 - 提供他们感兴趣的是你的程序 - 将破解它,通过反向工程源:他们会发现这两个散列算法和秘密盐。

但是,这是你的星座也发生和验证的解决方案:他们可以绕过检查使它返回true。

因此,符号和验证的解决方案是比较复杂的,但不是更安全。



文章来源: How to create serials key to protect an application