林志盤
摘 要:計(jì)算機(jī)信息技術(shù)在給人們生活帶來便利、提高信息利用率的同時(shí),網(wǎng)絡(luò)安全問題也日顯突出。要想解決網(wǎng)絡(luò)的安全問題,最首要的就是在網(wǎng)絡(luò)運(yùn)行中輔以相應(yīng)的加密技術(shù)。闡述了NDIS中間層網(wǎng)絡(luò)防火墻技術(shù),詳細(xì)分析了流過濾技術(shù)在文件加密保護(hù)中的應(yīng)用以及具體實(shí)現(xiàn)算法,并介紹了TCP封包的修改。
關(guān)鍵詞:防火墻;TCP;網(wǎng)絡(luò)通訊;自動(dòng)加密系統(tǒng)
中圖分類號(hào):TP393.08 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.15913/j.cnki.kjycx.2016.22.110
隨著網(wǎng)絡(luò)應(yīng)用領(lǐng)域的不斷擴(kuò)展,人們對(duì)信息的保密性要求不斷提高,對(duì)網(wǎng)絡(luò)安全性能提出了新要求。作為網(wǎng)絡(luò)通訊安全的保障性技術(shù),加密技術(shù)在網(wǎng)絡(luò)通訊安全中起著至關(guān)重要的作用。加密技術(shù)作為常規(guī)的信息保密技術(shù),實(shí)際為在網(wǎng)絡(luò)通訊中運(yùn)用密鑰對(duì)文檔進(jìn)行加密傳送,而信息接收者再對(duì)信息進(jìn)行密鑰解碼讀取信息的技術(shù)。只有正確解密的文檔才能被正常瀏覽,因此,該技術(shù)能夠有效保證信息的安全?;诖?,本文開發(fā)了一套文件自動(dòng)加密系統(tǒng),其原理是利用Windows NDIS級(jí)別防火墻的原理對(duì)文件進(jìn)行保護(hù),采取明文存儲(chǔ)、密文分發(fā)的方式。
1 NDIS中間層網(wǎng)絡(luò)防火墻技術(shù)
NDIS是Network Driver Interface Specification的縮寫,意為“網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范”。NDIS橫跨了傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,其作用是屏蔽了底層物理硬件的區(qū)別。
NDIS支持三種類型的驅(qū)動(dòng)程序,包括MinIPort驅(qū)動(dòng)程序、中間層驅(qū)動(dòng)程序、Protocol驅(qū)動(dòng)程序。本文采用中間層驅(qū)動(dòng)程序。
1.1 NDIS的版本
NDIS版本從支持的操作系統(tǒng)看可以分為NDIS5.x和NDIS6.x。NDIS6.x與NDIS5.x有很大的不同,最重要的是NET_BUFFER替代了NDIS_PACKET。鑒于本系統(tǒng)運(yùn)行的服務(wù)器是Win2008R2,因此,本文中提到的NDIS均指NDIS6.x。
1.2 NDIS6.0的數(shù)據(jù)結(jié)構(gòu)
NDIS6.0中很重要的兩個(gè)數(shù)據(jù)結(jié)構(gòu)是NET_BUFFER_LIST和NET_BUFFER。一個(gè)NET_BUFFER_LIST結(jié)構(gòu)指向的是一連串的NET_BUFFER,這些NET_BUFFER中保存的數(shù)據(jù)包內(nèi)容屬于同一個(gè)Stream。通過NET_BUFFER_NEXT_NB()可以獲取下一個(gè)NET_BUFFER。
1.3 NDIS的相關(guān)函數(shù)
在NDIS中,截獲下載數(shù)據(jù)包的關(guān)鍵函數(shù)是FilterSend NetBufferLists和FilterSendNetBufferListsComplete。在NDIS驅(qū)動(dòng)安裝成功之后,TCP報(bào)文就會(huì)在FilterSendNetBufferLists函數(shù)中以NBL的形式存在。對(duì)于NBL數(shù)據(jù)的處理,就位于這個(gè)函數(shù)中,而FilterSendNetBufferListsComplete的功能是將發(fā)送的結(jié)構(gòu)和數(shù)據(jù)返還給Filter Driver。
2 流過濾技術(shù)以及具體實(shí)現(xiàn)算法
2.1 流過濾技術(shù)和包過濾技術(shù)
流過濾技術(shù)是在包過濾技術(shù)的基礎(chǔ)上提出的。流過濾處理的基本單元是數(shù)據(jù)包,但并不僅限于數(shù)據(jù)包;包過濾技術(shù)關(guān)注的重點(diǎn)是網(wǎng)絡(luò)層和傳輸層,根據(jù)這幾個(gè)層次在單個(gè)數(shù)據(jù)包中的信息進(jìn)行過濾,而流過濾注重的是應(yīng)用層。本文利用流過濾原理對(duì)數(shù)據(jù)包中的應(yīng)用層信息進(jìn)行加密處理。
2.2 技術(shù)方案
本文以HTTP傳輸為例講解流過濾技術(shù)在文件加密中的技術(shù)方案。HTTP走的協(xié)議為TCP報(bào)文,在流過濾方案中截獲的封包是TCP包。處理流程如下:對(duì)截獲的TCP報(bào)文進(jìn)行分類處理→對(duì)1中篩選后的報(bào)文進(jìn)行分析和再次篩選→對(duì)選中的報(bào)文記錄該報(bào)文的源、目的IP和端口→對(duì)此連接的TCP包進(jìn)行滯留,并接管此TCP連接→對(duì)滯留的數(shù)據(jù)包進(jìn)行重組和加密→將加密后的數(shù)據(jù)還原,繼續(xù)轉(zhuǎn)發(fā),并歸還此TCP連接。
2.2.1 報(bào)文的分類
由于我們的目的是對(duì)HTTP下載攜帶的文件內(nèi)容進(jìn)行加密處理,所以,我們關(guān)注的重點(diǎn)是帶有應(yīng)用層數(shù)據(jù)的TCP報(bào)文。TCP報(bào)文首先可以分為帶有應(yīng)用層數(shù)據(jù)的和不帶有應(yīng)用層數(shù)據(jù)的。應(yīng)用層無關(guān)報(bào)文主要是SYN、FIN、ACK等報(bào)文,用于TCP連接和可靠性傳輸。這類報(bào)文與我們的應(yīng)用無關(guān),直接轉(zhuǎn)發(fā)即可。
2.2.2 報(bào)文的分析和篩選
帶有應(yīng)用層數(shù)據(jù)的TCP報(bào)文,我們可以進(jìn)行定向的篩選,即以應(yīng)用層協(xié)議關(guān)鍵詞進(jìn)行篩選。比如對(duì)于HTTP協(xié)議,應(yīng)用層會(huì)有“HTTP”字樣的關(guān)鍵詞,并對(duì)HTTP分析。HTTP協(xié)議有POST、GET和應(yīng)答。傳輸文件的關(guān)鍵數(shù)據(jù)包一般在2 00O字節(jié)的應(yīng)答中,特征是transfe-Encoding的chunk類型(代表以chunk方式控制文件大?。┮约癴ilename中的擴(kuò)展文件名來確定是否是加密需要的報(bào)文。
2.2.3 報(bào)文的滯留、重組和加密
文件加密根據(jù)算法需要加密4 096字節(jié)的數(shù)據(jù),而TCP荷載數(shù)據(jù)的報(bào)文一般長(zhǎng)度是1 514字節(jié),所以,需要合并幾個(gè)連續(xù)報(bào)文以得到4 096字節(jié)的內(nèi)容。
由于采用網(wǎng)絡(luò)傳輸,TCP報(bào)文很有可能是亂序的,所以,需要根據(jù)TCP的序列號(hào)對(duì)TCP報(bào)文進(jìn)行重組。TCP包的下一序列號(hào)=序列號(hào)+數(shù)據(jù)長(zhǎng)度。這里的數(shù)據(jù)長(zhǎng)度是指?jìng)鬏數(shù)臄?shù)據(jù)大小,不包括ethernet、IP、TCP報(bào)頭的長(zhǎng)度。
為了重組報(bào)文,需要維護(hù)兩個(gè)隊(duì)列,即順序隊(duì)列和亂序隊(duì)列。
2.2.3.1 順序隊(duì)列
截獲一個(gè)新的報(bào)文后,判斷順序隊(duì)列是否為空。如果為空,則判斷報(bào)文的序列號(hào)是否等于startseq,是則插入順序隊(duì)列,否則按照升序插入到亂序隊(duì)列;如果順序隊(duì)列不為空,則判斷當(dāng)前序列號(hào)是否等于順序隊(duì)列結(jié)尾的序列號(hào)加上數(shù)據(jù)長(zhǎng)度,是則插入順序隊(duì)列結(jié)尾,否則按照升序插入亂序隊(duì)列。
2.2.3.2 亂序隊(duì)列
首先判斷亂序隊(duì)列開始的TCP序列號(hào)與順序隊(duì)列結(jié)尾報(bào)文的下一序列號(hào)的大小關(guān)系。如果相同,則將亂序隊(duì)列的開始報(bào)文插入順序隊(duì)列的結(jié)尾;如果前者大于后者,則本輪處理結(jié)束;如果前者小于后者,則直接丟棄該報(bào)文。
?;畎ㄒ韵?方面的內(nèi)容:①發(fā)送端。對(duì)于TCP連接,系統(tǒng)將報(bào)文滯留,發(fā)送端得不到報(bào)的回應(yīng)勢(shì)必會(huì)影響連接。因此,我們需要偽裝成接收端向發(fā)送端發(fā)送ack回應(yīng)。Ack數(shù)據(jù)報(bào)文的序列號(hào)等于當(dāng)前TCP的確認(rèn)號(hào),確認(rèn)號(hào)在順序隊(duì)列中為空時(shí),等于startseq;否則,其等于順序隊(duì)列結(jié)尾報(bào)文的下一序列號(hào)。②接收端。從截獲第一個(gè)需要重組的報(bào)文起,需要每隔一段時(shí)間向接收端發(fā)送ack報(bào)文以保證連接。此報(bào)文的序列號(hào)等于startseq,確認(rèn)號(hào)與所有滯留重組的TCP報(bào)文確認(rèn)號(hào)相等。
2.2.4 報(bào)文的加密
根據(jù)SMS4加密算法的特性,加密的最小數(shù)據(jù)單位為16字節(jié),因此,結(jié)合實(shí)際應(yīng)用,本系統(tǒng)采用一次性截獲全部4 096字節(jié)的內(nèi)容,然后加密。
在數(shù)據(jù)報(bào)文滯留排序好之后,定位數(shù)據(jù)位置。為了能夠恢復(fù)原有的數(shù)據(jù)包,需要用指針鏈表對(duì)數(shù)據(jù)位置進(jìn)行記錄,以便將加密后的內(nèi)容拷貝回去。
指針鏈表元素的數(shù)據(jù)結(jié)構(gòu)主要記錄2點(diǎn),即指針和長(zhǎng)度。對(duì)于每一個(gè)被放入順序隊(duì)列中的TCP包,均分配一個(gè)指針鏈表元素,記錄下數(shù)據(jù)所在的起始地址以及數(shù)據(jù)實(shí)際長(zhǎng)度,并對(duì)數(shù)據(jù)長(zhǎng)度進(jìn)行累加。當(dāng)順序表中的實(shí)際數(shù)據(jù)長(zhǎng)度大于等于4 096字節(jié)時(shí),將數(shù)據(jù)拷貝出來,調(diào)用加密接口對(duì)4 096字節(jié)的內(nèi)容加密,然后根據(jù)指針鏈表中的元素將數(shù)據(jù)拷貝回去之后,對(duì)TCP數(shù)據(jù)包重新計(jì)算校驗(yàn)和,最終轉(zhuǎn)發(fā)。
3 TCP封包的修改
對(duì)于一個(gè)TCP報(bào)文而言,如果其所負(fù)載的數(shù)據(jù)被修改,就需要重新計(jì)算校驗(yàn)和,否則數(shù)據(jù)包不會(huì)被正常接收。TCP數(shù)據(jù)封包所涉及的校驗(yàn)和分為IP校驗(yàn)和TCP校驗(yàn)和。TCP校驗(yàn)和覆蓋了TCP首部和TCP數(shù)據(jù),而IP首部中的校驗(yàn)和只覆蓋IP的首部,不覆蓋IP數(shù)據(jù)報(bào)中的任何數(shù)據(jù)。
TCP首部校驗(yàn)和計(jì)算包括3部分,即TCP首部+TCP數(shù)據(jù)+TCP偽首部。
偽首部是為了增加TCP校驗(yàn)和的檢錯(cuò)能力,比如檢查TCP報(bào)文是否收錯(cuò)了(目的IP地址)、傳輸層協(xié)議是否選對(duì)了(傳輸層協(xié)議號(hào))等。偽首部來自IP首部。
TCP校驗(yàn)和的大致方法如下:①把偽首部、TCP報(bào)頭、TCP數(shù)據(jù)分為16位的字,如果總長(zhǎng)度為奇數(shù)個(gè)字節(jié),則在最后增添一個(gè)位都為0的字節(jié);②把TCP報(bào)頭中的校驗(yàn)和字段置為0;③用反碼相加法累加所有的16位字(進(jìn)位也要累加)。
以上結(jié)果即作為TCP的校驗(yàn)和。如果TCP包長(zhǎng)度改變,還要對(duì)IP報(bào)頭重新計(jì)算校驗(yàn)和。
4 結(jié)束語
綜上所述,加密技術(shù)是解決網(wǎng)絡(luò)安全問題的手段之一,在當(dāng)前的網(wǎng)絡(luò)運(yùn)行中應(yīng)用是十分普遍的。本文開發(fā)了一套文件自動(dòng)加密系統(tǒng),該系統(tǒng)根據(jù)防火墻和流過濾的原理,對(duì)從文件服務(wù)器下載的文件進(jìn)行加密保護(hù),主要用到的技術(shù)有NDIS驅(qū)動(dòng)級(jí)防火墻技術(shù)和SMS4加密算法技術(shù),可針對(duì)TCP/IP協(xié)議的特點(diǎn)對(duì)經(jīng)過NDIS驅(qū)動(dòng)的TCP報(bào)文進(jìn)行分類過濾,并根據(jù)HTTP協(xié)議的特點(diǎn)對(duì)文件進(jìn)行還原加密,以起到保護(hù)文件的作用。
參考文獻(xiàn)
[1]朱聞亞.數(shù)據(jù)加密技術(shù)在計(jì)算機(jī)網(wǎng)絡(luò)安全中的應(yīng)用價(jià)值研究[J].制造業(yè)自動(dòng)化,2012(04).
[2]牛景銳.防火墻與加密技術(shù)在網(wǎng)絡(luò)安全中的應(yīng)用[J].硅谷,2013(11).
[3]馬利,梁紅杰.計(jì)算機(jī)網(wǎng)絡(luò)安全中的防火墻技術(shù)應(yīng)用研究[J].電腦知識(shí)與技術(shù),2014(14).
〔編輯:張思楠〕