分享、发现微信公众号

设备指纹识别系统的实现-简介篇

2016-07-29云誉

概要

本系列文章将介绍关于设备指纹识别系统的实现过程。首先初步介绍设备指纹产生的背景、实现原理以及设备指纹的主要应用场景。然后将重点介绍客户端信息的采集以及相关算法实现。同时,我们将分析一些主流的网站设备指纹的采集及其实现逻辑。然后会针对具体的业务场景,给出设备指纹的具体使用方式。最终构建一简单的设备指纹识别系统。


其中本篇文章将简单介绍设备指纹的产生背景,实现原理以及应用前景。


设备指纹简介

人的指纹千变万化,具有唯一性,可以作为人的身份标识。同时人的姓名、身份证号、相貌特征也可以作为唯一的身份标识。对于设备而言,其也有可以用于识别的特征。比如设备的唯一序列号、设备的生产ID等。


设备指纹(Device Fingerprinting)是什么?

简单来讲,设备指纹是指可以用于唯一标识出该设备的设备特征或者独特的设备标识。


设备指纹包括一些固有的、较难篡改的、唯一的设备标识。比如设备的硬件ID,像手机在生产过程中都会被赋予一个唯一的IMEI(International Mobile Equipment Identity)编号,用于唯一标识该台设备。像电脑的网卡,在生产过程中会被赋予唯一的MAC地址。这些设备唯一的标识符我们可以将其视为设备指纹。


同时,设备的特征集合可以用来当做设备指纹。我们将设备的名称、型号、形状、颜色、功能等各个特征结合起来用于作为设备的标识。这就类似于我们在记忆人的时候,通常是通过人的长相、面部特征来记忆。



设备指纹背景介绍


在用户访问网站的过程中,网站需要跟踪用户在当前页面执行了哪些操作。比如搜索了哪些关键词、浏览了哪些商品,该设备的用户今天尝试登录了多少次,注册了多少个账号等等。


1.基于cookie的用户追踪

HTTP是无状态协议,cookie技术的产生使得用户可以将相关的状态存储在本地客户端,进行会话保持,同时使得服务端能够知晓用户当前所处的状态。通常是访问网站时,网站生成一随机的唯一标识id返回给客户端存储。客户端在之后的每次请求中都会携带该标识符。用户在当前页面执行查询、购买、评价等行为时候,服务端都会将行为进行记录。


2.持久化cookie

