设备指纹是什么?作用是什么?特性是什么?有哪些相关技术呢?
好,带着这些问题,我们一一来解答。
什么是设备指纹
设备指纹或者设备ID,表现形式是一串符号,映射现实中的一台设备,如果这种映射关系是唯一的,那么就称为唯一设备ID:Unique Device Identifie.
设备指纹的作用
设备ID既然可以作为衡量某一设备的标准,那么在网络世界中就可以当作一个网络标识用来统计该标识对应的行为,同样有些网络应用的广告推送也需要凭借设备ID找出哪些唯一客户,再则有应用有收益的地方就有风险,所以又可以结合设备ID来做风险管控。具体可以分为三类:
1)统计需求
2)业务需求
3)风控需求
设备指纹涉及到的技术
知道了什么是设备指纹,那么怎么得到设备指纹是一项技术;如何应用设备指纹又是另外一项技术。这里我们讨论如何得到设备指纹的技术。
设备指纹数据的采集方案
通常设备指纹的采集方式分为三种:
- 主动式- 主动采集设备N多信息,比如UA、MAC地址、设备IMEI号、广告追踪ID等与客户端上生成唯一的device_id。局限性有:不同生态的平台对用户隐私数据开放权限不同,很难统一生成唯一识别码,且无法实现Web和App跨域统一。主动式设备指纹另一个局限性,由于强依赖客户端代码,这种方式生成的指纹在反欺诈的场景中对抗性较弱。
- 被动式-被动式设备指纹技术在终端设备与服务器通信的过程中,从数据报文的OSI七层协议中,提取出该终端设备的OS、协议栈和网络状态相关的特征集,并结合机器学习算法以标识和跟踪具体的终端设备。与主动式设备指纹技术相比,被动式设备指纹并不必须在设备终端上嵌入用于收集设备特征信息的JS代码或SDK,其所需要的设备特征都是从终端设备发送过来的数据报文中提取,这也是其所谓“被动式”的原因。好适用范围更广,一些无法植入SDK和JS的场景也可以使用。同时跨Web/App,以及同步浏览器同一兼容性识别,主动式设备指纹技术,因为相对来说更为简单直接,所以业界大部分设备指纹技术厂商提供的都是该类设备指纹服务。被动式设备指纹技术,由于其需要使用机器学习技术构建设备指纹分类算法模型,具有较高的技术壁垒,因而还处于推广起步阶段。
-
混合式-即既有主动采集部分,又有服务端算法生成部分。通过植入SDK和JS,埋点在固定的业务场景,被动触发时的主动去采集要素,并与服务端交互,通过算法混淆加密后,在服务端生成唯一的设备指纹识ID,同时写入唯一ID存于app应用缓存或浏览器cookie中。一定时间内,用户再次使用对应业务埋点页面时,无需大量重新上传采集要素,只需比对要素变化比例,通过加权比对,计算得出置信度数值,并通过阈值判断是否重新生成设备指纹码。正常用户在使用时理论上是无感知且很少会主动篡改设备指纹唯一ID。
混合式设备指纹技术克服了主动式设备指纹和被动式设备指纹技术各自的固有的缺点,在准确识别设备的同时扩大了设备指纹技术的适用范围。对于Web页面或App内部的应用场景,可以通过主动式设备指纹技术进行快速的设备识别;而对于不同的浏览器之间、Web页面与App之间的设备识别与比对关联,则可以利用被动式设备指纹的技术优势来实现。
【图】混合设备指纹采集流程
设备ID的特性分析
唯一性:两台不同的设备获取到的设备ID不相同;
稳定性:同一台设备在不同的时间, 获取到设备ID相同。
分析唯一性,我们可以从ID的分配来入手:
-
1、按规则构造
比如自增ID(包括分步自增),分段构造的ID(如snowflake算法)等,此类ID能保证唯一性。
设备ID中的IMEI,设备序列号,MAC等,都是按照规则构造的,理论上能保证唯一性。
设备序列号是对厂商本身唯一,全局唯一需要在加上 Build.MANUFACTURER。
不过,设备序列号和MAC的唯一要打个问号,因为要看厂商是否遵守规则。
但随着手机产业的日渐成熟,传统意义上的山寨设备已越来越少,所以大多数情况下还是唯一的。 -
2、随机生成
比如UUID和Android ID,这类ID有一定的概率会重复,关键是看ID的长度(有多少bit)。
有人做了这样一张随机数的冲突概率表:
左边第一栏是bit数量,第二栏是对应的取值范围,再后面是元素个数以及对应的冲突概率。
例如,假如有50000个32bit的随机数,则这些随机数中,至少有两个相同数字的概率为25%;
换一种说法,就是假如有四组数,每组都有50000个随机数,则大约其中一组会有重复的数字。
生成设备指纹的技术
拼接
“拜占庭容错方案”
还在调研中~~~
参考
【1】漫谈唯一设备ID
【3】设备指纹前世今生
【4】设备指纹介绍
来源:oschina
链接:https://my.oschina.net/u/4309418/blog/4906147