冯映燕,陈明志,许春耀,康年华,林伟宁
(1.福州大学 a.数学与计算机科学学院;b.网络系统信息安全福建省高校重点实验室,福州 350108;2.武警福州指挥学院 研究部,福州 350002)
浏览器指纹主要用于用户追踪、身份认证、用户识别等领域[1-3]。浏览器指纹是一种基于浏览器信息组合的识别方法,通过浏览器平台从配置信息、软件组成以及硬件组成等层次获取到设备的屏幕信息、插件信息、字体信息等特征参数[4-5]。最后通过哈希函数组合形成可以唯一识别用户的指纹数据[6-8]。
目前就浏览器指纹技术取得了以下研究成果:文献[9]提出了一种与Cookies功能相似的用户识别方法,称之为浏览器指纹,并通过实验验证了浏览器指纹具有较高的识别率。文献[6,10]对三大商业指纹算法中的特征参数获取方式进行了对比分析,发现限制Flash与JavaScript的功能能够有效地抑制指纹生成,进而提出了干扰浏览器指纹生成的方法。文献[11-12]提出了一种结合HTML5的API与Javascript优势的指纹识别方法,实现了基于HTML5的指纹识别,其中最典型的HTML5指纹方式为帆布指纹。文献[13-14]提出了JavaScript引擎指纹这一技术,由于不同浏览器的JavaScript引擎具有细微的区别,因此可利用微小的差异制作指纹。文献[15]将现有浏览器指纹分为浏览器定制指纹、帆布指纹、JavaScript引擎指纹以及跨浏览器指纹4大类,同时对4类指纹的工作原理及优缺点进行分析,提出了干扰指纹生成的方法。文献[9,16]为解决无法完全识别回访用户的问题,提出了一种基于浏览器指纹相似度的用户识别方法,通过逐位比较指纹间字符串的相似度,在一定的相似范围内,则认为指纹为回访用户的更新指纹。
当前文献主要研究不同类型的浏览器指纹的工作原理及干扰指纹生成的方法,较少有文献关注特征参数变化后导致指纹静态匹配方式无法完全识别回访用户的问题。因此,本文提出一种新的基于浏览器指纹差异度的回访用户识别算法,该算法首先定义8个指纹特征参数的局部差异度计算方法,加权求和得到衡量两个指纹之间差异度的公式,接着将指纹间差异度值与事先设定的差异度阈值作对比,进而判断用户是否是回访用户。最后通过实验评估该算法的执行效果。
浏览器指纹是由具有微小差异的特征参数通过哈希函数组合而成。
组成指纹的特征参数信息与用户个人习惯以及应用环境息息相关,将特征参数组合在一起时能够有效地区别用户个体特征,因此可以作为用户识别的依据。其中指纹的制作过程如图1所示。
图1 指纹制作示意图
由图1可知,从浏览器平台中的配置信息、软件组成、硬件组成等层次可获取特征参数。本文选取的指纹特征参数主要包括以下8个:字体,插件,User agent,屏幕信息,时区,HTTP-Accept,Video,Cookies_enabled(指的是Cookies能否接受设置,返回值为True或False)。上述特征参数的选取沿用了文献[9]中的特征参数。
令一个浏览器指纹算法为BF(·),给定一个新的浏览器信息x,生成一个浏览器指纹BF(x),其离散概率密度函数为P(fn),n∈[0,1,…,N]。首先,引入自信息I的概念,其定义如式(1)所示。
I(BF(x)=fn)=-loga(P(fn))
(1)
其中,自信息量I表征该浏览器指纹包含信息的比特数。
P(fn)的信息熵H(BF)为浏览器指纹自信息量的期望值,其定义如式(2)所示。
(2)
其中,H(BF)的值越大,区分不同浏览器的准确性越高。
浏览器指纹由不同的特征参数组合而成,单独讨论每个特征参数的信息量并定义指纹特征参数的信息熵。设某个指纹特征参数为a,其自信息量与信息熵计算方法分别如式(3)和式(4)所示。
I(fn,a)=-loga(P(fn,a))
(3)
(4)
对于两个相互独立的特征参数,自信息量计算可根据公式直接线性相加。
在大部分指纹算法下,用户升级浏览器版本、更新插件、安装新的字体等操作都会使原有指纹发生变化,导致指纹的静态匹配方式无法完全识别回访用户。针对该问题,文献[9,16]提出了基于指纹间字符串相似度的回访用户识别方法,通过逐位比较字符串,求两指纹的相似度,从而判断用户是否为回访用户。
而针对上述问题,本文提出一种新的基于浏览器指纹差异度的回访用户识别算法。其中,指纹差异度是用来衡量两指纹之间的差异程度,差异度越小表示新的指纹是原有用户的更新指纹的概率越大,即用户是回访用户的概率越大。在该算法中,指纹间差异度计算是最重要的环节。
定义全局差异度函数D(BF1,BF2),用来计算指纹BF1与指纹BF2之间的差异程度,其定义如式(5)所示。
(5)
其中,全局差异度函数D(BF1,BF2)是字体、插件、屏幕信息等8个指纹特征参数差异度值的总和。Wattri为每个特征参数的权重,取值为文献[9]中8个指纹特征参数的信息熵。指纹差异度函数D(BF1,BF2)的取值区间为[0,1],若指纹完全一致,函数值为0;若两者完全不同,则函数值为1。
为比较指纹BF1与指纹BF2间8个指纹特征参数的差异程度,分别定义8个特征参数的差异度函数的计算公式。
定义1User agent的差异度
特征参数User agent由浏览器相关数据以及设备体系结构相关数据两部分组成。上述两部分的差异度分别用Fbr与Farchi表示,两者定义分别如式(6)与式(7)所示。
(6)
(7)
在式(6)中,指纹间的浏览器名称与版本号完全一致,Fbr取值为0;若浏览器名称相同而版本号不一致,Fbr则取值为0.125;若两者完全不同,取值为1。在式(7)中,Farchi的取值原理与Fbr相同。
令Fbr与Farchi这两部分数据权重相等,则指纹与间User agent的差异度函数d(attr1(BF1,BF2))的定义如式(8)所示。
d(attr1(BF1,BF2))=0.5×Fbr+0.5×Farchi
(8)
其中,差异度函数d(attr1(BF1,BF2))取值区间为[0,1]。若指纹与的User agent完全相同,函数值则为0,若两指纹的User agent完全不同,函数值则为1。
定义2插件信息的差异度
插件信息是由插件名称与插件版本两部分组成。令插件列表为LP,指纹BF1的插件列表为LP(BF2),指纹BF2的插件列表为LP(BF2)。指纹BF1与BF2的2个插件列表中的插件总数为FU(两插件列表中相同的插件只统计一次)。求解过程如下:
FU=|(LP(BF1)(LP(BF1)∩LP(BF2)))∪LP(BF2)|
(9)
对于指纹BF1与BF2,计算两插件列表中特有插件的比例,其结果分别用F1和F2表示,求解过程分别如式(10)与式(11)所示。
(10)
(11)
计算LP(BF1)与LP(BF2)两插件列表中插件名称相同,版本号不同的插件比例并用F3表示,求解过程如式(12)所示。
(12)
计算LP(BF1)与LP(BF2)两插件列表中插件名称与版本号都相同的插件比例并用F4表示,其求解过程如式(13)所示。
(13)
对于指纹BF1与BF2,两插件列表的差异度函数d(attr2(BF1,BF2))的定义如式(14)所示。
(14)
其中,差异度函数d(attr2(BF1,BF2))取值区间为[0,1]。若指纹BF1与BF2的插件列表完全相同,差异度值则为0,若两指纹的插件信息完全不同,差异度值则为1。
定义3字体信息的差异度
令指纹BF1的字体列表为LF(BF1),指纹BF2的字体列表为LF(BF2)。两字体列表中的字体总数FU(两字体列表中相同的字体只统计一次)的计算过程如式(15)所示。
FU=|(LF(BF1)(LF(BF1)∩LF(BF2)))∪LF(BF2)|
(15)
字体列表LF(BF1)中特有的字体比例用F1表示,F1的求解过程如式(16)所示。
(16)
LF(BF2)字体列表中特有的字体比例用F2表示,F2的求解过程如式(17)所示。
(17)
字体列表LF(BF1)与LF(BF2)中具有相同字体的比例用F3表示,F3的求解过程如式(18)所示。
(18)
对于指纹BF1与BF2,字体列表间的差异度函数d(attr3(BF1,BF2))的定义如式(19)所示。
(19)
其中,差异度函数d(attr3(BF1),attr3(BF2))取值区间为[0,1]。
定义4屏幕分辨率、时区、HTTP-Accept、Video以及Cookies_enabled的差异度
上述5个特征参数的差异度定义如下。
(20)
其中,差异度函数d(attrx(BF1,BF2))取值区间为[0,1]。
基于上述指纹差异度计算,本文提出一种能够高精度地识别回访用户的算法,该算法的思路如图2所示。
图2 回访用户识别流程
图2中的基于浏览器指纹差异度的回访用户识别算法的步骤如下:
1)采集指纹特征参数并利用哈希函数制作指纹。
2)判断新指纹在指纹库中是否存在,若存在,可判定该指纹是回访用户生成的指纹,则无需进行指纹更新操作。
3)若指纹库中不存在该指纹,则需将该指纹与指纹库中已有的指纹逐条进行全局差异度计算。
4)与事先设定差异度阈值作比较,若两指纹之间的差异度值小于已设定的阈值,则认为该指纹是回访用户由于特征参数改变后产生的升级指纹,用户为回访用户。最后用升级指纹替代原始指纹,完成指纹的更新操作。
5)若两指纹之间的差异度值大于或等于设定的差异度阈值,即可判定用户是首次访问该网站,最后将该指纹存入指纹库中。
为了测试基于浏览器指纹差异度的回访用户识别算法的可行性与准确性,设计基于Web的数据采集模块DeviceFingerprint。该模块主要用于采集特征参数与制作指纹。不仅通过DeviceFingerprint获取到每个用户的Cookies_enabled作为特征参数之一,同时还要获取Cookies,目的是通过Cookies给每条指纹打上标记,为后续该回访用户识别算法执行效果的评估做准备。
实验通过嵌入网页中的DeviceFingerprint模块获取用户递交的HTTP请求,从而获取了HTTP-Accept;通过执行JavaScript代码,获取用户User agent(包含浏览器类型、版本号以及操作系统等信息)、插件、屏幕信息、时区、Video以及Cookies_enabled这些参数;通过JavaScript与Flash结合的方式获取用户的字体信息。其中,8个特征参数的获取方式、数据类型以及变化情况如表1所示。
表1 8个特征参数的获取方式及特征参数描述
为保证实验数据的真实性,从2016年12月3日,截止到2016年12月23日,在线收集了共102条不同的指纹数据。其中,102条指纹数据中出现了79个不同Cookies,即对应分别79个不同的用户。
在本实验中,根据式(5)可计算2个指纹之间的差异度值。本文采用文献[9]中的8个特征参数的信息熵,分别作为8个局部差异度函数的权重。因为文献[9]中采集的指纹样本数量庞大,以此作为统一的权重标准,可减少误差。8个特征参数按照信息熵的值从大到小排列情况如表2所示。
表2 8个特征参数的信息熵
如表2所示,插件、字体以及User agent这3个特征参数的信息熵较大,表明插件、字体以及User agent这3个特征参数变化引起的两指纹间的差异度值变化程度也较大。
以实验中的2条指纹为例,分析基于指纹差异度的回访用户识别算法具有可行性。这2条指纹除了User agent参数之外,其他7个特征参数分别相同。指纹 1的 User agent列表为:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36(KHTML,like Gecko) Chrome/38.0.2125.122 Safari/537.36。指纹 2的 User agent列表为:Mozilla/5.0 (Windows NT 6.3;WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/45.0.2454.101 Safari/537.36。
根据式(5)~式(8)以及表2中的权重,计算得到指纹1与指纹2的差异度值为0.017。该差异度值接近于0,则表明两指纹高度相似,可认为两条指纹来自同一用户。造成指纹发生变化的原因是由于用户更新浏览器版本所致。
本实验关键的一个环节是差异度阈值的设定,利用差异度阈值可界定指纹是否为回访用户生成的指纹。如图2所示,对新采集的指纹,首先通过字符串匹配方式,初次判断用户是否为回访用户。若初次匹配失败,进一步根据差异度计算公式,逐一计算待判定的指纹与指纹库中已有指纹之间的差异度值。若差异度值小于事先设定的差异度阈值,则认为两指纹来自用一用户,即该用户为该网站的回访用户。
将指纹的识别率作为基于浏览器指纹差异度的回访用户识别算法准确性的评估指标。其中,指纹识别率表示的是能够正确地识别出回访用户的比例。
为了评估该算法的执行效果,设定3个不同的差异度阈值,分别为0.025、0.05以及0.10。在不同差异度阈值下的指纹识别率如表3所示。
表3 不同差异度阈值下的指纹识别率
如表3所示,差异度阈值的设定影响着回访用户的识别率。设定的指纹差异度阈值越大,则表示容许的指纹之间的差异程度越大。在上述0.025、0.05以及0.10这3种不同的差异度阈值情况下,指纹的识别率均在86%以上。
综上所述,基于浏览器指纹差异度的回访用户识别算法具有一定的可行性且识别回访用户的准确率较高。其中,指纹差异度计算以及差异度阈值设定是回访用户识别算法中最重要的2个环节。选择适当的差异度阈值能够有效地提高回访用户的识别率。
针对指纹的静态匹配方式不能够完全识别回访用户的问题,本文提出了一种基于浏览器指纹差异度的回访用户识别算法,通过比较浏览器指纹之间的差异度,可以有效地识别出网站的回访用户。为了验证该算法的执行效果,在线进行了数据采集与测试。实验结果表明该算法能够有效地识别回访用户,且在差异度阈值选择得当的情况下识别的准确率较高。但是由于采集的指纹数据有限,一定程度上影响实验结果的准确度。因此在后续工作中,将尽可能采集更多的指纹样本数据,使得实验结果更精确,同时在指纹特征参数的选择上会尝试选择更多潜在的具体区分性的参数制作指纹。
[1] SAITO T,ISO Y,KIRYU N.A Study of Technical Aspect of Web Browser Fingerprinting[C]//Proceedings of the 31st Symposium on Cryptography and Information Security.Berlin,Germany:Springer,2010.
[2] 张梦媛.浏览器的安全访问及指纹识别技术[D].南京:南京邮电大学,2012.
[3] 吴建涛.浏览器指纹技术研究与实现[D].西安:西北大学,2014.
[4] 王研昊,马媛媛,杨 明,等.基于隐性标识符的零权限 Android智能终端识别[J].东南大学学报(自然科学版),2015,45(6):1046-1050.
[5] 王研昊.Android设备指纹识别技术的研究与实现[D].南京:东南大学,2015.
[6] NIKIFORAKIS N,KAPRAVELOS A,JOOSEN W,et al.On the Workings and Current Practices of Web-based Device Fingerprinting[J].IEEE Security & Privacy,2014,12(3):28-36.
[7] ACAR G,JUAREZ M,NIKIFORAKIS N,et al.Fpdetective:Dusting the Web for Fingerprinters[C]//Proceedings of ACM SIGSAC Conference on Computer & Communications Security.Washington D.C.,USA:IEEE Press,2013:1129-1140.
[8] 张玉清,武倩如,刘奇旭,等.第三方追踪的安全研究[J].通信学报,2014,35(9):1-11.
[9] ECKERSLEY P.How Unique is Your Web Browser[C]//Proceedings of the 10th Privacy Enhancing Technologies Symposium.Berlin,Germany:Springer,2010:1-18.
[10] NIKIFORAKIS N,KAPRAVELOS A,JOOSEN W.Cookieless Monster:Exploring the Ecosystem of Web-based Device Fingerprinting[C]//Proceedings of the 34th IEEE Symposium of Security and Privacy.Washington D.C.,USA:IEEE Press,2013:541-555.
[11] MOWERY K,SHACHAM H.Pixel Perfect:Fingerprinting Canvas in HTML5[C]//Proceedings of Web 2.0 Security and Privacy Conference.Washington D.C.,USA:IEEE Press,2012:1-12.
[12] TAKASU K,SAITO T,YAMADA T.A Survey of Hardware Features in Modern Browsers:2015 Edition[C]//Proceedings of the 9th International Conference on Innovative Mobile and Internet Services in Ubiquitous Computing.Washington D.C.,USA:IEEE Press,2015:520-524.
[13] MOWERY K,BOGENREIF D,YILEK S,et al.Fingerprinting Information in JavaScript Imple-mentations[C]//Proceedings of IEEE International Conference on Acoustics,Speech & Signal Processing.Washington D.C.,USA:IEEE Press,2013:9-12.
[14] MULAZZANI M,RESCHL P,HUBER M,et al.Fast and Reliable Browser Identification with Javascript Engine Fingerprinting[C]//Proceedings of Web 2.0 Security and Privacy Conference.Washington D.C.,USA:IEEE Press,2013:503-506.
[15] UPATHILAKE R,LI Yingkun,MATRAWY A.A Classification of Web Browser Fingerprinting Techniques[C]//Proceedings of the 7th International Conference on New Technologies,Mobility and Security.Washington D.C.,USA:IEEE Press,2015:1-5.
[16] 王 维,王伟平,王建新.一种基于升级浏览器指纹的用户识别方法[C]//第七届信息安全漏洞分析与风险评估大会论文集.南京:[出版者不详],2014:189-197.