【问题标题】:Linux uuidgen - uniqueness of output across VM instancesLinux uuidgen - 跨 VM 实例的输出的唯一性
【发布时间】:2016-02-16 12:14:52
【问题描述】:

背景: 我开发了一个在 Linux 上运行的软件,并分发了许可证以使其工作。 对于 Linux 安装,我使用的是系统 UUID,我的许可证基于此。 为了在各种云设置上安装,我将操作系统与我的软件打包并提供给用户。用户根据我的软件中显示的 UUID 部署它并请求许可。

问题: 当用户部署每个实例时,在少数云设置中,同一物理机器上不同 VM 实例的 UUID 相同。 这会导致许可证问题。

解决方案: 我计划做的很简单:当操作系统第一次启动时调用 uuidgen 并生成 UUID 并将其存储到文件中。之后下次重新启动时,我将从该文件中获取它,因此机器的 UUID 将相同。

关于上述解决方案的问题:

1

带有随机选项的 uuidgen 使用 /dev/random 计算 uuid 在虚拟机设置中,由于没有直接的硬件访问来生成这个随机种子,/dev/random 值在不同的虚拟机实例中可能相同吗?这意味着 uuidgen 将在同一个种子上运行?

2

如果 uuidgen 在第一次启动时在两个不同的 linux 系统中生成的 UUID 相同,因为随机种子不够好,那么在这些 Linux 系统中生成的下一个 UUID 也将相同? IE。 启动时,会调用 uuidgen 并在 VM1 中生成 UUID1。假设在另一个 VM 实例 VM2 中调用 uuidgen 时,它与 UUID2 相同。 如果在VM1中为下一个UUID再次调用uuidgen,如果在VM2中调用它会再次相同吗?

谢谢。

【问题讨论】:

    标签: linux random cloud uuid


    【解决方案1】:

    最可能要调查的事情是,客户是否从一个通用映像生成了这些 VM 映像,其中 uuid 已经生成。拥有 uuid 的长度,您最不可能产生 uuid 的碰撞。

    顺便说一句,如果要求您的软件依赖于存储在文件中的 uuid,您的客户可以安装您的软件并通过克隆验证所有许可证后克隆您的 VM。

    如果您想保护虚拟机上的软件许可证,您必须连接到许可证服务器并执行一些公钥签名功能来验证许可证。

    主要问题是从虚拟机克隆的两个映像完全相同(硬件和软件),因此可以运行相同的软件,而与它们克隆的时间点没有任何差异。

    【讨论】:

      猜你喜欢
      • 2012-02-02
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多