对网络流水印的调查

文章信息

论文题目:Network Flow Watermarking: A Survey
期刊(会议): IEEE Communications Surveys & Tutorials
时间:2016
级别:中科院1区
文章链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7570208

概述

被动流量分析(Traffic Analysis, TA)有三大缺点:1) 它需要使用复杂的机器学习算法,而这些算法通常无法在可扩展性和准确性之间实现最佳平衡;2) 需要大量的样本流量来提前训练机器学习算法;3) 容易受到流量扰动的影响,这可能是由于正常的网络行为造成的,也可能是由于对手恶意操纵流量造成的。

为了解决上述的一些弊端,该领域已经提出了主动TA算法。网络流量水印是一种主动式TA,它将水印嵌入选定的流量中,以识别网络中特定点的流量。

Zander 等人概述了计算机网络协议中现有的隐蔽信道,并根据隐蔽信道所传递信息的发送方和/或接收方是否同时也是合法信道所传递信息的发送方和/或接收方,区分了四种可能的通信情况。传输信息的合法系统通常被称为 “公开渠道”。图1展示了 Zander 等人描述的四种通信场景。
image.png

在第一种情况下,合法通信的发送方和接收方同时也是隐蔽通信的发送方和接收方。在第二种情况下,合法接收者和隐蔽接收者是同一个实体,而隐蔽发送者与合法发送者不同,后者不知道自己的通信被第三方用作隐蔽信道。相反,在第三种情况下,合法发送方和隐蔽发送方是同一个实体,而两个接收方则不同。在最后一种情况下,两个隐蔽信道端点与合法端点完全不同。

网络流水印是隐蔽信道的一种特殊情况,属于图1所示的最后一种通信场景。分析者应能够在源头附近主动、有意识地改变选定流量的某些统计特征,以便在流量中嵌入特定模式(水印)。由于水印的存在,在任何观察点都能轻易识别目标流量。

流水印的目标

在互联网的两个或多个不同观测点识别相同的流量是网络流量水印的主要目标。这一特定目标通常被称为 “网络流量识别”、“流量链接”、"流量关联 "或 “流量回溯”,具体取决于参考场景和上下文。通常情况下,这种识别的结果是确定网络中流量从源节点到目的节点的路径(部分或全部)。

合法目标

合法目标是指在计算机网络背景下,所有旨在改善服务和性能或反对恶意/非法行为的追求目标。

  1. 追踪网络攻击:在这种情况下,研究人员发现,通过在流量的某些(可修改)特征中嵌入水印,即使攻击者使用跳板或匿名网络,水印也能抵御并保持可观察性。因此,人们发现水印对于追踪从受害者到攻击者的流量非常有用。
  2. 追踪僵尸网络的主人
  3. 服务依赖性检测:网络服务的模块化组织提高了功能性、安全性和可靠性,但也使得在发生错误行为时很难隔离问题的根源。互联网上的服务(如DNS、Web服务器、负载平衡等)之间以及支持这些服务的基础设施之间日益存在着复杂的关系。因此,能够识别复杂平台中网络服务之间依赖关系的仪器可以提供重要帮助。

安全和隐私攻击

即使设计网络流水印的目的是合法的,它也可能被用来试图破坏互联网上的隐私或安全。

  1. 推断用户访问过的网站
  2. 追踪网络电话
  3. 共驻攻击:为提供更高效、更灵活的服务,云服务器供应商将多个虚拟机(VM)放置在同一台物理机上,这些虚拟机可以由不同的客户租用。恶意方可以像合法的服务用户一样合法地运行和管理云中的某些虚拟机实例,从而使攻击者能够推断出驻留在同一物理机上的其他虚拟机的相关信息。

损害特定平台

TOR、Crowds、Anonymizer.com、DC-net、GAP和Hordes是为提供匿名和私密通信而开发的一些技术平台。尽管它们都可能受到主动和被动TA的攻击,但只有TOR和Anonymizer.com在水印攻击下进行了测试。

水印架构

网络流量水印技术由两个主要部分组成:水印嵌入器水印检测器。这两个部分的位置是根据所追求的目标和预期观察目标流量的位置进行设计选择的。水印嵌入器负责将信息转换为具有特定特性的水印代码,并将其嵌入目标流中。相反,水印检测器观察通过特定节点的网络流量,并分析流量特征以检测带水印的流,然后解码水印从而获得嵌入其中的信息。图3描述了这两个部分的主要步骤。

