INFLOW:用于检测隐藏服务器的反向网络流水印

文章信息

论文题目:INFLOW: Inverse Network Flow Watermarking for Detecting Hidden Servers
期刊(会议):IEEE INFOCOM 2018 - IEEE Conference on Computer Communications
级别:CCF A
文章链接:https://sci-hub.yt/10.1109/infocom.2018.8486375

概述

INFLOW是第一种能够在流量的目的地嵌入水印,并且即使在水印生成器目标方向上没有足够的流量传输时也能在流量源头检测到所嵌水印的技术。

旧方法不足:多年来,研究人员提出了各种网络流水印技术,以解决面对多种威胁的准确归因问题。不幸的是,所有这些方法都有一个共同缺点:水印只能沿着载体流量同向传播。这意味着水印可以有效追踪从来源到目的地的流量,但无法实现反向追踪。这在双向流量的情况下不是问题,但检测单向流量来源的情况下是一个问题。例如,用户从Web服务器(可能隐藏在TOR网络上)下载数字对象,则服务器到客户端将持续有流量,而相反方向的数据包很少。

INFLOW原理:INFLOW旨在利用TCP/TOR拥塞管理机制,该机制会导致数据源停止发送消息,直到从目的地收到先前消息的确认。INFLOW的水印生成器在目的地利用TCP连接的ACK数据包和TOR的SENDME消息,从而向我们想要探测的发送者的TCP流注入由受控时间间隔组成的签名。

背景和攻击场景

Tor简介

TOR电路是在基于TCP的覆盖网络上建立的加密安全虚拟路径,其中来自客户端的应用层数据通过多个TOR中继路由。电路可以传输一个或多个应用层流的数据。通常,客户端通过选择三个中继(入口、中间和出口中继)来建立电路,并使用洋葱路由算法将数据流加密和封装到电路中。 TOR中的流被定义为通过电路传输的应用程序数据流,而在传统通信中,通常会封装在单个传输层流中。应用层数据被打包成相同大小的单元(等于512字节)。入口中继通常被称为入口守卫或入口节点。只有TOR客户端和出口中继可以将单元与流关联起来。

当客户端要访问一个隐藏的服务时,它选择一个中继作为它的汇聚节点并建立到它的回路;隐藏服务也建立了到汇聚节点的回路,如图1所示。在客户与隐藏服务之间的通信中,汇聚节点将流消息转发到隐藏服务的出口节点,并代表两个回路之间的交换点。

在这里插入图片描述

场景

分发者通过在TOR上创建隐藏服务器(HS)来提供其内容。 HS发布滥用或非法内容,并通过生成洋葱URL使其可供客户使用。一个洋葱网址通常是一个由16个字符组成的半数字字符串,以.onion作为后缀,可以唯一地识别隐藏的网页。当客户想要访问TOR上的隐藏服务时,它在洋葱浏览器上插入洋葱URL,并在初始化阶段后,建立了从客户到HS的通信通道。从HS到客户的通用TOR路径如图1所示。 从客户到服务器的路径对应于两个TOR电路,并由六个中间节点组成。

TOR拥塞控制

为了避免TOR中继拥塞并保持公平的资源共享,TOR对于任何给定的电路使用端到端拥塞窗口。该窗口(固定大小为1000个单元)对应于任何给定电路中可以同时传输的单元的最大数量。为了控制这一点,电路的端节点发送一个SENDME消息,每接收100个单元就通知发送方单元组的正确接收。收到SENDME消息后,发送方窗口滑动100。TOR还在子电路级别即流级别使用端到端窗口,即采用精确机制。它允许每个流中最多有500个正在传输的单元。在流级别,每发送50个单元就发送一个SENDME消息。

水印系统

去匿名化的实体(DE)(例如执法机构):希望检索TOR暗网中分发滥用或非法内容的隐藏服务(HS)的IP地址。DE拥有一个目标隐藏服务的洋葱URL。如果需要,DE还成为隐藏服务提供者的授权客户,以便访问其Web服务。我们假设DE控制HS的入口卫兵,这是关于去匿名化HS文献或针对HS的攻击技术的一个常见假设。

TOR客户端节点:在其中放置了水印嵌入模块。从TOR客户端使用洋葱URL访问隐藏服务并建立到HS的TOR电路。

