王婷+馬繼先+劉英杰



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