设备指纹通过收集客户端设备的特征属性信息并将其加密上传到云端,然后通过后台的算法分析为每台设备生成唯一设备ID 来标识这台设备。手机操作系统和浏览器厂商为了方便用户与开发者获取用户的设备信息,预留了一些API 供应用程序使用。用户和开发者可以通过这些API 获取客户端相关的软硬件信息,这些信息因设备而异,设备指纹通过部分的差异信息来生成完全独立的设备ID。
除通过各种API 获取一些相关的软硬件信息外,不同的终端设备在数据处理、图形渲染,以及与服务器通信等过程中也会存在一定的差异,这些差异属于设备的隐性特征。在一般情况下,单一维度的差异并不能形成标识设备的稳定特征。但是可以大量收集这些隐性特征,通过数据分析建模等方式组合使用,也可以成为建立设备ID 的重要因子。我们在日常生活中都见过双胞胎,他们长相相同、声音神似,但是他们处理某些事情的习惯还是有一定差别的。通过这些隐性信息构成的特征因子,可以有效降低同类机型的设备指纹碰撞率。
根据国家法律要求,设备指纹在生成设备ID 的过程中,不能使用用户的个人隐私信息,如通讯录、短信、手机号和通话记录都是不可触碰的数据。尽管这些数据具有非常强的唯一性,可以有效地提高设备指纹的准确性。
就设备指纹技术本身而言其门槛不算高,无非就是采集一些字段生成一个设备ID,在互联网上也有一些开源代码可以检索到。但是建立一个海量互联网用户场景下可以稳定使用的设备指纹系统,并不是想象中的那么容易。在构建设备指纹系统的过程中,不同浏览器型号和版本兼容、Android 碎片化机型适配、黑产伪造虚假设备手段识别及用户数据合规采集等方面均踩过坑,也收获了很多宝贵的经验,积累了很多技术方案。移动生态和黑产技术都在不断革新,很多方案在新系统上会失效设备指纹体系还需要不断克服诸多挑战。