嵌入模块:在选定的流量上打上水印。

检测器模块:放置在受控的HS入口卫兵上,监视并分析通过的所有流量。检测器验证观察到的流量中水印的存在/缺失。一旦在观察到的流量中检测到水印,服务器的源IP地址将从该流中提取并提供给DE。

TCP流情况

  • 流量方向(从客户端入口节点到客户端的方向):存在大量流量
  • ACK方向(从客户端到客户端入口节点的方向): ACK 和少数带负载的数据包

水印嵌入算法

嵌入算法旨在在ACK方向上丢弃选定的TCP数据包突发(主要是TCP ACK),以诱导伪随机的静默间隔模式。 以下我们将区分三种不同的时间间隔。

  1. 丢弃间隔(dropping interval):对应于水印嵌入器不断丢弃从客户端到客户端入口节点的包的间隔;
  2. 客户端静默间隔(client silent interval):对应于观察者由于水印嵌入器的丢弃操作的影响而不看到来自客户端到其入口守卫的任何数据包的间隔。客户端静默间隔包括丢弃间隔,但它可能更长。
  3. HS静默间隔(HS silent interval):对应于观察者由于水印嵌入器的丢弃操作的影响而不看到来自HS到其入口守卫的任何数据包的间隔。

水印嵌入器选择参考时期内的非连续子间隔的子集,并丢弃在选定的子间隔期间观察到的流包,从而创建一组客户端静默间隔。水印嵌入器有两个主要功能:1)丢弃间隔的选择(由丢弃间隔序列生成器(DISG)执行),2)数据包丢弃(由丢弃器dropper执行)。图2显示了INFLOW的嵌入方案。

在这里插入图片描述

具体过程:

  1. 参考时期开始,DISG向dropper提供一组随机选择的子区间标识符。DISG使用一个秘密密钥和一个nonce的拼接作为密码学安全函数的种子,该函数生成从概率质量函数中提取 m ~ + 1 \widetilde{m} +1 m +1个伪随机整数数字。
  2. 设 D 是包含选择为客户端静默区间的参考周期中子区间的起始时间的向量; dropper 将根据 D 中的次数丢弃,dropper 开始在一个持续时间为 δ \delta δ的间隔内丢弃所有在 ACK 方向上观察到的 TCP 包。

报文突然丢失的影响:
当入口守卫发送的未确认数据量达到RWIN (TCP receive window)值时,入口守卫停止发送新报文,并在每个过期时间后继续发送重传报文。所有未确认的数据,以及从洋葱链上一个节点接收到的新数据,都在入口守卫的 TCP缓冲区中不断累积。因为入口守卫不能向客户端释放新的单元格,所以客户端不会发送任何新的SENDME消息,而多达500个单元格会累积并保留在客户端入口守卫中。因此,会合节点停止向HS发送 SENDME 消息;由于TOR 的拥塞控制机制,在发送了500个未确认的 cell 之后,HS 在收到该电路的一个新的 SENDME 消息之前不能发送任何新的 cell。如果水印在TCP协议确定何时关闭连接的过期时间内停止在 ACK 方向上丢弃数据包,客户机的入口节点就会恢复向客户机发送数据包,并向洋葱链发送SENDME消息,这样整个通信过程就可以重新启动。这种行为确保了从HS到HS入口节点的通信中产生一个时间间隔(HS 静默间隔),这可以很容易地被TOR电路检测器识别。

水印检测算法

检测器拦截并分析重要流量,并寻求识别与所观察流中的水印对应的HS静默间隔的模式。检测器和水印生成器必须同步,以商定参考周期和有效向量D之间的对应关系。外部网络时间协议(NTP)用于保持水印生成器和检测器之间的同步。
此外,检测器知道两条关键信息:DISG的输入数据和水印生成器使用的加密函数,因此可以计算向量D。检测器分析每个流的分组间隔时间,并构建静默间隔的序列。如果在流中观察到的连续静默间隔之间的距离序列与在当前参考时间段有效的丢弃向量D中的值之间的距离的子序列匹配,则该流被标记为带水印的流。

在这里插入图片描述

