是否有唯一的计算机标识符,即使在虚拟机中也可以可靠地使用?

12 .net c# security macos vmware

我正在编写一个小型客户端程序,以便在终端服务器上运行.我正在寻找一种方法来确保它只能在指定的服务器上运行,如果它从服务器中删除它将停止运行.

我知道没有办法让它100%安全,但我想让大多数高级用户都难以做到这一点.

我正在查看不同的唯一标识符,如处理器ID,Windows产品ID,计算机GUID和其他UI.由于终端服务器是虚拟机,因此无法找到任何完全独特的机器.

关于我应该考虑什么的任何想法,使这大多是安全的.我没有时间或者没有必要让它尽可能安全,因为它会破坏应用程序本身的目的.

我不想用户MAC地址.尽管每台机器都是独一无二的,但它可以通过互联网上的说明进行欺骗.

至于Microsoft产品ID,因为我们的系统团队克隆了VM服务器并且我们使用公司卷密钥,所以我发现已经有两个我有权访问的服务器具有相同的产品ID号.我不知道有多少其他人拥有相同的产品ID

或者,我可能会通过识别用户并创建通过AD处理的基于组的权限来访问此软件,而不是尝试识别机器.

Bri*_*ian 6

通过设计,难以唯一地识别虚拟机; 任何允许您唯一标识它的东西都意味着它不是完​​全虚拟的(因为克隆虚拟机应该生成相同的机器).

  1. 在主机上创建心跳应用程序,通过环回网络适配器与VM通信.
  2. 如果心跳应用程序无法唯一标识主机,则拒绝运行该应用程序.
  3. 如果心跳应用程序未运行,主应用程序是否拒绝运行.

您需要找到一种方法来确保心跳应用程序不会太容易被欺骗.

无法100%保护终端程序.这个问题相当于试图阻止软件盗版.


Bro*_*ass 0

如果你想要 95%,我会选择Mac ID——它可以被欺骗,但默认情况下对于机器来说是唯一的。