王婷+馬繼先+劉英杰
摘要:進入二十一世紀以來,我國海上探測能力進一步增強,測量船與指揮部,以及測量船相互之間的信息交流,相互合作也日益頻繁,為了保證所傳輸?shù)男畔⒉槐徊环ǚ肿永靡约皣獾拈g諜機構所探知,因此采取合適的隱寫術對信息進行加密顯得尤為重要。同時,在截獲了不法分子的情報之后進行解密以便采取相應的措施也是一項艱巨的任務。因此,本文采取了Bitfield消息中的隱蔽通信檢測算法設計與軟件開發(fā)技術對信息進行隱蔽以及檢測破譯。應用本文中提出的方法,可以很好地區(qū)分針對矩陣編碼的bitfield消息隱蔽通信中的正常數(shù)據(jù)和含密數(shù)據(jù)。
關鍵詞:測量船;隱蔽通信;檢測算法
中圖分類號:U665.2 文獻標識碼:A 文章編號:1006—7973(2018)2-0049-05
BitTorrent網(wǎng)絡是P2P網(wǎng)絡的典型代表,它運行的是BitTorrent協(xié)議。在中國,它的使用率相對較大。它在具有P2P網(wǎng)絡的本身特色的基礎上,還有著“連接越多,下載越快”的特點。BitTorrent網(wǎng)絡協(xié)議(簡稱BT協(xié)議)其實是一種發(fā)布文件的協(xié)議,它基于的是HTTP的協(xié)議。BT協(xié)議識別內(nèi)容最關鍵的是依賴URL,另外,它還可以和Web進行無縫交接。Ben coding編碼,Torrent文件格式,節(jié)點和Tracker服務器的通信協(xié)議以及節(jié)點之間的通信協(xié)議都是BitTorrent協(xié)議的重要組成部分。在BitTorrent網(wǎng)絡中,發(fā)布和共享是文件共享最主要的兩個步驟。本文研究重點是針對節(jié)點間通信的數(shù)據(jù)消息——Bitfield消息的隱蔽通信算法及其檢測。通過與矩陣編碼技術融合可以提高針對于Bitfield信息的隱蔽通信算法的嵌入效率。矩陣編碼技術在F5密寫算法后開始嶄露頭角。在矩陣編碼技術的基礎上,通過修改1個單位的信息把更多的秘密文本存放進去。最少地更改原先的數(shù)據(jù),降低修改數(shù)據(jù)對BitTorrent功能造成的影響,提升嵌入效率,從而提高了該方法的隱蔽性。
網(wǎng)絡隱寫作為一種隱蔽通信方式,利用合法的數(shù)據(jù)流作為載體在網(wǎng)絡中傳遞秘密文本。測量船通過利用網(wǎng)絡隱信道進行隱秘通信,安全地傳遞重要信息。但同時,網(wǎng)絡隱寫也會被不法組織和個人利用,以傳遞核心信息,威脅國家安全。因此,檢測網(wǎng)絡隱寫的存在,防止危害發(fā)生,是至關重要的環(huán)節(jié)。隱寫的檢測技術作為網(wǎng)絡安全保護方面內(nèi)的核心技術,引發(fā)研究熱潮,而且目前為止已經(jīng)取得了不少的研究成果。但是目前還沒有公開文獻給出其檢測方法。
1 Bencoding 編碼
Bencoding編碼在BT協(xié)議中使用率很高。在BitTorrent早先開發(fā)的時候將Bencoding定義為它的編解碼標準。因為BitTorrent客戶端的開發(fā)語言是Python語言,所以Python自帶的數(shù)據(jù)結構,列表和字典標準在Bencoding里全部包含。整數(shù)、字符串、列表以及字典都能夠進行Bencoding編碼,它們編碼之后轉化為字符串,這樣有利于在網(wǎng)絡上面?zhèn)魉汀?/p>
在Bencoding內(nèi)整數(shù)可以通過i
2 矩陣編碼技術概述
從F5密寫計技術,矩陣編碼技術逐漸進入大眾視野。在F4密寫的基礎上增添矩陣編碼技術和混洗技術就形成了F5密寫技術,它很大程度上提升了信息隱藏技術的可靠性,融入矩陣編碼的首要目的是存放更多的秘密文本。將一個單位秘密文本嵌入到載體信息中會有百分之五十的可能更改初始數(shù)據(jù),也有百分之五十的可能不更改初始數(shù)據(jù)。換言之,每更改一次數(shù)據(jù)都可以存放兩個單位的秘密文本。與矩陣編碼技術融合必然可以把更多的秘密文本存放進去,也就是說,最理想的情況下,可以達到只更改一個單位初始文本而存放k單位隱秘文本的效果。
當k>2時,把k個單位秘密文本存放到2k-1個初始數(shù)據(jù)負載中,這是矩陣編碼的通用形式,此時的載體數(shù)據(jù)使用情況如下
嵌入前,倘若上面的式子全部滿足,那么就不用改動。倘若存在等式不滿足,就需要找到對應于上式的初始數(shù)據(jù),并改動它們,使三個式子全部成立。倘若式(2.11)和式(2.13)不成立,找出它對應的原始數(shù)據(jù)a5(表2-1中a5下面的例子里有叉的位置對應于x1和x3),所以只需要改動a5。由于a5在式(2.11)與式(2.13)中出現(xiàn),所以改動a5可以使它們從不成立變?yōu)槌闪?;但是在式?.12)沒有a5中,因此改動a5并不足以更改式(2.12)的情況。因此當k=3時,矩陣編碼的載體使用情況如下
3 基于Bitfield的信息隱藏算法
利用BitTorrent網(wǎng)絡內(nèi)節(jié)點之間通信的Bitfield消息來進行的信息隱藏就是基于Bitfield的信息隱藏算法,這個算法隱蔽性良好,且容易被發(fā)現(xiàn)。本節(jié)將系統(tǒng)地介紹基于Bitfield的信息隱藏算法的隱藏原理,隱藏算法和提取算法。
3.1隱藏算法
規(guī)則1嵌入秘密文本時,與矩陣編碼融合,首先利用式(2.7)將原始數(shù)據(jù)的序號按二進制編碼,得到bi,j,其中bi,j的取值設置成0或1。第二步,利用式(2.8)計算cj,其中式2.8)中ai為等候存放文本的Bitfield消息負載的第i位,x1,x2…xk是欲嵌入的秘密文本。最后,利用式(2.9)計算C的值,倘若C=0,則不作任何改動;否則改動ac。
為簡便起見,在隱藏算法中,令Encrypt()表示預處理加密秘密文本M為S的函數(shù)(S=x1,x2…xk),Embed()是按照規(guī)則1將S嵌入載體的隱藏函數(shù)。
下面給出隱藏算法的主要步驟:
輸入:信息載體Bitfield消息B,待隱藏的秘密文本M,密鑰k。
輸出:隱藏信息后的Bitfield消息B*。
步驟:Step1:S=Encrypt(M,k),并計算|S|;
Step2:計算Bitfield消息負載的長度L;
Step3:If L<2|S|-1
Step4:輸出“嵌入失敗(信息過長)”
Else
Step5:Embed(S);
Step6:輸出B*
隱秘文本M在節(jié)點獲取了節(jié)點分布信息的基礎上,經(jīng)過握手來存放文本的。文本在傳送出去之前一直存放在Bitfield文本里面。在這個算法里面,工作的全部節(jié)點都不是空白的,它們都含有一些內(nèi)容。同樣的,要獲取隱秘文本也必須在握手以后才能后進行。
3.2提取算法
規(guī)則2:根據(jù)矩陣編碼規(guī)則,提取秘密文本時按式(2.10)計算xj(1≤j≤k),得到隱秘文本為x1x2…xk。在提取算法中,用Extract()表示按照規(guī)則2將S從Bitfield中提取的提取函數(shù),Decrypt()是將經(jīng)加密的秘密文本S轉換為明文形式的秘密文本M。
下面給出提取算法的主要步驟:
輸入:待獲取Bitfield消息B*,密鑰k。
輸出:隱藏的秘密文本M。
步驟:Step 1:按照規(guī)則2從B*中提取S,S= Extract(B*);
Step 2:以明文的形式將S轉換為秘密文本M,M=Decrypt(S,k);
Step3:輸出M。
4 針對矩陣編碼的Bitfield消息隱蔽通信檢測方法
4.1檢測算法
基于矩陣編碼的隱蔽通信方式,我們在編寫檢測方法時,只要通過檢測一定窗口內(nèi)三個狀態(tài)(-1,0,1)的轉移矩陣,再對這個轉移矩陣進行處理得到K-L散度,即可判斷該窗口是否含有隱蔽通信。下圖4-1是矩陣編碼的原理示例圖。
4.2建立模型庫
一種針對矩陣編碼的隱蔽通信檢測方法,包括建立模型庫和利用模型庫進行檢測,所述建立模型庫具體包括如下步驟:
步驟一:設置數(shù)據(jù)捕獲器
用Bit comet進行文件下載,然后通過wireshark捕獲數(shù)據(jù)包,并在捕獲的數(shù)據(jù)包中篩選出Bitfield消息。
步驟二:設置數(shù)據(jù)處理器
設置數(shù)據(jù)處理器,通過篩選將1192位Bitfield消息數(shù)據(jù)篩選得到負載數(shù)據(jù)為814位,然后利用Matlab對捕獲的數(shù)據(jù)進行處理,將原來的十六進制數(shù)據(jù)轉化為二進制數(shù)據(jù),并合并成一個一維數(shù)組,再對前后捕獲到的兩組數(shù)組求差。
步驟三:設置窗口分割器
設置窗口分割器:窗口分割器將處理后的一維數(shù)組分為大小為w的窗口,共可分為 個窗口;每個窗口分成大小為L的小區(qū)間,一個窗口可分為 個小區(qū)間,若Bitfield消息中存在N條流, 為一個小區(qū)間內(nèi)通過某條流的數(shù)據(jù)包的個數(shù),統(tǒng)計每個小區(qū)間中每條流的占比,i=1、2、3…, ;本實施例中在原數(shù)據(jù)后面補6個0,以w=466的窗口大小,將其分為7個檢測窗口。
步驟四:設置K-L散度求取器
計算前后兩組數(shù)據(jù)的差值中所含的獨立狀態(tài)數(shù)個數(shù),從小到大排列為一維矩陣E,先找出第i個狀態(tài)的位置,然后通過判斷下一個位置的狀態(tài)來得到一個占位矩陣T,如果第i個狀態(tài)的下一個位置的狀態(tài)為E(j),則占位矩陣中對應的位置加一(即T(i,j)= T(I ,j)+1),不同則不做改變,并求得這個占位矩陣對于每一行的和的轉移矩陣Q;最后利用K-L散度求取器根據(jù)公式(2.4)計算出各窗口數(shù)據(jù)的K-L散度D。本實施例中將-1,0,1看作三個獨立狀態(tài),求出7個窗口的K-L散度。
步驟五:訓練不同時間間隔的正常Bitfield消息數(shù)據(jù)模型,并設定檢測閾值:在不同時間間隔的情況下,重復步驟(1)——(4),得到不同時間間隔的正常數(shù)據(jù)模型,對各模型進行分析,求不同時間間隔所含數(shù)據(jù)的均值M+、方差V+和檢測閾值Th+=M++aV+,并使用自定義常量a來調(diào)整檢測閾值。本實施例中經(jīng)過步驟四得到7個窗口的K-L散度后,在不同時間間隔下建立正常通信的數(shù)據(jù)模型,并對每個模型進行分析。
步驟六:建立模型庫:將步驟五中求得的不同時間間隔的正常Bitfield消息的檢測閾值放入模型庫中。
正常通信模型訓練流程如下圖4.2所示:
4.3利用模型庫進行檢測
(1)判斷待測數(shù)據(jù)的時間間隔:根據(jù)時間間隔從模型庫中調(diào)出相應的模型以及檢測閾值Th+;endprint
(2)處理待測數(shù)據(jù)并計算K-L散度:利用數(shù)據(jù)處理器將捕獲到的前后兩組數(shù)據(jù)求差并轉化為一個一維數(shù)組;利用窗口分割器將數(shù)組分割成大小均為ω的窗口;把0,1,-1看做三種狀態(tài),先找出0的位置,然后通過判斷下一位的狀態(tài)來得到一個占位矩陣,并求得這個占位矩陣對于每一行的和的轉移矩陣Q;最后利用K-L散度求取器計算出各窗口數(shù)據(jù)的K-L散度D。
(3)判斷待檢測數(shù)據(jù)屬性:將D與模型庫中相應的檢測閾值Th+作比較,小于Th+則待檢測數(shù)據(jù)為含密數(shù)據(jù),否則為正常數(shù)據(jù)。
步驟一中所述的數(shù)據(jù)捕獲器即wireshark,所述過濾器為wireshark內(nèi)置的過濾器。
步驟四中所述的K-L散度求取方法即相對熵,是相對于真實通信的轉移矩陣而言的K-L散度。
其中(i,j)為真實通信的轉移矩陣的第i行第j列;Q(i,j)為待測數(shù)據(jù)的轉移矩陣的第i行第j列。
利用模型庫進行檢測的具體步驟如下圖4-3所示:
4.4檢測步驟
針對矩陣編碼的Bitfield消息隱蔽通信檢測方法的具體步驟如下。先把待測數(shù)據(jù)和正常數(shù)據(jù)轉化為一維數(shù)組,并對前后兩組一維數(shù)組求差,得到三種狀態(tài):0,1,-1,找出每個狀態(tài)的位置,通過判斷下一個位置的狀態(tài)得到占位矩陣,再求得該矩陣K-L散度的差異,判斷待檢測數(shù)據(jù)流是否為含密數(shù)據(jù)流。并且在求出數(shù)據(jù)轉移矩陣的基礎上,與K-L散度的計算相結合,從而提高了檢測效果,可以得到可靠的檢測結果。
5 實驗成果
圖5-2為實驗效果圖,實線為正常數(shù)據(jù),虛線為含密數(shù)據(jù),由圖可見,應用本文中提出的方法,可以很好的區(qū)分針對矩陣編碼的bitfield消息隱蔽通信中的正常數(shù)據(jù)和含密數(shù)據(jù)。
6 結論
節(jié)點之間的連接,交互信息是十分關鍵的。它們可以用于完成文件共享。而文件資源共享更是BT網(wǎng)絡中的核心之一。在這個過程中,節(jié)點首先利用自身的特點與其他部件相互連通。連通后將Bitfield消息傳送出去。消息中涵蓋了周邊節(jié)點的分布圖。這個圖主要是為BitTorrent的文件服務。在這個文件中,片段摘選的規(guī)則就是由這個圖來提供的。本文基于Bitfield消息,設計實現(xiàn)一種針對Bitfield的信息隱藏算法以及一種針對矩陣編碼的Bitfield消息隱蔽通信檢測方法。這種檢測算法首先通過對比待檢測數(shù)據(jù)和正常數(shù)據(jù)找出每個狀態(tài)的位置,獲得占位矩陣和轉移矩陣。利用求得的K-L散度來判斷是否為含密數(shù)據(jù)流,這種檢測算法的效率更高結果更為可靠。
參考文獻:
[1] 王育民. 信息隱藏: 理論與技術[N]. 第1版. 北京:清華大學出版社, 2006, (3): 115-123
[2] Y. Chawathe, S. Ratnasamy, L. Breslau, et al. Making Gnutella-like P2P Systems Scalable[J]. In: Proceeding of ACM SIGCOMM. New York: ACM, 2003, (5): 407-418
[3] D. Wallach. A Survey of Peer-to-Peer Security Issues[J]. In: International Symposium on Software Security. Berlin: Springer-Verlag,2003, 253-258
[4] T. W. Ngan, D. Wallach, P. Druschel. Enforcing Fair Sharing of Peer-to-Peer Resources[J]. In: Proceeding of the Second International Workshop on Peer-to-Peer Systems. Berkeley: Springer-Verlag, 2003, 110-115
[5] 陳亮, 龔儉, 大規(guī)模網(wǎng)絡中BitTorrent流行為分析[N], 東南大學學報(自然科學版), vol. 38,no. 3, pp. 390-395, 2008.
[6] 徐釩文, 基于P2P的隱蔽匿名通信系統(tǒng)研究[D], 北京郵電大學碩士學位論文, 2013.
[7]BitTorrent. http://www.bittorrent.com/[Z], 2009-2-12
[8]Gnutella. http://www.gnutellaforums.com/[Z], 2009-2-12
[9] 楊榆, 鈕心忻, 楊義先等. 網(wǎng)絡協(xié)議信息隱藏技術綜述[N]. In: Proceedings of CIHW2006. 哈爾濱: 哈爾濱工業(yè)大學學報, 2006, 38(7): 820-824, 856
[10] 張聯(lián)峰, 劉乃按, 錢秀檳等. 綜述: 對等網(wǎng)(P2P)技術[R]. 計算機工程與應用,2003, 39(12): 142-145endprint