[转]取代cookie的网站追踪技术:”帆布指纹识别”初探

【前言】

一般情况下,网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集这些个体的数据,通过分析后更加精准的去推送广告(精准化营销)或其他有针对性的一些活动。Cookie技术是非常受欢迎的一种。当用户访问一个网站时,网站可以在用户当前的浏览器Cookie中永久植入一个含有唯一标示符(UUID)的信息,并通过这个信息将用户所有行为(浏览了哪些页面?搜索了哪些关键字?对什么感兴趣?点了哪些按钮?用了哪些功能?看了哪些商品?把哪些放入了购物车等等)关联起来。

而随着网民对个人隐私的重视,Cookie越来越不受待见。不少安全工具甚至是浏览器都开始允许或引导用户关闭Cookie功能,比如很多主流浏览器都有一个“隐私模式浏览”功能。这样以来,网站就很难追踪用户行为了。但仍然有一些方法可以让网站去追踪每一个访问者的行为,比如通过flash cookie的方式也可以达到唯一标识和追踪的目的。

笔者近期注意到,国外媒体报道了一种非常难以摆脱的新型在线追踪工具被用来尾随从白宫官网到色情网站YouPorn.com的热门网站的访问者。经过分析,这个就是另一种比较新的访客追踪技术:“帆布指纹识别”技术,具体代码见附录6。这个技术的独特之处是:它不像通过Cookie或者Flash Cookie等之类的方式,你基本是无法屏蔽它的。

【原理分析】

笔者收集整理了很多知名站点上的类似代码,详见附录4,从这些“帆布指纹识别”代码可以看出,均使用到了HTML5专属标签<canvas>的一个现状:在绘制canvas图片时,同样的canvas绘制代码,不同机器和浏览器绘制的图片特征是相同并且独一无二的,这样以来,提取最简单的md5值便可以唯一标识和跟踪这个用户。

一段产生canvas元素的javascript代码:

var canvas = document.createElement(‘canvas‘);
var ctx = canvas.getContext(‘2d‘);
var txt = ‘http://security.tencent.com/‘;
ctx.textBaseline = "top";
ctx.font = "14px ‘Arial‘";
ctx.textBaseline = "tencent";
ctx.fillStyle = "#f60";
ctx.fillRect(125,1,62,20);
ctx.fillStyle = "#069";
ctx.fillText(txt, 2, 15);
ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
ctx.fillText(txt, 4, 17);

获取绘画的内容,需要使用到canvas.toDataURL()方法,该方法返回的是图片内容的base64编码字符串。对于PNG文件格式,以块(chunk)划分,最后一块是一段32位的CRC校验,提取这段CRC校验码便可以用于用户的唯一标识:

var b64 = canvas.toDataURL().replace("data:image/png;base64,","");
var bin = atob(b64);
var crc = bin2hex(bin.slice(-16,-12));
console.log(crc);

同一机器的chrome浏览器,无论正常模式还是隐身模式,得到的crc值始终一致。而对于不同机器得到的值是不同的,追踪效果显而易见。

看到这里,相信很多人想问,Why?为什么会出现这样的情况?同样的js代码,在不同设备的浏览器上,结果是唯一并且各不相同的。这到底是为什么?其实原因很简单,同样的HTML5 Canvas元素绘制操作,在不同的操作系统不同的浏览器上,产生的图片内容其实是不完全相同的。出现这种情况可能是有几个原因:

1、 在图片格式上,不同web浏览器使用了不同的图形处理引擎、不同的图片导出选项、不同的默认压缩级别等。

2、 在像素级别来看,操作系统各自使用了不同的设置和算法来进行抗锯齿和子像素渲染操作。

因此,即使是相同的绘图操作,最终产生的图片数据在hash层面上依然是不同的。这个具体代码层面,恐怕要去搞懂各个主流浏览器的实现和以及操作系统的渲染。笔者精力所限,短期很难给出。大家可以自行摸索下,欢迎交流 J

