网页指纹的可行性分析,以及除了Tor以外场景的探讨。
网页指纹的发展,挑战,最新研究
主要参考 针对 Tor 的网页指纹识别研究综述
定义
定义:网页指纹攻击——指从加密被动流量中识别出正在访问的网页,不需要识别出流量负载的内容,比如识别出这是一条访问youtube的流量即可。
网页指纹攻击在实际部署中很难应用,因为其本质上就是加密流量识别,并且由于网页的子页面多种多样,更加大了识别的难度。
在学术研究中,大部分工作只关心能否识别出网页的主页面,也有部分工作声称自己可以识别访问子页面的流量,但是往往都是在封闭数据集。
攻击者的角度:互联网服务提供商、Tor 入口的控制者以及与用户处于同一AP接入点的恶意攻击者。
具体场景:Tor,DOH,TLS1.3+ESNI,Shadowsocks
相似问题:恶意流量识别,APP指纹识别,IoT用户行为
网页指纹直觉的可行性(我的理解)
直觉而言:尽管匿名网络加密了所有敏感信息,通过监听和
分析网络流量仍能判断用户是否访问某个网页.因为构成每个网页的 CSS(cascading style sheets)和 JavaScript 代码、图片、视频、广告等元素不完全相 同,访问过程中产生的网络流量就有区别,例如数据 包的大小、顺序和时间等非敏感信息可以形成网页指纹。
直觉限制:并非所有网站都可识别,比如两个盗版网站都用一键建站工具,那么从网页构成上来并无差别。流量是纷繁复杂的,除了访问网页的流量,还有很多别的类型流量,比如后台流量,下载流量等等,难以保证其中不会出现特征类似的流量,尤其是特征提取不完整的情况下。
是攻击而非工具:网页指纹倾向于对特定用户特定网页进行识别,比如攻击者和受害者在同一AP接入点,针对受害者可能常访问的数个常用网站进行识别。(场景:在同一Wi-Fi下,识别用户是否访问了YouTube)
为什么要加这么多限制?这样才可行呀~
发展
从匹配到分类
02~06:匹配问题,对捕获的 用户流量构造特征生成网页指纹,与已知网页指纹进 行匹配从而判断其归属。
TLS1.1 06年
TLS1.2 08年
TLS1.3 18年
09~现在:分类问题,攻击者首先使用提 前收集的若干目标网页(也称受监视页面)的访问流 量训练分类器,然后输入被捕获的用户访问流量,可 输出分类结果,即判断用户访问了某个受监视页面。
从机器学习到深度学习
典型的公开数据集KDD-Cup99(这个是攻击流量的数据集)
09-14年:数据包的统计信息(如数据包的大小和到达顺序等)
发展并非是直线的,1x年仍有从流量中提取特定字段的方式。
即便近两年也有一些工作是用深度学习提取特征+统计特征来进行识别
从单标签页到多标签页面
单标签事脱离实际的,16年开始的工作开始解决多标签的问题,现有解决思路是把多标签场景转换为多个单标签问题。
假设:在用户使用浏览器时,多个标签页面并非同时打开(即存在时间间隔),找到这个时间间隔并对流量进行分割,就能获得多个单标签访问的流量记录,然后可以对分割好的网页访问流量实施网页指纹识别。解决多标签问题时,多标签判定、流量分割和流量分类的 3 个步骤是作为一个系统性问题来考虑,每一个前置步骤中的误差都会对后续步骤的准确率产生影响。
从网站主页多网站所有页面
很多研究并未提及识别网站主页和子页面的问题,或是默认方法通用,或是默认仅能识别主站。
大部分工作从其数据收集方式可以看出并未针对子页面。
20年用DOH来识别网页的工作有特意提到其可以针对网站的子页面。
从封闭到open1再到open2
封闭:测试集中只包含训练集的流量数据。
open1:测试集中还包含访问训练集中不包含的网站流量。
在 open-world 中,网页指纹识别分为 2 个阶段.第 1 阶段被视作 2 分类问题,即判断一段网页访问流量是否属于普通页面类别.如果是,则判断结束;否则进入第 2 阶段, 对 N 个受监视页面进行多分类处理(相当于 closed-world 问题)
上述过程就是再将问题转换为封闭场景问题。
从16年开始,陆续有很多工作手动在测试集中添加噪声来进行测试,但噪声流量与目标流量的占比也是一个值得关注的问题。
open2是我加的,我认为很多声称自己是open-world的工作仅仅是在实验室模拟的环境,而非真正的开放世界,流量并非只有访问网页的流量。我猜想之所以只用访问其他网页的流量作为干扰,是为了便于描述,使结果可复现,因为干扰流量比如音乐,应用等的流量难以找到一个合适的添加方案。但是这样的开放,是否有考虑访问网页的流量在真实流量中的占比呢?
当下挑战
如何更接近真实世界
- 多标签问题
- 噪音流量问题
- 进一步open world的样本比例问题
可行性
- 深度学习的大数据量和网页频繁变动的矛盾
- 浏览器版本,操作系统不一样的效果大打折扣
- 攻击者距离不同带来的差异
为什么我们常常说网页指纹是实验室的游戏(网页指纹在真实世界的挑战)
- 没有厘清网页指纹的边界,它不是一个通用的工具,而是针对隐私的攻击,不能针对所有类型的网站。
- 攻击者与受害者的距离问题:同一AP下和骨干网出入口
- 网站的流量变化:多久更新一次,需要多少人力物力重建?
- 受害者的行为:并非像实验室机器一样只会同时访问一个网站,多网页标签问题,甚至后台流量问题
- 如果仅仅识别主站,是否符合攻击者的需求?
- 如果仅仅可以用SNI识别(虽然TLS1.3+ESNI可能会解决这一点),那就不需要网页指纹了呀,所以流量识别很多时候应用场景在于Tor,或者恶意流量识别。
总结:网页指纹是一个限制级大,需要大量资源(人力物力时间成本),且收获较小的事(针对隐私而言,还有其他方法)。
可不可行?我觉得,条件限制的情况下,可行。
最新研究
Mockingbird2021:Tor,对抗训练
FlowPrint2020:应用识别,半监督
DFD2020:Tor,攻击防御
TrafficSliver2020:Tor,攻击防御
Shen2021:应用识别,GNN
Sirinam2018:Tor,CNN
Cui2019:Tor,多标签,深度学习
li2018:Tor,测量,攻击防御
Sirinam2019:Tor,深度学习,few-shot
Zhuo2018:Shadowsocks,隐马尔可夫
Chen2021:数据增强,few-shot
Poster2019:Tor,攻击防御
Shen2020:多标签页
Shusterman2018:JS恶意代码,缓存
Bhat2018:Tor,CNN
Dahanayaka2020:CNN,RNN
MIMIQ2020:QUIC,攻击防御,系统
zhang2019:HTTP/2,深度森林,子网页
Shan2021:Tor,实时,防御
Cui2020:CNN,多标签,防御
Tik-Tok2019:Tor,时序特征
Jahani2020:Tor,防御模型
Dong2020:IoT设备识别,LSTM
Xu2018:多标签页,XGBoost
Wang2020:优化器,新评价指标
Siby2019:DOH,“关系”
Bushart2020:DOH,时序特征,子页面
总结
- 新协议
- 新方法
- 防御
- 更开放
- 子网页
我如果要做
拟解决四个关键问题:防御成本的测量与评估,深度学习方法以及流量模式变动的人力问题,多标签问题,实时问题,open-world
真实场景
ISP的角度,通过流量识别网站