本论文介绍了基于给每个用户分配独特的DNS记录来追踪用户长达一天的新技术,其主要解决了DNS缓存带来的识别问题。该技术可以突破浏览器隐私模式或者多浏览器模式并区分装载不同组件的计算机。
tagging技术(存储识别用户的数据,e.g. cookie)和fingerprinting技术(识别设备中已经存在的属性,e.g. 字体安装识别)是两种比较常见的技术。但都有其弊端,tagging具有存储独一性,不能在多应用和多浏览器间公用,特别在隐私模式下会失效;fingerprinting难以区分安装了统一系统和软件(golden image)的计算机群体。
新技术有一定限制,其会在用户重启设备或更改网络状态,达到TTL阈值后会失效。该技术在与其他追踪技术一起使用时能突破这些限制从而发挥最大效能。例如,当DNS ID失效时可能分配一个新的DNS ID,但与旧ID绑定的cookie也会绑定到新ID上,从而保证用户追踪不会断开。该技术也同时不受浏览器重启,历史清理,隐私模式,V**,软件映像,SOCKS4,IPv6,HTTPS等因素的映像。
基于DNS缓存的追踪技术主要是通过HTML和JS代码的作用下在用户的Stub Resolver中存储一个独特的DNS数据用于标记用户,存储时间长达一个缓存周期。例如,在用户发送HTTP请求时会向Stub Resolver发送DNS查询并接收一组跟踪器拥有的IP地址,然后浏览器会向组内第一个IP地址发送HTTP请求,然后由IP地址所对应服务器的响应数据,且附带一个跟踪ID,由于IP地址列表是随机的所以分配给每个浏览器的ID是独一的。
红色部分是跟踪者实际可控的组件。
1. 浏览器加载跟踪代码片段;2. 浏览器向操作系统的Stub Resolver请求解析xi.anonymity.fail域名;3. 操作系统向解析平台传递解析请求,而解析平台分析得知需要向域名拥有者控制的DNS解析器解析。且该DNS解析器回应了RRset,即一系列随意排序的跟踪者可控的IP地址;4. Stub Resolver缓存RRset,并向浏览器返回IP地址列表;5. 浏览器向RRset中的第一个IP地址发送HTTP请求;6. 服务器向不同的IP地址发送不同的响应内容;7. JS收集从服务器传来的数据并组装成一个ID;
假设有K个IP地址,假设RRset的顺序是一致随机的,则服务器的IP地址值是均匀分布的。当使用N个主机名的时候就有K^N个可能性的ID值被分配给用户。所以当K最小即K=2时,足够多的N可能会让跟踪者向互联网范围内分配足够量的ID值。而在Stub Resolver的缓存过程中是可以用于维持DNS ID的持久性。那么唯一的问题就在于RRset的随机化,或者是解析平台的负载均衡会避开互斥情况的发生。
具体讨论了新技术面临的一些挑战的解决过程。
DNS缓存刷新
计算机重启,网络状态变换时等会刷新缓存,或者缓存满了进行清空时会导致跟踪ID删除。但DNS刷新这种情况是不常见的无需考虑。
TTL
缓存的DNS记录的TTL决定了DNS跟踪ID的寿命,因为TTL决定了什么时候进行DNS缓存刷新。尽管跟踪者可控的DNS服务器会把TTL设为最大值,但是递传过程中DNS服务器都决定了各自的TTL cap,所以最终的TTL是由这两个之间小的那个决定。总的来说,TTL的长短是可以满足需要用户跟踪需求的。
DNS负载均衡
解析平台往往有很多解析器,尽管Stub Resolver使用一个单一IP地址作为其DNS解析器,但是这个IP地址可能是多个解析器负载均衡的入口IP地址。RRset也因负载均衡的存在能够保证IP地址序列的随机化。
DNS解析链
仅当存在不合理链才会导致技术失效。
HTTP转发代理和Tor代理
这两种情况该技术会失效,因为所有用户从一个代理出口进行DNS请求,分配到的是同一个DNS ID。
Stub Resolver缓存类型
1. 基于记录的缓存2. 基于查询的缓存
foo.example.com CNAME bar.example.com
bar.example.com A 10.2.3.4
基于记录的会把上述两条记录分别缓存,而基于查询的会缓存查询记录(foo.example.com),并只缓存10.2.3.4这个结果。
RRset顺序
1. RRset可能有不同的措施来确定IP地址列表顺序。2. Fixed:对每次请求都回复每次不相同但固定的顺序。该方法可能出现的问题时如果不适用负载均衡可能多个用户会获取到同一个ID值。3. Round-robin:每次请求返回的数据按照Round-robin式循环的顺序。该方法困难在于拥有K个IP地址的RRset只可能产生K个ID,也就是限制了ID数目。有一种解决方案是不直接返回ID数据,而是返回将多个素数K作为一个列表返回,尤其拼凑出多达上亿个ID数据;另一种解决方法是使用如下算法,将当前获取的ID数据强制性再随机化进到RRset中保证下次不取出。
4. Random:随机顺序。
5. Time-based round-robin:每秒返回的数据按照Round-robin式循环的顺序。
跟踪系统
上述原理会导致DNS解析器缓存大量饱和并降低其可靠性,但是由于跟踪目的本具有集中性,所以此类部署了跟踪系统的DNS解析器不会太多。
DNS ID独特性
K值(IP地址数)和N值(DNS hosts/queries)的选择决定了DNS ID的冲突数(M)。且K或N越大,M越小。
未来可能性
•Resolvers:重排序RRsets;•Resolver platforms: 负载均衡;•Stub Resolvers: 维持一个固定RRsets;•Browsers: 使用RRset中的第一个IP地址
如上几个因素是保证该技术的基本属性,但在未来这些属性随时都可能发生改变导致该技术失效。
原文作者:Amit Klein, Benny Pinkas
原文标题:DNS Cache-Based User Tracking
原文会议:Network and Distributed Systems Security (NDSS) Symposium 2019
原文链接:https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_04B-4_Klein_paper.pdf