【后话】

HTML5 千变万化,利用canvas 这一特性来实现用户追踪,目前并没有好的对抗方案,未来也只能依靠广大浏览器厂商自行了断,实现canvas绘图机制的随机化或许可以很好的保护用户隐私,防止被追踪。

文中涉及到的代码和技术细节,只限用于技术交流,切勿用于非法用途。另外,如果想要研究更多的用户追踪技术,推荐去研究下大名鼎鼎的专注于访客追踪的开源项目:evercookie【附录5】,这个猥琐的小工具,通过几乎所有你想到和想不到的方式(Cookie、Flash、Silverlight、Web History、HTTP ETags、Web cache、window.name caching、userData storage、HTML5、甚至是java的漏洞等)来跟踪访问网站的用户行为。

【附录】

[1]   http://cseweb.ucsd.edu/~hovav/dist/canvas.pdf
[2]   https://securehomes.esat.kuleuven.be/~gacar/sticky/index.html
[3]   https://panopticlick.eff.org/browser-uniqueness.pdf
[4]   部分“ 帆布指纹鉴别代码”地址列表:
    http://ct1.addthis.com/static/r07/core130.js
    http://i.ligatus.com/script/fingerprint.min.js
    http://src.kitcode.net/fp2.js
    http://admicro1.vcmedia.vn/fingerprint/figp.js
    http://shorte.st/js/packed/smeadvert-intermediate-ad.js
    http://stat.ringier.cz/js/fingerprint.min.js
    http://cya2.net/js/STAT/89946.js
    http://images.revtrax.com/RevTrax/js/fp/fp.min.jsp
    http://rackcdn.com/mongoose.fp.js
[5]  evercookie 官网   http://samy.pl/evercookie/
[6]    使用帆布指纹识别技术的库fingerprintjs 官网   https://github.com/Valve/fingerprintjs
[7]    https://www.browserleaks.com/canvas#how-does-it-work

@via 腾讯安全

[转]取代cookie的网站追踪技术:”帆布指纹识别”初探

时间: 2024-08-09 22:02:45

[转]取代cookie的网站追踪技术:”帆布指纹识别”初探的相关文章

基于HTML Canvas实现“指纹识别”技术

