楊皓云,王俊峰 ,劉嘉勇,唐彰國3,
1.四川大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,成都 610065
2.四川大學(xué) 計算機學(xué)院,成都 610065
3.四川師范大學(xué) 物理與電子工程學(xué)院,成都 610066
作為信息隱藏領(lǐng)域下的一個分支,基于網(wǎng)絡(luò)協(xié)議的隱蔽通道技術(shù)已經(jīng)是當(dāng)前一個比較熱門的研究方向。使用網(wǎng)絡(luò)協(xié)議作為載體,利用協(xié)議的字段和語義來隱藏信息,從而實現(xiàn)在非授權(quán)情況下的信息傳遞。這種信息傳遞的方式違反了網(wǎng)絡(luò)中的安全傳輸策略,能夠?qū)Ψ阑饓?,入侵檢測系統(tǒng)等網(wǎng)絡(luò)監(jiān)聽設(shè)備進行穿透攻擊[1]。目前基于各類協(xié)議的各種字段的隱蔽通道已經(jīng)是層出不窮。
本文提出了一種基于SSL協(xié)議的隱蔽通道,通過訪問HTTPS服務(wù)來傳遞秘密信息。在SSL協(xié)議進行握手協(xié)商密鑰的過程中,使用握手報文的隨機數(shù)字段來建立隱蔽域。并設(shè)計了一種一包一密對填充數(shù)據(jù)進行循環(huán)對稱加密的算法,使其符合隨機數(shù)字段的特性,能夠有效抵抗針對該字段的統(tǒng)計畫像檢測。通過模擬用戶發(fā)送時延和流量混淆來平衡流量分布。實驗結(jié)果表明,該隱蔽通道能應(yīng)用在HTTPS 的場景下,在復(fù)雜的網(wǎng)絡(luò)環(huán)境中可靠地傳遞信息,能夠?qū)Ψ阑饓Φ染W(wǎng)絡(luò)監(jiān)聽設(shè)備進行穿透,有著較高的傳輸速率,較強的隱蔽性和魯棒性。
隱蔽通道首次在1973 年被Lampson[2]提出,指在系統(tǒng)中,以違反主機安全策略的方式來傳遞信息。最初關(guān)注的是系統(tǒng)中程序安全性問題,即在未授權(quán)的情況下向其他程序傳遞信息。文獻[1]將網(wǎng)絡(luò)隱蔽通道定義為在網(wǎng)絡(luò)中使用公開的信道以違反通信規(guī)則和安全策略的方式來傳遞非法的信息。隱蔽通道的雙方可以在網(wǎng)絡(luò)中的公共設(shè)備如網(wǎng)關(guān)、路由器等數(shù)據(jù)包流經(jīng)設(shè)備上建立隱蔽通道的發(fā)送端和接收端來進行數(shù)據(jù)的收發(fā)。應(yīng)用場景也是多種多樣,如內(nèi)網(wǎng)和外網(wǎng)之間的相互訪問。場景不同會導(dǎo)致構(gòu)建隱蔽通道所使用的協(xié)議方法、傳輸速率、魯棒性的不同[3]。
經(jīng)典的網(wǎng)絡(luò)隱蔽通道分為兩類,基于時間和基于存儲的[3-4]。存儲型隱蔽通道的構(gòu)建思想是把信息附在協(xié)議的特定字段,封裝成正常的數(shù)據(jù)包發(fā)出。如使用TCP協(xié)議和IP 協(xié)議來構(gòu)建存儲型隱蔽通道,使用IP 協(xié)議的ID號、初始化序列號、服務(wù)類型等字段。TCP協(xié)議的發(fā)送序號、Flags字段、緊急指針和確認序號等字段來構(gòu)建存儲型隱蔽通道[5]。時間型隱蔽通道主要是通過數(shù)據(jù)包之間的時間特性來表達秘密信息。最早通過發(fā)送特定時間延遲的數(shù)據(jù)包來傳遞消息[6],后來通過改進對時間間隔序列進行去規(guī)律化,發(fā)送經(jīng)過統(tǒng)計收集的時間間隔,去模擬正常網(wǎng)絡(luò)數(shù)據(jù)包的發(fā)送時間[7]。
除了兩種經(jīng)典類型的隱蔽通道,后期又出現(xiàn)了許多新型隱蔽通道,新型隱蔽通道的構(gòu)建大都結(jié)合了當(dāng)前的最新協(xié)議和技術(shù)。如適用于P2P 網(wǎng)絡(luò)的存儲型隱蔽通道[8]和基于區(qū)塊鏈技術(shù)的時間型隱蔽通道[9]。這一類新型隱蔽通道主要是運用了最新技術(shù)來達到穿透的目的,但隱藏方法還是基于傳統(tǒng)的隱藏方法。而基于FTP 協(xié)議和HTTP協(xié)議的隱蔽通道,這類新型隱蔽通道不同于存儲型和時間型。其構(gòu)建思想是利用通信雙方在通信時產(chǎn)生語法上的差異來表達信息,而這些語法的差異不會影響正常的通信。這類隱蔽通道多基于應(yīng)用層的協(xié)議。基于FTP 協(xié)議的隱蔽通道使用對不同目錄的訪問序列來表達信息[10-11]?;贖TTP協(xié)議的隱蔽通道使用HTTP協(xié)議中請求頭中字段的位置和序列來表達信息[12]。
隱蔽通道構(gòu)建技術(shù)的研究主要分為兩條路,一是針對原有的隱蔽通道進行改進。二是使用新的技術(shù)或者協(xié)議來構(gòu)建一種未使用過的隱蔽通道。對協(xié)議的選取思路分為兩點:一是該協(xié)議有良好的開放性,即較高的使用率。二是該協(xié)議的實際應(yīng)用場景多樣,可應(yīng)用于內(nèi)外網(wǎng)等眾多復(fù)雜的網(wǎng)絡(luò)環(huán)境中。傳統(tǒng)隱蔽通道自身存在一些問題,如基于TCP和IP協(xié)議的存儲型隱蔽通道,這類協(xié)議在網(wǎng)絡(luò)中被大量使用,同時也是防火墻和監(jiān)聽設(shè)備高度檢測的協(xié)議,協(xié)議本身隱蔽性和穿透性并不強,面對復(fù)雜網(wǎng)絡(luò)環(huán)境穩(wěn)定性也不高。并且協(xié)議使用的隱蔽字段有特定的含義和取值范圍,簡單進行信息隱藏會破壞字段的特性,構(gòu)造字段特性也相對復(fù)雜。本文選擇使用SSL協(xié)議來構(gòu)建隱蔽通道,協(xié)議本身有較高的開放度,并且屬于安全類協(xié)議,有較高的隱蔽性和穿透性。選擇隨機數(shù)高隱蔽域字段,易滿足字段特性且不影響通信,十分適合用來隱藏秘密信息。
SSL 協(xié)議[13]的全稱是 Secure Sockets Layer 安全套接層協(xié)議,為網(wǎng)絡(luò)通信提供安全性保障。SSL協(xié)議提供的服務(wù)主要有:一是通信雙方的身份認證,防止三方假冒。二是傳輸數(shù)據(jù)加密,確保機密性。三是數(shù)據(jù)完整性驗證,確保數(shù)據(jù)不被篡改。SSL協(xié)議的基本結(jié)構(gòu)由記錄層和握手層構(gòu)成。底層的記錄層為SSL記錄協(xié)議,高層握手層包括應(yīng)用數(shù)據(jù)協(xié)議、SSL 握手協(xié)議、SSL 告警協(xié)議、SSL修改密文協(xié)議。SSL記錄協(xié)議建立在TCP和IP協(xié)議之上,SSL 握手協(xié)議被封裝在SSL 記錄協(xié)議中,通信雙方使用握手協(xié)議進行算法密鑰的協(xié)商、身份認證等工作。SSL協(xié)議體系結(jié)構(gòu)如圖1所示。
圖1 SSL協(xié)議體系結(jié)構(gòu)
SSL 協(xié)議的整個握手過程是由客戶端發(fā)起的向服務(wù)器進行請求協(xié)商,雙方進行安全參數(shù)的協(xié)商,建立并初始化通信的環(huán)境。協(xié)商使用的協(xié)議版本,加密密鑰算法,進行客戶端和服務(wù)器的身份認證等工作。只有通過SSL協(xié)議的握手通信協(xié)商,才能建立安全可靠的通信環(huán)境來進行數(shù)據(jù)傳輸。
文獻[14]將隱蔽通道與SSL 協(xié)議相結(jié)合,提出了一種傳輸層的混合隱蔽通道,但實際思想還是將秘密信息嵌于TCP協(xié)議字段,但嵌入前使用SSL協(xié)議進行加密操作從而提高隱蔽性。文獻[15-16]基于隧道的思想,在正常完成SSL握手后進行加密數(shù)據(jù)的傳輸,把秘密信息經(jīng)過加密處理后填充到數(shù)據(jù)報文的負載部分。這種方法存在的問題是,利用隧道技術(shù)將信息填充到了本該傳輸數(shù)據(jù)的負載部分,這種傳輸?shù)男袨楸旧硎潜┞兜模[蔽性較低,而隱蔽通道的本質(zhì)是將信息填充到本來不用于傳輸數(shù)據(jù)的字段。并且網(wǎng)絡(luò)檢測設(shè)備也會針對其加密的負載數(shù)據(jù)進行檢測,對基于SSL、SSH、VPN等加密流量可通過負載隨機性、流量統(tǒng)計、主機行為、數(shù)據(jù)分組大小等方法進行惡意加密流量的識別[17]。信息隱藏技術(shù)與隧道技術(shù)之間的區(qū)別在于通信行為的可見性,為提高其隱蔽性,隱藏數(shù)據(jù)通信的行為,本文選擇使用SSL 協(xié)議頭部的高隱蔽字段來進行信息隱藏,而不直接采用加密通信。
SSL協(xié)議通信可分為握手和數(shù)據(jù)傳輸兩步,握手過程并沒有建立完整的連接和產(chǎn)生數(shù)據(jù)通信行為,所以在握手過程中來傳遞秘密信息相比于數(shù)據(jù)傳輸過程,能更好地隱匿其行為。SSL 隱蔽通道的構(gòu)建思想是在SSL客戶端和服務(wù)器進行握手密鑰協(xié)商的過程中傳遞信息,使用SSL 協(xié)議握手協(xié)商的第一個報文進行隱蔽通道的構(gòu)建,第一個報文為客戶端的請求協(xié)商報文,傳遞客戶端生成的隨機數(shù)和一系列協(xié)商信息??蛻舳税衙孛苄畔㈦[藏在第一個報文的隨機數(shù)字段。修改隨機數(shù)字段的值不會影響后期的通信,只要滿足隨機數(shù)的特性就能使信息得到充分的隱藏。偽造的報文可以發(fā)往任意HTTPS 服務(wù)器,接收端可以安置在流量過往的任意節(jié)點上,通過特定的算法來標(biāo)識SSL 隱蔽通道的流量,而不影響數(shù)據(jù)包的正常通信,使得接收端的使用更為靈活。接收端根據(jù)客戶端發(fā)出的第一個SSL 隱蔽通道數(shù)據(jù)包進行協(xié)商并同步,根據(jù)客戶端預(yù)先協(xié)商好的規(guī)則進行數(shù)據(jù)的發(fā)送和接收。
SSL 隱蔽通道構(gòu)建方法為偽造Client_Hello 握手協(xié)商報文,該報文主要由3 個部分構(gòu)成:第一個部分為握手協(xié)議的類型,由1 個字節(jié)組成,取值不同代表不同的握手協(xié)議。第二部分使用3 個字節(jié)來表示以字節(jié)為單位的報文長度。剩下的所有部分為內(nèi)容字段,內(nèi)容字段包含版本號、隨機數(shù)、會話ID長度、會話ID、加密套件長度、加密套件列表、壓縮方法長度、壓縮方法、擴展字段長度、擴展字段等,具體報文格式如圖2所示。
圖2 SSL握手報文格式
將秘密信息隱藏在Client_Hello握手報文的32 Byte Random 隨機數(shù)字段中。該隨機數(shù)由客戶端生成,后期將使用該隨機數(shù)來生成用于通信加密的對稱密鑰。該字段被修改不會影響報文本身。整個隱蔽通信過程只涉及到SSL 握手的前2 步和5 個報文,具體通信過程如圖3所示。
圖3 SSL隱蔽通信過程
雖然數(shù)據(jù)直接填充不影響報文本身,但會破壞該字段的本質(zhì),即破壞隨機數(shù)的隨機性。并且傳輸?shù)奈募ǔS蓄^文件或者一些特殊的標(biāo)識,如PDF 文件的頭部4 Byte為0x25504446用ASCII碼表示就是%PDF。傳輸過程中如果直接填充明文,很容易就能被檢測出該字段在傳遞特定數(shù)據(jù)。并且隨機數(shù)字段內(nèi)數(shù)據(jù)并不隨機,對該字段數(shù)據(jù)進行統(tǒng)計分析其隨機性,就能夠檢測出報文的隨機數(shù)字段存在異常。所以為了使填充的數(shù)據(jù)更符合字段的性質(zhì),即使數(shù)據(jù)具有隨機性,需要使用某種算法對數(shù)據(jù)進行處理使其變?yōu)閭坞S機數(shù)。接收端提取數(shù)據(jù)后使用相同的規(guī)則解密就可以得到原始信息。
如圖4所示,為了讓相同的信息每次經(jīng)過處理后能變成不同的偽隨機數(shù),每個報文都將使用一個不同的密鑰進行加密。并且為了讓加密后的數(shù)據(jù)更具有隨機性,本文設(shè)計了一種循環(huán)對稱加密算法來進行消息的處理。隨機數(shù)字段為32 Byte,保留前4 Byte作為消息加密的對稱密鑰,該密鑰由隨機數(shù)生成器生成,僅使用后面28 Byte 來傳輸數(shù)據(jù)。將后面的28 Byte 分為7 段信息,每一段為 4 Byte。32 Byte 隨機數(shù)字段的第 1~4 Byte 為生成的隨機對稱加密密鑰,第5~8 Byte 為第一段信息。使用1~4 Byte的密鑰對5~8 Byte的信息進行對稱加密,加密后的密文填充到5~8 Byte,再用加密后的5~8 Byte即第一段密文信息作為后面9~12 Byte的對稱密鑰進行加密,依次循環(huán)直到7段信息28 Byte加密完成。經(jīng)過變換后的28 Byte為最終傳遞的密文信息。由于每個報文初始化時都將生成不同的隨機對稱密鑰,所以就算對于相同信息,也能經(jīng)過處理后變?yōu)椴煌膫坞S機數(shù),從而增強SSL 隱蔽通道的隱蔽性,使隨機數(shù)字段具有隨機性,能夠有效抵御針對該字段的統(tǒng)計分析檢測。
圖4 循環(huán)對稱加密算法
SSL 協(xié)議在實際中多為HTTPS 提供服務(wù),HTTPS(Hypertext Transfer Protocol Secure)超文本安全傳輸協(xié)議就是將HTTP和SSL相結(jié)合,使用SSL協(xié)議來保障HTTPS 服務(wù)器與客戶端之間的通信安全。本文使用HTTPS 服務(wù)來承載SSL 協(xié)議的隱蔽通道,偽裝成HTTPS的客戶端和服務(wù)器來進行隱蔽通信。由于短時間內(nèi)產(chǎn)生大量的握手報文相比正常握手時的通信流量來說是異?,F(xiàn)象,采集相關(guān)流量進行統(tǒng)計分析就能發(fā)現(xiàn)其異常。所以需要平衡通信時的流量,主要通過兩種方式實現(xiàn):一是通過增加時間成本來平衡流量。主要方法是通過收集正常用戶訪問HTTPS 服務(wù)器的時間間隔,在數(shù)據(jù)包發(fā)送時隨機選擇時延進行發(fā)送,來模擬用戶訪問并均衡流量。二是通過流量混淆的方式,在進行隱蔽通信的過程中,使用同一客戶端或者不同客戶端進行正常HTTPS的訪問,從而實現(xiàn)流量的混淆。
實驗設(shè)計了一組SSL隱蔽通道的驗證場景,將隱蔽通道的客戶端放置在處于內(nèi)網(wǎng)環(huán)境的任意一臺主機。并設(shè)計了兩類隱蔽通道的接收端,第一類為內(nèi)網(wǎng)用戶訪問互聯(lián)網(wǎng)公共HTTPS 服務(wù)器,在與互聯(lián)網(wǎng)公共HTTPS服務(wù)器建立SSL 握手連接的過程中偽造數(shù)據(jù)包來傳遞秘密信息。這類隱蔽通道的接收端放置在數(shù)據(jù)包的流經(jīng)設(shè)備上,如主機或者路由器。隱蔽通道的接收端對來往的流量進行分析和篩選,識別偽造的SSL數(shù)據(jù)包并解析,解密重組還原秘密信息。第二類使用同一隱蔽通道客戶端來進行數(shù)據(jù)的發(fā)送,但沒有數(shù)據(jù)包流經(jīng)設(shè)備的使用權(quán)限,通過搭建一個公網(wǎng)的私人HTTPS 服務(wù)器作為隱蔽通道的接收端。這類隱蔽通道的接收端偽裝成HTTPS 服務(wù)器,并且同時提供正常的HTTPS 服務(wù)和SSL隱蔽通道的接收工作,從所有訪問HTTPS服務(wù)的主機流量中進行隱蔽流量的篩選和識別,對秘密信息進行提取重組和還原,具體實驗驗證場景如圖5所示。
OpenSSL[18]是一套功能強大的、開源的基于密碼學(xué)的工具集合,通過它可以設(shè)計和實現(xiàn)SSL 協(xié)議,進行安全的通信,以及證書和密鑰的管理。OpenSSL 包含了Crypto加密算法庫和數(shù)字證書的模塊、SSL各版本協(xié)議的實現(xiàn)模塊等,并提供了許多方便的API接口供編程開發(fā)人員使用。目前,在市場上有許多安全領(lǐng)域的應(yīng)用軟件都是依賴OpenSSL的庫來進行開發(fā)的,使用OpenSSL的API 接口或者對源碼進行改造來開發(fā)基于特定場景或使用特定加密算法的安全通信軟件。
實驗使用OpenSSL 1.0.2k-fips在Linux的系統(tǒng)下進行SSL 隱蔽通道客戶端和接收端的構(gòu)建。將需要傳遞的秘密信息按照每28 Byte 一個數(shù)據(jù)包進行分段,并對每一段信息進行循環(huán)對稱加密處理使其隨機化。最后進行數(shù)據(jù)填充并偽裝成握手報文,隨機添加用戶訪問時延進行發(fā)送。實驗成功偽裝成訪問HTTPS服務(wù)器的客戶端,并將秘密信息隱藏于握手報文的隨機數(shù)字段。HTTPS服務(wù)器成功默認為正常的SSL握手通信,并試圖與客戶端繼續(xù)進行通信協(xié)商。但SSL 隱蔽通道只涉及到握手通信的前5個報文,在客戶端收到服務(wù)器證書進行證書驗證的環(huán)節(jié)便終止,不需要建立完整的SSL連接。
實驗成功構(gòu)建了兩類隱蔽通道的接收端。第一種實驗租用了一臺外網(wǎng)的云服務(wù)器,在服務(wù)器上搭建HTTPS 服務(wù)的環(huán)境,在提供正常HTTPS 服務(wù)的同時進行SSL隱蔽通道數(shù)據(jù)的接收,成功將隱蔽通道接收端偽裝成一臺HTTPS服務(wù)器。第二種通過訪問互聯(lián)網(wǎng)公共HTTPS 服務(wù)器,向其發(fā)送偽造的報文進行SSL 握手協(xié)商,將隱蔽通道接收端放置在報文流經(jīng)設(shè)備上。實驗中使用一臺Linux雙網(wǎng)卡主機作為局域網(wǎng)主機共同的一個出口轉(zhuǎn)發(fā)設(shè)備,在該主機上部署防火墻進行數(shù)據(jù)包的路由轉(zhuǎn)發(fā),并且搭建了開源的Snort 入侵檢測系統(tǒng)模擬一個安全的環(huán)境以測試SSL 隱蔽通道的穿透能力。實驗結(jié)果表明SSL隱蔽通道能夠順利穿透審計監(jiān)聽設(shè)備,并能夠在流量經(jīng)過的主機設(shè)備上進行秘密信息的接收。
圖5 SSL隱蔽通道驗證場景
隱蔽通道構(gòu)建工作完成后需要對其進行分析與評估。針對時間型和存儲型隱蔽通道通常會從隱蔽性、可靠性、信道容量三個方面進行評估[19]。隱蔽性是指隱蔽通道的數(shù)據(jù)包是否可以穿透網(wǎng)絡(luò)中的審計監(jiān)聽設(shè)備,不被發(fā)現(xiàn)也不會產(chǎn)生告警,并且能針對相應(yīng)的檢測方法具有抗檢測的性能??煽啃允侵鸽[蔽通道能夠在復(fù)雜的網(wǎng)絡(luò)環(huán)境中可靠地傳輸數(shù)據(jù),不會受到網(wǎng)絡(luò)中噪聲、延時、丟包的影響。信道容量是指隱蔽通道在一段時間內(nèi)能傳輸?shù)男畔⒘?,可使用一個報文隱藏的信息數(shù)量或者隱蔽通道在網(wǎng)絡(luò)中的傳輸速率作為信道容量的評定指標(biāo)。實驗同樣根據(jù)這3 個指標(biāo)來對構(gòu)建的基于SSL 協(xié)議隱蔽通道進行評估。
本文使用SSL 協(xié)議作為隱蔽通道的承載協(xié)議。由于SSL協(xié)議本身就是一個基于安全傳輸?shù)膮f(xié)議,普通的防火墻和NAT設(shè)備基本不會對其進行過濾和攔截。并且基于SSL 協(xié)議的HTTPS 服務(wù)在目前應(yīng)用十分普及,已經(jīng)成為了主流的業(yè)務(wù),大部分瀏覽網(wǎng)頁的操作都會涉及到HTTPS 服務(wù)。經(jīng)測試,短時間瀏覽網(wǎng)頁就會產(chǎn)生大量的SSL 相關(guān)流量。HTTPS 服務(wù)所使用的443 端口也具有較高的開放度,所以就協(xié)議本身而言具備隱蔽性的特定。
并且實驗通過隨機數(shù)字段的數(shù)據(jù)進行變換處理來增強SSL 隱蔽通道的隱蔽性。本文設(shè)計了一種一包一密鑰對28 Byte 數(shù)據(jù)進行分段循環(huán)加密的方法,使得隨機數(shù)字段填充的數(shù)據(jù)更符合該字段本身隨機數(shù)的性質(zhì),對秘密信息本身也是一種隱藏。為了驗證循環(huán)加密后的隨機數(shù)字段的數(shù)據(jù)是否具有隨機性,設(shè)計了一組對比驗證實驗。分別收集了三種隨機數(shù)字段的數(shù)據(jù):第一種為正常SSL握手報文的隨機數(shù),通過正常瀏覽網(wǎng)頁采集了980個SSL協(xié)議的Client_Hello握手報文,提取報文中的隨機數(shù)字段。第二種和第三種為使用同一傳輸文件,分別采取直接明文傳輸和經(jīng)過循環(huán)對稱加密后傳輸兩種方式。采集傳輸過程中偽造握手報文的隨機數(shù)字段。采集后對3組數(shù)據(jù)進行相同處理,采用16進制字符串的形式來表示隨機數(shù),并進行字符統(tǒng)計,統(tǒng)計0~F 這16 個字符出現(xiàn)的次數(shù),最后計算出每個字符的出現(xiàn)頻率。三組數(shù)據(jù)的字符出現(xiàn)頻率如表1 所示,圖6 更為直觀地表現(xiàn)出三組隨機數(shù)字段數(shù)據(jù)的字符頻率差異。
表1 三種字符頻率對比
圖6 字符頻率對比圖
通過圖表的對比分析,可以看出正常的隨機數(shù)字段的16 個字符的出現(xiàn)頻率十分相似,具有隨機性。而未經(jīng)過任何處理的數(shù)據(jù)的字符頻率波動明顯,在使用了循環(huán)對稱加密后字符頻率同正常隨機數(shù)的字符頻率相趨近。分析結(jié)果表明使用循環(huán)對稱加密算法能夠使數(shù)據(jù)更具有隨機性,符合該字段的特性,能夠有效地抵抗對該字段進行統(tǒng)計分析檢測。
圖7為采集的正常用戶發(fā)送握手報文的間隔,通過模擬用戶的正常瀏覽網(wǎng)頁時延來發(fā)送數(shù)據(jù)包,從而平衡流量。加入流量混淆技術(shù),使用同一客戶端或者不同客戶端進行正常HTTPS服務(wù)的訪問。在進行SSL隱蔽通信的過程中產(chǎn)生正常的SSL 通信流量來進行流量的混淆,從而提高隱蔽性。
圖7 正常用戶發(fā)送SSL握手包間隔
可靠性要求隱蔽通道能在復(fù)雜的網(wǎng)絡(luò)環(huán)境中把秘密信息從客戶端可靠地傳遞給接收端,而不會出現(xiàn)信息的丟失、亂序等情況。由于SSL協(xié)議作為構(gòu)建協(xié)議本身就是一個可靠的傳輸協(xié)議,是基于TCP可靠傳輸協(xié)議基礎(chǔ)上的,所以協(xié)議本身是具備可靠傳輸?shù)臋C制,能夠確保把秘密消息準(zhǔn)確有序地傳遞給接收端。通過實驗也證明數(shù)據(jù)能從內(nèi)網(wǎng)主機準(zhǔn)確完整地傳遞到互聯(lián)網(wǎng)環(huán)境的主機中。
信道容量表達了隱蔽通道在單位時間內(nèi)傳遞數(shù)據(jù)的信息量。SSL隱蔽通道的本質(zhì)是存儲型隱蔽通道,使用SSL 握手協(xié)議的隨機數(shù)字段來作為秘密消息的填充字段。該字段為32 Byte,前4 Byte作為循環(huán)對稱加密的密鑰,剩余的28 Byte 來進行數(shù)據(jù)的填充。所以每個報文可以承載28 Byte秘密信息。表2對經(jīng)典的存儲型隱蔽通道的容量進行了比較,除去本該用于數(shù)據(jù)傳輸?shù)淖侄魏腿我馓畛涞淖侄?,使用具有特定意義的字段來進行信息隱藏,統(tǒng)計TCP、IP[5]、ICMP[20]協(xié)議中可用于構(gòu)建隱蔽通道的字段,以字節(jié)為單位作為隱藏容量,選取協(xié)議中最高容量的字段進行對比。SSL 隱蔽通道相比于經(jīng)典的TCP/IP 存儲型隱蔽通道在容量上有較大提升,通過模擬用戶發(fā)送時延后的隱蔽通道的平均傳輸速率能到達464 bit/s,即58 Byte/s。
表2 存儲型隱蔽通道容量比較
本文提出了一種基于SSL協(xié)議的隱蔽通道。在SSL協(xié)議進行握手密鑰協(xié)商的過程中來傳遞秘密信息,使用握手報文中的隨機數(shù)字段來傳遞信息。并且設(shè)計了一種一包一密的循環(huán)對稱加密算法來增強該字段數(shù)據(jù)的隨機性,能夠有效抵抗該字段的統(tǒng)計畫像檢測。模擬用戶發(fā)送時延和流量混淆技術(shù)來增加流量層面的隱蔽性。本文提出的方法也有一定的局限性,如果傳輸大文件,依然會產(chǎn)生大量的流量。所以未來的工作將繼續(xù)從隱蔽性入手,在流量的層面去研究如何平衡流量,可借助分布式等技術(shù),例如將傳輸一個文件的任務(wù)分布給多個客戶端,從而平衡流量分布,以此提高隱蔽通道在流量層面上的隱蔽性和抗檢測能力。并且由于SSL 隱蔽通道僅僅是模仿SSL 的握手過程,并沒有進行完整HTTPS業(yè)務(wù)即應(yīng)用數(shù)據(jù)的交互,所以后期對SSL的隱蔽通道進行研究的重點依然是如何去完善整個隱蔽通信的通信流程。