反网站跟踪的原理

news/2024/5/11 12:23:55/文章来源:https://blog.csdn.net/zdavb/article/details/47319129

这是一篇论文的读书笔记“I DO Not Know What You Visited Last Summer: Protecting Users from Third-party Web Tracking With TrackingFree Browser”原文链接

overview

因为该作者致力于解决网站跟踪问题,首先得明确什么是网站跟踪,请参考博客:个人之前博客 本文作者希望解决的主要是第三方跟踪问题,而跟踪者利用浏览器漏洞获取用户的隐私数据则不在本文考虑之内。
三方跟踪中三方分别是:用户、目标站点和追踪站点(第三方追踪)。当用户访问目标站点时,目标站点中包含第三方的元素,那么在浏览器解析HTML时,会向第三方(追踪站点)发送请求,其中在HTTP request中包含目标站点的信息(URL、时间 etc)。当我们向更多的目标站点访问时,如果这些目标站点中都包含同一追踪站点,那么将会从各个不同的目标站点向追踪站点发送信息。
而追踪站点利用之前在客户端设置的cookie来确定唯一用户。这样,将导致追踪站点获取到用户的浏览历史、浏览习惯等等私人信息。

所以,这里的关键也就看到了,tracker是根据唯一的ID号来标示是否为同一用户,那么换句话说,如果让这个唯一的ID号不唯一了,就能做到anti-tracking了。如何让它不再唯一?那如果让一个浏览器变成N个浏览器,那就不唯一了。这就带来一种思想:如果我将浏览器内部隔离开来,变成一个个实体(principal,我理解是容器)。而且实体的个数是由浏览器内核来动态控制的。那就相当于构造出了一个动态个数的浏览器。

浏览器架构
由上图可知,上层由很多独立的principal组成,每个principal中有local history manager,以及独立的存储。所有的principal之间的通信要通过principal kernel interface和Message policy enforcer.

系统整体架构

整个浏览器由两部分组成:隔离单元(web principal)和内核(kernel)。每个隔离单元有隔离的存储,因此在不同principal内的第三方tracker无法共享相同的ID号。

除了隔离机制,另外一个关键因素是内容分配机制,由principal manager决定怎样分配内容进入不同实体。不同实体之间的关系由principal backend来维护。这里比较抽象,什么是内容分配机制。简单的说,当我打开一个页面时,浏览器内核要决定把页面分配到哪个实体中去(因为现在实体是浏览器的最小单位),是新建一个,还是分配到现有的实体中?这部分决策由principal manager来决定,而决策依据,更具体的说,不同实体之间的关系(图)有principal backend来维护。

主体之间的通信也是很重要的(不能因为隔离,影响基本功能不是),主体间的通信大概归为两类:确定通信(explicit communication)和模糊通信(implicit communication),其中确定通信主要利用浏览器的API(典型的如HTML5中的postMessage)来与确定的页面通信。而模糊通信包括了共享历史记录、共享书签等等信息。在本浏览器中,这两部分工作分别有message policy enforcer和public history manager完成。前者限制了通信的范围,而后者则提供了一条安全的历史共享通道。

在上一篇博客中,我们提到过,网站跟踪最原始的目的是在于提高用户体验和做市场调研等等,那么如果完全限制隔绝网络跟踪,在某种程度上会影响用户体验。为此,作者又引入了DDM(domain data manager)的概念。DDM允许减少实体数量,并在特定实体之间共享数据。

由上面的介绍可以知道,整套系统最核心的思想就是隔离性,也就是principal概念的提出,而在系统中的其他部分,更多的是使隔离性与现有的web系统兼容

下面将对系统中各个组成部分的主要功能和作用做一简单介绍。

内容分配机制

