设备指纹是什么?作用是什么?特性是什么?有哪些相关技术呢?

好,带着这些问题,我们一一来解答。

什么是设备指纹

设备指纹或者设备ID,表现形式是一串符号,映射现实中的一台设备,如果这种映射关系是唯一的,那么就称为唯一设备ID:Unique Device Identifie.

设备指纹的作用

设备ID既然可以作为衡量某一设备的标准,那么在网络世界中就可以当作一个网络标识用来统计该标识对应的行为,同样有些网络应用的广告推送也需要凭借设备ID找出哪些唯一客户,再则有应用有收益的地方就有风险,所以又可以结合设备ID来做风险管控。具体可以分为三类:

1)统计需求

2)业务需求

3)风控需求

设备指纹涉及到的技术

知道了什么是设备指纹,那么怎么得到设备指纹是一项技术;如何应用设备指纹又是另外一项技术。这里我们讨论如何得到设备指纹的技术。

设备指纹数据的采集方案

通常设备指纹的采集方式分为三种:

  1. 主动式- 主动采集设备N多信息,比如UA、MAC地址、设备IMEI号、广告追踪ID等与客户端上生成唯一的device_id。局限性有:不同生态的平台对用户隐私数据开放权限不同,很难统一生成唯一识别码,且无法实现Web和App跨域统一。主动式设备指纹另一个局限性,由于强依赖客户端代码,这种方式生成的指纹在反欺诈的场景中对抗性较弱。
  2. 被动式-被动式设备指纹技术在终端设备与服务器通信的过程中,从数据报文的OSI七层协议中,提取出该终端设备的OS、协议栈和网络状态相关的特征集,并结合机器学习算法以标识和跟踪具体的终端设备。与主动式设备指纹技术相比,被动式设备指纹并不必须在设备终端上嵌入用于收集设备特征信息的JS代码或SDK,其所需要的设备特征都是从终端设备发送过来的数据报文中提取,这也是其所谓“被动式”的原因。好适用范围更广,一些无法植入SDK和JS的场景也可以使用。同时跨Web/App,以及同步浏览器同一兼容性识别,主动式设备指纹技术,因为相对来说更为简单直接,所以业界大部分设备指纹技术厂商提供的都是该类设备指纹服务。被动式设备指纹技术,由于其需要使用机器学习技术构建设备指纹分类算法模型,具有较高的技术壁垒,因而还处于推广起步阶段。
  3. 混合式-即既有主动采集部分,又有服务端算法生成部分。通过植入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个随机数,则大约其中一组会有重复的数字。

生成设备指纹的技术

拼接

“拜占庭容错方案”

实用拜占庭容错(PBFT)算法

还在调研中~~~

参考

【1】漫谈唯一设备ID

【2】Android设备唯一标识的获取和构造

【3】设备指纹前世今生

【4】设备指纹介绍

