◆童瀛 姚焕章 梁剑 王玺罡 周宇
安全模型、算法与编程
基于跨浏览器指纹识别技术的应用研究
◆童瀛 姚焕章 梁剑 王玺罡 周宇通讯作者
(江苏省公安厅 江苏 210000)
跨浏览器用户行为追踪技术在互联网的很多领域都有广泛的应用,然而当前的技术存在准确度不高的问题。为了提高其准确度,本文对原有的技术进行了优化,构建了新型的跨浏览器行为追踪模型。在此模型中,我们提出将网络虚拟身份信息加入浏览器指纹特征信息中,提高了跨浏览器下用户身份识别的准确度。此外,我们采用嵌套JS的方式进行指纹信息采集脚本的传输,利用MurmurHash3算法进行浏览器指纹生成,采用混淆加密技术和优化后的Base64编码机制对回传数据进行处理,进而构造了一个高灵活性、可靠性、效率、隐蔽性和拓展性的跨浏览器行为追踪模型。
浏览器指纹;网络虚拟身份;行为追踪;隐蔽回传
针对用户网络行为的追踪技术由来已久,早在网络创建初期,主流的方法是通过IP(网际互联协议,Internet Protocol)地址进行用户识别。这种方法的明显弊端是IP地址动态分配、NAT(网络地址转换,Network Address Translation)、代理服务等技术的应用,使得无法直接利用IP地址标定用户,仅凭IP地址进行用户识别的准确度大打折扣,不能满足实际分析的需求。随着互联网技术的发展,B/S(浏览器/服务器,Browser/Server)架构的应用成了主流架构,对用户行为追踪研究转向了浏览器端,基于浏览器的指纹技术成为用户识别的主流技术方法。此方法综合用户浏览器各种特征信息,包括字体、屏幕分辨率、浏览器插件等,进行用户识别和进行用户上网行为追踪。早期的浏览器指纹技术仅限于单个浏览器,同一终端上的不同浏览器之间无关联。2017年,曹寅志等人提出综合操作系统和硬件特性进行跨浏览器指纹追踪[2],将同一用户在不同浏览器间的行为进行关联,打破了单浏览器追踪限制。然而,硬件设备信息和操作系统信息虽然能够在一定程度上对跨浏览器上网行为进行识别,但是这种识别技术是准确度不高,容易产生误差。
为了提高跨浏览器指纹识别技术的准确度,本文基于原有的跨浏览器追踪技术,构建了一种新型的跨浏览器行为追踪模型。首先,我们提出将网络虚拟身份信息加入浏览器指纹特征信息中,提高了跨浏览器下用户身份识别的准确度;同时,采用嵌套JS的方式进行指纹信息采集脚本的传输,提高信息采集过程的灵活性和隐蔽性;此外,采用MurmurHash3算法进行浏览器指纹生成,提高指纹生成过程的效率;最后,采用混淆加密技术和Base64编码处理回传数据,保障数据传输的效率和安全。
浏览器指纹,是指每个浏览器的特有信息。具体来讲,其具有同人类指纹类似的身份标识功能,是利用JavaScript(JS)脚本获取的浏览器的一些特征属性信息,之后通过哈希算法生成用于网络用户身份标识的字符串信息。针对基于浏览器指纹的用户身份识别技术,国内外研究人员已经做了大量的研究工作。1994年, Lou Montulli提出了Cookie的概念,这使得在无状态的HTTP协议下,可通过在Cookie中插入具有唯一性的指纹字段来对用户进行身份识别[3]。2010年,EFF的Peter Eckersley提出了浏览器指纹的概念,使得用户身份的追踪不需要依赖于Cookie[4]。2012年,Keaton Mowery提出了一种新的方案,通过HTML5的Canvas绘图标签生成Canvas指纹作为用户身份识别的依据[5]。2015年,Fifield等人提出了通过测量字体尺寸判断浏览器支持的字体的方法来对用户身份进行识别[6]。2015年,LukaszOlejnik等人提出通过当前的电池信息来对用户身份信息进行追踪[7]。2015年,在ToorCon安全会议上Yan Zhu提出了使用HTTP严格传输安全协议HSTS和内容安全协议CSP对用户的历史访问记录进行推断[8]。2015年,Diafygi在GitHub开源了机遇Webrtcaw来获取用户内网IP地址对方法来进一步对用户身份进行关联[9]。
基于浏览器指纹的用户身份识别技术的准确度取决于浏览器指纹的标识能力,而浏览器指纹的标识能力又取决于其不确定性程度,若不确定性越高,说明其唯一性越高,则标识能力越强。对于这种不确定性程度,我们采用信息论中的熵值进行度量,熵值越大,表明其信息量越大,其不确定性也就越大。因此,增加浏览器指纹信息的熵值是提高用户识别技术准确率的关键。
根据如公式(1)所示的离散型随机变量的熵的计算方法,变量分布越离散熵值越大。对于浏览器指纹来说,指纹特征项越多,其熵值越高,所标识的用户身份信息的唯一性便越高。因此,在原有浏览器指纹生成技术的基础上增加有效的浏览器特征项,能进一步增加浏览器指纹的用户标识能力。在Peter Eckersley的论文中,当其选取了HTTP请求头中的UA和Accept参数、屏幕分辨率、浏览器插件信息等8项特征生成指纹时,其综合计算得的熵值大于18.1,这意味着在286777个浏览器中才会出现两个相同的浏览器指纹。
网络虚拟身份是指用来表示某个独立网络用户身份的标识信息。为了进一步提高浏览器指纹的标识能力,本文提出将JSONP获取的信息作为一种网络虚拟身份信息加入指纹特征信息中。接下来对相关概念和如何利用JSONP获取网络虚拟身份信息进行介绍。
首先,JSON是一种轻量级的数据传输格式,被广泛应用于当前Web应用中。JSON格式数据的编码和解析基本在所有主流语言中都被实现,因此现在大部分前后端分离的架构都以JSON格式进行数据的传输。而JSONP (JSON with Padding)是 JSON 的一种“使用模式”,用于解决同源策略下数据的跨域读取问题。其中同源策略是Netscape 提出的一个著名的安全策略,此策略通过限制不同源网站之间的数据访问达到保护用户信息安全的目的。为了保护用户信息安全同时规避同源策略,产生了 JSONP技术,它可以让网页从其他的域名(网站)获取资料,即进行同源策略下数据的跨域读取。目前,此技术广泛应用于基于分布式技术的Web应用中。
3.协助部队侦潜。组建海上民兵侦潜分队,充分发挥海上民兵“船多势重”的优势,运用民船声纳、测鱼器侦测和目测观察等方法,实施“集群侦测、拉网排查、区域巡查”,配合反潜机、反潜舰在任务海域组织侦潜,发现目标并跟踪上报。
在JSONP技术广泛应用于当前Web应用的背景下,我们可以通过分析JSONP数据流获取到一些与用户身份相关的信息。具体地说,当未很好地对客户端的reference信息进行校验时,JSONP接口经常会泄漏一些网站用户的身份信息,如具有唯一表示信息的用户ID以及用户名等隐私信息。我们甚至可以通过分析其中的一些用户数据,再结合公安系统数据进一步溯源,挖掘出用户的真实身份。因此,我们提出将分析JSONP数据流获取到的用户虚拟身份信息作为一个特征加入浏览器指纹的生成中,来提高浏览器指纹特征的熵,从而提高跨浏览器指纹识别技术的准确度。
本文在原有跨浏览器行为追踪技术的基础上,构建了新型的行为追踪模型。如图1所示,模型分为服务器端和Web前端两部分。为了进行用户指纹信息收集,我们在服务器端预先部署具有信息采集功能的JS脚本,同时,在前端HTML页面中设计有加载远程服务端JS脚本的JS代码,用以向服务端获取信息采集JS脚本。其流程如下:首先,用户了访问了相应的HTML页面后,页面的