部分密钥验证

时间:2014-04-02 15:38:45

标签: encryption cryptography licensing key-generator

对于那些具有软件保护部分密钥验证技术经验的人来说,这个问题很明显。我试图了解PKV如何比其他keygen方案更好,并且在阅读了备受推荐的

之后

http://47hats.com/2007/07/26/implementing-a-partial-serial-number-verification-system/

我有几个问题。

基本上,如果我理解正确,PKV背后的想法是不是在客户端检查整个密钥,这样如果有人(即黑客)提出了keygen,你只需要用不同的方法重新编译软件检查密钥,瞧,假密钥将不再有效。

但我不明白的是,如果某个时候有一个keygen,它显然能够解锁一个的软件版本,这仍然可以在网上找到。所以基本上,你根本就没有避免使用虚假密钥,你只有一个软件版本可以使用虚假密钥,而另一个则没有。

那么这对其他keygen保护技术有何优势呢?

1 个答案:

答案 0 :(得分:9)

这里的想法是这样的 - 如果我们首先想象您的应用程序包含验证整个许可证密钥的代码,并且有人创建了密钥,那么您唯一真正的选择就是重新保护您的许可下一个版本的过程是完全更改密钥生成算法,以便密钥生成器不再生成有效密钥。

这有一个明显的缺点 - 合法用户需要发布使用新密钥算法创建的新许可证密钥才能使用更新版本。这可能是您的支持梦魇,也可能是您客户的烦恼,可能会转变为竞争对手的产品。

通过仅在产品的任何一个版本中验证密钥的部分,攻击者几乎不可能通过反汇编二进制文件来确定如何生成整个密钥。因此,要在下一个版本中锁定非法生成的密钥,您只需要开始检查在先前版本中未检查的密钥的不同部分。由于密钥生成机制没有改变,合法用户'密钥仍然可以正常工作,但非法密钥(以及创建它们的密钥)不再有效。当然,一个旧的密钥仍然可以用于旧版本,但是你可以做很多事情。

当然,由于您的密钥长度有限,因此在您检查整个密钥之前,您可以重复此过程很多次,或者在所有密钥中都有足够的信息。重建整个密钥生成过程的先前版本,但它可能会持续足够长的时间,以便您能够合理地期望用户为您产品的下一个主要版本购买新许可证,您可以完全更改生成机制并开始一遍又一遍。