作者:zhanhailiang 日期:2015-01-31 说明 所谓指纹识别是指为每个设备标识唯一标识符(以下简称UUID).诸如移动原生的APP都可以通过调用相关设备API来获取相应的UUID.但是浏览器内WebAPP受限于运行环境无法直接防部设备API,此时需要通过其它方法来设置UUID. 基于持久化Cookie生成UUID 原理 当用户访问一个网站时,网站可以在用户当前的浏览器Cookie中种入含有UUID的Cookie,并通过这个信息将用户所有行为(浏览了哪些页面?搜索了哪些关键字?对

工控系统的指纹识别技术

转载:灯塔实验室 当前,指纹识别技术已被或坏或好的广泛应用于ICT(信息和通信技术)系统.攻击者通过扫描网络获取设备指纹来关联漏洞入侵系统,安全防护者则利用设备指纹来发现系统的脆弱性,检测系统的网络异常.在工业控制系统(ICS)中,指纹识别技术亦用于发现ICS系统脆弱性,检测攻击行为等方向.本文主要关注工控安全领域指纹识别技术. 指纹识别是什么 在ICT领域里,指纹识别是利用不同信息描述运行于网络中的设备或者软件的一种技术.我们了解最多的是设备指纹,被用来远程识别设备的硬件,操作系统,运行软件(

大型网站优化技术(一)

存储瓶颈第一篇 1 大型网站定义 首先我们要思考一个问题,什么样的网站才是大型网站,从网站的技术指标角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点 行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那么像hao123这样的网站就是大型网站了,如下图所示: 其实这种网站访问量非常大,并发数也非常高,但是它却能用最为简单的Web技术来实现:我们只要保持网站的充分的静态化,多部署几台服务器,那么就算地球上所有人都用它,网站也能正常运行. 大型网站是技

眼球追踪技术给各大科技巨头带来的四大应用前景

原文标题:眼球追踪技术给各大科技巨头带来的四大应用前景 过去一年来,在硬件.软件和人工智能等多领域的共同助力下,眼球跟踪技术发展神速,成为众科技巨头眼中的下一个竞逐目标. Google和Facebook接连收购了眼球追踪技术公司EyeFluence和Eye Tribe.Tobii Tech公司也正向移动眼球追踪领域迈开脚步--科技大鳄们的一系列动作昭示着人机交互的未来风向. 从显示器.笔记本电脑到智能手机和VR头显,眼球追踪技术慢慢地在各类电子设备中找到其用武之地.以下是笔者整理的与眼球追踪技术

由 12306.cn 谈谈高并发+高负载网站性能技术

12306.cn 网站挂了,被全国人民骂了.我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题.因为仓促,而且完全基于本人有限的经验和了解, 所以,如果有什么问题还请大家一起讨论和指正.(这又是一篇长文,只讨论性能问题,不讨论那些用户界面.用户体验.或是是否把支付和购票下单环节分开的功 能性的东西) 甲.认识业务的特殊性 任何技术都离不开业务需求,所以,要说明性能问题,首先还是想先说说业务问题. 其一,有人可能把这个东西和扣扣或是网游相比.但我觉得这两者是不一样的,网游和扣

整理收藏一些大型网站架构技术方面的文章

整理收藏一些大型网站架构技术方面的文章,这里就作为一个导航页面吧,也许文章来自博客园好友,或者其他网站,论坛,博客,我知道地址的都会注明,偶尔也会发表一些自己的看法,仅供收藏,以备自己不时查看,也欢迎博客园好友点评 1.收集的php编写大型网站问题集 http://www.cnblogs.com/ruthon/p/4477904.html

谷歌收购眼球追踪技术公司Eyefluence,眼动关注度将成为VR的新视角

[阅读原文] 作者:海洋 [摘要]:谷歌Daydream View头戴设备将于下月上市,其增强虚拟现实的平台上可能集成今收购的Eyefluence公司的眼球追踪技术,欲打造下一代具有眼动关注功能头戴设备,对抗HTC.Oculus和三星在VR和AR应用研发上的持续发力. 眼球追踪技术创业公司Eyefluence首席执行官Mattermark在博客文章悄然公布:"Eyefluence团队正式加盟谷歌!凭借Google和Eyefluence的合力,我们将继续推进眼交互技术,扩大人类的潜能,共同创造改变

静态资源文件自动压缩并替换成压缩版本(大型网站优化技术)

原文:静态资源文件自动压缩并替换成压缩版本(大型网站优化技术) 这一次,我总结和分享一项大型网站优化技术,那就是在项目中自动压缩静态资源文件(css.js),并让网站自动加载压缩后的资源文件.当然,这项技术在雅虎35条前端优化建议里也有记载,但它那只是给出一个理论的方案而已,并且采用的是外部压缩工具去压缩,而在我的项目中,是直接通过自己的程序自动化去压缩所有css.js文件,然后让页面直接加载所压缩后的资源,接下来直接进入主题. 本次实验使用的是PHP脚本语言,版本是PHP5.6,是在LINUX

中国最大的25个网站采用技术选型方案

中国最大的25个网站采用技术选型方案 网站排名数据来自 alexa,其中几个站长站被排除了,因为站长类网站的alexa 数据有数量级的偏差 排名 网站 开发语言 1 baidu php 2 qq.com java 3 taobao java 4 sina php 5 google java/c++ 6 163 java 7 weibo.com php 8 soso.com java 9 sohu.com java 10 hao123.com php 11 tmall.com java 12 if