文章信息
论文题目:DeepCorr: Strong Flow Correlation Attacks on Tor Using Deep Learning
期刊(会议):Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security
时间:2018
级别:CCF A
文章链接:https://dl.acm.org/doi/pdf/10.1145/3243734.3243824
概述
本文研究了Tor的流关联攻击。流关联是针对Tor(和类似匿名系统)研究的广泛攻击中使用的核心技术。我们认为,现有的流关联技术在关联Tor流量方面是低效的,因为它们使用通用统计相关算法,无法捕捉Tor中噪声的动态复杂性。与使用此类通用统计相关算法不同,在本文中,我们使用深度学习来学习一个适用于Tor生态系统的关联函数。我们的流关联系统称为DeepCorr,然后使用学习到的相关函数对实时的Tor流进行关联。请注意,与网站指纹攻击相反,DeepCorr不需要学习任何目标目的地或目标电路;相反,DeepCorr学习了一个可以用来连接任意电路和任意目的地上的流的关联函数。换句话说,即使连接目的地不属于学习集的一部分,DeepCorr也可以对Tor连接的两端进行关联。此外,即使在学习过程中使用的电路与发送流的Tor电路不同,DeepCorr也可以进行关联。这是因为DeepCorr的神经网络学习Tor中的通用噪声特征,而不管训练过程中使用的具体电路和终端。
我们通过在实时Tor网络上的大规模实验展示了DeepCorr的强大性能,并评估DeepCorr在关联记录的Tor连接的入口和出口段方面的真阳性率和假阳性率。据我们所知,我们的数据集是目前最大的关联Tor流数据集,我们已向公众提供该数据集。
预备知识
流关联攻击,也称为确认攻击,用于在存在加密和其他内容混淆机制的情况下关联网络流。特别是,流关联技术可以通过关联流量特征来链接匿名连接的出口和入口段,从而打破Tor和混合网络等匿名通信系统中的匿名性。或者,可以使用流关联技术来识别使用网络代理来混淆其身份的网络犯罪分子,即跳板攻击者。
图1显示了流关联场景的主要设置。该设置由具有M个入口流和N个出口流的计算机网络(例如Tor网络)组成。一些出口流是一些入口流的混淆版本;然而,由于使用了加密和类似的内容混淆技术(如洋葱加密),因此无法使用数据包内容来检测此类流之间的关系。例如,在Tor的情况下,
F
i
F_{i}
Fi和
F
j
F_{j}
Fj是一个Tor连接的入口和出口段(见图 1),但是由于洋葱加密,通过检查
F
i
F_{i}
Fi和
F
j
F_{j}
Fj的数据包内容无法检测到这种关联。我们称
(
F
i
,
F
j
)
(F_{i},F_{j})
(Fi,Fj)为一对相关流。
在此设置中,目标是通过比较所有入口和出口流的流量特征(例如数据包时序和大小)来识别(部分或全部)相关流对,例如 ( F i , F j ) (F_{i},F_{j}) (Fi,Fj)。使用流量特征链接关联的流对称为流关联。
先前的流关联算法使用的统计相关性度量的主要类型:
- 互信息
- 皮尔逊相关系数
- 余弦相似度
- 斯皮尔曼相关系数
本文方案
特征及其表示
我们用 F i = [ T i u ; S i u ; T i d ; S i d ] F_{i}=[T_{i}^{u};S_{i}^{u};T_{i}^{d};S_{i}^{d}] Fi=[Tiu;Siu;Tid;Sid]表示一个双向网络流i,其中T是流i的数据包间延迟 (IPD) 向量,S是第i个流的数据包大小的向量,上标u和d表示双向流i的“上游”和“下游”(例如, T i u T_{i}^{u} Tiu是i的上游IPD的向量)。另请注意,我们仅使用每个向量的前 ℓ \ell ℓ个元素,例如,仅使用前 ℓ \ell ℓ个上游 IPD。如果向量的元素少于 ℓ \ell ℓ,我们通过补零将其填充至 ℓ \ell ℓ个。
现在假设我们的目标是关联两个流 i 和 j。我们用以下由 8 行组成的二维数组来表示这对流: F i , j = [ T i u ; T j u ; T i d ; T j d ; S i u ; S j u ; S i d ; S j d ] F_{i,j}=[T_{i}^{u};T_{j}^{u};T_{i}^{d};T_{j}^{d};S_{i}^{u};S_{j}^{u};S_{i}^{d};S_{j}^{d}] Fi,j=[Tiu;Tju;Tid;Tjd;Siu;Sju;Sid;Sjd]
网络架构
我们使用卷积神经网络(CNN)来学习Tor噪声网络的相关函数。我们使用CNN,因为网络流特征可以建模为时间序列,并且已知CNN在时间序列上具有良好的性能。此外,CNN对于数据流中模式的位置是不变的,这使得它们非常适合寻找可能发生变化的流量模式。
图2显示了DeepCorr的CNN网络的结构。网络采用流对
F
i
,
j
F_{i,j}
Fi,j作为输入(在左侧)。 DeepCorr的架构由两层卷积和三层全连接神经网络组成。第一个卷积层有
k
1
k_{1}
k1个内核,每个内核的大小为
(
2
,
w
1
)
(2,w_{1})
(2,w1),其中
k
1
k_{1}
k1和
w
1
w_{1}
w1是超参数,我们使用的步幅为
(
2
,
1
)
(2,1)
(2,1)。使用第一个卷积层背后的直觉是捕获输入矩阵
F
i
,
j
F_{i,j}
Fi,j的相邻行之间的相关性,这些行应该与相关的Tor流相关,例如,
T
i
u
T_{i}^{u}
Tiu和
T
j
u
T_{j}^{u}
Tju之间。
DeepCorr 的第二个卷积层旨在从所有时序和大小特征的组合中捕获流量特征。在这一层,DeepCorr 使用 k 2 k_{2} k2个内核,每个内核大小为 ( 4 , w 2 ) (4,w_{2}) (4,w2),其中 k 2 k_{2} k2和 w 2 w_{2} w2也是我们的超参数,并且它使用的步幅为 ( 4 , 1 ) (4,1) (4,1)。
第二个卷积层的输出被拉平并馈送到具有三层的全连接网络。 DeepCorr在每层卷积之后使用最大池化来确保排列不变性并避免过度拟合。最终网络的输出为: p i , j = Ψ ( F i , j ) p_{i,j}=\Psi (F_{i,j}) pi,j=Ψ(Fi,j)。为了标准化网络的输出,我们应用了sigmoid函数,将输出缩放到0到1之间。因此, p i , j p_{i,j} pi,j表示流i和j关联(相关)的概率。如果 p i , j > η p_{i,j}>\eta pi,j>η,则 DeepCorr 认为流i和j相关,其中 η \eta η是我们在实验期间讨论的检测阈值。参数 ( w 1 , w 2 , k 1 , k 2 ) (w_{1},w_{2},k_{1},k_{2}) (w1,w2,k1,k2)是我们系统的超参数;我们将通过实验调整它们的值。
训练
为了训练我们的网络,我们使用了通过Tor创建的大量流对。这包括大量关联流对和大量非关联流对。关联的流对 F i , j F_{i,j} Fi,j由Tor连接的两个段组成(例如,i 和 j 是 Tor 连接的入口和出口段)。我们用 y i , j = 1 y_{i,j}=1 yi,j=1标记关联对。另一方面,每个非关联流对(即负样本)由两个不属于同一Tor连接的任意Tor流组成。我们用 y i , j = 0 y_{i,j}=0 yi,j=0标记这些非关联对。对于每个捕获的 Tor入口流i,我们通过形成 F i , j F_{i,j} Fi,j对来创建 N n e g N_{neg} Nneg个负样本,其中j是任意Tor连接的退出段。 N n e g N_{neg} Nneg是一个超参数,其值将通过实验获得。
最后,我们使用交叉熵函数定义 DeepCorr 的损失函数,如下所示:
L
=
−
1
∣
F
∣
∑
F
i
,
j
∈
F
y
i
,
j
log
Ψ
(
F
i
,
j
)
+
(
1
−
y
i
,
j
)
log
(
1
−
Ψ
(
F
i
,
j
)
)
\mathcal{L}=-\frac{1}{|\mathcal{F}|} \sum_{F_{i, j} \in \mathcal{F}} y_{i, j} \log \Psi\left(F_{i, j}\right)+\left(1-y_{i, j}\right) \log \left(1-\Psi\left(F_{i, j}\right)\right)
L=−∣F∣1Fi,j∈F∑yi,jlogΨ(Fi,j)+(1−yi,j)log(1−Ψ(Fi,j))
其中
F
\mathcal{F}
F是我们的训练数据集,由所有关联和非关联的流对组成。我们在实验中使用Adam优化器来最小化损失函数。Adam优化器的学习率是我们系统的另一个超参数。
实验设置
数据集
图 3 显示了Tor 实验的实验设置。我们使用在不同虚拟机内运行的多个Tor客户端来生成和收集Tor流量。我们使用每个Tor客户端通过Tor浏览前50,000个Alexa网站,并捕获这些连接进入和退出Tor网络的流量(我们使用一半连接进行训练,另一半用于测试)。因此,进入的流采用Tor单元格式,退出Tor的流采用常规HTTP/HTTPS格式。我们使用1,000个任意Tor电路通过Tor浏览网站,即每个电路用于浏览大约50个网站。我们在形成 Tor 电路时使用了不同的保护节点;我们能够通过禁用 Vanilla Tor 强制保护中继重用的选项来替换我们的保护节点。我们还使用了常规的Firefox浏览器,而不是Tor的浏览器,以便能够强制执行电路选择。我们使用 Tor 版本 0.3.0.9,由 Python 脚本自动化。
我们没有出于实验目的设置自己的 Tor 中继,我们只是在所有实验中使用公共 Tor 中继。我们在 Tor 客户端上使用 tcpdump 捕获了 Tor 的入口流。为了捕获出口 Tor 流量,我们通过自己的 SOCKS 代理服务器创建了出口 Tor 流量隧道(如图 3 所示),并在其上使用 tcpdump收集了出口 Tor 流量 。我们还通过Tor可插拔传输收集了500个网站,以评估它们作为针对DeepCorr的对策表现如何。
我们分两步收集了 Tor 流量:首先,我们在两周的时间内收集了流量,然后在三个月的时间间隔后,我们在一个月内收集了更多 Tor 流量(以显示时间对训练的影响)。
超参数
经过实验,下表中的超参数具有较好的效果
评估指标
真阳、假阳,阈值 η \eta η用于区分真阳和假阳,从而绘制ROC曲线
实验结果
性能初探
图4显示了 DeepCorr 对于不同阈值
η
\eta
η值的真阳性和假阳性率。该图显示了DeepCorr在关联 Tor 流方面的良好性能——每个流仅使用300个数据包。
DeepCorr可以关联任意电路和目的地
如前所述,DeepCorr学习了Tor的关联函数,可用于将任何电路上的Tor流关联到任何目的地,而不管训练过程中使用的电路和目的地如何。为了证明这一点,我们在两个实验中比较 DeepCorr 的性能,每个实验包含2000个 Tor连接,因此有2000个关联对和2000*1999个非关联流对。在第一个实验中,DeepCorr测试相关性的流使用与 DeepCorr训练期间使用的流相同的电路和目标。在第二个实验中,DeepCorr测试相关性的流程(1)使用与训练期间的电路完全不同的电路,(2)使用与训练期间使用的目标网站不同的网站,(3)训练数据一周之后的数据。图5比较了DeepCorr两个实验的ROC曲线。可以看出,DeepCorr在这两个实验中表现相似,表明DeepCorr学习到的相关函数可用于将任意电路上的Tor流与任意目的地相关联。
DeepCorr不需要经常重新训练
由于Tor流量的特征会随着时间的推移而变化,因此任何基于学习的算法都需要偶尔重新训练以保持其相关性能。我们进行了两项实验来评估DeepCorr需要重新训练的频率。在我们的第一个实验中,我们通过连续30天收集的 Tor流评估了我们的预训练模型。图6显示了关联和非关联流对每一天的相关函数的输出。正如我们所看到的,非关联流的相关值没有显着变化,但是,关联流的相关值在大约三周后开始略有下降。这表明对手只需每三周甚至每月一次重新训练 DeepCorr。
DeepCorr的性能不会随着测试流数量的增加而降低
DeepCorr的相关性能并不取决于相关的流数量,即测试数据集的大小。图7显示了具有不同流量数量的数据集上的TP和FP结果(针对特定阈值)。可以看出,对于不同数量的相关流,结果是一致的。这表明,即使DeepCorr 应用于截获流的大得多的数据集(例如,大型恶意IXP收集的流),DeepCorr 的相关性能也将与通过我们的实验得出的结果相似。
DeepCorr的性能随着流长度的增加而快速提高
图 8 比较了DeepCorr在不同长度的流下的性能,表明DeepCorr的性能对于较长的流观测有显着提高。
DeepCorr的性能随着训练集的大小而提高
图 9 比较了使用不同数量的流进行训练时DeepCorr的ROC曲线(对于所有实验,我们使用固定数量的1000个流进行测试)。该图证实,增加训练集的大小可以提高DeepCorr的性能。
DeepCorr显著优于最先进的技术
我们进行了实验,将DeepCorr与此类现有系统在关联Tor流方面的性能进行比较。图10将DeepCorr与其他系统的ROC曲线进行了比较,其中所有系统都在完全相同的Tor流集(每个流最多300个数据包)上进行测试。
为了确保公平比较,我们在完全相同的设置中评估DeepCorr和RAPTOR。图11中显示的结果证明了DeepCorr的性能极其优越。
另一方面,我们表明,对于较短的流观测,DeepCorr 和 RAPTOR 之间的性能差距明显更大。为了证明这一点,我们根据DeepCorr和RAPTOR从每个流拦截的流量进行比较。图12中显示的结果表明DeepCorr显著优于其他方法,尤其是对于较短的流观测。
DeepCorr的计算复杂度
在表 2 中,我们显示了与以前的技术相比执行单个DeepCorr相关的时间(所有系统的相关流均为300个数据包长)。我们发现DeepCorr明显比以前的技术慢,例如比RAPTOR慢大约两倍。但请注意,由于所有系统都使用相同长度的流,因此DeepCorr在相同的时间开销下提供了更好的相关性能。
DeepCorr也适用于非Tor应用程序
虽然我们将DeepCorr介绍为对Tor的流关联攻击,但它也可用于关联其他流关联应用程序中的流。我们通过将 DeepCorr应用于跳板攻击问题来证明这一点。
对于我们的跳板检测实验,我们使用了2016年CAIDA匿名数据轨迹。与之前的工作类似,我们使用拉普拉斯分布模拟网络抖动,并通过不同速率的伯努利分布模拟数据包丢失。我们通过在跳板设置中学习DeepCorr将 DeepCorr应用于这个问题。由于这种情况下的噪声模型比Tor简单得多,因此我们为此应用程序使用DeepCorr的更简单的神经网络模型。此外,我们只使用双向连接的一个方向,以便与以前的系统进行公平的比较,以前的系统都只使用单向流。图14和表3分别显示了我们定制的神经网络和参数选择。
我们的评估表明,当网络条件稳定时,DeepCorr提供的性能可与Houmansadr等人的“最佳”流相关技术相媲美。 然而,当网络条件变得嘈杂时,DeepCorr在检测跳板攻击方面提供了明显更强的性能。如图15所示,其中通信网络存在标准偏差为0.005秒的网络抖动,并且网络随机丢弃1%的数据包。
对策
混淆流量模式:可插拔传输
减少对手执行流量关联的机会:为 Tor 设计实用的 AS 感知中继选择机制
总结
我们设计了一个名为DeepCorr的流关联系统,它在关联Tor连接方面远远优于最先进的系统。 DeepCorr利用先进的深度学习架构来学习适合Tor 复杂网络的流关联函数(而不是之前的作品使用通用统计相关指标)。我们表明,通过充分的学习,DeepCorr可以将Tor连接关联起来(从而打破其匿名性),其准确性明显强于现有算法,并且使用的流观测长度要短得多。