编写目的
本文主要阐述目前互联网上用于反欺诈解决方案,设备指纹技术。
相关代码实现已上传 https://github.com/CreateSuccess/DevFtGather
设备指纹技术
设备指纹是可以用于唯一标识出该设备的设备特征,设备指纹应用平台主要为手机、Pad、PC等互联网设备。设备指纹技术实现方式分为三种:主动式、被动式、混合式。
主动式设备指纹采集技术
主动式指主动采集设备上固有的、较难篡改的、唯一的设备标识作为设备指纹,用于唯一标识该台设备。
这类设备标识统称为采集要素,如设备IMEI,MAC等,为保证设备指纹采集技术的准确性和唯一性,需要使用多个采集要素,将这些信息组合起来使用特定的Hash算法得出设备指纹ID值。同时,考虑到设备指纹的稳定性,一般还会结合其他的持久化的存储技术,将设备指纹ID长期保存起来。
采集要素:
表一 设备指纹Andorid端采集要素
要素名称 | 采集字段名称 |
IMEI | 国际移动设备识别码 |
IMSI | 国际移动用户识别码 |
DeviceID | 设备ID |
MAC | MAC地址 |
MemoryInfo | 系统内存信息 |
CPU_ABI | 设备指令集名称 |
表二 设备指纹PC端采集要素
要素名称 | 采集字段名称 |
CPUID | CPUID操作码 |
SERIALNUMBER | 硬盘序列号 |
ProductId | Windows的产品ID |
MachineGUID | Windows安装时会唯一生成一个GUID |
UUID | 主板UUID |
局限性:
- 由于该类技术需要主动获取终端用户设备乃至隐私信息,不同生态的平台对用户隐私数据开放权限不同,很难统一生成唯一识别码。
采集要素的变化会影响设备指纹的稳定性,如一个设备可能存在有线、无线、蓝牙等多个MAC地址,随着不同连接方式的改变,每次MAC地址也会改变。设备重装后MachineGUID会改变等。
被动式设备指纹采集技术
被动式指在终端设备与服务器通信的过程中,从数据报文的OSI七层协议中,提取出该终端设备的OS、协议栈和网络状态相关的特征集,并结合机器学习算法以标识和跟踪具体的终端设备。
被动式设备指纹采集不在收集设备特征信息,更为简单直接,适用范围广。大部分设备指纹技术厂商提供的都是该类设备指纹服务。
局限性:
- 由于其需要使用机器学习技术构建设备指纹分类算法模型,具有较高的技术壁垒。
- 由于其需要使用复杂的机器学习算法来进行设备的识别,所以占用的处理资源较多,响应时延也要比主动式设备指纹更长。
混合式即既有主动采集部分,又有服务端算法生成部分。
主动去采集要素,并与服务端交互,通过算法混淆加密后,在服务端生成唯一的设备指纹识ID,同时写入唯一ID存于缓存中。
一定时间内,用户再次使用对应业务时,无需大量重新上传采集要素,只需比对要素变化比例,通过加权比对,计算得出置信度数值,并通过阈值判断是否重新生成设备指纹码。正常用户在使用时理论上是无感知且很少会主动篡改设备指纹唯一ID。
混合式设备指纹技术克服了主动式设备指纹和被动式设备指纹技术各自的固有的缺点,在准确识别设备的同时扩大了设备指纹技术的适用范围。
如果选取被动式或者混合式指纹采集技术,建议选取专业的设备指纹厂商获取服务。如果选取主动式指纹采集技术,则需要衡量安全性、准确性和稳定性之间的平衡。采集过多的要素,会增加软件出现问题的几率。