针对很多cookie会被清理的问题,为了使得cookie更持久,用于用户追踪,就产生了像evercookie类似的技术,其不仅设置cookie,同时会将cookie的值存储在Flash Local Shared Objects或者HTML5 StorageIndexDBIEuserData Storage等位置,其甚至还会利用JAVA的安全问题,比如CVE-2013-0422绕过applet沙盒,然后将cookie存储到用户的本地文件里。evercookie的具体实现过程可以访问其[项目文档](https://github.com/samyk/evercookie),此种技术产生已久,现在的垃圾清理基本可以做到完整清理cookie了。


3.cookie的用户追踪

由于cookie存储于客户端,可被清理,同时目前浏览器都会提供隐身访问模式,在关闭浏览器页面后cookie等信息会被自动删除。基于cookie的用户跟踪还会有隐私问题,无cookie的技术应运而生。


Mayer(具体可参照其paper,Any person... a pamphleteer” Internet Anonymity in the Age of Web 2.0)2009年以及Eckersley(具体可参照其paperHow Unique Is Your Web Browser?)2010年都曾提出基于浏览器的特征以及插件信息,不依赖cookies进行设备的识别。


由此基于无cookie的设备识别技术就产生了,即我们通常所说的通过设备指纹来进行设备识别、用户追踪。设备指纹识别系统则是通过收集众多的设备指纹信息,通过指纹信息定位设备,从而跟踪其在网站的行为。


设备指纹的实现原理

日常生活中我们通过姓名来区分人,在辨别或记忆人时通常是通过他的相貌,面部特征来进行。设备指纹的实现原理也类似,其通过获取设备的各项信息,然后综合各个特征,按照一定算法形成该设备的标识符(即设备指纹)用于区分识别设备。


实现流程


流程图:


说明:

设备指纹的实现过程,通常是通过用户的客户端,比如web浏览器、app应用、pc软件等,将用户的设备信息提取,按照一定的hash算法计算获得一个唯一id,同时如果某服务包含业务数据,那设备信息通常是与业务数据进行关联的,并一同发送至设备指纹服务端进行处理并存储。设备指纹服务端在收到用户的数据,按照自己的存储方法,算法进行存储关联。当然由于用户的设备信息可能会有变更,比如ip地址等,所以会伴随多次的信息采集,多次的设备id计算。


在随后的业务请求中,通过设备指纹识别系统的算法进行设备的识别与关联。


信息采集

设备指纹识别系统的实现必然伴随信息的采集。主要分为主动和被动的信息采集。


被动的信息采集

在发起网络请求,一些基本的属性会自然携带。比如用户的IP信息、端口、请求头以及User-Agent等信息。

主动的信息采集

是指在设备上执行特定的代码,来采集所需的设备信息。比如通过代码采集设备的mac地址、操作系统版本、CPU型号等信息。


其中基于浏览器的设备指纹采集较为常见。浏览器的设备指纹通常需要如下一些内容,通过在浏览器执行js或在flash代码,获取设备信息。比如UserAgent、时区、屏幕大小、浏览器插件、系统安装字体、浏览器的canvas的特征、浏览器的webgl特征等等,具体实现我们将在之后的文章中阐述。


设备指纹的应用场景


1.行为追踪

用户行为追踪主要与业务相关。比如购物类的网站其会采集用户的设备信息,并根据设备指纹信息对用户进行相关的商品推荐。当然类似商品推荐只是一方面,更多的是对于采集的信息形成设备指纹,给用户提供较好的业务服务以及安全保障。比如检测到用户的风险登录、更换设备登录会要求用户进行较强的二次验证。


2.广告推广

是指结合用户的搜索记录、浏览记录等,对设备进行记录,针对性地推送广告。对于清理cookie、开启广告block、禁止追踪的情况,基于设备指纹识别的技术可以使得广告推送同样精准。


3.反欺诈

其实设备指纹在反欺诈风控中扮演着重要角色。通过设备指纹系统可以给相关业务提供安全保障。比如现在风险较高的垃圾注册、盗号、撞库、异地登陆等异常的行为,采用设备指纹识别系统可以得到有效的控制。


    1)点击欺诈

    点击欺诈,主要是应用在广告作弊方面。广告方按照用户点击广告的次数提供佣金。基于指纹的识别技术可以统计出相同设备点击广告的次数,找出广告作弊的请求,从而可以减少点击欺诈。

    2)金融反欺诈

    我们在[金融反欺诈-海外信用卡黑色产业链](drops.wooyun.org/news/14382)一文中简单提过设备指纹,其在信用卡反欺诈中扮演着重要角色,是风控模型中的一个重要维度。同时在金融交易中,需要确保当前交易在一可信的设备上,这依赖设备指纹识别系统。


    3)防薅羊毛

    薅羊毛的场景一般如下,羊毛党批量注册用户,并领取实物、优惠券、返现券等。批量注册行为一般伴随代理IP的切换,但设备可能不会变化。所以可以基于设备指纹进行设备识别,对同一设备注册账号、参与活动次数进行计数,并设置相关的防控规则。


总结

设备指纹有着广阔的应用前景。伴随互联网诞生有一句经典的论断在互联网上,没人知道你是一条狗。然而随着互联网的发展逐渐成为人类的第二空间,网民无法识别身份、无法自证信誉已经极大的阻碍互联网业务的拓展。

现实社会有着成熟的征信系统,对于一般安全需求的场景可能仅需要用户用身份证来自证身份即可准入,对于高风险场景(如贷款)甚至需要征信记录才能准入。那么互联网场景是否可以建设成熟的征信体系呢?

互联网征信体系建设有两种思路,一是直接将线下的征信迁移至线上,一是既然互联网已经是一个成熟的生态,那么直接基于用户在互联网的活动记录进行信誉评分。而设备指纹即是互联网信誉评分的基石。

目前,基于设备指纹的的风险防控服务已经逐渐成熟。 在国外,比较成熟的商业化公司有ThreaMetrix,该公司有着海量的设备信息,并拥有自己的设备识别算法与设备信誉评级。国内的像阿里巴巴云誉反欺诈,基于阿里的大数据,通过自有的行为收集和机器学习模型,提供成熟的设备信誉、风控服务。


提交公众号
云誉反欺诈是基于阿里的信誉数据,通过领先的行为收集技术和机器学习模型,输出大数据风控服务能力,解决账号、活动、支付等关键业务环节存在的欺诈威胁,降低企业经济损失.

云誉的二维码

微信扫一扫

云誉的标签

广告一下^_^