具体来说可分为3个主要步骤(如图4所示):

  1. IPD计算:对IP流进行嗅探,并测量数据包到达时间 Φ = [ ϕ 1 , … , ϕ F ] \Phi =[\phi _{1},\dots ,\phi _{F} ] Φ=[ϕ1,,ϕF]。然后根据到达时间计算包间间隔 Δ Φ = [ ϕ 2 − ϕ 1 , … , ϕ F − ϕ F − 1 ] \Delta \Phi =[\phi _{2}-\phi _{1},\dots ,\phi _{F}-\phi _{F-1} ] ΔΦ=[ϕ2ϕ1,,ϕFϕF1]。包间间隔通过相邻到达时间做差可以得到。
  2. 静默间隔识别:将 Δ Φ \Delta \Phi ΔΦ中所有比阈值 θ t h \theta _{th} θth大的间隔抽取出来形成 Δ S \Delta _{S} ΔS。根据 Δ S \Delta _{S} ΔS计算出向量 D ^ \hat{D} D^,其每个值 d ^ i \hat{d}_{i} d^i Δ S \Delta _{S} ΔS中间隔的开始时间。
  3. 比较和探测:设 q q q是最小的静默间隔匹配长度, D ( q ) D ^{(q)} D(q) D ^ ( q ) \hat{D} ^{(q)} D^(q) D D D D ^ \hat{D} D^长度为 q q q的子序列。如果一个流被嵌入了水印,就会存在一对子序列 ( D ( q ) , D ^ ( q ) ) (D^{(q)},\hat{D} ^{(q)} ) (D(q),D^(q)),使得如下公式成立 ∑ j = 2 q ∣ ( d j ( q ) − d j − 1 ( q ) ) − ( d ^ j ( q ) − d ^ j − 1 ( q ) ) ∣ < β \sum_{j=2}^{q}\left | (d_{j}^{(q)}-d_{j-1}^{(q)})-(\hat{d}_{j}^{(q)}-\hat{d}_{j-1}^{(q)} ) \right | <\beta j=2q (dj(q)dj1(q))(d^j(q)d^j1(q)) <β,其中 β \beta β是阈值。

都是公式,很抽象,解释一下:水印嵌入的时候有个向量 D D D,这个向量决定了客户端静默间隔的开始时间。但客户端出现静默间隔时,HS那边不会立马也出现静默间隔,会有一定的延迟。所以不能通过开始时间来判断是否某个流被嵌入了水印。但是可以通过两个静默间隔开始时间之间的差值来判断,因为差值是不变的。上面的公式就是围绕这一点描述的。

性能评估

实验设计

混合测试框架有四个主要组件(客户端、水印嵌入器、检测器和HS),安装在Amazon Web Services(AWS)上的虚拟实例上,流量被迫通过我们无法控制的TOR网络。通用架构如图5所示。客户端由虚拟私有云(VPC)上的AWS实例组成。水印嵌入器是安装在客户端实例上的模块。来往客户端的所有流量都会通过水印嵌入器。HS和检测器安装在第二个VPC上的两个不同AWS实例上。来往HS的所有流量都通过检测器,检测器分析分组时间戳并应用检测逻辑来检测水印。这两个VPC分别在两个不同的地区(俄勒冈和爱尔兰)执行。

在这里插入图片描述

在每次实验开始时,启动水印嵌入器和检测器。然后,客户端建立了到汇聚节点的新电路并联系HS,然后HS也建立到汇聚节点的电路。一旦整个通信线路建立,一个数据文件通过六个TOR中继从HS传输到客户端。 实验划分如下:
(A)750次测试,以评估检测器检测带水印流量的能力;
(B)750次测试,以测试针对未标记流的检测算法效果;
(C)750次测试,针对使用与检测器使用的输入密钥不同的输入密钥进行水印标记的流来测试检测算法。

下表是实验参数

在这里插入图片描述

实验结果

图 6 显示了在真阳性(TP)和假阳性(FP)率方面的准确性。结果表明,该检测器能够正确识别带有水印的流量,具有较高的准确率。
TP率的测量方法:用检测器正确标记为带水印的流的数量除以A组中测试流量的总数。
FP率的测量方法:用检测器错误标记为带水印的流的数量除以被测试流量的总数。

