密钥生成/验证,有什么?

时间:2010-01-24 03:28:51

标签: security encryption

我被要求为某些软件开发密钥生成/验证系统。他们也可以对开发的开源或商业系统开放,但更喜欢从头开始的系统。在线激活必须是可选的,因为某些安装很可能在隔离的服务器上。我知道存在一种具有大量盗版技术的用户/安全复合体。所以我想我在问那里有什么软件,库和技术?我很欣赏个人知识,网站或书籍。

2 个答案:

答案 0 :(得分:1)

如果你接受某些东西的散列,它会(理想情况下)产生一个不可预测的字符串。

您可以使用一种算法来获取可预测的SHA1(如序列号)与足够长的盐连接的SHA1。只要您的盐仍然是永久性秘密并且SHA1从未被破坏,您的密钥将非常安全。

例如,如果你取SHA1为“1”(你的第一个许可证密钥)和超级秘密盐“stackoverflow8as7f98asf9sa78f7as9f87a7”,你得到密钥“95d78a6331e01feca457762a092bdd4a77ef1de1”。如果需要,可以在版本号前加上它。

如果您想要在线授权,则需要三件事:

  1. 确保无法伪造响应
  2. 确保无法伪造请求
  3. 要确保互联网不可用,请采取适当的措施
  4. 公钥加密可以帮助完成第一项和第二项。即使Photoshop CS4在第3项中也存在问题,这是一个棘手的问题。

答案 1 :(得分:0)

我有偏见 - 鉴于我共同创立的公司开发了Cobalt software licensing solution for .NET - 但我建议你选择第三方解决方案,而不是自己动手。

查看文章Developing for Software Protection and Licensing,其中提出了以下观点:

  

我们相信大多数公司都愿意   购买一个更好的服务   高质量的第三方许可   系统。这种方法将释放你的   开发人员致力于核心工作   功能,并将减轻   维护和支持费用。它也是   允许你利用   许可提供的领域专业知识   专家,并避免释放   容易破解的软件。

     

购买的另一个好处   第三方解决方案就是你可以   快速轻松地评估它   适应性;与内部系统   你必须提前支付   开发可能没有的系统   证明足以满足您的需求。   选择高质量的第三方   系统大大降低了风险   参与开发解决方案   内部。

如果您已经开始自己动手,请提出建议:尽可能测试最广泛的客户端系统。真实世界的硬件很奇怪,Windows版本之间在某些方面的变化非常显着。

你几乎肯定要花很多时间用你实施的硬件识别系统来熨平折痕。