在保护用户的 SMBIOS UUID 方面我应该走多远?

信息安全 哈希 隐私 硬件 匿名
2021-08-25 14:13:50

我的服务器将从数百台计算机接收数据。作为跟踪哪台计算机发送了什么的一部分,我将对硬件进行指纹识别并将结果保存在我的数据库中。

如今,最明智的使用来源是 SMBIOS UUID。这些 128 位数字由主板制造商设置,应该是唯一的,但不是不可预测的。例如,最后一部分通常包含板载 NIC 的 MAC 地址,其中一些位是制造商特定的。

因为知道确切的 UUID 并没有太多收获,所以我可以使用散列。这已经引入了一些隐私。但是,由于(没有进一步的措施)哈希可以快速计算,并且这些 UUID 实际上并不提供 128 位的熵,我认为将哈希追溯到某个 UUID 是可行的。

是否值得引入更昂贵的哈希函数来防止上述情况,以防我的服务器受到损害?我认为我不能使用盐,因为我无法将盐存储在硬件中,并且数据应该已经散列(永远不会传达实际的 UUID)。在服务器上,我应该能够对来自同一来源的数据进行分组。知道某些计算机的 UUID 有多大用处,您可能还知道它属于特定公司或个人?

要使用的派生 ID 需要在系统重新安装后继续存在,因此纯基于软件的替代方案行不通。引入定制硬件(例如硬件密钥/加密狗)不是一种选择。我有其他想法,我不确定它们有多好:

  • 故意将散列缩短到单个用户仍然不可能多次遇到相同散列的程度(因此我仍然能够区分他们的系统),同时不再保留足够的熵来可逆 - 我不是确定适当的长度是多少,以及如果不是实际的 UUID,而是可以建立一组相当有限的潜在 UUID
  • 向哈希添加一点额外的硬件,代价是它变得更有可能改变,但在某种程度上增加了源的熵
1个回答
  1. 您至少可以添加特定于应用程序的盐(在应用程序中硬编码),因此只为您的小型数据库构建彩虹表是不值得的。
  2. 您可以使用较慢的散列函数(每次应用启动时只预计算一次散列)。
  3. 如果可能的话,为您的应用程序添加更多的熵将有很大帮助。
  4. 如果可能的话,不要将散列与可识别信息相关联,或者使关联变得困难,例如要求用户密码来解密他的 UID 散列。(更多建议,我们需要了解更多关于您需要它的信息)

缩短哈希在某些情况下可能会有所帮助,但在其他情况下可能是有害的。恕我直言,在 UID 与 IP 或名称/公司等其他信息相关联的情况下,它不会做太多事情。