Security 为非web感知应用程序生成每台PC激活码

Security 为非web感知应用程序生成每台PC激活码,security,authorization,Security,Authorization,客户希望他们的产品要求用户输入特定于机器的代码,以便他们只能在一台机器上运行它。。。如果他们想在其他地方使用它,他们会从第一台机器上获得一个停用代码,并将其发送回以证明这一点 如果应用程序可以与他们的服务器对话,这可能会变得更加顺畅,但事实并非如此。我想到了一个工作流,但它有点复杂: 客户购买了许可证,并通过电子邮件发送了序列码 客户安装应用程序并提示输入序列代码 应用程序生成特定于机器的代码,并将此代码与串行代码相结合执行某些操作,从而将此PC代码提供给客户 应用程序现在请求一个激活码,一旦输

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

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

  • 客户购买了许可证,并通过电子邮件发送了序列码
  • 客户安装应用程序并提示输入序列代码
  • 应用程序生成特定于机器的代码,并将此代码与串行代码相结合执行某些操作,从而将此PC代码提供给客户
  • 应用程序现在请求一个激活码,一旦输入它就会运行
  • 客户将PC代码发送给供应商,供应商根据记录的串行代码检查PC代码是否有效,并使用这两种代码生成一个激活代码,然后发送给客户
  • 这个想法是PC代码和激活码都很短,更像是pin码,所以不太可怕。。。但是有更好的系统吗?具体步骤如何实施


    我个人不喜欢这么多地限制客户,但这不是我的决定,已经有人争论到了极点:)

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

    最大的问题将是你的停用代码-如果客户写下他们的激活代码,什么能阻止他们再次使用它来重新激活他们的电脑

    唯一的办法是让你的激活码在某种程度上基于日期,这样他们就有一周或一个月的时间来输入它。他们可能永远不会注意到问题,除非他们需要重新安装,在这种情况下,您可以重新发布另一个激活码(前提是没有针对不同机器的未激活代码)

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


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

    这就是使用硬件密钥的原因,您不能同时将其插入两个设备。使用软件的唯一方法需要可信的第三方来管理仲裁,即通过Internet的身份验证服务器

    Unix许可的一个常见唯一标识符是
    主机ID
    。现代的替代方案是包括一个安全的令牌生成器,如RSA SecurID。让管理员通过电话向供应商读取令牌,通过一些算法生成密钥以解锁软件


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

    也许这会有所帮助:你说的
    如果他们想在其他地方使用它,他们会从第一台机器上获得一个停用代码,并将其发送回以证明这一点。一旦从原始机器上拆下并安装到其他地方,是什么阻止客户使用原始信息将其重新安装到原始机器上?我看不到任何东西。这就像在五月的机器上使用一个Windows副本一样。只要这些机器没有互联网接入,微软就永远不会知道。我想你也是这样。我认为,你提出的任何非基于互联网的解决方案都会达不到你的要求。@typoknig-你在某种程度上是对的。我们并没有试图在破坏系统后严重阻止任何人,只是为了让你不得不故意避开系统,不能简单地安装在100台电脑上。就你的具体情况而言,我们可以a)在注册表中留下一些东西b)在其中一个密钥中引入时间组件我们只是在防止“偶然盗版”如果用户认为“我可以在我所有的电脑上安装,谁会知道呢?”用户不需要尝试破解它,它只会出售给公司环境。使用日期打电话很好,这很有意义。有没有人制造/销售硬件密钥,你可以非常简单地将其插入你的应用程序?维基百科关于“加密狗”的文章有一个很好的供应商名单,