互联网时代,用户拉新几乎是所有公司必须面对的话题,从投入运营的初期阶段到快速成长期,再到稳定的成熟阶段,拉新贯穿了产品的整个生命周期,毕竟有了新用户才能创造出价值。

而每拉一个新用户就意味着一个新的移动设备,如何唯一标识一个设备便成为一道永恒的技术难题。

 

硬件ID 作为保证设备指纹唯一性的基础属性,也伴随着设备指纹技术的提升不断演进。

今天我们就从设备指纹的硬件ID 属性说起。


1.以硬件ID 为唯一属性的设备指纹

众所周知,早期的设备指纹通过移动设备中硬件相关的编号/地址,简单的直接读取这些信息,可以完成简单的设备指纹功能。

主要分为以下几种:

1)IMEI

IMEI(International Mobile Equipment Identity)是国际移动设备识别码的缩写,俗称“手机串号”“手机串码”等,用于在GSM移动电话网络中识别每一部独立的手机。由15位数字组成“电子串号”,它与每台手机一一对应,而且该码是全世界唯一的,每个手机在IMEI组装完成后都将被赋予一个全球唯一的一组号码。

android 获取指纹唯一标识_安全

这个信息天然就带着“唯一”属性,用来当设备指纹再好不过了。

2)MAC地址

MAC(Medium/Media Access Control)地址,用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中前24位由IEEE(电气和电子工程师协会)分配给厂商,后24位由厂商自行分配,在正式量产的手机中是唯一的。接入网络的设备都有一个MAC地址,他们肯定都是不同的,是唯一的,自然也成为了设备指纹的一种。

android 获取指纹唯一标识_安全_02

3)SN序列号

SN序列号是手机出厂编号,序列号是设备厂商对这个设备的编号,用来提供质保,资产盘点功能,序列号具有唯一性,亦可以用来做设备指纹。

除此之外,早期的设备指纹还包括UUID(通用唯一标识符)、IDFA(广告标示符)、IDFV(Vendor标示符)等。


2.让渡用户隐私,硬件ID 不再成为设备指纹唯一属性

中期的设备指纹,硬件ID 不再作为唯一的设备属性,设备指纹厂商们也开始寻求更加多元化的保证设备指纹的唯一性。

其中以苹果手机为代表的操作系统厂商,出于隐私便利的要求,逐步禁止了开发者读取硬件信息。

android 获取指纹唯一标识_安全_03

比如iOS 5以上版本开始禁止获取IMEI,iOS 7 以上版本禁止获取MAC 地址。而Android 版本则从2.0版本开始App 需要申请权限才能获取MAC 地址。

 随着各手机厂商对权限的收紧和隐私政策的出台,可采集的信息逐步受限,像IMEI、MAC、IDFA就存在采集率的问题,当应用的安装量达到一定数量后,会发现采集率不到80%,而且采集到的数据质量也存在各种问题,比如会出现这样的MAC地址:“00:00:00:00:00:00”、“00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00”、“ff:ff:ff:ff:ff:ff”,所以在保证指纹稳定性上需要持续投入时间和精力去研究。

与此同时,随着隐私相关的法律逐渐生效,对数据的采集和使用也进入了一个新的阶段。法律对隐私相关的设备标识的采集和使用进行了严格的限制,如何在合规的范围内进行数据采集成为设备指纹的主要挑战之一。

android 获取指纹唯一标识_业务安全_04

 

手机厂商也自发的对市场内的App进行隐私合规整治,如vivo 7月19日发起的APP隐私合规问题专项整治行动。伴随着法律法规对于数据采集的限制,监管层面也开始对市场的App 进行审查通报,在百度键入App通报,其结果多达41400000个,足见其监管之严。

android 获取指纹唯一标识_业务安全_05

android 获取指纹唯一标识_移动设备_06

 

同时,硬件ID 作为个人隐私的相关信息,使用时也需满足复杂的条件,如:

1)在用户许可协议中声明;

2)在用户许可协议中使用加重,加粗字体方便用户阅读;

3)读取时需要结合应用场景,不是随时能读;

4)读取时需要控制频率;

5)在代码层面向操作系统申请权限。

复杂的条件造成App开发者不能读,不愿读,也大大降低了硬件ID作为设备指纹的通用性以及兼容性。

此外,随着黑灰产作弊手段的不断提升,操作系统如Android会使用特定的API向APP提供硬件ID信息,这些API属于关键API,攻击者使用调试、注入、改机等特定手段可以轻易的修改掉操作系统返回给APP的硬件ID信息。

android 获取指纹唯一标识_android 获取指纹唯一标识_07

显然,单纯使用硬件ID 作为设备指纹的唯一属性已经无法保证设备指纹的唯一性,需要设备指纹厂商加入更多识别标准来保证设备指纹的唯一性。


3.算法加持,端云交互,唯一性>99%

那么,在硬件ID 受到多重限制的情况下,如何保证设备指纹的唯一性?

顶象认为其关键在于算法。在《详解设备指纹核心算法》一文中,我们曾提到设备指纹的唯一性作为设备指纹的核心要素,一旦出现误差,则会出现误判。因此,为了保证设备指纹的唯一性,我们必须要把算法更新放在首位。

顶象设备指纹基于动态可变的算法,通过在网站或移动端集成 js 脚本或 SDK 来采集终端设备的硬件、网络、环境等非敏感的设备特征信息,使用特定算法为每一个终端设备生成一个全球唯一的设备 ID,并在访问业务系统时每次都分配一个临时标示串作为 token,进而实现对访客的服务鉴权、行为跟踪等。

前端设备指纹具体采集的方式包括:通过公有的 API 获取;通过探针感知方式获知设备的异常风险;采用顶象独创的采集方法获取。

就算法更新而言,日常的异常数据的检测仅靠应用是不够的,需要离线仓库定期分析当前的数据,对出现的异常特征可以及时发现并提取出来,然后反馈给线上进行算法优化。

同时,通过云+端模式,补足信息采集短板,显著增强设备攻防对抗的时效性和安全性,综合各行业的攻防经验和风险数据沉淀,当新的攻击方式和特征出现时,设备指纹能够更快的感知应对和准确识别。

设备指纹作为顶象防御云的一部分,集成了业务安全情报、云策略和数据模型,通过用户上网设备的硬件、网络、环境等特征信息生成设备的唯一标识,覆盖安卓、iOS、H5、小程序,可有效识别模拟器、刷机改机、Root、越狱、劫持注入等风险。

android 获取指纹唯一标识_移动设备_08

 

综上,不难看出,设备指纹技术从单一的硬件ID 发展到完善的技术体系,这背后离不开设备厂商对设备指纹的不断探索升级。