国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

流過(guò)濾和Ndis防火墻技術(shù)在文件加密保護(hù)中的應(yīng)用

2016-03-13 21:28:58聶燕屏
關(guān)鍵詞:序列號(hào)應(yīng)用層隊(duì)列

◆聶燕屏

(中星電子股份有限公司 北京 100086)

流過(guò)濾和Ndis防火墻技術(shù)在文件加密保護(hù)中的應(yīng)用

◆聶燕屏

(中星電子股份有限公司 北京 100086)

在這個(gè)計(jì)算機(jī)的信息時(shí)代,計(jì)算機(jī)和網(wǎng)絡(luò)的運(yùn)用無(wú)處不在,在各行各業(yè),都會(huì)使用計(jì)算機(jī),以提高效率,節(jié)省人力。但是隨著計(jì)算機(jī)技術(shù)和應(yīng)用的普及,安全問(wèn)題隨之顯現(xiàn)。所以,很多文檔有權(quán)限限制。比如:一些文檔只有相關(guān)人員有權(quán)查看,一些文檔需要付費(fèi)查看,等等。這時(shí)候,加密技術(shù)就會(huì)成為解決問(wèn)題的手段。對(duì)需要權(quán)限的文檔進(jìn)行加密,擁有相應(yīng)權(quán)限的個(gè)人,可以從文檔的提供方獲取秘鑰對(duì)文檔進(jìn)行解密。只有正確解密的文檔才能被正常瀏覽。本文首先對(duì)ndis防火墻技術(shù)進(jìn)行了介紹,分析了ndis技術(shù)在文件加密保護(hù)中的作用;然后對(duì)流過(guò)濾技術(shù)進(jìn)行了介紹,并具體講解了流過(guò)濾技術(shù)在文件加密保護(hù)中的應(yīng)用以及具體算法和流程;最后,針對(duì)TCP/IP報(bào)文特點(diǎn),介紹了校驗(yàn)和算法。

流過(guò)濾;Ndis;SMS4;校驗(yàn)和

0 引言

對(duì)于需要管理并且需要頻繁提供大量文檔的單位,將文檔數(shù)字化無(wú)疑是必須的。但是基于安全原因,很多文檔需要加密。但是加密的文檔也帶來(lái)一些問(wèn)題。如果一個(gè)文檔存儲(chǔ)和管理系統(tǒng),能夠做到明文存儲(chǔ),密文發(fā)送,那么無(wú)疑是很實(shí)用的。所以,本人開(kāi)發(fā)了這套文件自動(dòng)加密系統(tǒng)。這套系統(tǒng)的原理就是利用windows ndis級(jí)別防火墻的原理對(duì)文件進(jìn)行保護(hù),采取明文存儲(chǔ),秘文分發(fā)的方式。

1 Ndis中間層網(wǎng)絡(luò)防火墻技術(shù)

Ndis是Network Driver Interface Specification的縮寫(xiě),意為“網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范”。Ndis橫跨了傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,其作用是屏蔽了底層物理硬件的區(qū)別。

Ndis支持三種類(lèi)型的驅(qū)動(dòng)程序:

Miniport驅(qū)動(dòng)程序;

中間層驅(qū)動(dòng)程序;

Protocol驅(qū)動(dòng)程序。

在這里,我們采用中間層驅(qū)動(dòng)程序。

1.1 Ndis的版本

Ndis版本從支持的操作系統(tǒng)看可以分類(lèi)兩類(lèi):Ndis5.x和ndis6.x。Ndis6.x對(duì)比ndis5.x變化很大,最重要的是NET_BUFFER替代了NDIS_PACKET。鑒于本系統(tǒng)運(yùn)行的服務(wù)器是win2008R2,所以本文中提到的ndis均指ndis6.x。

1.2 Ndis6的數(shù)據(jù)結(jié)構(gòu)以及如何獲取數(shù)據(jù)包

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。通過(guò)NET_BUFFER_NEXT_NB()可以獲取下一個(gè)NET_BUFFER。

1.3 Ndis的相關(guān)函數(shù)

