图2 IP时间隐蔽信道示意图
2.1.2.2 JitterBug隐蔽信道
Shah等人开发了一种键盘设备,称作JitterBug,它可以通过网络缓慢地泄露打字信息。JitterBug是一种被动时间隐蔽信道,因而并没有创造新的数据流去传输信息。JitterBug通过调节打字时按键的延时来影响网络应用中的包间延时。JitterBug通过增加以w为模的值作为包间延时来传输字节1,通过以w/2为模的值作为包间延时来传输字节0。时间窗口w决定了JitterBug给包间增加的最大延时值。对于较小的w,JitterBug的分布非常接近于原始合法数据流。
图3 JitterBug隐蔽信道
2.1.2.3 TCP-Script隐蔽信道
Xiapu Luo等人[26]利用TCP协议提出了TCP-Script时间隐蔽信道。尽管前面介绍的时间隐蔽信道相对容易实现,但是它们存在两个主要的缺点。首先,为了嵌入隐秘信息,时间隐蔽信道扰乱了IP数据包的通信模式和相邻包的时间间隔,这也会破坏上层协议的正常数据流,例如TCP。因而,对于那些时间隐蔽信道,可以在上层通过分析数据流来检测。第二,那些隐蔽信道的解码准确性会受到jitter,包丢失和包重传的影响。
所以 Xiapu Luo等人提出了TCP-Script,一种在TCP流中嵌入隐蔽信道的新方法。不同于其他的时间隐蔽信道,TCP-Script文持TCP固有的通信模式,而且在不同的网络环境下比其他的时间隐蔽信道具有更可靠的性能。
基本的编码算法:假设编码方要将一组多字节的隐秘信息(mi,i=1,…)发送到解码方。让每个多字节隐秘信息用一个正整数来替代mi∈[1,M],∀i,这里M是一个编码方和解码方预先设定的常数。在TCP-Script中,每个mi都是相邻TCP数据片的编码的帧。称这个帧为mi-burst。为了更准确的编码,相邻的两个信息(数据帧)中间有一个合适的时间间隔。结果,隐秘信息被编码成一个TCP数据帧的数列,类似于典型的TCP批量传输模式。
图4(a)描绘了相邻信息mi = 3和mi+1 = 2的编码过程。编码方将mi帧的3个TCP片发送到服务器。监听到3个数据片后,解码方能够解码到mi信息。此外,2个相邻数据片的包到达服务器有一个时间差值TP,服务器回送2个TCP的确认包(ACKs)。当从发送数据帧到接受到ACK包的时间在编码周期TE之内,则编码方认为mi的发送是成功的。在TE的最后,编码方可能会发送一个新信息的数据帧。
为了获得一个更准确的描述,让所有TCP数据片达到编码方的最大传输大小(MSS,数据包每次能够传输的最大数据分段)。用SNi,j,j=1,…,m,来表示TCP的序列号(SN)中第i个数据帧中的第j个数据片。考虑到信息mi的传输,如果编码方在TE时间内接受到mi的ACK包,下一个为mi+1数据片发送的序列号将会是SNi,mi + MSS。
但是,由于包丢失,延时,以及数据片或确认包的重发送等问题,使得并不是所有的ACK包都能在TE时间内到达。正如下面要演示的,相应的信息还是能正确的解码。
然而,编码方并没有足够的信息来确定解码的结果。而只能继续后面信息的传输。在设计中,编码方会在新的数据帧前面一直发送最新的未被确认的数据包。例如,图4(b)显示了mi帧的第二个数据片被丢失了。编码方因此在下一数据帧中继续发送第二和第三个数据片(SNi+1,1 = SNi,2,SNi+1,2 = SNi,3)。正如下面所见的,第三个数据片的重复观测并没有影响解码的正确性。
图4 数据传输示意图
基本的解码算法:在隐蔽通信之前,编码和解码方要约定2个参数:bursts的数量(用N表示)和M的值。这里有几种解码信息的方法。下面,介绍基于包聚类的离线解码算法,包含有两个步骤: 基于TRCTC算法的时间隐信道的设计与实现(5):http://www.751com.cn/jisuanji/lunwen_9836.html