终端安全-设备指纹篇相关推荐

  1. 设备指纹系列--前端篇

    基础篇请看:设备指纹系列–基础篇 我们接着前文继续写关于设备指纹前端接入方面的内容.话不多说,直接步入正题. 我们会在下文展示5种前端接入的方式,包括web接入.安卓接入.ios接入.微信小程序接入以 ...

  2. 反欺诈之设备指纹(下篇)

    反欺诈的两个最基本的判断点:一个是集中类,比如中介大规模来袭,另一个是交叉类.我们根据不同的业务场景,基于这两则最基本的判断,是我们做反欺诈的出发点和业务基点. 我们上一篇提到了具体的主动式的设备指纹 ...

  3. 金融风控必备:想从手机上做风控管理?原来还可以从设备指纹入手

    设备指纹:用户登录网页.APP时,后台记录的登录设备的"指纹",能够准确识别该设备是否曾经登录过.设备指纹的核心是使用设备的唯一识别码. 使用该唯一识别码,可以追踪用户登录网页.A ...

  4. 基于设备指纹零感验证系统

    作者: 我是小三 博客: http://www.cnblogs.com/2014asm/ 由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: android 4.4 ...

  5. 同盾设备指纹简单分析及手机相关ID了解

    参考 同盾设备指纹简单分析 同盾设备指纹分析 研究了下设备指纹,我发现设备指纹无非三个方面. 1.设备指纹不可伪造性 2.设备指纹唯一性(降低重码数)3.设备篡改可识别性 下面分别说说以上三个方面. ...

  6. 人工智能反欺诈三部曲——设备指纹

    编者按: 上次我们着重介绍了反欺诈的一项核心技术:特征工程. 在反欺诈的技术金字塔中,特征工程起着承上启下的作用.而居于特征工程的下一层的是基座层:数据.在机器学习里,大家有一个共识,高质量.相关的数 ...

  7. 人工智能反欺诈三部曲之:设备指纹

    上次我们着重介绍了反欺诈的一项核心技术:特征工程. 在反欺诈的技术金字塔中,特征工程起着承上启下的作用.而居于特征工程的下一层的是基座层:数据.在机器学习里,大家有一个共识,高质量.相关的数据决定模型 ...

  8. 零基础学Linux内核之设备驱动篇(8)_设备模型

    零基础学Linux内核系列文章目录 前置知识篇 1. 进程 2. 线程 进程间通信篇 1. IPC概述 2. 信号 3. 消息传递 4. 同步 5. 共享内存区 编译相关篇 1. GCC编译 2. 静 ...

  9. 设备指纹学习笔记和思考

    设备指纹:用户登录网页.APP时,后台记录的登录设备的"指纹",能够准确识别该设备是否曾经登录过.设备指纹的核心是使用设备的唯一识别码.使用该唯一识别码,可以追踪用户登录网页.AP ...

最新文章

  1. python像素处理_Python 处理图片像素点的实例
  2. U盘被写保护的解决办法
  3. 选择分集matlab程序,瑞利衰落信道下采用MRC分集误码性能Matlab程序
  4. php表单数据写入txt文件_vba写入txt数据,发生数据丢失的奇怪现象
  5. 微信小程序多位验证码/密码输入框
  6. 《挑战程序设计竞赛》---算法高级篇
  7. unity update 协程_[转载]【转载】unity3D中使用协程来做“多次调用一次更新”特性的一个大坑。...
  8. The requested PHP extension ext-redis * is missing from your system. Install or enable PHP's redis e
  9. Servlet+JSP分页
  10. win10环境下matlab2017b编译运行c++文件步骤
  11. (原创)数字电路设计基础 大一期末 项目 交通灯控制器设计
  12. 2018厦门大学计算机技术分数线,2018厦门大学专业排名及分数线 王牌专业有哪些...
  13. python输出n的32次方_在Python中,如何将2的32次方-1的值存放到g中?
  14. [战略]Fans未来战略--第3篇--以文会友
  15. [6.2] UI Automation with the Modern Experience-UiPath ARD Certification Training
  16. 程序猿敲击代码的指法推荐
  17. delphi源码三层框架【框架简介】
  18. 求和计算机教案,小学信息技术《自动求和》教案
  19. Java字节码文件和二进制文件的区别与联系
  20. 网络管理利器,通过IP地址查询跟踪网络

热门文章

  1. 2020软件设计师题目+答案(个人记忆+网上资料)
  2. 时域高通滤波算法(THPF)
  3. 详解 CSS position定位的五种方式
  4. 安装好Ubuntu18.04之后要做的事!!大全、详细教程!
  5. input js number 整数_数字千分位处理,number.js,js保留两位,整数强制保留两位小数...
  6. python popen阻塞_python subprocess.Popen系列问题
  7. Pancake光机普及 VR终端瘦身
  8. putty和Xming的使用详细教程
  9. java实现种子填充算法,Java编写图形学的种子填充算法
  10. 1、猜数字游戏:一个类A有两个成员变量v、num,v有一个初值100。定义一个方法guess,对A类的成员变量v,用num进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。在main方法