在这里插入图片描述

六种主要用于反流量水印技术的威胁类型,评估INFLOW对此类技术的鲁棒性:定时扰动、包丢失、流再封装,分裂和混合、虚拟包插入和包填充。

思考

水印嵌入器是通过在 ACK 方向上大量丢弃数据包来诱导的,但也有其他方法可以用于获得类似的效果,从而在流量源处诱导水印:

  • 延迟 SENDME 消息;
  • 流量方向的丢包突发;
  • 在通信方向上丢弃选定的数据包及其后续重传副本

INFLOW 的主要缺点:

  • 在INFLOW的场景中,INFLOW假设DE可以控制HS的入口守卫;尽管一些研究人员已经表明,HS选择由DE控制的中继的概率不可忽略,但TOR社区在防止旨在恶意控制入口守卫的攻击方面也投入了巨大的努力;
  • 通过INFLOW嵌入的水印对第三方并不是不可见的,这意味着任何观察到其中有静默间隔的流的实体都很可能怀疑该流已被加了水印;然而,第三方无法确定它是一个真正的水印(嵌入了正确的水印密钥)还是一个模仿水印行为的东西。

总结

INFLOW利用TCP拥塞控制和TOR的滑动窗口机制的相互依赖性,提供了一种将水印嵌入TOR流的独特方法,展示了如何使用短时丢弃ACK分组的突发来嵌入由静默间隔序列组成的水印。在伪随机选择的时间点,数据流的相反方向(即从TOR客户端到其入口节点)的ACK分组被丢弃。以这种方式,INFLOW隐式地在来自客户端已联系的HS的流量中创建受控的静默间隔模式。水印可以被知道密钥的检测器识别,检测器被放在从HS到HS的入口守卫的路径上。
此外,INFLOW对针对传统水印技术的已知攻击具有鲁棒性。最后,通过对流经真实TOR网络的流进行一组实验来证明INFLOW的有效性。结果表明,INFLOW实现了高TP率和低FP率。通过正确调整系统参数,可以获得TP和FP速率之间的最佳平衡。

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

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

相关文章

Docker 安装 Apache

目录 拉取官方 Apache 镜像 查看本地镜像 列出正在运行的容器 运行 Apache 容器 创建一个 HTML 文件&#xff1a;index.html 访问 Apache 拉取官方 Apache 镜像 查找 Docker Hub 上的 httpd 镜像。 可以通过 Tags 查看其他版本的 httpd&#xff0c;默认是最新版本 httpd…

SpringMVC 基础知识

学习目标 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作熟练应用基于 REST 风格的请求路径设置与参数传递能够根据实际业务建立前后端开发通信协议并进行实现基于 SSM 整合技术开发任意业务模块功能 1 SpringMVC 简介 1.1 概述 1.1.1 web程序开发流程 【执行过程】…

从入门到精通!Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师!

Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师&#xff01; 个人简介什么是数据分析如何自学数据分析书籍推荐作译者简介作者简介译者简介 主要变动导读视频&#xff1a;购书链接&#xff1a;参与方式往期赠书回顾 个人简介 &#x1f3d8;️&…

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏 一、proxx小游戏介绍1.1 proxx小游戏简介1.2 开源地址 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署Node.js环境4.1 下载Node.js安装包4.…

动态规划求二维网格中从左上角到右下角的最短路径( 每次只能向下、向右、向右下走 ) java 实现

dp[i][j] 表示在以点(0,0)作为左上角&#xff0c;点(i,i) 作为右下角的二维网格中 左上角到右下角的最短路径&#xff0c; 动态转移方程为&#xff1a;dp[i][j] min{ dp[i][j-1],dp[i-1][j],dp[i-1][j-1] }.distance weight[i][j] ImageUtils.java&#xff1a; import java.a…

三十分钟学会Shell(上)

Shell ​ Shell 本身并不是内核的一部分&#xff0c;它只是站在内核的基础上编写的一个应用程序&#xff0c;是用户和Linux文件系统之间的桥梁。Shell 有自己的特殊性&#xff0c;就是开机立马启动&#xff0c;并呈现在用户面前&#xff1b;用户通过 Shell 来使用 Linux&#x…

Windows日常故障自我排查:用工具eventvwr.msc(事件查看器)分析问题故障

