Linux uuidgen - 跨 VM 实例的输出的唯一性
Linux uuidgen - uniqueness of output across VM instances
背景:
我开发了一个在 Linux 上运行的软件,我分发了它的运行许可证。
对于 Linux 安装,我使用系统 UUID,我的许可证基于此。
为了在各种云设置上安装,我将 OS 与我的软件打包并提供给用户。用户部署它并根据我的软件中显示的 UUID 请求许可证。
问题:
当用户部署每个实例时,在少数云设置中,UUID 对于同一物理机器上的不同 VM 实例是相同的。
这会导致许可证问题。
解法:
我计划做的很简单:当 OS 第一次启动时调用 uuidgen 并生成 UUID 并将其存储到文件中。之后下次重新启动时,我将从该文件中获取它,因此机器的 UUID 将相同。
关于上述解决方案的问题:
1
带有随机选项的uuidgen利用/dev/random计算uuid
在 VM 设置中,由于没有用于生成此随机种子的直接硬件访问,/dev/random 值可能在不同的 VM 实例中相同吗?这意味着 uuidgen 将在同一种子上运行?
2
如果 uuidgen 在第一次启动时在两个不同的 linux 系统中生成的 UUID 相同,因为随机种子不够好,那么下一个生成的 UUID 也会相同Linux 系统?
IE。
启动时,会调用 uuidgen 并在 VM1 中生成 UUID1。假设在另一个 VM 实例 VM2 中调用 uuidgen 时它与 UUID2 相同。
如果在VM1中为下一个UUID再次调用uuidgen,如果在VM2中调用它会再次相同吗?
谢谢。
最有可能调查的事情是客户是否从一个通用映像生成了这些 VM 映像,其中已经生成了 uuid。拥有 uuid 的长度,您极不可能产生 uuid 的冲突。
顺便说一下,要求您的软件依赖于存储在文件中的 uuid 允许您的客户在安装您的软件并且所有许可证都通过克隆。
如果您想保护 VM 上的软件许可证,您必须连接到许可证服务器并执行一些 public 密钥签名功能来验证许可证。
主要问题是来自虚拟机的两个克隆映像完全相同(硬件和软件),因此,可以 运行 相同的软件与它们克隆的时间点没有任何差异.
背景: 我开发了一个在 Linux 上运行的软件,我分发了它的运行许可证。 对于 Linux 安装,我使用系统 UUID,我的许可证基于此。 为了在各种云设置上安装,我将 OS 与我的软件打包并提供给用户。用户部署它并根据我的软件中显示的 UUID 请求许可证。
问题: 当用户部署每个实例时,在少数云设置中,UUID 对于同一物理机器上的不同 VM 实例是相同的。 这会导致许可证问题。
解法: 我计划做的很简单:当 OS 第一次启动时调用 uuidgen 并生成 UUID 并将其存储到文件中。之后下次重新启动时,我将从该文件中获取它,因此机器的 UUID 将相同。
关于上述解决方案的问题:
1
带有随机选项的uuidgen利用/dev/random计算uuid 在 VM 设置中,由于没有用于生成此随机种子的直接硬件访问,/dev/random 值可能在不同的 VM 实例中相同吗?这意味着 uuidgen 将在同一种子上运行?
2
如果 uuidgen 在第一次启动时在两个不同的 linux 系统中生成的 UUID 相同,因为随机种子不够好,那么下一个生成的 UUID 也会相同Linux 系统? IE。 启动时,会调用 uuidgen 并在 VM1 中生成 UUID1。假设在另一个 VM 实例 VM2 中调用 uuidgen 时它与 UUID2 相同。 如果在VM1中为下一个UUID再次调用uuidgen,如果在VM2中调用它会再次相同吗?
谢谢。
最有可能调查的事情是客户是否从一个通用映像生成了这些 VM 映像,其中已经生成了 uuid。拥有 uuid 的长度,您极不可能产生 uuid 的冲突。
顺便说一下,要求您的软件依赖于存储在文件中的 uuid 允许您的客户在安装您的软件并且所有许可证都通过克隆。
如果您想保护 VM 上的软件许可证,您必须连接到许可证服务器并执行一些 public 密钥签名功能来验证许可证。
主要问题是来自虚拟机的两个克隆映像完全相同(硬件和软件),因此,可以 运行 相同的软件与它们克隆的时间点没有任何差异.