目录
一、简介:
1.1、概述:
1.2、原理:
二、网络协议
2.1、RTP协议
2.2、RTP报文
2.3、数据隐藏
方法一:
方法二:
2.4、缺点:
一、简介:
1.1、概述:
IP语音(Voice over Internet Protocol, VoIP) 解决方案是数据隐藏技术的一个关注领域。
原因:(1) VoIP应用范围很广。 (2)VoIP解决方案会产生大量的小数据包,这些小数据包是分段隐藏大最消息的理想载体。 (3)VoIP具有丰富的数据包类型、 编解码器和编码方法, 为数据隐藏提供了良好的隐蔽条件。
1.2、原理:
VoIP使用不可靠的网络传输机制: 应用的是RTP(实时传输协议, Real-Time Transfer Protocol) 和UDP(用户数据报协议, User Datagram Protocol) 协议, 而这两个协议处理数据包时, 不会重传丢失和延时的包。对于数据隐藏来说, 不可靠的网络传输机制似乎是一个弱点, 因为丢失的数据包中可能包含一部分秘密消息。如果秘密消息是加密的, 问题将更加棘手。不过, 我们自有办法解决。下面就介绍一个可以化弊为利的方法。
二、网络协议
2.1、RTP协议
首先, 分析一个简单的点对点通信中运行在UDP协议之上的RTP协议, 进而介绍数据隐藏方法的核心元素。当然要在一个真实的VoIP环境中进行这个操作, 还需要了解SIP(会话发起协议, Session Initiation Protocol)和RTCP(实时控制协议, Real-Time Transfer Control Protocol) 协议等
VoIP RTP简化数据包
描述了一个VoIPRTP报文结构的简化版本。从中我们可以看到: RTP包是UDP包(进行不可靠数据传输)的有效载荷。UDP包是IP包(进行网际路由)的有效载荷。
2.2、RTP报文
重点分析Alice和Bob间交换的RTP报文。Alice和Bob在一个连续的数据流中交换了一系列RTP包。
如前文所述, 这些数据包可能会丢失、丢弃、失序或延时, 然而既然协议本身的目的并不是进行可靠传输, 因此不会理会这些丢包、延时等现象, 数据包将会继续传输下去, 控制报文和其他可以辅助重建连接的元素都会被忽略掉。
最简单的数据隐藏方法就是直接在每个报文的有效载荷区域嵌入数据。先把秘密消息分割成小数据块,然后直接嵌入到有效载荷中。
Alice和Bob间的RTP包交换
2.3、数据隐藏
方法一:
将秘密消息分割成的小数据块嵌入到RTP 有效载荷的报文头中。因为多数RTP 有效负荷类型都有内置的报文头, 其中包含了有效载荷的配置信息。因此,可以在其中嵌入少量字节。
在RTP 有效载荷中嵌入数据
方法二:
将秘密消息转换成比特流, 然后用每位依次替换RTP 有效负荷数据编码中的最低有效位。
我们抓取了两个终端间VoIP会话的RTP报文。在两个本地终端(192.168.2.1和192.168.2.2)之间传输的1000秒的报文中高亮显示了一个数据包。
为了让数据隐藏过程可见,在RTP报文的载荷中嵌入了一个简单的测试词组“ Data Hiding"。通常情况下,隐藏的数据要么是加密内容,要么就被转换成比特流嵌入到有效载荷的最低有效位中,这样,用户是几乎无法感知到隐藏数据的。因此在两个终端间传输的大量数据包中,要发现隐藏数据是相当困难的。
RTP Tbeora有效载荷劫持
2.4、缺点:
如果发生数据丢失(丢包或延时),那么其中隐藏的数据也会丢失。这个问题可以通过发送冗余包(嵌入秘密消息块的)来解决。一些具备这种功能的应用程序,可以设置发送冗余包的个数和频率。