本發(fā)明屬于網(wǎng)絡(luò)與信息安全技術(shù)領(lǐng)域,具體涉及一種基于多條通信鏈路傳輸模型的隱蔽數(shù)據(jù)傳輸方法。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)絡(luò)業(yè)務(wù)越來越多樣化,由此帶來的信息安全問題引起了廣泛的關(guān)注。網(wǎng)絡(luò)隱蔽通信是一種特殊的網(wǎng)絡(luò)通信機(jī)制,它以正常的網(wǎng)絡(luò)流為載體,能夠無視系統(tǒng)策略的設(shè)置,在不同的實(shí)體之間傳輸敏感數(shù)據(jù)。與傳統(tǒng)隱蔽通信技術(shù)相比,網(wǎng)絡(luò)隱蔽通信的安全性更高。
基于多鏈路傳輸編碼的隱蔽通信是一種嶄新的隱蔽通信方式,2015年,wojciech
針對(duì)stegblock的一個(gè)例子如下,在{1,2,3,4}中的四個(gè)對(duì)象中,以1為開頭,3為結(jié)尾的數(shù)據(jù)塊構(gòu)成了隱寫密鑰,如圖1所示。發(fā)送方向接收方發(fā)送的這些對(duì)象基于隱寫密鑰規(guī)則構(gòu)成了一段段數(shù)據(jù)塊。第一段數(shù)據(jù)塊由{1,4,3}三個(gè)對(duì)象組成,因?yàn)檫@是一個(gè)對(duì)象的最短長度,包含了從傳輸起始端開始的所有的對(duì)象。隨后的數(shù)據(jù)塊也是由這樣的方式定義的。此外,在圖1展示的通信實(shí)例中我們假定數(shù)據(jù)塊對(duì)象數(shù)目的最后一位決定了這段塊數(shù)據(jù)的值,也就是說,第一段數(shù)據(jù)塊的值為‘1’(這段數(shù)據(jù)塊由3個(gè)對(duì)象組成),第二段數(shù)據(jù)塊的值為‘0’(數(shù)據(jù)塊由6個(gè)對(duì)象組成)。統(tǒng)計(jì)這些數(shù)據(jù)塊的值即可得到隱秘信息的值,于是我們可以得出這個(gè)例子中傳輸?shù)碾[秘?cái)?shù)據(jù)的值是‘1010’。接收方要破解隱秘?cái)?shù)據(jù)的話必須了解該通信的隱寫密鑰。
在隨后的研究中,wojciech
1、在兩臺(tái)主機(jī),即隱蔽信息的發(fā)送方和接收方之間建立多個(gè)信道,將每條通信鏈路(即每條tcp流)視作一個(gè)對(duì)象,賦予不同的標(biāo)識(shí)符,標(biāo)識(shí)符的個(gè)數(shù)即tcp流的個(gè)數(shù)。
2、根據(jù)隱寫秘鑰生成數(shù)據(jù)塊。
3、對(duì)數(shù)據(jù)包的發(fā)送進(jìn)行控制,按照數(shù)據(jù)塊中標(biāo)識(shí)符的順序選擇不同的tcp流發(fā)包。
假設(shè)兩臺(tái)主機(jī)之間存在5條不同的tcp流,標(biāo)識(shí)符分別為1、2、3、4、5,隱蔽通信的秘鑰為1和3,則數(shù)據(jù)包到達(dá)序列{1,3,4}代表‘1’,而{5,3,4,1}代表‘0’。
這種隱寫方法的主要優(yōu)勢是可以它可以保證隱藏?cái)?shù)據(jù)傳輸中的穩(wěn)定性。在此法中,接收方可以決定對(duì)象的順序,并且是基于tsn(傳輸序列號(hào))而非接收各個(gè)對(duì)象的時(shí)間。tsn即是塊數(shù)據(jù)的序列號(hào),它是隨著塊數(shù)據(jù)的傳輸而遞增的并且對(duì)應(yīng)于數(shù)據(jù)流中的特定的塊數(shù)據(jù)。當(dāng)數(shù)據(jù)發(fā)生延遲或者丟失,發(fā)送方可以進(jìn)行重發(fā),這樣就實(shí)現(xiàn)了隱藏?cái)?shù)據(jù)的完美接收而不用拘泥于各個(gè)對(duì)象的接收時(shí)間。
然而,該方法雖然形式新穎,但不具有良好的抗檢測性,最新研究表明,采用基于信息熵、條件熵、k-l的檢測算法,均可以檢測stegblock-tcp。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:本發(fā)明的目的在于解決現(xiàn)有技術(shù)中存在的不足,提供一種基于多條通信鏈路傳輸模型的隱蔽數(shù)據(jù)傳輸方法。
技術(shù)方案:本發(fā)明一種基于多條通信鏈路傳輸模型的隱蔽數(shù)據(jù)傳輸方法,包括以下步驟:(1)建立多條鏈路傳輸過程中所具有的馬爾科夫?qū)傩阅P蛶欤?2)實(shí)施隱蔽數(shù)據(jù)傳輸;
其中,步驟(1)的具體過程為:
(1.1)設(shè)置數(shù)據(jù)捕獲器:在發(fā)送端a與接收端b之間建立m條通信鏈路,利用數(shù)據(jù)捕獲器捕獲a和b間通信產(chǎn)生的數(shù)據(jù)包,并過濾得到由a發(fā)往b的數(shù)據(jù)包n個(gè),m>=2;
(1.2)設(shè)置信道轉(zhuǎn)換器:為m條信道(即通信鏈路)設(shè)置m個(gè)不同的標(biāo)識(shí)符,以區(qū)分各信道,將a發(fā)往b的數(shù)據(jù)包序列按所述信道轉(zhuǎn)換為標(biāo)識(shí)符序列,該標(biāo)識(shí)符序列為含有n個(gè)元素的一維數(shù)組;
(1.3)設(shè)置數(shù)據(jù)訓(xùn)練器:在a和b間存在m條信道的環(huán)境下,將標(biāo)識(shí)符數(shù)組看做一個(gè)擁有m種不同狀態(tài)的馬爾科夫鏈;
其中,1到2的轉(zhuǎn)移概率為p12=num(xn=1|xn+1=2)/(n-1),
num(xn=1|xn+1=2)即馬爾科夫鏈中當(dāng)前狀態(tài)為1,且下一個(gè)狀態(tài)為2的情況總數(shù),然后依次計(jì)算出p11、p12...p1m,p21、...p2m,...pmm,即可得到m條信道的環(huán)境下多鏈路傳輸?shù)鸟R爾科夫模型;n為一維數(shù)組的第n個(gè)元素,m為第m條信道的標(biāo)識(shí)符;
(1.4)建立馬爾科夫模型庫:改變m的值并重復(fù)步驟(1.1)~(1.3),將不同信道數(shù)下的馬爾科夫模型放入模型庫;
其中,步驟(2)的詳細(xì)過程為;
首先,發(fā)送方執(zhí)行以下步驟:
(a)設(shè)置信道分析器:假設(shè)發(fā)送端a與接收端b正在通信,利用數(shù)據(jù)捕獲器捕獲ab間的通信數(shù)據(jù),確定ab之間存在的信道數(shù)m;若m為1,則ab間不存在多鏈路通信,無法實(shí)行所提隱蔽通信方法,否則存在多鏈路通信;
(b)設(shè)置擬合編碼器:根據(jù)信道數(shù)m從模型庫中選取相應(yīng)的馬爾科夫模型,根據(jù)不同狀態(tài)的轉(zhuǎn)移概率以及stegblock算法原理設(shè)置秘鑰并生成相應(yīng)的標(biāo)識(shí)符序列,所生成標(biāo)識(shí)符序列的馬爾科夫特性與模型基本相同;
(c)設(shè)置信道轉(zhuǎn)換器:將步驟(b)中生成的標(biāo)識(shí)符序列轉(zhuǎn)換為數(shù)據(jù)包選擇信道的順序;
(d)設(shè)置數(shù)據(jù)發(fā)送器:編寫socket程序控制ab間的數(shù)據(jù)包發(fā)送順序,按照步驟(c)中的信道轉(zhuǎn)移順序傳輸數(shù)據(jù)包。
然后,接收方執(zhí)行以下步驟:
(e)使用信道轉(zhuǎn)換器:在一定窗口下利用數(shù)據(jù)捕獲器捕獲數(shù)據(jù)并解析收到的數(shù)據(jù)包所屬的信道,利用信道轉(zhuǎn)換器將數(shù)據(jù)包到達(dá)序列轉(zhuǎn)化為標(biāo)識(shí)符序列;
(f)設(shè)置解碼器:使用stegblock的秘鑰解碼,將標(biāo)識(shí)符序列轉(zhuǎn)化為可讀的信息。
進(jìn)一步的,所述步驟(1.1)中的數(shù)據(jù)捕獲器采用wireshark,過濾數(shù)據(jù)采用的過濾器為wireshark內(nèi)置的過濾器。
進(jìn)一步的,所述步驟(1.4)中,主機(jī)間信道數(shù)均不小于2,即m的值不小于2。
有益效果:本發(fā)明在stegblock-tcp的基礎(chǔ)上,通過擬合正常多鏈路通信的馬爾科夫模型編碼,在沒有改變數(shù)據(jù)包結(jié)構(gòu)、流屬性、應(yīng)用結(jié)構(gòu)的情況下,使含密數(shù)據(jù)的統(tǒng)計(jì)分布與正常數(shù)據(jù)十分相似。與傳統(tǒng)的stegblock-tcp相比,本發(fā)明的抗檢測性更強(qiáng),實(shí)用價(jià)值更高。
附圖說明
圖1為實(shí)施例1中stegblock的原理示例圖;
圖2為實(shí)施例1中建立馬爾科夫模型庫流程圖;
圖3為實(shí)施例1中發(fā)送方實(shí)施隱蔽數(shù)據(jù)傳輸流程圖;
圖4為實(shí)施例1中接收方實(shí)施隱蔽數(shù)據(jù)傳輸流程圖;
圖5為實(shí)施例1中使用k-l檢測的效果圖;
圖6為實(shí)施例1中使用條件熵(ce)檢測的效果圖。
具體實(shí)施方式
下面對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說明,但是本發(fā)明的保護(hù)范圍不局限于所述實(shí)施例。
如圖1所示是stegblock的原理示例圖,而stegblock-tcp與i-stegblock正是以stegblock的原理為基礎(chǔ)。
假設(shè)兩個(gè)主機(jī)之間存在4條tcp流,其標(biāo)識(shí)符分別為1、2、3、4,發(fā)送方以1、3為秘鑰,一對(duì)秘鑰組成一個(gè)數(shù)據(jù)塊,先到達(dá)的數(shù)據(jù)包所在的tcp流標(biāo)識(shí)符為{1,4,3},表示‘1’,第一個(gè)數(shù)據(jù)塊結(jié)束后,下一位即第二個(gè)數(shù)據(jù)塊的開端,第二個(gè)數(shù)據(jù)塊為{2,1,4,1,2,3},表示‘0’,第三個(gè)數(shù)據(jù)塊為{3,4,3,2,1},表示‘1’,第四個(gè)數(shù)據(jù)塊為{3,1},表示‘0’。
stegblock-tcp使用了圖1中的編碼方式,由于其編碼方式簡單,標(biāo)識(shí)符轉(zhuǎn)換較為頻繁,使用k-l檢測、條件熵檢測的方法可以很好的判斷信道中是否含有stegblock-tcp。
實(shí)施例1:
本實(shí)施例的一種基于多條通信鏈路傳輸模型的隱蔽數(shù)據(jù)傳輸方法,包括以下步驟:(1)建立多條鏈路傳輸過程中所具有的馬爾科夫?qū)傩阅P蛶欤?2)實(shí)施隱蔽數(shù)據(jù)傳輸。
建立馬爾科夫模型庫的流程如圖2所示,具體包括如下步驟:
(1)設(shè)置數(shù)據(jù)捕獲器:在兩臺(tái)主機(jī)之間建立多鏈路鏈接,并利用數(shù)據(jù)捕獲器捕獲主機(jī)之間通信時(shí)的數(shù)據(jù)包,本實(shí)施例中是通過wireshark作為數(shù)據(jù)捕獲器來捕獲兩個(gè)主機(jī)間正常的多鏈路通信數(shù)據(jù),再用wireshark內(nèi)置的過濾器篩選出數(shù)據(jù)包的到達(dá)序列。
(2)設(shè)置標(biāo)識(shí)符轉(zhuǎn)換器:根據(jù)stegblock的原理建立一個(gè)標(biāo)識(shí)符轉(zhuǎn)換器,給不同的流賦予不同的標(biāo)識(shí)符,如兩臺(tái)主機(jī)間存在3條信道,其中一臺(tái)作為服務(wù)器,另一臺(tái)作為客戶機(jī),3條鏈路分別通過服務(wù)器端口6666、7777、8888建立鏈接,給服務(wù)器端口6666發(fā)出的數(shù)據(jù)包賦予標(biāo)識(shí)符“1”,給服務(wù)器端口7777發(fā)出的數(shù)據(jù)包賦予標(biāo)識(shí)符“2”,給服務(wù)器端口8888發(fā)出的數(shù)據(jù)包賦予標(biāo)識(shí)符“3”;本實(shí)施例中將捕獲的數(shù)據(jù)包到達(dá)序列轉(zhuǎn)化為各條tcp流的數(shù)據(jù)包到達(dá)序列,該序列為一個(gè)一維數(shù)組,由各流的標(biāo)識(shí)符組成,當(dāng)兩臺(tái)主機(jī)之間存在3條tcp流時(shí),這3條流分別用1、2、3代替,則標(biāo)識(shí)符數(shù)組由1、2、3組成。
(3)設(shè)置數(shù)據(jù)訓(xùn)練器:截取大量正常通信環(huán)境下的數(shù)據(jù)進(jìn)行訓(xùn)練,將擁有n個(gè)元素的標(biāo)識(shí)符數(shù)組看做一個(gè)馬爾科夫鏈。馬爾科夫鏈?zhǔn)蔷哂旭R爾科夫性質(zhì)的一個(gè)隨機(jī)變量數(shù)列,由馬爾科夫鏈可以得到馬爾科夫轉(zhuǎn)移矩陣,馬爾科夫轉(zhuǎn)移矩陣由各種情況下的轉(zhuǎn)移概率組成,其中pij=p(xn=i|xn+1=j(luò))。計(jì)算出所有狀態(tài)的轉(zhuǎn)移概率,所得馬爾科夫轉(zhuǎn)移矩陣即為描述多鏈路通信的模型,其中i和j分別表示當(dāng)前狀態(tài)為i,下一狀態(tài)為j。
(4)改變信道數(shù)m,并重復(fù)步驟(1)~(3),建立不同信道數(shù)的正常通信模型。
(5)建立模型庫:將步驟(4)中訓(xùn)練所得的不同信道數(shù)的模型放入模型庫中。
如圖3與圖4所示,所述實(shí)施隱蔽通信具體包括如下步驟:
發(fā)送方:
(a)設(shè)置信道分析器,捕獲對(duì)當(dāng)前通信環(huán)境下的數(shù)據(jù)流并對(duì)存在的信道數(shù)進(jìn)行分析,得到信道數(shù)m。判斷m是否為1,若m為1則說明當(dāng)前通信環(huán)境不屬于多鏈路通信,無法使用多鏈路編碼隱蔽通信。若m不為1則開始進(jìn)行編碼工作。
(b)設(shè)置擬合編碼器,設(shè)定一組秘鑰,從模型庫中調(diào)出信道數(shù)為m時(shí)的模型,擬合相應(yīng)的馬爾科夫轉(zhuǎn)移概率對(duì)準(zhǔn)備傳輸?shù)亩M(jìn)制數(shù)據(jù)進(jìn)行編碼。
(c)設(shè)置信道轉(zhuǎn)換器,將編碼后的一維數(shù)字視作標(biāo)識(shí)符數(shù)組,根據(jù)標(biāo)識(shí)符的不同由信道轉(zhuǎn)換器轉(zhuǎn)換為相應(yīng)的信道。
(d)設(shè)置數(shù)據(jù)發(fā)送器,編寫一個(gè)socket程序控制數(shù)據(jù)包的發(fā)送,使多鏈路環(huán)境下數(shù)據(jù)包所選擇信道的順序與(c)中的標(biāo)識(shí)符數(shù)組一致。
接收方:
(e)接收方在一定窗口下使用數(shù)據(jù)捕獲器捕獲含密數(shù)據(jù),并使用信道轉(zhuǎn)換器將數(shù)據(jù)包的到達(dá)序列轉(zhuǎn)化為標(biāo)識(shí)符數(shù)組。
(f)設(shè)置解碼器,利用秘鑰將標(biāo)識(shí)符數(shù)組轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)。
如圖5所示,本實(shí)施中觀測窗口為2000時(shí)使用kullback–leiblerdivergence(k-l)進(jìn)行檢測檢測,圖5中實(shí)線為正常數(shù)據(jù),虛線為含密數(shù)據(jù),由圖5可見,在30次實(shí)驗(yàn)中,僅有3次實(shí)驗(yàn)結(jié)果具有明顯差異,其余27次實(shí)驗(yàn)中正常數(shù)據(jù)和含密數(shù)據(jù)的k-l屬性差異并不明顯,證明本發(fā)明具有良好的隱蔽性,可以很好的抵抗k-l檢測。
如圖6所示,本實(shí)施例中觀測窗口2000時(shí)使用條件熵檢測進(jìn)行檢測,圖中實(shí)線為正常數(shù)據(jù),虛線為含密數(shù)據(jù),由圖6可見,正常數(shù)據(jù)和含密數(shù)據(jù)的條件熵基本一致,30次實(shí)驗(yàn)均不存在明顯差異,證明本發(fā)明有良好的隱蔽性,可以很好的抵抗條件熵檢測。