王華翔信息工程大學信息工程學院 河南 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)信道容量
容量指隱藏的秘密比特數。從保密通信的角度,帶寬或傳輸速率能更好地刻畫隱藏算法的容量特性?;诖朔N隱蔽信道的特點,我們定義每個數據包隱藏的比特數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.