前面提到过内容分配由principal manager来完成,那他是根据什么样的方法实现的呢?它的系统由两部分组成:初始内容分配和派生内容分配。
初始内容是指直接由用户触发的,比如说导航页,比如说在浏览器地址栏中输入的www.baidu.com,也就是说,在一个图里面,是由此去派生其他节点的,而它是根节点,我们称为初始内容。
派生内容与初始内容相反,它是由初始内容生成的,比如弹出的窗口或者页面中嵌入的iframe等。

  1. 初始内容分配:对于初始内容分配,总是将它们归为一个相同的principal,当且仅当它们有相同的parent domain,比如,www.google.com和mails.google.com。
  2. 派生内容分配:该浏览器将所有非用户触发的子帧都放在它父帧的principal中(父帧此时肯定已经存在在某个principal中了),而对所有用户触发的且跨站子帧移动到其他实体或新建一个实体(principal switch,有点象交换机)。

主体交换

主体交换(principal switch)主要解决这样一个问题:即新生成的子帧是存在于与父帧相同的principal中(no switch),还是交换到其他主体或者新建一个主体(switch out)。这里它将运行下面这个算法。
主体交换算法
这个交换算法的主体思想是:查看是否是跨站请求以及是否是用户触发该请求,如果是,switch out。如果新生成的子帧要替换主帧并且是跨站请求,switch out。其他情况下都留在本principal中。
(主帧(main frame)是指每个主体的第一个帧)
主体交换算法保证了最小switch out,减少了开销并保证了可用性,并且将比较危险的容易泄露信息的情景交换出去

主体选择

如果说principal switch返回一个bool,那么主体选择就要选择一个合适的主体,我们之前提到过principal backend来维护一个主体有向图。其中每个节点都是一个主体。AB边的生成是指至少有一次在AB之间的主体选择发生过。
浏览器配置了一个最大为2的入度,强制要求任何主体的父节点数不能超过这个数。这个数决定了tracker的跟踪能力。一般来说,当限制了最大为2的入度后,tracker能跟踪的最大网站不超过3个。(有个公式,但不知道怎么来的)
主体选择算法
算法描述的很清楚,这里就不再赘述了。

主体通信

主体通信(principal communication)包括确定通信和模糊通信,前面已经大致描述了一下这两种。
显然,对于确定通信而言,它利用浏览器的内核API来传递信息。这在某种程度上将使隔离性失效。为了解决该问题,trackingfree限制了它的使用范围:

  • 一个主体中的第三方元素只能与本主体中的第一方元素进行通信。
  • 第一方元素只能与它邻居主体的第一方主体通信(邻居的概念是由有向图来得出的)
  • 所有的其他通信渠道都是不被允许的。

对于模糊通信而言,也有两种形式:安全历史共享(secure history sharing)和通过导航栏通信(communication through navigation)。

  • 安全历史共享:隔离机制也会同时将用户的历史相关数据,如浏览历史、下载历史和书签等信息也隔离掉。我们知道,隔离是有意义的。如果每个主体都能查阅到所有的浏览历史,那前面所做的所有工作都没有意义了。 但是,我们也会看到这样很不方便,就是当用户在浏览器中按返回键时,是希望浏览上个页面,而不是该主体中的上一个页面。为了解决该问题,浏览器内核使用public history manager来维护一个公共历史列表。每当主体local history有更新时,将会通知public history manager来更新公共历史记录。 注意,主体对于public history只能写不能读。也就保护了私有信息。
  • 通过导航栏通信:前面提到过principal switch,这其实是给principal间通信开了一扇门,如果被交换的子帧的URL中带有ID号,那相当于将子帧传播到了另外一个principal中,那如果该principal也被tracker控制,那么它很容易获取ID号并关联。这里,对于URL中的ID号,本浏览器是无能为力,因为难度极大。但是对于在HTTP request中的referer字段中的数据,浏览器可以对此进行过滤。

兴趣配置

兴趣配置(preference configure)和上面提到的public history manager很类似。因为每个principal中都要preference,但是因为principal之间是隔离的。无法之间通信。这时引入了preference configure,通过监控每个principal中preference的变化来更新全局preference。然后使用广播机制告诉各个principal更新preference。

域数据管理器