在Ndis中,截獲下載數(shù)據(jù)包的關(guān)鍵函數(shù)是FilterSendNetBufferLists和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 流過(guò)濾技術(shù)以及具體實(shí)現(xiàn)算法

2.1 關(guān)于流過(guò)濾技術(shù)

流過(guò)濾技術(shù)是在包過(guò)濾技術(shù)的基礎(chǔ)上提出的。流過(guò)濾處理的基本單元是數(shù)據(jù)包,但并不僅限于數(shù)據(jù)包。

包過(guò)濾技術(shù)關(guān)注的重點(diǎn)是網(wǎng)絡(luò)層和傳輸層,根據(jù)這幾個(gè)層次在單個(gè)數(shù)據(jù)包中的信息進(jìn)行過(guò)濾。而流過(guò)濾注重的是應(yīng)用層。

在這里,我利用流過(guò)濾的原理,對(duì)數(shù)據(jù)包中的應(yīng)用層信息,進(jìn)行加密處理。

2.2 技術(shù)方案

這里,以Http傳輸為例,講解流過(guò)濾技術(shù)在文件加密中的技術(shù)方案。http走的協(xié)議是tcp報(bào)文,在流過(guò)濾方案中,截獲的封包是tcp包。處理流程如下:

對(duì)截獲的tcp報(bào)文進(jìn)行分類(lèi)處理。

對(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)文的分類(lèi)

因?yàn)槲覀兊哪康氖菍?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)用層無(wú)關(guān)報(bào)文主要是SYN,F(xiàn)IN,ACK等報(bào)文,用于tcp連接和可靠性傳輸。這類(lèi)報(bào)文和我們的應(yīng)用無(wú)關(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)行篩選。比如http協(xié)議,應(yīng)用層會(huì)有“HTTP”字樣的關(guān)鍵字。然后,深入對(duì)http進(jìn)行分析,http協(xié)議有POST,GET和應(yīng)答。傳輸文件的關(guān)鍵數(shù)據(jù)包一般在200OK的應(yīng)答中。特征是transfe-Encoding的chunk類(lèi)型(代表以chunk方式控制文件大?。?,以及filename中的擴(kuò)展文件名來(lái)確定是否是加密需要的報(bào)文。

2.2.3 報(bào)文的滯留,重組和加密

文件加密根據(jù)算法需要加密4096字節(jié)的數(shù)據(jù)。而tcp荷載數(shù)據(jù)的報(bào)文一般長(zhǎng)度是1514,所以需要合并幾個(gè)連續(xù)報(bào)文以得到4096字節(jié)文件內(nèi)容。

因?yàn)槭蔷W(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ì)列。

(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)亂序隊(duì)列

首先判斷亂序隊(duì)列開(kāi)始的tcp序列號(hào),與順序隊(duì)列結(jié)尾報(bào)文的下一序列號(hào)的大小關(guān)系。

如果等于,則將亂序隊(duì)列的開(kāi)始報(bào)文插入順序隊(duì)列的結(jié)尾;

如果大于則本輪處理結(jié)束;

如果小于,則直接丟棄該報(bào)文。

?;?。

①發(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)文的加密

因?yàn)楦鶕?jù)SMS4加密算法的特性,加密的最小數(shù)據(jù)單位是16字節(jié),所以,結(jié)合實(shí)際應(yīng)用,本系統(tǒng)采用一次性截獲全部4096文件內(nèi)容,然后加密的方式。

在數(shù)據(jù)報(bào)文滯留排序好之后,定位數(shù)據(jù)位置,為了能夠恢復(fù)原有的數(shù)據(jù)包,需要用指針鏈表,對(duì)數(shù)據(jù)位置進(jìn)行記錄,以便將加密后的內(nèi)容拷貝回去。

指針鏈表元素的數(shù)據(jù)結(jié)構(gòu)主要記錄兩點(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)度>=4096時(shí),將數(shù)據(jù)拷貝出來(lái),調(diào)用加密接口對(duì)4096字節(jié)進(jìn)行加密,然后根據(jù)指針鏈表中的元素,將數(shù)據(jù)拷貝回去之后,對(duì)tcp數(shù)據(jù)包重新計(jì)算校驗(yàn)和,就可以繼續(xù)轉(zhuǎn)發(fā)了。

