通过电路指纹攻击发现洋葱服务

news2025/1/19 14:39:13

文章信息

论文题目: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%。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2255971.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[每周一更]-(第126期):MQ解耦场景

消息队列(MQ)解耦是一种软件架构设计模式,主要通过中间件将系统中的生产者和消费者模块分离,减少模块之间的直接依赖,使系统具有更高的扩展性和灵活性。这种模式尤其适用于需要处理复杂业务逻辑、频繁请求或异步处理的…

flinkSql 将流和表的互相转换

流——>表 方式一 方式二 方式一&#xff1a;写sql DataStreamSource<String> source env.socketTextStream("localhost", 8881); // 表名&#xff0c;流&#xff0c;字段名称 tableEnv.createTemporaryView("t_1",source&#xff0c;$("…

linuxCNC(五)HAL驱动的指令介绍

HAL驱动的构成 指令举例详解 从终端进入到HAL命令行&#xff0c;执行halrun&#xff0c;即可进入halcmd命令行 # halrun指令描述oadrt加载comoonent&#xff0c;loadrt threads name1 period1创建新线程loadusr halmeter加载万用表UI界面loadusr halscope加载示波器UI界面sho…

SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测

之前和很多群友聊天发现对2016的无域和负载均衡满心期待&#xff0c;毕竟可以简单搭建而且可以不适用第三方负载均衡器&#xff0c;SQL自己可以负载了。windows2016已经可以下载使用了&#xff0c;那么这回终于可以揭开令人憧憬向往的AlwaysOn2016 负载均衡集群的神秘面纱了。 …

vue3+elementPlus封装的数据过滤区

目录结构 源码 index.vue <template><el-form class"mb-5" :rules"rules" :model"queryForm" ref"queryDOM" label-width"80"><el-row :gutter"20"><slot></slot><el-col cla…

iOS如何自定义一个类似UITextView的本文编辑View

对于IOS涉及文本输入常用的两个View是UITextView和UITextField&#xff0c;一个用于复杂文本输入&#xff0c;一个用于简单文本输入&#xff0c;在大多数开发中涉及文本输入的场景使用这两个View能够满足需求。但是对于富文本编辑相关的开发&#xff0c;这两个View就无法满足自…

《黑神话:悟空》闪退,提示D3D12崩溃,游戏崩溃无法启动是什么原因?要怎么解决?

《黑神话&#xff1a;悟空》闪退、D3D12崩溃及游戏无法启动&#xff1a;原因、解决方案与预防措施 作为一名软件开发从业者&#xff0c;我深知电脑游戏运行时可能遇到的各种问题&#xff0c;尤其是像《黑神话&#xff1a;悟空》这样的高品质游戏&#xff0c;其对硬件和系统配置…

JUC:Synchronized和锁升级

1. 面试题 谈谈你对Synchronized的理解Sychronized的锁升级你聊聊Synchronized实现原理&#xff0c;monitor对象什么时候生成的&#xff1f;知道monitor的monitorenter和monitorexit这两个是怎么保证同步的嘛&#xff1f;或者说这两个操作计算机底层是如何执行的偏向锁和轻量级…

SAP SD学习笔记19 - 形式发票(Proforma Invoice)

上面几章讲了投诉处理。 SAP SD学习笔记18 - 投诉处理4 - 请求书订正依赖&#xff0c;投诉处理流程的总结-CSDN博客 本章继续学习SD 模块的其他内容。 本章讲了形式发票&#xff08;Proforma Invoice&#xff09;的概要及系统操作。 形式发票是在出库确认之前&#xff0c;有…

M005 PHP+MYSQL+web编程课程网站的设计与实现 源码 配置 文档

web编程课程网站 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着互联网的飞速发展&#xff0c;各行各业的信息化进程逐步加快。商业信息化、政务信息化、教育信息、服务信息化等等已遍布全国各地。信息化的服务平台能更加高效的为用户提供各种服务…

