Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Depending on HTTP/2 for Privacy? Good Luck

作者:Gargi Mitra,Prasanna Karthik Vairam,Patanjali SLPSK,Nitin Chandrachoodan,Kamakoti V

单位:Department of CSE IIT Madras(印度理工学院)

会议:DSN 2020

链接:https://ieeexplore.ieee.org/document/9153390

Abstract

当前,一些隐私保护方案利用了“HTTP/2的多路复用机制能够很好地隐藏数据包大小”这个假设,在本篇论文中,作者研究了这个假设是否在实际中可行。 因此,作者设计了一套攻击方案,攻击者能够通过改变网络状况对加密的数据包进行流量分析攻击。

Introduction & Background

HTTP/1.x v.s. HTTP/2

HTTP/1.0版本,每个TCP连接只能处理一个HTTP请求,这将造成严重的网络延迟。HTTP/1.1版本,引入了keep-alive机制和管道机制,但都存在延迟问题。 img

HTTP/2的多路复用机制解决了该问题:

  • 同一域名下,只需建立一个TCP连接;
  • 每个TCP连接承载了多个双向流通的流,每个流都有标识和优先级;
  • 这些流以二进制帧的形式发送;

举例:https://www.tunetheweb.com/performance-test-360/

HTTP/2还增加了服务端推送机制,这允许服务器能够将资源主动推送到客户端。

HTTPS的隐私问题

虽然HTTPS做到了对数据的加密,但是有工作显示,通过对加密网络流量的分析,攻击者能够推断出网页的一些细节。作者认为,当网页具有以下特征时,便可实现攻击:

  • 网页包含一个其他网页不包含的对象
  • 对象的大小不同于其他网页相应对象大小

img HTTP/2的多路复用机制在一定程度上会缓解此类攻击。 img

网路参数

作者猜测多路复用机制可能会受到网络条件变化的影响。如,它们可能会影响TCP层参数,比如拥塞窗口大小,而拥塞窗口大小反过来又可能影响HTTP/2参数,比如多路复用强度。在本篇论文中,作者考虑了如下四种网络参数对HTTP/2多路复用的影响。

  • 时延
  • 抖动
  • 带宽限制
  • 目标数据包的丢弃

High Level Overview

攻击模型如下图所示: img 敌手是路径上一台受损的网络设备,具备以下能力:

  • 能够对数据包的未加密头字段进行访问
  • 测量数据包的大小
  • 延迟发送数据包
  • 限制带宽
  • 丢弃数据包

作者的假设: - 假设敌手的目标是从加密的HTTP/2流中推断对象的内容。如果成功,攻击者可以使用相关HTTP/1.x文献中的任何技术来发起全面的隐私攻击。
- 假设敌手在实际用户流量收集时没有解密能力。 - 假设敌手的行为无法模仿客户或服务器的行为,它仅仅模仿了常见的网络问题。 - 假设敌手在发起攻击之前有足够的时间(约数分钟)访问网站并调整网络参数。 - 假设敌手了解有关网页中的对象的请求顺序以及感兴趣对象的特征。

Impact of Network Parameters on HTTP/2 Multiplexing

图三显示了服务器创建线程,应答客户端O1和O2请求的过程。在存在TLS/SSL加密的情况下,应答包的交错传递使敌手很难估计每个请求的应答包大小。 img 实验环境:作者使用 www.isidewith.com 网站一个名为“2020年总统预测”的页面进行了测试。作者感兴趣的对象是一个大小约为9500B的HTML文件,复用度为98%,作者将改变网络参数的变化,即延迟,抖动,带宽,数据包丢弃,通过衡量复用度来测试是否可以攻击成功。

时延

作者认为修改时延会改变网络中客户端→服务器路径上的所有数据包的延迟,但是两个连续数据包之间的到达时间间隔不会改变。因此,时延对攻击无利。

抖动

img 图4通过扩展图3演示了HTTP/2服务器在抖动的网络条件下的行为。在这种情况下,攻击者仅可推断出O1的应答数据包,无法推断出O2的应答数据包。 作者探索了不同的抖动值对多路复用的影响。 img

带宽限制

作者探索了不同带宽对重传次数和复用率的影响。实验的初始带宽是1000Mbps,作者修改带宽为800,500,100和1,对网页中一个对象下载100次,以检查复用率。结果表明限制带宽可以在一定程度上减少重传次数和复用率,但是只能在一定程度上提高成功率。 img

特定包丢弃

作者研究了HTTP/2协议的RST_STREAM机制是否能够提高攻击的成功率。通常,当通信信道损失率很高时,客户端会向服务器发送HTTP/2 RST_STREAM信号,服务器收到信号后会关闭当前流,并刷新相应的对象段,从而减少网络的负载。如下图所示,该特性能够提高攻击的成功率。

img 在这一过程中,对于攻击者,最具挑战的是如何确定何时开始和停止丢弃数据包。作者认为,攻击者可以是使用计时器或者计数器来衡量。 作者的实验表明,当丢包率为80%时,发送重置信号的概率高达90%。

Our Privacy Attack

目标网站特征

目标网站会按照用户的偏好,顺序列出8个政党的列表。网页的JS被触发时,客户端会在短时间内向服务器发送8个图像请求。图像的大小在5KB-16KB之间。敌手试图通过加密流量分析推断出8个政党在网页上的排列顺序。

客户端设置

约500名志愿者在不同客户端的firefox上点击该网页。

攻击者设置

作者控制的实验室网关为攻击者。当有流量与目标网站发起连接时,便开始攻击。敌手在客户端-服务器链路上引入抖动(延时为50ms),并开始计算GET请求数量,客户端发送第6个GET请求时,敌手将带宽降低至800M,同时开始丢弃80%的应用程序包,在接下来的6秒内执行此操作,以迫使客户端向服务器发送重置流信号。在此之后,抖动值增加到每个GET请求包额外延迟80ms,以迫使服务器以非多路复用的形式传输8个连续的图像文件。

结果

img

  • 当敌手仅对一个对象感兴趣时,可以以100%的精度找到它
  • 当对整个图像的序列感兴趣时,由于需要增加更多抖动,从而导致连接断开,精度降低。

参考:

https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/14