浏览器指纹定义
指纹,即我们常说的指纹,比如手指的纹理,每个人的指纹都是唯一的,所以我们可以用指纹识别器记录用户指纹来唯一判别和认证一个用户。在网络安全领域也会听到一些“指纹”的说法,比如,操作系统指纹,网络设备指纹等等。“唯一性”和“稳定性”奠定了指纹识别作为一种新型且可靠的追踪方式的基础。
1、提出
浏览器指纹,是EFF(电子前哨基金会)提出的一项追踪技术。浏览器指纹技术可以匿名识别浏览器,并且准确率高达94%。EFF通过提取浏览器中的8个独立的特征属性,使用字符串进行描述,{ user_agent, plugins, fonts, video, supercookies, http accept, timezone, cookie enabled },有些浏览器特征可以通过简单的HTTP请求获得,有些则需要通过AJAX来收集。
每项浏览器特征都携带不同bit的信息熵,提取的八项浏览器特征共包含18.1 bits的信息熵,这意味着在286,777个指纹中才会出现一个与你的浏览器相同的浏览器指纹。EFF使用Murmur Hash算法对这些信息进行哈希计算并返回一个32位字符串,这个字符串即唯一的浏览器指纹。如图所示:
2、发展
GitHub上一位用户根据EFF发表的文章,用JavaScript实现了快速的浏览器指纹库——Fingerprintjs,并且之后对该库再一次做了些改进,形成了Fingerprintjs2。作者在改进的Fingerprintjs2库中添加了一些对新型特征的检测以及新型的识别技术。
新型的识别技术有:
Canvas:HTML5的动态绘图标签,也是Fingerprintjs2中添加的新型追踪技术。由于不同的浏览器使用不同的图像处理引擎,不同的导数选项ÿ