文章信息
论文题目:Discovering onion services through circuit fingerprinting attacks
期刊(会议): High-Confidence Computing
时间:2023
级别:CCF C
文章链接:https://www.sciencedirect.com/science/article/pii/S2667295222000514
概述
在本文中,我们提出了一种新的电路指纹攻击,利用这种攻击,我们可以发现使用两对填充机的Tor网络的洋葱服务。该攻击将电路分为客户端电路和洋葱服务电路。使用我们的攻击,攻击者可以高精度地识别隐藏在数百万Tor用户中的洋葱服务。该检测降低了洋葱服务的匿名性。
与Kwon的电路指纹攻击相比,我们丢弃了Kwon使用的电路构造序列和活动持续时间的特征,并使用计数相关和方向相关的特征。我们的目标是发现洋葱服务,因此我们不需要像Kwon那样对电路类型进行分类,而是将它们分为两类:客户端和洋葱服务。
我们分别使用SVM、Random Forest和XGBoost分类模型进行实验,以选择性能最好的模型。实验结果表明,我们使用Random Forest和XGBoost达到了99.99%的精度和召回率。
背景和相关工作
Tor网络
访问外部的电路通常称为通用电路。
电路指纹攻击
电路指纹攻击是一种通过洋葱路由器上的Tor电路指纹来分类和发现特定Tor电路的方法。
Kwon等人首先发现Tor电路在构造顺序、活动持续时间方面呈现不同的特征,并提出了一种电路指纹攻击。根据这些特征,使用C4.5决策树分类模型进行分类,获得98%以上的真阳性率(TPR)和0.1%以下的假阳性率(FPR)。此外,他在OS-RP电路上使用传统的网站指纹攻击来去匿名化洋葱服务。
电路指纹防御
目前,Tor部署了两对电路填充机:客户端引入电路隐藏机和客户端汇聚电路隐藏机。它们主要用于隐藏客户端-引入节点和客户端-汇聚节点电路构造序列的特征。在这种方法中,客户端和中间中继在协商后彼此发送虚拟单元,最多可达前10个单元,因此客户端-RP和客户端-IP构造序列与一般电路构造序列完全相同。这防止入口中继通过电路构造顺序轻松发现客户端-RP和客户端-IP电路。
为了保护访问洋葱服务的客户端免受电路指纹攻击,Kadianakis等人。提出了两种类型的填充机:分数延迟策略和抢占式电路填充策略。分数延迟策略在接收到客户端访问互联网服务的请求后,在通用电路中插入虚拟洋葱握手,然后在虚拟洋葱握手完成后发送应用数据;抢占电路填充策略(PCP)在抢占电路中注入虚拟洋葱握手。抢占式电路是Tor客户端持续构建的电路,并在使用之前保持休眠。因此,与之前的策略相比,该策略不会延迟客户端流量。
威胁模型
在这项工作中,我们假设一个中继对手,即:对手在Tor网络中构建一个或多个洋葱路由器,这些路由器已被赋予Guard标志。对手只能被动地记录流量信息,但不能插入、修改、延迟和丢弃它们。
如图3所示,控制第一中继的对手可以获得主机的网络地址。为了区分这些主机的身份,敌方记录与主机交换的所有cell信息,提取最能代表电路特征的特征,并通过训练的监督学习分类器对这些电路进行分类。根据分类结果,对手可以在所有主机中找到洋葱服务,并记录这些洋葱服务的网络地址。
方法
特征
基于前面的观察,我们决定使用计数相关和方向相关的特征。最后,选择以下五个特征。
- 传出cell数
- 传入cell数
- cell总数
- 传出cell数占总cell数的比例
- 传入cell数占总cell数的比例
分类
我们提出了一种新的电路指纹攻击,该攻击从所有电路中识别洋葱服务创建的电路,以发现洋葱服务。
在这种攻击中,对手控制一个或多个直接连接到主机的入口节点。因此,入口中继可以获得主机的网络地址,但不能区分主机的身份(客户端或洋葱服务)。继电器记录发送和接收到主机的单元的信息,并排列这些单元以形成电路的单元序列。然后,从单元序列中提取特征,并使用训练好的分类模型将电路分类为客户端电路或洋葱服务电路。
在这项工作中,使用机器学习算法来预测主机的身份。Kwon等人以前的工作使用决策树驱动分类器来预测电路类型。我们选择SVM、Random Forest和XGBoost分类模型,并在前面描述的功能上使用sklearn和XGBoost python API实现这些分类器。
为了验证我们的分类模型在填充机干扰下用于电路类型分类的准确性,我们还使用我们的特征和分类模型对电路进行了类型分类。具体来说,电路分为五类:通用电路、客户端-IP电路、客户端-RP电路、OS-IP电路和OS-RP电路。
我们的电路指纹和Kwon的电路指纹的区别
特征:我们使用计数相关和方向相关的特征,而不是使用电路构造顺序和活动持续时间的特征。这是因为客户端-引入节点电路隐藏机和客户端-会合电路隐藏机混淆了电路构造序列。
分类:我们使用了二分类方法。根据主机的身份,它可以分为客户端和洋葱服务。由于我们只关注于查找洋葱服务,因此不需要对电路类型进行分类。
实验
实验设置
在过去的四个月里,我们在学院的工作站上做了所有的实验。我们使用Shadow建立了Tor虚拟网络环境,并在模拟环境中采集了原始电路数据。然后使用Python编写的工具从Tor日志文件中提取电路的单元信息。
数据收集
我们在Shadow模拟环境中运行修改后的Tor软件,以获得大量用于分析的电路。Shadow是专门为Tor网络模拟实验开发的离散事件网络模拟器,可以直接运行Tor软件。因此,Shadow遵循与Tor电路相关的所有逻辑。在Shadow提供的模拟环境中,我们可以构建服务器、客户端、目录权限、洋葱服务和中继,并可以控制所有节点。因此,我们可以在没有真实Tor网络的情况下获得Shadow中的电路数据。
我们的目标是从入口继电器收集大量电路。并且我们计划不使用电路的时间相关功能,因此我们不需要考虑网络拥塞和Tor网络的大小。因此,构建了一个缩小的Tor网络,该网络需要更低的硬件要求,并且完成所需的时间更少。我们从Tor Collector下载了2021年6月的网络状态共识、服务器描述符、带宽、onionperf和userstats relatecountry文件,并使用TorNetTools构建了一个具有66个中继的私有Tor网络(包括26个入口保护中继、28个中间中继、3个出口中继和9个出口保护中继)。
数据集
我们使用自己的Python程序从电路的单元序列中提取特征,以获得每个电路的特征向量。并分别从每个cell序列的前10、20、30个cell和所有cell中提取特征。
超参数调优
为了找到分类器超参数的最优值,我们使用网格搜索和k倍交叉验证。该方法是迭代通过各种超参数组合,将模型拟合到训练集上,并给出具有最佳k倍交叉验证精度的超参数组合。在实验中,使用了sklearn提供的GridSearchCV类,并将k值设置为5。我们从具有较大数据间隙的超参数开始,逐渐缩小数据间隙,最后在我们的数据集上获得分类器的最优超参数。
通过上述方法,我们选择了具有RBF(径向基函数)核的SVM分类器,其C值和gamma值分别为128和128;在随机森林分类器中使用了30棵决策树和基尼杂质;XGBoost分类器使用了20轮boosting,其目标值为二元:logistic(二元分类的logistic回归)。然后,在训练集上用最优超参数对这些分类器进行再训练,得到最终的分类模型。
评估指标
精度、召回、F1分数
电路指纹攻击的实验结果
表2总结了所考虑的分类器使用10倍交叉验证对每个电路中的前10、20、30和所有单元实现的精度、召回率和F1。从表中,我们发现所考虑的分类器表现良好,无论我们使用前10、20、30或所有cell。特别是对于前10个cell,SVM、RF和XGBoost分类器的精度分别达到99.95%、99.99%和99.99%。主要原因是客户端发送的cell序列的第10个cell是传入cell,而洋葱服务发送的cell是传出cell(+1表示进入中继的传入cell,-1表示来自入口中继的传出cell)。
电路类型分类的实验结果
表3显示了在电路类型分类中实现的精度、召回率和F1。当使用前10个单元的特征进行分类时,所有分类器的精度和召回率都最差。当使用前20个单元的特征时,分类器的准确率达到80%以上,召回率达到79%左右。相反,使用每个电路中的前30个或所有单元,分类器的性能最好,精度和召回率超过99%。
与Kwon电路指纹的比较
我们将我们的电路指纹攻击与Kwon的进行了比较。根据Kwon的论文,我们使用Python重新实现了他的电路指纹。为了确保公平比较,我们在数据集上运行Kwon的电路指纹。并且我们丢弃了Kwon电路指纹的活动持续时间特征,因为我们的数据集不包含时间戳。
表4显示了准确度、精密度、召回率和F1结果。我们的电路指纹算法达到了99.96%的准确率、99.97%的准确度和99.97%召回率,优于Kwon的电路指纹攻击。由于Tor在所有客户端电路上使用客户端引入和会合电路隐藏机,Kwon的具有电路构造序列特征的电路指纹攻击的性能变得更差。
总结
在这项工作中,我们提出了一种新的电路指纹攻击,它允许入口中继从所有主机识别洋葱服务。我们应用三种最先进的机器学习算法分别对电路的前10、20、30和所有单元进行分类。实验结果表明,当使用电路的前30个单元和所有单元时,随机森林和XGBoost分类器的性能最好,精度为99.99%,召回率为99.99%。