一种基于特征隐式获取的抗干扰浏览器指纹生成方法与流程

文档序号:12271589阅读:424来源:国知局
一种基于特征隐式获取的抗干扰浏览器指纹生成方法与流程
本发明涉及浏览器指纹
技术领域
,特别是涉及一种基于特征隐式获取的抗干扰浏览器指纹生成方法。
背景技术
:随着计算机技术的发展以及互联网用户不断增加,在web应用上进行的信息交互越来越多。当用户浏览网站时,用户信息、执行状态、个人数据等会话状态信息将会被保存在用户设备的cookie中。然而,cookie为用户识别和行为关联提供支持的同时,也引发了用户隐私泄露等问题。为了保护用户隐私,浏览器提供了禁用cookie的功能,cookie中包含的标识信息容易被销毁。由于不同用户的浏览器中具有不同的特征信息,浏览器指纹技术通过收集用户浏览器的特征数据,提供了一种无cookie情况下的用户识别方法。通过分析Web访问的信息交互过程,发现用户访问Web站点时,Web站点能够收集User-Agent、浏览器版本、插件列表、操作系统等特征信息,通过对这些信息进行组合可以作为用户识别的指纹。当前,浏览器指纹主要可以分为四类:基于浏览器环境的浏览器特定指纹、Canvas指纹、javascript引擎指纹、跨浏览器指纹。通过Flash、JavaScript、HTTPheaders获取UserAgent、系统字体、浏览器插件、屏幕分辨率等特征生成指纹。随着支持HTML5的浏览器不断增多,提出Canvas指纹方法,通过HTML5的CanvasAPI和WebGL获取文本渲染的像素差异数据,结合图形处理器以及操作系统生成指纹。通过Javascript引擎的一致性测试确定特定浏览器及其版本号从而生成指纹。跨浏览器指纹和前面讨论的指纹主要区别在于跨浏览器指纹生成指纹时使用的是独立于浏览器的特性,一个简单的跨浏览器指纹算法可以仅仅依靠JavaScript和字体信息。常用的浏览器指纹特征采集主要通过用户递交的HTTP请求获取浏览器版本、可接收类型信息等,通过页面中嵌入JavaScript代码获取用户的屏幕分辨率、插件、时区等信息,同时结合Flash方法获取字体信息。然而,随着研究的不断深入,浏览器指纹的干扰方法不断被提出,一些用于检测指纹或干扰指纹生成的工具也得到了不同程度的应用,主要有FireGlove、Canvasfingerprintblock、Chameleon等。FireGloves通过限制浏览器的一些功能来阻止插件信息的收集,并且能够清空浏览器的字体列表信息,随机伪造屏幕分辨率等特征信息。CanvasFingerprintBlock通过禁用Canvas,为Canvas元素返回一个空图像来干扰指纹的生成;Chameleon能够检测用户访问的网站是否有采集用户特征信息的相关行为并提示用户防止指纹。综上所述,浏览器指纹技术常被应用于用户追踪、身份认证等方面,但指纹干扰工具能够通过伪造信息、限制功能等方式影响指纹的生成。技术实现要素:有鉴于此,本发明的目的是提供一种基于特征隐式获取的抗干扰浏览器指纹生成方法,通过浏览器对CSS解释的效果差异隐式得到浏览器类型、屏幕分辨率、设备像素比等特征信息,通过字体探测方法隐式获取浏览器中包含的字体特征信息,规避了指纹干扰工具对直接调用系统API显式获取字体列表、屏幕分辨率、浏览器版本等带来的干扰,在使用干扰工具的情况下依然能够生成有效指纹。本发明采用以下方案实现:一种基于特征隐式获取的抗干扰浏览器指纹生成方法,包括以下步骤:步骤S1:通过浏览器对CSS解释的效果差异隐式得到包括浏览器类型及版本、屏幕分辨率、设备像素比以及Firefox特殊信息的浏览器特征信息;步骤S2:通过字体探测方法隐式获取浏览器中包含的字体特征信息;步骤S3:将所述步骤S1中获取的浏览器特征信息与所述步骤S2中获取的字体特征信息进行组合生成指纹。进一步地,所述步骤S1中,通过不同类型及版本的浏览器对CSS属性的兼容性和解释的差异,隐式推得浏览器的类型及版本,并获取其中所包含的差异特征信息。进一步地,所述CSS属性包括border-image、-webkit-mask-image、border-image-source、box-sizing、background-size、column-count、transform-orign、nav-index、outline-offset。进一步地,所述步骤S1中,通过Mediaqueries方法隐式获取设备屏幕分辨率、设备像素比、Firefox特殊信息;其中,通过所述Mediaqueries方法设置宽高特性测试表达式,根据浏览器对Mediaqueries解释的结果推得设备的屏幕分辨率;通过所述Mediaqueries方法设置设备像素比特性测试表达式,根据浏览器的解释结果获取设备像素比。进一步地,所述步骤S1中,所述Firefox特殊信息包括是否使用桌面窗口管理器、是否使用windows默认主题、是否为经典模式。进一步地,所述步骤S2中,根据浏览器渲染字体差异信息,通过探测字体的方法获取浏览器中包含的字体特征信息。进一步地,所述步骤S2中,分别获取任意一文本中文本元素左边界与右边界到浏览器视窗左边界的距离x1与x2,文本元素上边界与下边界到浏览器视窗上边界的距离y1与y2,并计算X=x2-x1、Y=y2-y1,X、Y为该文本的字体探测边界值比较参数,获取所述文本元素的字体特征信息的方法具体为:首先设置文本的默认字体,获取并记录浏览器渲染后的X1、Y1值,然后将文本字体更改为一种特定的字体,记录下浏览器渲染后的X2、Y2值;使用所述特定字体的结果取决于用户浏览器上该字体是否可用,如果浏览器不支持该特定字体,则会沿用默认字体;对比默认字体情况下记录的X1、Y1值和指定字体情况下记录的X2、Y2值,逻辑结果result=(X1=X2)∧(Y1=Y2),当result为true则指定字体不存在,若为false则指定字体存在,若探测的字体数量越多,所获得的字体特征差异性越大。进一步地,所述步骤S3中,将步骤S1与步骤S2中采集得到的差异特征信息、屏幕分辨率、设备像素比、Firefox的特殊信息以及字体特征信息存储在数据库中,使用SHA1对数据进行加密,最后通过base64方式对其进行编码生成指纹。进一步地,所述浏览器指纹生成算法具体为:设定指纹算法为F(·),当出现一个新的浏览器信息x,生成一个浏览器指纹F(x),其遵循离散概率密度函数P(fn),n∈[0,1,...,N];对于某个特征参数的指纹生成结果fn,使用自信息量I表示该浏览器指纹包含信息的比特数,其定义为:当指纹由不同的特征组合而成,设定每个特征参数对应的处理方法Fs(·),s∈S,根据公式(2)和(3)单独计算每个特征的自信息量并定义指纹组件的信息熵H(F),信息熵表征浏览器所有自信息量的期望值,对于两个相互独立的特征组件,自信息量可直接线性相加:根据自信息量I确认指纹关联对象的身份,所述自信息量I包含多个bit信息,通过选取恰当且包含足够bit信息的特征集合,通过其生成的指纹唯一确认关联对象的身份,所述特征集合包括字体特征信息、屏幕分辨率、浏览器渲染字体差异信息、设备像素比、Firefox特殊信息。与现有技术相比,本发明提出了一种基于特征隐式获取的抗干扰浏览器指纹生成算法,通过浏览器对CSS解释的效果差异隐式得到浏览器类型、屏幕分辨率、设备像素比等特征信息,通过字体探测方法隐式获取浏览器中包含的字体特征信息。本文规避了指纹干扰工具对直接调用系统API显式获取字体列表、屏幕分辨率、浏览器版本等带来的干扰,在使用干扰工具的情况下依然能够生成有效指纹。附图说明图1为本发明实施例中屏幕分辨率获取方法的示例图。图2为本发明实施例中像素比获取方法的示例图。图3为本发明实施例中字体渲染差异示意图。图4为本发明实施例中探测参数时的文本示意图。图5为本发明实施例中步骤S3的方法流程示意图。图6为本发明实施例中的屏幕分辨率测试示意图。图7为本发明的方法流程示意图。具体实施方式下面结合附图及实施例对本发明做进一步说明。本实施例提供一种基于特征隐式获取的抗干扰浏览器指纹生成方法,如图7所示,包括以下步骤:步骤S1:通过浏览器对CSS解释的效果差异隐式得到包括浏览器类型及版本、屏幕分辨率、设备像素比以及Firefox特殊信息的浏览器特征信息;步骤S2:通过字体探测方法隐式获取浏览器中包含的字体特征信息;步骤S3:将所述步骤S1中获取的浏览器特征信息与所述步骤S2中获取的字体特征信息进行组合生成指纹。在本实施例中,所述步骤S1中,通过不同类型及版本的浏览器对CSS属性的兼容性和解释的差异,隐式推得浏览器的类型及版本,并获取其中所包含的差异特征信息,其中所述CSS属性包括border-image、-webkit-mask-image、border-image-source、box-sizing、background-size、column-count、transform-orign、nav-index、outline-offset。在本实施例中,在生成浏览器的指纹特征中,User-Agent包含了浏览器版本等信息,但是相关的指纹干扰工具会影响信息的获取。因此根据不同类型及版本的浏览器对CSS属性的兼容性和解释的差异,隐式推得浏览器的类型及版本,并获取其中所包含的差异特征信息,从而避免指纹干扰工具对特征信息获取的影响。选取的CSS属性如表1所示,通过浏览器对表中9个属性的解释差异估计浏览器的类型及其版本。表1CSS属性表在CSS3中,Mediaqueries通过媒体特性限制样式表的作用范围,只有符合媒体特性的相应条件,浏览器才会调用对应的样式表,指纹干扰工具无法限制Mediaqueries的作用。在本实施例中,所述步骤S1中,通过Mediaqueries方法隐式获取设备屏幕分辨率、设备像素比、Firefox特殊信息;其中,通过所述Mediaqueries方法设置宽高特性测试表达式,根据浏览器对Mediaqueries解释的结果推得设备的屏幕分辨率;通过所述Mediaqueries方法设置设备像素比特性测试表达式,根据浏览器的解释结果获取设备像素比。其中,使用Mediaqueries方法设置宽高特性测试表达式,由于浏览器只解释与设备宽高相匹配的Mediaqueries,因此根据浏览器对Mediaqueries解释的结果能够推得设备的屏幕分辨率。如图1所示,Mediaqueries宽度特性测试,当屏幕分辨率的宽是1024像素时,与style1中的Mediaqueries宽度特性条件匹配,浏览器将对style1进行解释;当屏幕分辨率的宽是1280像素时,与style2中的Mediaqueries宽度特性条件匹配,浏览器将对style2进行解释。同理,进行Mediaqueries高度特性测试。根据Mediaqueries宽高特性测试的不同匹配结果,可以推出屏幕分辨率信息。设备像素比(devicePixelRatio)是设备物理像素与设备独立像素的比值,不同设备的设备像素比存在差异,通过Mediaqueries设置设备像素比设备像素比特性表达式,根据浏览器的解释结果获取设备像素比。如图2所示,分别设置像素比表达式条件为1和2,通过浏览器对其解释的差异可推得设备像素比信息。目前该方法只能在Chrome、Opera、Firefox浏览器上执行,IE浏览器不支持设备像素比的Mediaqueries。另外,所述Firefox特殊信息包括是否使用桌面窗口管理器、是否使用windows默认主题、是否为经典模式。由于Firefox浏览器的特殊性,除了收集上述的信息外,还通过Mediaqueries收集了表2所示信息,从而增强指纹的准确性,其中是否使用桌面窗口管理器特征,通过javascript无法收集,而通过CSS可以。表2Firefox特殊信息Media特征检测信息-moz-windows-compositor是否使用桌面窗口管理器-moz-windows-default-theme是否使用windows默认主题-moz-windows-classic是否经典模式在本实施例中,指纹中常用获取字体方法是通过API获取字体列表,指纹干扰工具FireGloves可以清空字体列表,所述步骤S2中,根据浏览器渲染字体差异信息,通过探测字体的方法获取浏览器中包含的字体特征信息。如图3所示,第一行是字号相同,字体分别为Arial、cursive、calibri的文本元素在Chrome浏览器中渲染的结果,第二行是相同字号,字体分别为Arial、cursive、calibri的文本元素在Firefox浏览器中渲染的结果,它们呈现的边界值有所不同。字体在浏览器中的渲染受浏览器版本、安装的字体类型、抗锯齿设置等因素的影响,相同字体、相同字号的字符在不同浏览器中会呈现不同的边界值,不同字体、相同字号的字符在同一个浏览器中呈现的边界值也存在差异。则如图4所示,分别获取任意一文本中文本元素左边界与右边界到浏览器视窗左边界的距离x1与x2,文本元素上边界与下边界到浏览器视窗上边界的距离y1与y2,并计算X=x2-x1、Y=y2-y1,X、Y为该文本的字体探测边界值比较参数,获取所述文本元素的字体特征信息的方法具体为:首先设置文本的默认字体,获取并记录浏览器渲染后的X1、Y1值,然后将文本字体更改为一种特定的字体,记录下浏览器渲染后的X2、Y2值;使用所述特定字体的结果取决于用户浏览器上该字体是否可用,如果浏览器不支持该特定字体,则会沿用默认字体;对比默认字体情况下记录的X1、Y1值和指定字体情况下记录的X2、Y2值,逻辑结果result=(X1=X2)∧(Y1=Y2),当result为true则指定字体不存在,若为false则指定字体存在,若探测的字体数量越多,所获得的字体特征差异性越大。在本实施例中,所述步骤S3中,如图5所示,将步骤S1与步骤S2中采集得到的差异特征信息、屏幕分辨率、设备像素比、Firefox的特殊信息以及字体特征信息存储在数据库中,使用SHA1对数据进行加密,最后通过base64方式对其进行编码生成指纹。在本实施例中,所述浏览器指纹生成算法具体为:设定指纹算法为F(·),当出现一个新的浏览器信息x,生成一个浏览器指纹F(x),其遵循离散概率密度函数P(fn),n∈[0,1,...,N];对于某个特征参数的指纹生成结果fn,使用自信息量I表示该浏览器指纹包含信息的比特数,其定义为:当指纹由不同的特征组合而成,设定每个特征参数对应的处理方法Fs(·),s∈S,根据公式(2)和(3)单独计算每个特征的自信息量并定义指纹组件的信息熵H(F),信息熵表征浏览器所有自信息量的期望值,对于两个相互独立的特征组件,自信息量可直接线性相加:根据自信息量I确认指纹关联对象的身份,所述自信息量I包含多个bit信息,每一bit信息将该浏览器指纹可能的归属集合减半。通过特征组合生成指纹,每一个标识具有若干bit的信息熵,其值越大则其越能准确的区分不同的浏览器实体。因此选取恰当且包含足够bit信息的特征集合,通过其生成的指纹能够唯一确认关联对象的身份,所述特征集合包括字体特征信息、屏幕分辨率、浏览器渲染字体差异信息、设备像素比、Firefox特殊信息。在本实施例中,为了验证算法的可行性,可分模块进行差异特征及屏幕分辨率采集实验、字体探测实验和指纹生成及抗干扰实验。首先,在Windows操作系统下,使用不同类型不同版本的浏览器进行了CSS属性解释测试,结果如表3所示。其中“√”表示浏览器支持对应的测试属性,“×”表示浏览器不支持对应的测试属性,“15+”、“22+”等表示浏览器该版本及其以上版本支持对应的测试属性。通过该测试能够得知浏览器的类型及其版本,若对浏览器版本进行更精细的划分测试,能够获得更高的准确度。表3属性测试在分辨率测试中,根据目前常见的屏幕分辨率,将宽特征条件划分为(width<800),(800≤width<1024),(1024≤width<1152),(1152≤width<1280),(1280≤width<1360),(1360≤width<1366),(1366≤width<1400),(1400≤width<1440),(1440≤width<1600),(1600≤width<1680),(1680≤width<1920),(1920≤width)12个区间进行测试;将高特征条件划分为(height<600),(600≤height<720),(720≤height<768),(768≤height<800),(800≤height<864),(864≤height<900),(900≤height<960),(960≤height<1024),(1024≤height<1050),(1050≤height<1080)10个区间进行测试。屏幕分辨率测试结果如图6所示,图中的散点表示实验测试采集的屏幕分辨率信息,通过该方法隐式采集的分辨率信息与设备真实分辨率一致,使用Mediaqueries方式采集屏幕分辨率是可行的。然后在字体探测实验中,选取230多种字体,使用不同设备的不同浏览器进行测试,部分探测结果如表4所示,其中“√”表示字体存在,“×”表示字体不存在。通过实验结果可知不同设备、不同浏览器之间的字体信息存在差异,若进行探测的字体数量越多,则差异性越明显。表4字体探测示例最后,搭建一个网站,通过用户访问站点的方式进行指纹生成测试。网站采集CSS属性解释差异信息、屏幕分辨率、设备像素比、Firefox特殊信息、字体探测信息等标识数据,通过收集的数据生成用户的浏览器指纹。网站共收集了108个用户的指纹信息,借助cookie来判断是否来自同一用户的重复访问,其中101次来自不同用户的访问,自信息量为6.658bit。通过对比使用干扰工具前后访问网站所采集的标识数据及指纹结果来进行抗干扰测试,结果如表5所示。表5抗干扰测试结果首先在未使用干扰工具的情况下访问网站,然后安装用于对抗指纹的FireGloves插件,并清空字体列表、启用Randommode随机生成屏幕分辨率信息等功能,再次访问网站,对比两次采集的标识数据结果一致,指纹生成的结果也一致;同样,比较CanvasFingerprintBlock插件安装前后数据,结果也一致;安装Chameleon插件后访问网站,特征采集及指纹生成的过程未被Chameleon检测到。综上所述,本实施例提供的一种基于特征隐式获取的抗干扰浏览器指纹生成算法,将浏览器对CSS属性解释的效果差异、字体探测的不同结果、屏幕分辨率、设备像素比等特征组合形成指纹,指纹的生成结果不会受到FireGloves、CanvasFingerprintBlock等指纹干扰工具的影响。通过实验验证了算法的可行性,实验结果表明该算法生成的指纹具有较强的唯一性且不易受干扰。后续工作还主要包括:挖掘其他特征信息增强指纹唯一性;使用更多的干扰工具进行更广泛的抗干扰测试,从而发现不足,改进不足以提升抗干扰能力。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1