image.png

水印嵌入器

我们将信息流视为从信息源发送到目的地并流经网络的单向有序信息序列。信息源在应用层生成的信息可以被分片/聚合和加密,然后根据互联网协议套件封装成IP数据包流。由于加密的原因,被动观察者通常无法读取应用层的报文。因此,大多数文献都将网络协议层的流量考虑在内。IP层的流量是单向有序的IP数据包序列,由五个IP属性的相同值标识:IP源地址、IP目的地地址、源端口、目的端口和IP协议字段。值得注意的是,由于代理的原因,同一应用流可以在网络的不同点由不同的IP 层流承载。此后,承载同一应用流的两个或多个IP流量被视为同一流量。

按照图3中的示意图,我们描述了水印器进行的四种操作:过滤编码传播嵌入。编码和传播可在离线模式下进行,而过滤和嵌入只能在线实时进行。

  1. 过滤:在嵌入程序之前,水印器会过滤流量,选择要添加水印的目标流量;未被选中的流量将直接发送到网络。
  2. 编码:水印系统可视为在特定信道上传输信息的一种方法。因此,与任何传统通信系统一样,必须对信息进行编码和优化修改,使其适合该方法。
  3. 传播:与所有通信信道一样,携带水印比特的信道也可能存在噪声,载波信号中的干扰可能会破坏水印。因此,研究人员提出了 “分集方案”,以提高水印系统的鲁棒性和嵌入水印的可靠性。基本上,分集方案允许原始信号在特定域中传播。与传统电信系统一样,我们考虑了三种不同类型的传播,也称为分集方案:时间分集、频率分集、空间分集。
  4. 嵌入:水印嵌入过程是将水印位嵌入选定的载波信号中,方法是对载波的某些特征稍作修改。通常情况下,研究人员会选择特定的载体,并提出考虑以下几个因素的方法:主要目标、修改流量特征的能力、水印嵌入器的位置、流量是否加密等。图4提供了研究人员为达到TA目的而采用的几种载体的分类。我们将载体分为四大类:内容、时间、大小和基于速率的载体。

image.png

水印检测器

水印检测器是一个组件,专门用于被动地观察网络中特定点的流量,分析流量特征,并确定观察到的流量中是否嵌入了水印。在系统考虑传输比特序列的情况下,必须识别正确的序列。一个或多个识别器在网络中的具体位置主要取决于人们希望在哪里观察到带水印的流量。

我们考虑了水印识别过程中的两个主要阶段:特征提取和解码。

  1. 特征提取:一旦流量被嗅探,检测器就会根据所选载体提取可能传输水印比特的流量数据包特征。所选特征的集合就是所观察流量的描述向量。
  2. 解码:在提取待检查数据流的特征后,识别器计算提取特征的函数值和先前与水印器安排的参数。该值可以表示水印位b是b0还是b1,或者表示数据流是否有水印。检测问题可以看作是一个分类问题,检测器必须为每个观察到的流量分配一个类别标签。

我们将水印解码算法分为两类:"盲 "算法和 "非盲"算法。当水印是非盲的时候,识别器需要知道在水印嵌入点测量到的载波值才能做出判断,而在盲水印系统中,检测器可以根据在检测点观察到的特征做出判断。

水印算法的对比

为便于比较,表I列出了文献中提出的主要算法的目标、分集方案、载体和盲区特征。值得注意的有以下几点。尽管水印技术已在多个场景中被采用,并实现了许多不同的目标,但追踪基于网络的攻击无疑是最受追捧的目标。这是因为识别攻击源和攻击者的位置仍然是具有挑战性的问题,也是从事网络安全研究的科学界特别感兴趣的问题。其他情况引起的好奇心较少,但值得注意的是,网络流水印可以在不同环境下以多种方式使用,并具有不同的目标,而这些目标往往是相互对立的。
image.png

与基于大小、内容和速率的解决方案相比,基于时序的算法通常更受青睐,这主要是由于数据包时间更容易操纵,时序改变也更难被第三方识别。此外,在基于时序的算法中,均值平衡算法更受青睐,其主要原因是这类算法会给目标流量的每个数据包增加短时延时。

对水印的攻击

