首页 > 其他分享 >论设备指纹的唯一性:始于硬件ID,终于云端交互

论设备指纹的唯一性:始于硬件ID,终于云端交互

时间:2022-08-30 16:47:35浏览次数:83  
标签:00 唯一性 指纹 硬件 ID 设备

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

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

顶象曾在之前的系列文章《如何保证设备指纹“不变心”》一文中提到,设备指纹是指通过用户上网设备的硬件、网络、环境等特征信息生成设备的唯一标识,并且这个唯一标识在移动设备的生命周期内不会发生变化,方便对移动设备进行认证,追溯等。

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

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

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

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

主要分为以下几种:

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

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

2)MAC地址

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

3)SN序列号

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

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

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

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

比如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”,所以在保证指纹稳定性上需要持续投入时间和精力去研究。

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

下期我们将就设备指纹的攻防对抗出发详解顶象设备指纹的攻防对抗性,敬请期待!

标签:00,唯一性,指纹,硬件,ID,设备
From: https://www.cnblogs.com/dingxiang-inc/p/16639914.html

相关文章

  • java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.
    mybatis报错:java.lang.IllegalArgumentException:invalidcomparison:java.util.Dateandjava.lang.String]withrootcause原因及解决:背景:数据库中的时间字段是data......
  • Android 添加shape, selector等资源文件
    右键点击drawable文件夹,选择new->DrawableResourcefile  在弹出的NewResourcefile界面中,将Rootelement定义为shape,就可以添加一个shape文件;将Rootelement定义......
  • Android代码混淆常见配置
    项目发布之前混淆是必不可少的工作,混淆可以增加别人反编译阅读代码的难度,还可以缩小APK包。一、使用原理:见:ProGuard的作用、使用及bug分析(http://www.trinea.cn/android/pr......
  • [Typescript] Step5. Local types override
    Step5.LocaltypesoverrideYoucanfindmany@typespackagealongwiththelibraryyouuse.Buttheproblemisthatthose@typesmightcontainbugsbecausela......
  • idea快捷键
    提高开发效率的常用快捷键1.sout:System.out.println()2.删除当前行:ctrl+d3.复制当前行:ctrl+c4.粘贴:ctrl+v5.剪切:ctrl+x6.注释当前行:ctrl+/7.注释选中行:ctrl+shif......
  • Fiddler之常用的操作
    Fiddler操作一、首次安装1、设置httpsTools→Options→https第一次选择安装证书,如图    2、无法正常显示https请求重置所有证书,重置后会重新提示安装证......
  • 交换机、网卡、局域网、IDC数据中心、 磁盘阵列相关
    交换机交换机是一种存储转发设备。以太网交换机采用存储转发(store-forward)技术活直通(cus-through)技术来实现信息帧的转发,也成为了交换式集线器。交换机和网桥的不同在于:交......
  • AndroidStudio使用命令行出包
    AndroidStudio使用命令行出包使用命令行出包的两种方式:方案1、Apacheant命令行出包(弃用)。方案2、AndroidGradle命令行出包。先说方案1,此方案为古老传说流传下来的出......
  • idea常用插件
    1.mybatisxmybatis插件2.gittoolboxgit管理插件3.ideevalresethttps://plugins.zhile.io破解插件4.restfulfastrequestapi请求5.saveactions格式化6.seq......
  • idea 编译 错误 Error:java: Compilation failed: internal java compiler error 解决
    手动修改(可能会被idea自动改回1.5)修改为对应的编译版本在工程的pom中添加如下配置<build><plugins><plugin><groupId>org.apache.maven.......