目前,国内外学者对于网络隐信道的研究做了大量的工作,包括隐信道构建技术和隐信道检测技术。论文对存储式隐信道和时间式隐信道的构建技术进行概述以及对隐信道的检测技术做了简单介绍。
1、隐信道构建技术
通常情况下,人们采用第一种隐信道分类方式,将网络隐信道分为两种,分别是存储式隐信道和时间式隐信道。
存储式隐信道按照实现方式可以分为两类:一种是基于协议冗余位的存储式隐信道,这种隐信道的隐秘信息通过嵌入到协议的冗余字段中来进行隐秘信息传输;另一种是基于伪装通信的存储式隐信道,这种隐信道的隐秘信息通过调制到协议的某种行为方式中来进行隐秘信息传输[16]。
有的协议冗余位在不同情况下可以取不同的值,有的协议冗余位是协议中没有使用的保留字段。按照隐秘信息的嵌入位置的不同,可以将基于协议冗余位的存储式隐信道分为以下几种[17]:基于协议首部未用位、基于首部扩展和填充位、IP标识和分段偏移、基于TCP初始序列号、校验和位、IP寿命位及时间戳位的存储式隐信道。
对于基于协议首部未用位的存储式隐信道,Handel等人提出利用IP首部的TOS域和TCP首部的Flags域作为嵌入位置来传输隐秘信息的存储式隐信道[18]。Hintz提出利用TCP的紧急指针来传输隐秘信息的存储式隐信道[19]。Wolf提出利用其他一些协议,如TokenRing作为嵌入位置的存储式隐信道构建方法。Lucena等人研究了利用IPv6首部作为嵌入位置传递隐秘信息的隐信道[20]。
对于基于首部扩展和填充位的存储式隐信道,Graf提出利用IPv6的目的地选项首部作为隐秘信息嵌入位置来实现隐秘通信的方法。Trabelsi等人提出将隐秘信息伪装成IPRoutRecordOption首部的IP地址,从而进行信息隐藏[21]。隐秘信息还可以嵌入各种填充位中,如IP和TCP首部的填充位,来进行隐秘信息的传输。
对于基于IP标识和分段偏移的存储式隐信道,Rowland提出的方法,是将IPIDs用256乘以每个要发送的字节来进行替换,从而传递隐秘信息。段等人提出了一种基于IPID增量调制的隐信道算法,由于和正常通信的IPID模式相似,该隐信道算法具有较好的隐蔽性[13]。
对于基于TCP初始序列的存储式隐信道,Rowland提出的方法,是将将ISN用2563乘以每个要发送的字节来进行替换,从而传递隐秘信息。Murdoch等人提出了ISN隐信道算法,该算法指出,自动生成的ISN是服从均匀分布的。
对于基于校验和位的存储式隐信道,Abad提出了利用IP首部的校验和位来实现的隐信道,将检验和改为要传输的隐秘信息,再通过自定义的IP首部进行扩展,算法很简单,但是效率很低。Fisk提出了用‘1’代表存在校验和,‘0’代表不存在校验和的隐信道[22]。
对于基于IP寿命位的存储式隐信道,Jones等人的隐信道算法不使用源地址,而是采用TTL字段来进行信息隐藏[23]。Zander在此基础之上,考虑到了IPTTL的取值和方差,使隐信道具有更好的隐蔽性[24]。
对于基于时间戳位的存储式隐信道,Handel等人提出了一种利用IP时间戳首部扩展来传输隐秘信息的隐信道算法。Giffin等人采用LSB(LeastSignificantBit)方法,将隐秘信息嵌入到TCP时间戳LSB位,实现隐秘信息传输。
基于协议伪装的存储式隐信道,是利用协议的冗余字段来进行隐秘信息传输的存储式隐信道[25]。这些字段不需要遵从严格的规范,也不会被检查,但在正常的使用过程中,也形成了一些不成文的规律,某些字段还有默认的取值,如果盲目的对其进行改变,则容易被检测到,暴露隐信道的存在。因此,研究者们展开思路,设计了基于应用层协议通信行为的存储式隐信道。