【力扣】13.罗马数字转整数

问题描述 思路解析 对于这种限制字符的问题&#xff0c;使用Map来对键值存储 对其进行判断&#xff0c;如果前面的数小于后面的数&#xff0c;那么结果相减 否则&#xff0c;正常相加。 代码 class Solution {Map<Character,Integer> mapnew HashMap<Character,In…

docker安装ddns-go(外网连接局域网)

docker先下载镜像&#xff0c;目前最新版是v6.7.6 也可以csdn资源下载 再导入dockers https://download.csdn.net/download/u014756339/90096748 docker load -i ddns-go.tar 启动 docker run -d --name ddns-go --restartalways --nethost -v /opt/ddns-go:/root jeessy/…

洛谷P4913 【深基16.例3】二叉树深度(c嘎嘎)

题目链接&#xff1a;P4913 【深基16.例3】二叉树深度 - 洛谷 | 计算机科学教育新生态 题目难度&#xff1a;普及 解题思路&#xff1a;本题要求树的深度&#xff0c;即求左右子树高度的最大值&#xff0c;首先我们用结构体存树左右节点&#xff0c;然后分别递归地去左右子树的…

Android -- [SelfView] 自定义多行歌词滚动显示器

Android – [SelfView] 自定义多行歌词滚动显示器 流畅、丝滑的滚动歌词控件* 1. 背景透明&#xff1b;* 2. 外部可控制进度变化&#xff1b;* 3. 支持屏幕拖动调节进度&#xff08;回调给外部&#xff09;&#xff1b;效果 歌词文件&#xff08;.lrc&#xff09; 一. 使用…

DNS/域名

概述 每个应用层协议都是为了解决某一类应用问题&#xff0c;而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。客户(client)和服务器…

淘宝直播间智能化升级:基于LLM的学习与分析

自营直播应用技术团队负责的业务中&#xff0c;淘宝买菜的直播业务起步较晚&#xff0c;业务发展压力较大&#xff0c;业务上也就有了期望能够对一些二方的标杆直播间进行学习&#xff0c;并将其优点应用到自己直播间的需求。 最初 - 人海战术&#xff0c;学习PK 业务侧最直接的…

数学拯救世界(一)———寻“数”记

一、 很久很久以前&#xff0c;在一个只认识整数和小数的国度&#xff0c;有一个很残暴的国王提了一个要求&#xff1a;要是不能表示出把一段1米的绳子三等分后的大小&#xff0c;就要把所有的大臣杀掉。 1➗3 0.333&#xff0c;怎么办呀&#xff1f;怎么办呀&#xff1f; 袁q…

夏普MX-4608N复印机维修模式进入方法及载体初始化方法

夏普MX-4608N复印机载体型号&#xff08;图&#xff09;&#xff1a; 型 号&#xff1a;载体&#xff08;黑色&#xff09;MX-561CV 净含量&#xff1a;395克 下面图片中分别有载体、刮板、鼓芯、上纸盒搓纸轮一套&#xff0c;均原装正品&#xff1b; 保养周期将至的时候建…

FPGA Xilinx维特比译码器实现卷积码译码

FPGA Xilinx维特比译码器实现卷积码译码 文章目录 FPGA Xilinx维特比译码器实现卷积码译码1 Xilinx维特比译码器实现2 完整代码3 仿真结果 MATLAB &#xff08;n,k,m&#xff09;卷积码原理及仿真代码&#xff08;你值得拥有&#xff09;_matlab仿真后代码-CSDN博客 MATLAB 仿真…

java+ssm+mysql水产品商城

项目介绍&#xff1a; 使用javassmmysql开发的水产品商城&#xff0c;系统包含管理员、用户角色&#xff0c;功能如下&#xff1a; 管理员&#xff1a;用户管理&#xff1b;种类管理&#xff1b;商品管理&#xff1b;订单管理&#xff1b;评论管理&#xff1b;新闻管理&#…