windows故障排查方法一&#xff1a; 工具用法 系统故障问题时&#xff0c;找不到解决方法 首先&#xff0c; 在搜索栏输入&#xff1a; 事件查看器(eventvwr.msc) 打开程序 根据程序找到程序运行的LOG 根据程序Operational筛选出错误日志&#xff1a; 日志中找错误原因&…

假期宅家不无聊,用极米投影仪H6 Pro 4K解锁宅家多样玩法

不知道大家平时的假期是怎么度过的&#xff0c;是选择出门游玩?还是要在家好好安排自己的学习充电计划?平日工作这么累&#xff0c;不如趁假期好好休息一下&#xff0c;把以前落下的番剧补回来。不过手机的屏幕太小&#xff0c;电脑又不能躺在床上看&#xff0c;只有够大尺寸…

Lora学习资料汇总

目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 Lora LoraWAN教程 LoRa联盟 LoRa联盟&#xff1a;LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书&#xff1a;htt…

解决mv3版本浏览器插件,不能注入js脚本问题

文章目录 背景引入ifream解决ifream和父页面完全跨域问题参考链接 背景 浏览器插件升级mv3版本后&#xff0c;不能再使用content_script内容脚本向原浏览器&#xff08;top&#xff09;注入script标签达到注入脚本的目的。浏览器认为插入未经审核的脚本是不安全的行为。 引入…

ajax请求方式处理

1、前置准备 1.1、SpringBoot项目下&#xff1a;写一个controller RestController public class TestController {RequestMapping("/yyy")public void test(HttpServletRequest request, HttpServletResponse response){String yang request.getParameter("y…

AI助力钢铁产业数字化,python基于YOLOv5开发构建钢铁产业产品智能自动化检测识别系统

AI为工业产业智能化数字化赋能早已不是什么新鲜事&#xff0c;越来越多的行业和领域开始更大范围去拥抱AI&#xff0c;享受科技带来的变革力量&#xff0c;在我们之前的文章中也有很多相关领域项目的实践经历&#xff0c;本文的核心目标就是想要基于钢铁领域产品数据来开发构建…

【KMP算法】学习总结

说明&#xff1a; 文章内容为对KMP算法的总结&#xff0c;以及力扣例题&#xff1b;文章内容为个人的学习总结&#xff0c;如有错误&#xff0c;欢迎指正。 文章目录 1. KMP算法1.1 算法步骤1.2 关于指针回退问题 2 . LeetCode例题 1. KMP算法 1.1 算法步骤 KMP算法通常用于…

springboot_vue知识点

代码放到了仓库。 springboot_vue知识点 1.搭建1.vue2.springboot 2.前后端请求和响应的封装1.请求封装2.响应封装 3.增删改查1.查询2.分页3.新增和编辑4.删除 4.跨域和自定义异常5.JWT鉴权1.配置pom2.拦截前端请求的拦截器3.生成token并验证token4.登录后生成token5.前端获取…

Grafana如何实现折线柱状图

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

竞赛选题 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

从六个方面对比Go和Python的差异

您是否想过 Go 与 Python 之间的主要区别是什么&#xff1f;随着对软件开发人员的需求不断增加&#xff0c;选择哪种编码语言可能会很困难。 ​ 在此&#xff0c;我们将从六个方面对比Go和Python,探讨 Go 和 Python之间的差异。我们将讨论它们的特点、优缺点&#xff0c;以便…

GPT、GPT-2、GPT-3论文精读笔记

视频&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3 论文精读【论文精读】_哔哩哔哩_bilibili MAE论文&#xff1a;把bert用回计算机视觉领域 CLIP论文&#xff1a;打通文本和图像 GPT 论文&#xff1a;Improving Language Understanding by Generative Pre-Training …

史诗级云故障敲响警钟,应用保障不能没有“连续键”!

近日&#xff0c;知名云服务商出现一次史诗级的云故障&#xff1a;全球所有区域/所有服务同时异常&#xff0c;故障持续长达3小时之多&#xff0c;云上众多应用受到极大影响。 如今&#xff0c;在一个充满不确定性和复杂性的数字化时代&#xff0c;哪怕是顶级云服务商亦不能避…