INFLOW:用于检测隐藏服务器的反向网络流水印
文章信息
论文题目:INFLOW: Inverse Network Flow Watermarking for Detecting Hidden Servers
期刊(会议):IEEE INFOCOM 2018 - IEEE Conference on Computer Communications
时间:2018
级别: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),以诱导伪随机的静默间隔模式。 以下我们将区分三种不同的时间间隔。
- 丢弃间隔(dropping interval):对应于水印嵌入器不断丢弃从客户端到客户端入口节点的包的间隔;
- 客户端静默间隔(client silent interval):对应于观察者由于水印嵌入器的丢弃操作的影响而不看到来自客户端到其入口守卫的任何数据包的间隔。客户端静默间隔包括丢弃间隔,但它可能更长。
- HS静默间隔(HS silent interval):对应于观察者由于水印嵌入器的丢弃操作的影响而不看到来自HS到其入口守卫的任何数据包的间隔。
水印嵌入器选择参考时期内的非连续子间隔的子集,并丢弃在选定的子间隔期间观察到的流包,从而创建一组客户端静默间隔。水印嵌入器有两个主要功能:1)丢弃间隔的选择(由丢弃间隔序列生成器(DISG)执行),2)数据包丢弃(由丢弃器dropper执行)。图2显示了INFLOW的嵌入方案。
具体过程:
- 参考时期开始,DISG向dropper提供一组随机选择的子区间标识符。DISG使用一个秘密密钥和一个nonce的拼接作为密码学安全函数的种子,该函数生成从概率质量函数中提取 m ~ + 1 \widetilde{m} +1 m +1个伪随机整数数字。
- 设 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所示):
- 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−ϕF−1]。包间间隔通过相邻到达时间做差可以得到。
- 静默间隔识别:将 Δ Φ \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中间隔的开始时间。
- 比较和探测:设 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)−dj−1(q))−(d^j(q)−d^j−1(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速率之间的最佳平衡。
相关文章:

INFLOW:用于检测隐藏服务器的反向网络流水印
文章信息 论文题目:INFLOW: Inverse Network Flow Watermarking for Detecting Hidden Servers 期刊(会议):IEEE INFOCOM 2018 - IEEE Conference on Computer Communications 时间:2018 级别:CCF A 文章链…...

社区物联网云服务架构设计
文章目录 1 摘要2 架构图2.1 社区物联网云服务网络拓扑图2.2 社区物联网云服务通讯流程图2.3 社区远程开锁功能流程图 3 应用场景 1 摘要 随着社区管理越来越智能化,社区物联网升级与改造的市场空间也越来越大。社区物联网包含楼宇对讲、门禁门锁、通道闸等等设备系…...

Linux - 文件系统 - 理解目录 - 理解 软/硬链接
前言 在上篇博客当中,我们对 文件系统 和 inode 做了初步了解,本博客将在上篇博客的基础之上,对于 文件系统当中的目录进行进步一阐述。 Linux - 进一步理解 文件系统 - inode - 机械硬盘-CSDN博客 目录 一个文件有一个 inode,…...
Springboot websocket前端无法访问到,Websocket因AOP代理 前端无法请求到
Springboot websocket前端无法访问到,Websocket因AOP代理 前端无法请求到 问题出现 在我后端springboot启动后,前端无法请求websocket请求连接到我们websocket服务器。 想要的效果 在我后端springboot启动后,前端可以请求到我们websocket…...

基于高质量训练数据,GPT-4 Turbo更出色更强大
11月7日消息,OpenAI在首届开发者大会上正式推出了GPT-4 Turbo。 与GPT-4相比,GPT-4 Turbo主要有6方面的提升: 1、扩展下文对话长度:GPT4最大只能支持8k的上下文长度(约等于6000个单词),而GPT-4…...

jenkins + gitlab 自动部署(webhook)
Jenkins是一个流行的开源CI/CD工具,可以与Git等版本控制系统集成,实现自动构建、测试和部署。Webhook是一种机制,可以在Git仓库中设置,在代码提交或合并请求时触发Jenkins构建任务,以完成自动化部署。 实操 设备信息 …...

【数据集】全网最全的常见已公开医学影像数据集
目录 一,极市医学数据集汇总 1.CT 医学图像 编辑 2.恶性与良性皮肤癌 3.白内障数据集 4.胸部 X 光图像(肺炎) 5.用于图像增强的内窥镜真实合成曝光过度和曝光不足帧 6.医学家 7.乳房组织病理学图像 8.皮肤癌 MNIST:HA…...

图形数据库的实战应用:如何在 Neo4j 中有效管理复杂关系
关系数据库管理系统( RDBMS ) 代表了最先进的技术,这在一定程度上要归功于其由周边技术、工具和广泛的专业技能组成的完善的生态系统。 在这个涵盖信息技术(IT) 和运营技术(OT) 的技术革命时代,人们普遍认识到性能方面出现了重大挑战,特别是…...

Linux内核中的overlay文件系统
一、简介 Docker 内核实现容器的功能用了linux 内核中的三个特性 Namespace、Cgroup、UnionFs,今天我们来说一下UnionFs。 linux UnionFs 实现的是overlay 文件系统 OverlayFs 文件系统分为三层, lower 是只读层 Upper 是可读写 Merged 是 lower 和U…...

archery修改为不能自提自审核上线SQL
目录 背景修改代码效果参考 背景 我和同事都可以提交上线SQL,但是不能自己提交的SQL自己去审核通过。目前的情况是可以自提自审。 修改代码 找到/opt/archery/sql/utils/workflow_audit.py文件 ...省略...# 判断用户当前是否是可审核staticmethoddef can_revie…...

如何处理git多分支
本篇文章主要处理以下两种多分支问题 如何将自己在本地的修改上传到一个新的Git分支(比如用于测试,不合并进main分支)?如何在一个新的本地仓库拉取一个项目的非main分支,并处理他们关联关系? 1. 将自己在…...

Proteus仿真--基于DS1302与数码管设计的可调电子钟
本文主要介绍基于51单片机的DS1302的可调式电子钟实验(完整仿真源文件及代码见文末链接) 仿真图如下 其中数码管显示电子钟时间信息,按键用于调节时间,时间芯片选用DS1302芯片 仿真运行视频 Proteus仿真--基于DS1302与数码管设…...

ESP32网络开发实例-远程Web串口监视器
远程Web串口监视器 文章目录 远程Web串口监视器1、应用介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将构建一个 ESP32 网络服务器,用作远程串行监视器。 基于 Web 的串行监视器的工作方式与通常用于调试目的的 Arduino IDE 串行监视器的工作方式相同。 1、应用介绍 …...

xadmin后台在每一行记录增加一个复制链接按钮
xadmin后台在每一行记录增加一个复制链接按钮 1、效果 点击复制后,自动把url链接复制到粘贴板,按Ctrl+v即可显示复制内容。 2、实现代码 adminx.py # 用户管理 class UserWhiteListAdmin(object):search_fields = [name, mobile] # 检索字段list_display...

LVS+Keepalived 高可用群集
一、一.Keepalived工具介绍 专为LVS和HA设计的一款健康检查工具 • 支持故障自动切换(Failover) • 支持节点健康状态检查(Health Checking) • 官方网站:http://www.keepalived.org/ 二、Keepalived工作原理 • …...
数据传输的思考
Wi-Fi:Wi-Fi是一种无线网络技术,可以用于无线互联网接入、局域网通信和数据传输等。Wi-Fi基于IEEE 802.11标准,通过无线信号传输数据,提供高速的无线网络连接。Wi-Fi可用于连接设备与路由器或者设备之间的直接通信,可以…...

ETL-使用kettle批量复制sqlserver数据到mysql数据库
文章标题 1、安装sqlserver数据库2、下载kettle3、业务分析4、详细流程(1)转换1:获取sqlserver所有表格名字,将记录复制到结果(2)转换2:从结果设置变量(3)转换3ÿ…...

交流充电桩与直流充电桩的区别
1、背景 直流充电桩的学名是非车载充电机,是相对于交流充电桩而言的。交流充电桩是采用传导方式为具备车载充电机的电动汽车提供交流电能的专用装置。 2、交流充电桩和直流充电桩 1.1、交流充电桩 交流充电桩包括单相和三相交流充电桩。 图一是交流充电桩原理框…...

基于单片机公交安全预警系统仿真设计
**单片机设计介绍, 基于单片机公交安全预警系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的公交安全预警系统可以被设计成能够实时监测公交车辆的行驶状态,并在发生异常情况时进行…...

HarmonyOS基础组件之Button三种类型的使用
简介 HarmonyOS在明年将正式不再兼容Android原生功能,这意味着对于客户端的小伙伴不得不开始学习HarmonyOS开发语言。本篇文章主要介绍鸿蒙中的Button使用。 HarmonyOS中的Button相较于Android原生来说,功能比较丰富,扩展性高,减…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...