我的服务器将从数百台计算机接收数据。作为跟踪哪台计算机发送了什么的一部分,我将对硬件进行指纹识别并将结果保存在我的数据库中。
如今,最明智的使用来源是 SMBIOS UUID。这些 128 位数字由主板制造商设置,应该是唯一的,但不是不可预测的。例如,最后一部分通常包含板载 NIC 的 MAC 地址,其中一些位是制造商特定的。
因为知道确切的 UUID 并没有太多收获,所以我可以使用散列。这已经引入了一些隐私。但是,由于(没有进一步的措施)哈希可以快速计算,并且这些 UUID 实际上并不提供 128 位的熵,我认为将哈希追溯到某个 UUID 是可行的。
是否值得引入更昂贵的哈希函数来防止上述情况,以防我的服务器受到损害?我认为我不能使用盐,因为我无法将盐存储在硬件中,并且数据应该已经散列(永远不会传达实际的 UUID)。在服务器上,我应该能够对来自同一来源的数据进行分组。知道某些计算机的 UUID 有多大用处,您可能还知道它属于特定公司或个人?
要使用的派生 ID 需要在系统重新安装后继续存在,因此纯基于软件的替代方案行不通。引入定制硬件(例如硬件密钥/加密狗)不是一种选择。我有其他想法,我不确定它们有多好:
- 故意将散列缩短到单个用户仍然不可能多次遇到相同散列的程度(因此我仍然能够区分他们的系统),同时不再保留足够的熵来可逆 - 我不是确定适当的长度是多少,以及如果不是实际的 UUID,而是可以建立一组相当有限的潜在 UUID
- 向哈希添加一点额外的硬件,代价是它变得更有可能改变,但在某种程度上增加了源的熵