首页 > 编程知识 正文

h5指纹登录,Chrome浏览器指纹插件

时间:2023-05-05 23:00:29 阅读:13797 作者:670

指纹跟踪技术(指纹浏览器)前世:

1 ) .第一代

第一代指纹跟踪是像cookie这样的服务端在客户端设置标记的跟踪技术,evercookie是cookie的强化版。

.第二代

第二代指纹跟踪是一种设备指纹技术,用于发现IP背后的设备。 在js中检索操作系统、分辨率、像素比等一系列信息,传递给后台计算,合并设备。 唯一性可以保证,但很难完全保证正确性。 主要原因在于浏览器的指纹认证。 此后,第二代技术中重要的canvas指纹、浏览器插件指纹发生了变化,使得浏览器指纹很难集成到同一个设备中。

因为设备指纹相同,概率很高,是相同的设备; 但是,如果设备的指纹不同,则不一定是同一设备。

.第三代

第三代指纹跟踪技术是发现设备后面的人。 用人的习惯、人的行为等来合并人的技术很复杂。

.总结

第一代、第二代指纹跟踪技术可以通过js直接采集信息,第三代指纹跟踪技术目前最常见的情况是2017年RSA创新沙盒冠军统一身份技术。 但是,在RSA答辩现场,您会发现统一身份在移动端安装软件并收集信息的不仅仅是js。 关于在网络上的使用,任重而道远。

那么,2.5代指纹认证技术——浏览器指纹认证技术。

浏览器指纹识别功能

这款paper有很多创新之处,最重要的是深入研究了显卡的渲染方法,发现图像的哪些部分用于硬件渲染,哪些部分仅用于软件渲染,或者与浏览器相关,等等

让我们聚焦于有趣的特征。 文章中使用的所有特征如下。

这些特征大多见于其他设备指纹的paper,目前广泛用于设备指纹项目。 例如canvas指纹是单浏览器识别中比较有区分度的特征。

比较一下开源fp2的指纹列表:

fp2中的是一些常规的跟踪项目,而且用过就知道了,其中很多项目没什么区别。 例如:

Has session storage or not

has本地存储or not

has索引数据库

hasiespecific‘add behavior’

Has open DB

Is AdBlock installed or not

hastheusertamperedwithitslanguages 1

hastheusertamperedwithitsscreenresolution 1

Has the user tampered with its OS 1

hastheusertamperedwithitsbrowser

这些项目只能大致区分,没有实际参考价值。

但是,在这个paper中,去掉了这些区分度低的特征,使用了另一种特征。 可见,图形渲染图像是特征表的task(a )-task,这些task的浏览器稳定性非常高,即浏览器的影响不是很大。 现在,让我拿几个任务来介绍一下。

1 ) .首先,用paper简要介绍了图像渲染。

在此之前,首先介绍一下基本的画布设置。 画布的大小是256256。 画布的轴定义如下: [ 0,0,0 ]是画布的中心。 其中,x轴沿向右延伸的水平线,y轴沿向下延伸的垂直线,z轴沿远离屏幕的方向延伸。 存在功率为[R:0.3,G:0.3,B:0.3]的环境光,照相机位于[ 0,0,-7]的位置。 这两个组件是必需的。 否则,模型完全是黑色的。 在本文的其馀部分中,所有任务使用相同的基本设置,除非例如指定具有2D特征的任务(d )或其他具有附加指示灯的任务。

2 ) .这里列举几个典型的task

(1)任务(a ) a ) :纹理

图(a )的任务是测试片段着色器的常规纹理特性。

具体而言,Suzanne模型出现在随机生成纹理的画布上。 纹理大小为256256的正方形是通过随机选择每个像素的颜色创建的。 也就是说,在一个像素的三个基本颜色(红、绿、蓝)之间创建0到255的三个随机值,并将三个基本颜色混合起来用作像素的颜色。

之所以选择这个随机生成的纹理,是因为这个纹理比普通纹理有更多的指纹特征。 这是因为,如果片段着色器将纹理映射到模型,则片段着色器必须在纹理中插入点,才能将纹理映射到模型上的每个点。 插入值的算法因显卡而异,纹理变化较大时差异会放大。 因此,必须生成一种纹理,使相邻像素对之间的颜色发生很大变化。

)2) task(d ) d )线和曲线

图(d )的任务是测试线和曲线。 在画布上画曲线和三条不同角度的直线。 具体遵循y=256-100cos(2.0x/100.0 ) 30 cos (4.0x/100.0 )6cos (6.0x/100.0 )。 其中[ 0,0 ]是画布的左上角,x轴向右增加,y轴增加,三行的起点和终点为{ [ 38.4,115.2 ]、[ 89.6,204.8 ]、{ [ 89.6,89.6 ]、[1]

53.6,204.8]}和{[166.4,89.6],[217.6,204.8]}。 选择这些特定的线条和曲线,以便测试不同的渐变和形状。

