王华翔信息工程大学信息工程学院 河南 450002
本文根据对IP数据包结构和网络传输过程的分析,提出一种基于IP生存时间TTL的信息隐藏方法,通过替换原有的TTL值,可以把秘密消息嵌入到数据包中。由于IP数据包的TTL值在网络中是动态可变的(通过路由器、防火墙等),即在信道中存在噪声,本文设计了几种编码方法,使之有广泛的适用范围并且具有良好的隐蔽性。
IP数据报的结构如图1所示。
图1 IP数据报结构
各部分含义如下:
版本:用于传输数据的IP版本,大小为4位;
头部长度:用于规定报头长度;
服务类型:用于设置数据传输的优先权或者优先级,其大小为8位;
总长度:指出数据报的总长,数据报总长=报头长度+数据长度,大小为16位;
标识:用于标识所有的分段,大小为16位;
分段标志:确定一个数据报是否可以分段,同时也指出当前分段后面是否还有更多分段,大小为3位;
分段偏移量:由目标计算机用于查找分段在整个数据报中的位置,大小位13位;
生存时间:设置数据报可以经过的最多路由器数。长度为8位;
协议:指定用于创建数据字段中的数据的上层协议,大小为8位;
校验和:检查所传输数据的完整性,大小为16位;
源地址:源IP地址,字段长度为32位;
目标地址:目标IP地址,字段长度为32位;
选项:上一个必须的字段,字段长度具体取决于所选择的IP选项;
数据:包含网络中传输的数据,IP数据报还包括上层协议的报头信息;
其中,生存时间(TTL)字段设置了数据报经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置,经过一个处理它的路由器,它的值就减 1,当该字段为0时,数据报就被丢弃。设置该字段主要是为了防止无法到达的数据报永久停留在网络中阻塞网络。该字段成为隐蔽位置的原因是:①由于网络情况和路径变化频繁,该TTL值改变不会被认为是异常。②对这个值的操作也可以被认为是合法的,因为对该字段的操作可以认为是用于另外一种用途:在一组拥有相同功能的服务器中找到距离源主机最近的服务器。源主机在开始寻找时,首先会发送TTL=1的请求包到这个地址。请求包在被丢弃前将到达一些路由器。如果没有回复信息,那么源主机就在TTL值上加1,继续搜索。由于有原因①和②的存在,所以 TTL在网络中的取值是变化的,满足了成为隐蔽信息字段的条件。
本文提出的隐藏算法的主要思想就是将要隐藏的秘密消息编码替换到原IP报文的TTL值。并提出编码方法抵抗由于网络中正常 TTL变化引起的噪声,并使调制后的 TTL值接近自然的TTL值。隐藏与传输的原理如图2所示。
图2 利用TTL隐藏信息示意图
在发送端将秘密消息c经过变换得到m,将m放入TTL中,TTL在数据包中占一个字节,利用该方法进行隐蔽通信需要考虑通信连路上路由器的数量N,接收方必须知道该数据包在网络中共经过多少路由器,从而可以将收到的信息m’加上N得到发送方发送的数据m。在局域网中,由于路由路径一般固定,所以N一般不会发生变化,这使得这种简单的信息隐藏方法可行。为了让接收方得知IP数据包在网络上经过的路由数N,本文设计了训练序列,接收方可以由已知的训练序列规律求出N值。以下是该隐藏方法的流程。
发送端:
(1)将待隐藏的信息c预加密达到m,增加隐秘性。
(2)构造双方预知的一段序列如长度为l的全1串嵌入到TTL字段中,即将TTL值设为255作为训练序列和开始标志。
(3)将待发送的秘密信息m按字节嵌入到TTL字段中发送。
接收端:
(1)接收数据包,将TTL字段的取值存储得到m’。
(2)在TTL值序列中寻找训练序列特征,将序列中TTL取值M与255相减,得到数据包在网络上经过的路由器数N,即255-M = N。
(3)将接收到的TTL值m’加上N得到发送的秘密消息,即m = N+m’。
(4)将m按照预共享的密钥解密得到原始的隐藏信息c。
在局域网中,该方法可以正确的传输隐藏信息。但在复杂的互联网中,由于路由的路径不同,数据包所经过的路由等设备的数目N是动态变化的,这种方法有极高的误码率,这极大的限制了该方法的适用范围,并且由于 m直接嵌入TTL中,使隐藏数据包TTL值的统计特性与自然的统计特征相差巨大,容易被检测和消除。对于这个问题,本文提出以下几种方法。
(1)采用两个不同的TTL值,这两个值之间的差要比较大,它们分别代表二进制数0和1。这样的话,即使经过的路由器数量对方不知道,对方也可以根据接收到的数值的大小来判断,这样就提高了系统的稳定性和隐蔽性。
(2)采用两个不同的TTL值,这两个值之间的差比较小,分别代表二进制数0和1。定义一个计数器L,发送0或1是都连续发送L次,接收方收到序列后可以根据收到的重复数值来确定原信息,这样的TTL值变化较小,更符合一般的TTL变化规律。为进一步加强隐蔽性,L可以由一个带密钥的函数决定,使之动态变化,这样即使攻击者发现了隐蔽信道的存在,由于没有密钥也很难恢复秘密信息。
(3)采用扩频编码。将待发送信息m用扩频编码调制,如长度为L的Walsh-Hadamard码,使每一比特都调制成一个值为±1的码序列 C=(C1,C2,……,CL),用预设的 TTL值T与C相加得到一个t序列t=(T+C1,T+C2,……,T+CL),再将t序列嵌入到TTL中发送给接收方。由于W-H码的均值为0,接收方只要分段计算收到的TTL值的均值就可以得到估计的路由数N’,把接收到的t’序列减去N’,就可以得到序列C’,由于扩频编码的特性,用相应的W-H码即可解扩出原有的信息m。如果攻击者如果没有相应的码字,根本无法察觉隐藏信息的存在。这种方法也适用于当网络发生较大改变时的情形,由于 N’是分段计算的,当网络拓扑突然发生较大改变时,该方法可以自适应的计算出当前网络环境下的N值。
采用这三种编码方法的流程与前面提到的简单的基于TTL的信息隐藏方法大致相同,增加了编码的步骤以对抗网络上的噪声提高隐蔽性,但不需要训练序列的帮助来获得N值了。
在确定的发送和接受端之间,路由的路径一般变化比较缓慢,即N在大多数时间内都是确定值,故以上几种方法在理论上都是可行的。本文通过Winpcap编程实验,在局域网及城域网中以上三种方法均能正确的解析出隐藏信息。
信息隐藏算法的性能一般可以从隐蔽性、鲁棒性和信道容量几方面来考虑。
(1)隐蔽性
隐蔽信道的隐蔽性就是要求携密数据和普通数据类似,不引起怀疑,如果能够很容易的被检测出来隐藏也就失去了意义。简单的基于TTL的信息隐藏由于使用的一般安全网络设备不关注的TTL值来隐藏消息,隐蔽性是比较高的,但利用基于统计特性的检测方法还是可以被发现的。正常的网络数据包中TTL的取值变化不大,随不同的网络环境其统计特性也不同。由实际从网络截取的数据包中统计分析得出,在局域网中,由于路由路径基本不变,TTL值一般也是不变的;在一个较复杂网络网关内外间通信时,由于中间一般经过防火墙、负载均衡等设备,其TTL取值一般在某一取值附近波动;在更大距离的互联网中,TTL的取值也呈现了在一定值附近变化的特点。由此可见,自然的IP数据包中TTL取值是符合一定规律的,针对这种规律,分布特点设置合理的阈值,可以检测出简单的基于TTL的隐蔽信道。简单的将秘密信息直接替换TTL值的方法在局域网中是可行的,但由于其TTL的取值分布规律就是信源信息的分布规律,与合法的IP数据包TTL取值相差很大,很容易被检测出来,隐蔽性不够好。本文提到的第一种编码方法用相差较大的两个TTL值来映射秘密消息,考虑到的是正确的解码,而没有考虑TTL取值的分布,故隐蔽性相对较差。第二种编码方法使用重复序列代替单独的码字,由于发送的TTL值差别很小,类似于正常传输的IP包中的TTL取值,故具有很强的隐蔽性。第三种编码方法利用了扩频编码的方法,TTL的取值仅在极小的±1范围内变化,统计特性上可以看作是TTL信道中的随机噪声,故此方法具有很强的隐蔽性。
(2)鲁棒性
鲁棒性描述算法抵抗蓄意或非蓄意攻击的能力或程度。蓄意攻击包括被动和主动攻击。被动攻击指监测者分析检查所有数据,尝试发现可能存在的隐蔽通信,其最高目标是窃听、截断或篡改秘密信息。主动攻击则不关心隐蔽通信是否存在,其目的是:在不破坏数据包功能的前提下,尽可能地干扰可能存在的秘密信息的提取。非蓄意攻击指传输路径中,数据包可能遭遇的操作和处理,例如:过滤、筛选、地址翻译等。实用算法产生的携密数据包,经过非蓄意攻击后,大部分秘密信息能够保留。
简单的信息直接嵌入TTL的方法鲁棒性很差,传输过程中任何噪声都会造成接收方误码率的急剧增高,这种方法仅适用于无噪声信道,比如局域网。本文提到的第一种编码方法其鲁棒性取决于比特0和1对应TTL取值的差ΔT,若信道本身的TTL变化值大于ΔT,就会造成误码。后两种编码方法的鲁棒性取决于设计的码长L,对于第二种方法,只要在L长的序列中误码的个数不超过L/2个,接收端就可以正确的还原秘密信息。对于第三种方法,由于引入了扩频增益,鲁棒性更好。
(3)信道容量
容量指隐藏的秘密比特数。从保密通信的角度,带宽或传输速率能更好地刻画隐藏算法的容量特性。基于此种隐蔽信道的特点,我们定义每个数据包隐藏的比特数bpp来定义该隐蔽信道的容量。容易得知,第一种编码方法的信道容量为1bpp,第二和第三种方法的信道容量为1/L bpp。隐藏效率比较低,后两种编码方法通过降低信道容量的方法获得隐蔽性和鲁棒性的提升。当然,也可以对信道容量进行改进,引入多进制编码来提高隐藏效率,但相应的会降低信道的隐蔽性。如简单的信息直接嵌入TTL的方法,信道容量达到了每数据包隐藏1字节的,但其隐蔽性和鲁棒性都很弱。
总体来说,基于IP数据包TTL构造的隐蔽信道的带宽很小,这有利于提高信道的隐蔽性,并且由于网络流量巨大,即使在低带宽情况下也可以传输大量的隐蔽信息。
基于网络协议的信息隐藏是在信道中隐藏信息,相对于基于信源的隐藏通常具有更高的安全性。本文通过对IP包的封装结构和通信过程的分析,指出IP包的TTL值隐藏信息的可能性,并提出了基于IP包生存时间的信息隐藏方法。理论分析和实践表明,该方法具有实际应用的可行性和较好的安全性。
[1]Girling, N. and C., Covert Channels in LAN's. IEEE Transactions on Software Engineering.1987.
[2]万宏辉.基于TCP/IP的信息隐藏.湘潭师范学院学报:自然科学版.2007.
[3]杨智丹等.基于IP报头选项的网络隐蔽通道技术.计算机工程.2009.
[4]杨智丹,刘克胜与李丽.IPv6中的网络隐蔽通道技术研究.东南大学学报(自然科学版).2007.