【发布时间】:2010-11-04 04:10:30
【问题描述】:
我想分发一个应用程序,但有他们可以输入的许可证密钥来解锁。什么是创建简洁密钥的好算法,其中包含有关他们购买的版本的信息,以及许可期限等其他信息。
我知道这种保护可以被破解,但它可以让诚实的人保持诚实。我可能会也可能不会实现在线激活,但我主要关心生成这些密钥的好方法。
我们都见过这种情况,什么算法效果最好?我应该询问用户的明文名称并使用它根据他们自己的信息创建唯一的产品密钥吗?
是否有一个系统可以用来使生成有效密钥几乎不可能?
可能是公/私密钥对加密情况,只有制造商拥有私钥,数据可以通过公钥验证,但无法劫持公钥以创建有效密钥。
由于这是一个产品密钥,如果它相当短,64 个字符或最多 128 个字符会很好,但越短越好,32 个或更少会很好。
【问题讨论】:
-
如果您分发的是人们想要的独立软件,而无需付费,它就会被破解。我能想到可靠解决这个问题的唯一方法是创建依赖于您控制的服务器的东西。
-
+1。我认为“让诚实的人保持诚实”是解决这个问题的正确心态。没有什么是加密安全的,但是为每个许可证拥有某种唯一的密钥或编号实际上可以使商业客户更容易对其软件进行说明,从而为您的产品增加价值。旨在挫败犯罪分子(无论如何都不会付款)的繁重 DRM(不起作用)只是向客户付费的障碍。
-
@erickson 除非你搞砸了,否则让事情变得加密安全相对容易。不安全的是执行环境。如果用户可以修改他们机器上的内存,他们就可以绕过你的加密。
-
@Paul - 大多数开发人员都把密码学搞砸了。例如,当应用程序需要真实性而不是隐私时,您正在谈论加密。无论如何,当我说“加密安全”时,我将密钥管理作为所需加密操作的安全性的核心。当您的协议要求将密钥提供给攻击者时,您将无法获得安全性。
标签: algorithm software-distribution product-key