域数据管理器(Domain Data Manager)的目的在于提高用户的体验,为此,可以允许一些基本信息泄露。DDM由两部分组成:domain data migration 和 domain data synchronization。

  • domain data migration:允许用户为每个regular principal(它的域为*.com)创建一临时主体,其中临时主体没有域属性等其他基本信息。临时主体中的数据是regular principal中的拷贝。临时主体的作用在于为regular principal去做一些额外的请求。而在临时主体中的请求不再进行principal switch而只存在于临时主体中。
    domain data migration例子
    文章中描述了这样一个使用SSO例子:当使用用户的google的账户登陆sears.com时,将会产生一系列的重定向(跨越四个不同的域,sears.com\shld.net\google.com\youtube.com)将产生四个主体,而如果domain data migration激活时,主体的数量将会变成2。工作流程如上图所示。
  • domain data synchrnization: 允许多个主体来共享客户端数据(cookie、HTML5 local storage)此时,这些主体之间再也不能抵抗跟踪,但是其他主体将不受影响。

文章到这里就结束了,论文剩余的部分主要是描述这套系统的实现,以及在通常的网络应用中的可用性,以及理论与实践都证明该浏览器能够有效的抵抗网站的追踪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_764709.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php搭建锁机网站,C/C++轻松写电脑锁机程序

首先得知道cmd界面中可以对windows用户帐号进行操作在c/c中用system("")就能直接与cmd进行通信下面是代码,很简单,不再解释,我们从演示来看这两句代码的功能!# include # include # include int main(){int i 1;int a;…

url获取网站信息不包含网页源文件内的标签_爬虫入门一:爬取一个网页

首先,我们提出一个问题:网页是什么?在我看来,网页就是信息,是我们请求一个公司或者个人发给我们的信息。我们举一个例子,我们在浏览器中输入http://www.baidu.com 然后回车,就会看到我们很熟悉的…

照片欣赏网站php,php照片相册共享系统

照片相册共享系统使用的设是PHP技术和mysql数据库技术开发.该系统是高校计算机专业的毕业设计题目,主要是针对高校毕业设计进行题目的设计,系统功能简单,模块清晰,想要的朋友可以联系我.总体功能模块1 图片管理图片管理应该包括的…

nginx 使用gizp压缩提高网站的传输速度

网站的css,js ,xml,html 在传输的时候可以使用gzip压缩,提高访问速度, 网站上的图片,视频等其它多媒体文件,因为压缩效果不好,所以对于图片没有必要支压缩, 如果想要优化,可以图片的生命周期设…

增加索引会锁表吗_企业为什么要建设网站?你的网站这些问题存在吗?

原标题:企业为什么要建设网站?你的网站这些问题存在吗?如今是创业的人越来越多。很多人纷纷都注册了自己的公司,想自己创业,而多数人创业的时候,想到的第1点就是先建立一个自己的网站。那么你建立自己网站的…

flask session_用Flask写一个图书作者管理网站(附完整代码)

这次给大家带来的是一个非常小的Flask案例,首先看一下做出来的效果:我们主要分为两部分来做,这两部分分别是上图的上部分的表单和下面的列表展示。如果你还没用过 flask,可以先看一下其官方文档的快速入门:http://docs…

PHP 伪静态seo,伪静态、静态、动态网站对SEO的影响有多大?

我看过非常多的关于伪静态、静态、动态网站方面的一些知识,网上有非常多的说法,里边很多不懂装懂的人,胡说八道。甚至是有很多人转载别人的文章加工一下,就开始卖弄学问。最终的结果是,非常多的人不知道到底怎么做才对…

html 居中_SEO小龙人:HTML+CSS之display:inline-block实现三个标签并排居中显示

实现效果&#xff1a;<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv…

具体案例 快速原型模型_产品经理笔试知识点:白盒测试、开发模型、网站跳失率和RFM模型...

概述现今互联网产品经理的岗位的招聘原来越热门&#xff0c;笔者把网上搜集到的产品经理笔试易错题做了完整的解析和举例说明&#xff0c;每篇4道互联网产品经理笔试易错题&#xff0c;分析知识点&#xff0c;提升IT视野见识。本文主要介绍白盒测试&#xff0c;软件的几种常见开…

提升工作效率的那些网站——私藏工具推荐