图5显示了攻击水印的一般场景。我们确定了两种攻击方式:被动攻击主动攻击。在被动攻击中,敌方只能通过观察流量来发现流量中存在水印,但与水印检测器不同的是,敌方对用于嵌入代码的秘密参数一无所知。这种威胁也被称为 “隐形攻击”。在主动攻击中,敌手可以操纵流量的统计特征来移除嵌入流中的信息。这种攻击旨在破坏水印算法的鲁棒性和检测器识别水印的能力。
image.png

性能评估

衡量标准

水印系统的质量可以根据检测水印流的能力、水印的隐蔽性以及对攻击的鲁棒性来评估。下面列出了较常见的评价指标,表 III 则显示了主要水印方法所衡量指标之间的比较。

  1. 准确性:用于评估网络流水印系统准确性的指标与大多数常见分类问题的指标相同。尤其是,“真阳性”(TP)和 “假阳性”(FP)率是最适合所审查问题的两个指标。
  2. 不可见性:Kolmogorov-Smirnov (KS) 检验是评估水印算法不可见性的常用工具。实际上,KS检验提供了不同分布之间距离的衡量标准。如果有水印流和无水印流的统计特征集合来自两个看起来相似的分布函数,则可以认为水印系统是不可见的。检查水印算法对多流量攻击的脆弱性是评估不可见性的另一种方法。
  3. 鲁棒性:为了评估水印系统的鲁棒性,一些研究比较了在理想条件下和某些选定攻击类型下所获得的性能。在少数情况下,鲁棒性分析是以分析形式进行的。
  4. 其他指标:计算成本和内存使用量是有效实现水印系统需要评估的两个主要方面。延迟(即处理和转发IP数据包所需的时间)是用于评估水印嵌入器计算成本的指标,而做出决定所需的数据包数量则用于评估水印检测设备的计算成本。

image.png

结果对比

image.png

总结

本文研究了水印在流量分析中的应用。通过在流量特征中嵌入特定的可识别模式(水印),可以使流量分析工具变得更简单、更稳健。文献中包含大量与流量分析这一分支相关的工作,我们对这些工作进行了收集、分析和分类。特别是,我们指出了网络流水印所要解决的目标和问题,强调了恶意目标与合法目标之间的差异。我们还详细介绍了创建网络流水印系统的一般架构。分析表明,设计此类系统最重要的方面之一是选择水印载体。

虽然水印系统在结构和算法方面都具有低复杂性的特点,但水印应具备两个重要特性,即鲁棒性和隐蔽性。这两个特性使得水印算法的创建更具挑战性。要取得令人满意的结果,还有许多工作要做。

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
网络摄像头视频中添加水印可以使用 OpenCV 库中的 `putText` 函数来实现。该函数可以在图像上添加文本,并可以设置文本的字体、颜色、大小等参数,从而实现水印的效果。 添加水印的步骤如下: 1. 从网络摄像头读取视频,获取一帧图像。 2. 调用 `putText` 函数,在图像上添加水印文本。 3. 将添加水印后的图像显示出来。 4. 重复步骤 1-3,直到视频结束。 下面是一个示例代码: ```cpp #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char* argv[]) { // 打开网络摄像头 VideoCapture cap("rtsp://xxx.xxx.xxx.xxx:554/xxx"); // 检查摄像头是否打开 if (!cap.isOpened()) { cout << "无法打开网络摄像头!" << endl; return -1; } // 设置水印文字 string text = "watermark"; // 设置文字样式 int fontFace = FONT_HERSHEY_SIMPLEX; double fontScale = 1; int thickness = 2; while (true) { // 读取一帧图像 Mat frame; cap >> frame; // 检查图像是否为空 if (frame.empty()) { break; } // 获取文字大小 int baseline = 0; Size textSize = getTextSize(text, fontFace, fontScale, thickness, &baseline); // 计算位置 Point textOrg(frame.cols - textSize.width - 10, frame.rows - textSize.height - 10); // 添加水印 putText(frame, text, textOrg, fontFace, fontScale, Scalar(0, 0, 255), thickness); // 显示图像 imshow("frame", frame); // 等待按键 if (waitKey(1) == 27) { break; } } // 释放摄像头 cap.release(); return 0; } ``` 该程序会从网络摄像头读取视频,并在每一帧图像上添加一个红色的水印。你可以根据需要调整水印的位置、大小和颜色等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h0l10w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值