步骤1解码方首先使用聚类算法将所有捕获到的TCP数据片分类成N块,每一块都对应一个隐秘信息。相比其他使用包间延时来进行聚类的方法,这种聚类技术可以减轻jitter延时的影响。选择层次聚类算法,基于质心联接来构造分层的聚类树(两个聚类质心的几何距离)。实验结果显示这种算法比其他流行的聚类算法的性能好得多。
步骤2聚类算法识别的数据包作为mi-burst的一部分。解码方首先要获得数据包中的最大和最小SNs值,分别表示为SNi,max和SNi,min。解码信息可以简单的表示为
尽管解码算法非常简单,但有它的可取之处:
(l)即使mi-burst中一些数据片因为包丢失而遗失了,如果首个和最后的数据片被捕获到并且被分类到了mi-burst中,那么解码结果仍然正确。
(2)如果mi+1-burst的头包丢失了,但是之前的mi-burst是正确解码的,那么通过下式mi+1,的解码结果依然是正确的
因为mi是解码正确的,所以最后的数据片SNi,max一定被捕获到了,那么SNi+1,max可以由 给出。对于mi-burst,可以设
这里SN0,max是编码方 TCP SYN数据片的SN。
2.2 基于TRCTC算法的时间隐蔽信道
基于TRCTC算法的时间隐蔽信道是基于事件的信道,在该信道中事件之间的间隔由一个值序列获得,而序列的每一个值都与一个规则有关。
2.2.1 时间重放隐蔽信道的定义
时间重放隐蔽信道通过简单而有效的三重策略来“重放”先前记录的事件:
1)获得一个先前记录的事件序列作为输入;
2)将这个序列分为k部分,这里的k是消息字符的长度;然后用一系列规则将每一部分与一个符号联系起来;
3)延迟一段时间发送符号s,这段时间是由该符号相对应的那部分决定的。
例如,Alice欲通过一个时间隐蔽信道将代码C泄露给Eve。假设C是有两种符号组成的:s1和s2(比如二进制0和1)。为了发送s1,Alice从输入序列的s1部分选择一个时间值 ,然后在等待时间 后产生一个事件,即发送s1;类似地,为了发送s2,她使用了对应的s2部分。在接收方,Eve监测事件。一旦观察到事件,她将完成如下工作:
1)计算当前事件与最近一次事件的间隔 ;
2)决定 属于哪一部分,即s1部分还是s2部分;
3)根据步骤2记录s1或s2。
在时间隐蔽信道中,Alice的发送行为以代码C和序列S作为输入,然后使用消息产生事件序列ES,这个消息是根据该事件序列的时间间隔值编码的。为了做到这一点,Alice使用规则R将S分成k部分。规则R总是应用于与每个符号关联的定时值之间的间隔,比如 , , 是定时值,且 ,s是一个符号。举个例子,如果C是由0和1组成的,规则 将S分成两部分, 与0有关, 则与1相联系。据此将规则R应用于S,发送方将产生事件序列传送到Eve。在接收方,Eve唯一的输入是观察到的事件序列ES,然后作相反的操作即可得到C。
当然,为了使得这个信道能够工作,双方必须事先在规则、事件类型以及编码模式上达成一致。
2.2.2 时间重放隐蔽信道的设计
假设重放信道的符号集由0和1组成。系统中唯一的事件就是包到达事件,这个事件是由发方控制、收方观察的。
为了把连贯的位泄露给Eve,Alice产生包序列并且通过调整这些包之间的定时(比如到达时间间隔)来将隐蔽信息编码。为了进一步模拟合法行为和避免产生正常的包序列,根据先前记录的正常的序列来调整包定时。因此,序列间隔的选择直接影响到信道的隐蔽性,并且输入的到达序列间隔越能模仿合法行为,信道的隐蔽性就越好。
本文对TRCTC算法的设计如下: 基于TRCTC算法的时间隐信道的设计与实现(6):http://www.youerw.com/jisuanji/lunwen_9836.html