3 Tcp封包的修改

對(duì)于一個(gè)TCP報(bào)文來(lái)說(shuō),如果它所負(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ì)算三部分:TCP首部+TCP數(shù)據(jù)+TCP偽首部。

偽首部是為了增加TCP校驗(yàn)和的檢錯(cuò)能力:如檢查T(mén)CP報(bào)文是否收錯(cuò)了(目的IP地址)、傳輸層協(xié)議是否選對(duì)了(傳輸層協(xié)議號(hào))等。偽首部來(lái)自IP首部。

TCP校驗(yàn)和的大致方法如下:

(1)把偽首部、TCP報(bào)頭、TCP數(shù)據(jù)分為16位的字,如果總長(zhǎng)度為奇數(shù)個(gè)字節(jié),則在最后增添一個(gè)位都為0的字節(jié)。

(2)把TCP報(bào)頭中的校驗(yàn)和字段置為0。

(3)用反碼相加法累加所有的16位字(進(jìn)位也要累加)。

以上結(jié)果即作為T(mén)CP的校驗(yàn)和。

如果tcp包長(zhǎng)度改變,還要對(duì)ip報(bào)頭重新計(jì)算校驗(yàn)和。

4 總結(jié)

綜上所述。文件自動(dòng)加密系統(tǒng)根據(jù)防火墻和流過(guò)濾的思想,對(duì)從文件服務(wù)器下載的文件進(jìn)行加密保護(hù)。主要用到的技術(shù)有Ndis驅(qū)動(dòng)級(jí)防火墻技術(shù)以及SMS4加密算法技術(shù)。本系統(tǒng)主要針對(duì)TCP/IP協(xié)議的特點(diǎn),對(duì)經(jīng)過(guò)Ndis驅(qū)動(dòng)的tcp報(bào)文進(jìn)行分類(lèi)過(guò)濾,并根據(jù)http協(xié)議的特點(diǎn),對(duì)文件進(jìn)行還原加密,以起到保護(hù)文件的作用。

本文的主要研究工作有:

(1)Ndis驅(qū)動(dòng)程序在文件保護(hù)中的作用。

(2)流過(guò)濾思想在文件保護(hù)中的應(yīng)用。

[1]朱雁輝.windows防火墻與網(wǎng)絡(luò)封包截獲技術(shù)[M].北京:電子工業(yè)出版社,2002.

[2]yexin218.Filter驅(qū)動(dòng)開(kāi)發(fā)筆記[EB/OL]. http://www.doci n.com/p-97160849.html&endPro=true.

[3]梁軍學(xué).深度包檢測(cè)技術(shù)原理及應(yīng)用[EB/OL].北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院.

猜你喜歡
序列號(hào)應(yīng)用層隊(duì)列
隊(duì)列里的小秘密
基于多隊(duì)列切換的SDN擁塞控制*
軟件(2020年3期)2020-04-20 00:58:44
在隊(duì)列里
recALL
豐田加速駛?cè)胱詣?dòng)駕駛隊(duì)列
基于分級(jí)保護(hù)的OA系統(tǒng)應(yīng)用層訪問(wèn)控制研究
新一代雙向互動(dòng)電力線通信技術(shù)的應(yīng)用層協(xié)議研究
物聯(lián)網(wǎng)技術(shù)在信息機(jī)房制冷系統(tǒng)中的應(yīng)用
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
PP助手教你辨別翻新iPhone5小白不再中招
霍州市| 汝南县| 普洱| 尉氏县| 正镶白旗| 华池县| 祁东县| 安丘市| 曲周县| 永修县| 齐河县| 岑溪市| 冕宁县| 温泉县| 襄垣县| 泗洪县| 铜陵市| 北安市| 德州市| 博客| 普安县| 陆丰市| 闵行区| 元朗区| 万宁市| 甘南县| 容城县| 拉孜县| 郯城县| 旅游| 罗定市| 霸州市| 连州市| 邢台县| 信丰县| 黎平县| 南京市| 泗水县| 荣成市| 临颍县| 剑川县|