生存时间(TTL)设置了数据报在网络中最多能经过的路由数。它由源主机设置,然后,在每经过一个路由器后,数据报上的TTL字段值将减1,直到该值被减为0为止,该数据报将被丢弃。该字段为了确保无法到达目的地的数据报不会永远停留在网络中,导致网络阻塞。
TTL的初始值因源主机的操作系统而有所不同[4]:默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。域名的dns解析默认的TTL值一般是60。
TTL的最大值为255,如UNIX操作系统的TTL值初始默认TTL值就是225。不同的系统最大值也是有所不同,对于实验室环境所使用操作系统默认的TTL 最大值是128,所以要视情况而定。
利用TTL字段来搭载隐蔽信息,目前看来,确保数据报不会因修改后的TTL值过小而直接丢弃就行。
2.2 TTL存储隐蔽信道的可行性研究
作为隐蔽信道是数据搭载者,并非仅仅能够存储该隐蔽信息就足够,还需要以下条件:
(1)该字段值的变化不会引起怀疑,确保隐蔽性不会太差;
(2)确保该字段修改后不会影响数据报的正常传输;
(3)对于该字段的修改操作必须被认可为合法操作。
首先,我们可以肯定,TTL字段的修改操作是一种合法操作,因为它曾被用做探索离源主机最近的服务器而使用,使用方式就是从0递增TTL值,直到该值达到能是数据报到达目标服务器,从而求得最近服务器的路由距离。
其次,该字段值的变化也是可以理解的,由于网络情况和路径变化频繁,会导致TTL值的波动。
最后我们只需要确保在修改TTL值的时候,保证它不会太小而导致无法到达。当然,为确保隐蔽性我们会进一步处理。
既然TTL值会因为经过路由而减小,接收方如何还原该TTL值为发送方想要发送的值呢?我们分作两种情况讨论:在路由线路固定(比如局域网,网络稳定)的情况和在互联网(网络复杂,线路可变)的情况。
当线路固定时,我们可以通过事先训练数据得到源和目标主机之间的路由跳数。方法十分简单,让源主机发送大量的TTL值为m的数据报给目标主机,目标主机接收到大量的数据报且TTL值为n,那么我们可以得到路由跳数为m-n。在接下来发送和接收隐蔽信息的时候,接收方就可以将接收到的TTL值加上路由跳数,还原为发送方想要发送的值。
在线路可变的情况下,我们要充分利用重复性和差距性确保TTL值能够表达发送方的意思。我们事先假设一个前提:复杂网络中数据报经过的路由等设备数波动变化不会很大,且不会每时每刻都在改变(确实实际情况大多如此)。那么我们可以利用重复性来发送数据:假设连续发送10个TTL值为m的数据报,接收方接收到10个数据报中有1到3个不一样的TTL出现,其余的都是n,那么我们可以认为经历的路由数为m-n。当10个不足以说明问题的时候,可以扩展到更多。另外我们可以利用差距性传递数据:我们用相差较大的两个值S1和S2分别表示0和1,在发送数据时同时利用重复性,将要发送的TTL值改为S1和S2来表示高低位。那么接收方可以通过接收到的更大概率的R1和R2分别表示高位和低位,毕竟这两个值差距大,是很容易区分的。实验环境是在稳定的局域网内完成,此处我们不做深入探讨。 基于TTL算法的网络隐蔽信道的设计与实现(3):http://www.751com.cn/jisuanji/lunwen_21742.html