提升工作效率的那些网站——私藏工具推荐 有哪些网站能提升你的工作效率&#xff1f; 分享一下那些能大幅提高工作效率的网站&#xff0c;都是我们一直在用并且认为在同类型中比较好用的。希望也能帮助到你。 梅花网—灵感素材 关于文案、新媒体的聚合网站&#xff0c;干货满…

推荐一个好玩网站,黑白照片上色、人脸识别都不是问题!

欢迎关注我的微信公号&#xff1a;小张Python! 大家好&#xff0c;我是 zeroing ~&#xff0c;今天给大家分享一个好玩的网站&#xff0c;只需把本地老照片上传&#xff0c;接下来网站就自动对黑白照片进行上色 老照片上色技术 其实已经出来很早了&#xff0c;去年 5 月份时 B…

词云绘制,推荐三种 Python包外加一个在线网站!

词云是文本可视化的重要方式&#xff0c;可将大段文本中的关键语句和词汇高亮展示&#xff0c; 本篇文章先介绍几种制作词云的 Python 库&#xff0c;分别是 WordCloud、StyleCloud、Pyecharts&#xff1b;再加一个在线词云制作网站&#xff1b;最后通过代码实操和可视化效果对…

Vue + Django + PaddleOCR 实现一个在线OCR 识别网站,一键上传快速识别

大家好&#xff0c;我是小张~ 之前写过一篇博文介绍了一款OCR 识别库&#xff0c;识别精度能达到商用级别&#xff0c;并且支持多语言识别&#xff0c;使用详情请参考文章&#xff1a;文本OCR&#xff0c;这个Python库识别效果不输于商用&#xff01;&#xff0c; 除了Paddle…

写一个简单的网站首页,初识 CSS 中 Flex 布局

之前一直用 VUE 写后台管理界面&#xff0c;对前端 CSS 这块一直是半知半解&#xff0c;为了巩固这方便知识&#xff0c;抽空写一些基础页面来巩固一下 今天带来的是一个简单的网站首页&#xff0c;源于《深入解析CSS》中的案例&#xff0c;首页做了简单的自适应&#xff0c;但…

印象笔记如何分享链接_杭州诠网科技分享seo优化如何做好网站的反向链接

几乎所有的网站管理员都希望自己的网站能够在百度、谷歌和其他搜索引擎中排名靠前。因为在搜索引擎排名靠前可以给网站带来很多新客户&#xff0c;这有利于网站产品或服务的营销和网站品牌的提升。虽然我们还没有找到一个神奇的公式来提高网站在搜索引擎中的排名。但是很多例子…

linux网站宝塔无法访问ipv6,centos7宝塔面板服务器开启纯IPV6访问

随着互联网世界日新月异的发展&#xff0c;ipv6好像已经成为一种必不可少的趋势&#xff0c;但是当前国内机房大部分还不能支持ipv6&#xff0c;腾讯云亦如此。同时&#xff0c;现在有部分程序在服务器上运行的时候&#xff0c;需要服务器能监听一个ipv6地址才行&#xff0c;因…

【伸手党福利】【第一弹】jeecg-boot前端主要更改位置(网站标题栏图标、logo、登录后的logo、显示的标题文字、用户头像)

【伸手党请光看标题】 网站标题栏图标 位置 ant-design-vue-jeecg\public\index.html 1、index.html标题在head第9行替换掉&#xff0c;然后复制ico到/public <link rel"shortcut icon" href"<% BASE_URL %>favicon.ico" type"image/x-ic…

关于百度机器人搜索你网站的页面权限设置

百度robots.txt上加 User-agent: * Disallow: / 这可能涉及到公司的网站是否存在信息泄露的风险

git 在线学习网站

Learn Git Branchinghttps://learngitbranching.js.org/?NODEMO&localezh_CN

在线测试键盘网站

在线键盘测试 | zFrontier 装备前线键盘测试工具&#xff0c;在线使用&#xff0c;无需下载&#xff0c;快速检测键盘好坏&#xff0c;兼容各种配列机械键盘、客制化键盘、薄膜键盘https://www.zfrontier.com/lab/keyboardTester