生成机器指纹最佳方式吗?指纹、机器、方式

2023-09-03 00:34:32 作者:囚绿记

我需要生成一个唯一的字符串,它会从不同的机器对机器 - 设备指纹

I need to generate a unique string that will differ from machine to machine -- a "device fingerprint".

什么是...

对于自定义实现在可能的办法是什么? (我有一些想法,但我想你们可能有更好的) 在现有的解决方案? (包括商业/非商业是可以接受的)

推荐答案

设备指纹识别是一个复杂的话题,如果你想覆盖的众多优势的情况下(如硬件升级,操作系统升级等),如果你担心的人花费精力要么建立一个已知良好的设备指纹(好的意思指纹是众所周知的你,并接收一些好处,如软件使用权),或创建一个全新的指纹,你所不知道的(如指纹是在一个黑名单某种,和用户想要创建一个新的设备ID为设备不在黑名单上)。

Device fingerprinting is a complex topic if you want to cover the many edge cases (e.g. hardware upgrades, OS upgrades, etc.) and if you are worried about people expending energy to either forge a known-good device fingerprint (good meaning the fingerprint is known to you and receives some benefit such as software usage rights), or create a brand-new fingerprint you have no knowledge of (e.g. the fingerprint was on a blacklist of some sort, and the user wants to create a new Device ID for the device that is not on the blacklist).

有些东西是相当静态的,一个简单的指纹了合理的基础。 MAC地址最适合这一类,但也很容易改变。此外,某些计算机有多个MAC地址(包括Mac的从虚拟机),所以你需要处理的复杂性。一些网络设备是短暂的,例如系留手机。

Some things are fairly static and a reasonable basis for a simple fingerprint. MAC address best fits that category, but is also very easy to change. Also, some computers have several MAC addresses (including MAC's from virtual machines), so you need to deal with that complexity. Some network devices are ephemeral, e.g. tethered cell phone.

计算机的其他方面是很难(但绝非不可能)伪造,如CPU信息,BIOS校验,硬盘序列号等。这些东西往往是难以伪造,但是,也更可能改变(BIOS升级,新的硬盘驱动器,可移动硬盘驱动器等)。

Other aspects of the computer are harder (but by no means impossible) to forge, such as CPU information, BIOS checksum, hard drive serial numbers, etc. Those things that tend to be harder to forge, however, are also more likely to change (BIOS upgrade, new hard drive, removable hard drives, etc).

您还需要认真考虑保护code,实际上产生指纹。如果code是容易的(足够的)破解,有人企图击败你的解决方案将只需插入任何指纹,他们直接要在code,它收集和评估组件。

You also need to consider carefully protecting the code that actually generates the fingerprint. If that code is easy (enough) to hack, someone attempting to defeat your solution will simply insert whatever fingerprint they want directly in the code that gathers and evaluates components.