如果以及何时将 VM 映像从一个位置复制到另一个位置,我希望检测任何唯一约束。我实际上是作为产品许可服务修改的一部分来做的,以防止许可篡改。许可服务使用 MAC ID 来唯一标识许可证。这在物理机上运行良好,但如果复制的 VM 许可服务无法将操作系统识别为单独的操作系统并调用许可证阻止。我只需要在复制/复制 VM 时更改的任何唯一元素。(为了过于简化,我省略了细节)。任何想法表示赞赏。
1 回答
我知道解决这个问题的唯一方法是拥有一个许可服务器。当您将许可证代码输入客户端(在 VM 上)时,它会联系服务器并将其许可证代码和其他信息发送给它。它反复联系它(您定义间隔 - 可能每隔几个小时一次)询问“我仍然有效吗”?随着这个请求,它发送一个唯一的 ID。服务器回复“是的,你是有效的”,并发送一个新的唯一 ID 返回给客户端。客户端将这个唯一 ID 连同其下一个请求一起发送回服务器。
如果虚拟机是重复的,下次它询问服务器“我有效吗?”时,它或其他虚拟机的唯一 ID 将不正确。两者都不会继续工作。
如果服务器出现故障或网络出现故障,您将需要确定该怎么做,以使客户端无法与服务器通信。您是否立即禁用您的软件?馊主意!不要让你的客户生气。你会想给他们一个宽限期。这应该多长时间?几天?周?
假设您给他们 1 个月的宽限期。理论上,他们可以在输入许可证密钥后克隆父虚拟机,然后在其他虚拟机的宽限期到期之前将其恢复到该克隆,从而禁用对它们的网络访问。但是,这对您的客户来说会很麻烦,只是盗版了您的软件的其他副本。您必须确定什么样的宽限期不会打扰您的合法客户,同时希望为您提供您所寻求的保护。
通过验证虚拟机的时钟设置是否正确,可以实现额外的保护。这将防止上述盗版方法。
另一个考虑因素是,精明的用户可以编写自己的许可服务器来与 VM 实例通信,并告诉他们“你很好”——因此加密通信可以帮助阻止这种情况。您想在这里走多远实际上取决于您认为盗版确实可能对您的客户造成多大的问题。最后,您将无法阻止真正有时间的海盗,但您可以让诚实的用户保持诚实。