(3) task(f):光

图(f)中的任务是测试漫射点光和Suzanne模型的相互作用。 漫射点光在照亮物体时会引起漫反射。 具体地说,该光是在RGB上具有相同值的白色,对于每种原色,光的功率为2,光源位于[3.0,-4.0,-2.0]。

在这个任务中选择一个大胆的导师,因为纹理是各种颜色的,单色光可能会减少纹理上的一些微妙差异。 光线的强度需要精心设计。非常弱的光线不会照亮Suzanne模型,模型就会不可见;非常强的光会使一切变白,减少指纹特征。 在6台机器的小规模实验中,功率从0增加到255,我们发现当光功率为2时,这些机器之间的像素差异最大。光照位置可随机选择,不会影响特征指纹识别结果。

可以看到这些任务深入研究了图片渲染引擎的特征,js没办法直接获取到显卡的设置和驱动,但是通过这种方法,当不同的显卡渲染同一张图片时,因设置不同,渲染出来的图片hash也不同。用这种图片hash作为特征,其实是从侧面得到机器显卡的特征,同一台机器在不同的浏览器上用到同一个显卡,所以可以看到这些task的浏览器稳定性都很高,总共10余种 task。

3). Paper中除了这些task,还有一些其他新颖的东西
(1) CPU内核数量

这个在之前的设备指纹方案中都是没有使用到的,现代浏览器可以用navigator .hardware Concurrency来获取。如果不支持这个方法,则可以利用另一种方式获取,具体来说是,当增加Web Worker的数量时,可以监视payload的完成时间。当计算量达到一定的程度,Web Woker完成payload的时间显著增加,达到硬件并发的限制,从而判断核心的数量。一些浏览器(如Safari)会将Web Workers的可用内核数量减少一半,所以在获取浏览器指纹时,我们需要将获取到的核心数量加倍。

(2) writing script(language)

这个其实可以理解为语言,但不是当前浏览器所使用的语言,而是系统支持的所有语言,比如中文简体、中文繁体、英语,js中并没有接口直接获取这种语言,但是这里作者想到了另一种方法,就是在页面中用所有的语言写两个字,如果系统支持该语言,那么就能正常写出来;如果不支持,显示出来的就是方框。通过这种方法获取系统支持的语言。

(3)AudioContext

可能熟悉设备指纹的同学都知道,AudioContext在很多设备指纹项目上都用到了。具体来说,现有的指纹识别工作使用OscillatorNode产生一个三角波,然后将波传Dynamics Compressor Node,一个调节声音的信号处理模块,产生压缩效果。 然后,经处理的音频信号通过Analyser Node转换为频率域。该paper指出,频域在不同的浏览器中是不同的,这个特征受浏览器的影响,不能完全反应出声卡的特征。也就是说,现有的方案只能识别单浏览器。但是他们发现,频率和峰值的比,在浏览器之间是相对稳定的。因此,在频率和值的坐标系上创建一个间距很小的列表,并将峰值频率和峰值映射到相应的格子。 如果一个格子包含一个频率或值,我们将格子标记为1,否则为0,这样的格子列表用作浏览器特征。

除了波形处理外,还能从音频设备上获取以下信息:采样率、最大通道数、输入数、输出数、通道数、通道数模式和通道解释。这是现有的设备指纹工作没有用到的又一个跨浏览特征.。

4). 在demo站中,从我电脑上收集到的信息如下

浏览器测试的结果,的确能够浏览器识别,看到这里,由衷的佩服该项目。

查看代码
在我看来,十多个task,AudioContext,CPU core number,writing script,浏览器稳定性都如此之高,做一些机器学习的分析工作,算一算相似性,真的非常容易达到浏览器识别的目的。

但我们来看看后端分析代码,如下:.

这是代码中获取到的从前端传来的特征,然后就该通过这些特征计算浏览器指纹了。

但是,他只是简单的把这些项目加到一起hash了一下,就作为浏览器指纹。

虽然demo站说明了浏览器指纹还在开发中,并没有什么复杂的计算,跟paper中提到的分析方式完全不同,跟我预期的什么机器学习的方式也不同。

但是,浏览器的特征倒是选用了一些稳定性极高的特征,所以直接hash也能进行浏览器识别。

Paper中的思路真的很好,所以沿着这个思路,我们还有很多工作要做。

最后说一句
该paper中一直提到的IP不可信的问题,既然是黑客溯源,对面是黑客,提出这个观点也无可厚非,毕竟大家都会挂VPN或者用肉鸡。但是IP作为一个重要信息,在设备指纹项目中,还是有用武之地的。

我个人的观点:IP虽然不可信,但是短时间的IP是可信的。

各位可以自己去试试 IP+设备指纹的区分度还是很好的,而且很大程度上能解决一部分浏览器识别的问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。