【问题标题】:Generating a per-PC activation code for a non web-aware application为非 Web 感知应用程序生成每台 PC 激活码
【发布时间】:2011-03-16 05:55:37
【问题描述】:

客户希望他们的产品要求用户输入特定于机器的代码,以便他们只能在一台机器上运行它......如果他们想在其他地方使用它,他们会从第一台机器获取停用代码并发送回来证明这一点。

如果应用程序可以与他们的服务器通信,这可能会更加顺畅,但事实并非如此。我想到了一个工作流程,但有点复杂:

  1. 客户购买许可证并通过电子邮件发送序列号
  2. 客户安装 App 并提示输入序列号
  3. 应用程序生成机器特定代码,并结合串行代码执行一些操作,将此 PC 代码提供给客户
  4. 应用现在请求激活码,一旦输入就会运行
  5. 客户将 PC 代码发送给供应商,供应商根据他们记录的序列码检查它是否有效,并使用两者生成一个激活码,然后发送给客户

这个想法是 PC-Code 和 Activation Code 都很短,更像是密码,所以它不是太可怕......但是有更好的系统吗?以及具体步骤如何实施?

我个人不太喜欢限制客户,但这不是我的决定,这已经被吵死了:)

【问题讨论】:

  • 你说if they want to use it elsewhere they get a deactivation code from the first machine and send that back to prove this。一旦从原始机器上移除并安装到其他地方,是什么阻止客户使用原始信息将其重新安装到原始机器上?从我所看到的什么都没有。这就像在可能的机器上使用一个 Windows 副本。只要那些机器不能上网,MS 就永远不会知道。我想你也一样。您提出的任何基于非互联网的解决方案都将达不到您想要的我的想法。
  • @typoknig - 在某种程度上你是对的。在破坏系统后,我们并没有试图严重阻止任何人,只是为了让您必须故意避开系统并且不能简单地安装在 100 台 PC 上。就您的具体观点而言,我们可以 a) 在注册表中保留一些内容 b) 将时间组件引入其中一个键

标签: security authorization


【解决方案1】:

通过使用激活码步骤,您实际上是在强迫客户成为您的互联网连接。不幸的是,如果没有这一步,您将无法将它们绑定到机器上。

最大的问题将是您的停用代码 - 如果客户写下他们的激活代码,有什么可以阻止他们再次使用它来重新激活他们的 PC?

唯一的方法是让您的激活码在某种程度上基于日期,以便他们有一周或一个月的时间来输入它。除非他们需要重新安装,否则他们可能永远不会注意到问题,在这种情况下,您可以重新发出另一个激活码(前提是其他机器没有未完成的未停用代码)。

您的客户的编程能力如何,他们破解您的软件的动机如何?

This article 提供了一些获取硬件信息的好方法。

【讨论】:

  • 我们只是防范用户认为“我可以在所有 PC 上安装,谁知道?”的“临时盗版”。用户不应该尝试破解它,它只出售给企业环境。使用日期的好电话,这是有道理的。
【解决方案2】:

这就是使用硬件密钥的原因,您不能一次将其物理插入两个设备。使用软件的唯一方法需要受信任的第三方来管理仲裁,即互联网上的身份验证服务器。

一个流行的 Unix 许可唯一标识符是 hostid。现代的替代方案是包含一个安全令牌生成器,例如 RSA SecurID。让管理员通过电话将令牌读取给供应商,通过某种算法生成解锁软件的密钥。

其他一切都将是烟雾和镜子。

【讨论】:

  • 有没有人制造/销售可以非常简单地插入应用程序的硬件密钥?
  • 维基百科关于“加密狗”的文章有一个很好的供应商列表,en.wikipedia.org/wiki/Dongle
猜你喜欢
  • 2015-12-02
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 2014-03-15
  • 2012-03-15
  • 2012-11-30
  • 1970-01-01
  • 2011-01-27
相关资源
最近更新 更多