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原生来说,功能比较丰富,扩展性高,减…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
