本發(fā)明涉及信息安全通信技術(shù)領(lǐng)域,尤其是涉及一種基于國家商用密碼算法的網(wǎng)絡(luò)安全通信系統(tǒng)及方法。
背景技術(shù):
中國在信息安全行業(yè)里起步較晚,由于“先入為主”的觀念,目前仍有許多用戶在使用國外的網(wǎng)絡(luò)安全設(shè)備。這些設(shè)備長期以來都是沿用3des、sha-1、rsa等國際通用的加密算法體系及相關(guān)標(biāo)準(zhǔn),可以說用戶的信息安全是掌握在國外科技公司的手中。而近年來,國際著名廠商的設(shè)備頻頻曝光各類安全漏洞及威脅事件,越來越多的國際通用密碼算法屢屢傳出被破解、存在后門等傳聞,讓人對其安全性產(chǎn)生懷疑。以國際上最為位著名的rsa密碼算法為例,中國的三大運營商及不少銀行、制造業(yè)企業(yè)都是它的客戶。但就是這樣一家世界知名的密碼技術(shù)企業(yè),卻被曝出與美國國家安全局達成協(xié)議,被要求在部分加密技術(shù)中放置后門。這給中國的用戶敲響了警鐘——自主可控、安全可信的國產(chǎn)化改造勢在必行。
為從根本上擺脫對國外加密技術(shù)和設(shè)備的過度依賴,國家密碼管理局發(fā)布了sm1、sm2、sm3、sm4等一系列國家商用密碼算法,從加密算法層面推動信息科技的“安全可控”。
ipsecvpn是一種廣泛采用的安全遠(yuǎn)程接入技術(shù),提供公用和專用網(wǎng)絡(luò)的端對端加密和驗證服務(wù)。ipsec提供了以下的安全服務(wù):
1、數(shù)據(jù)機密性(confidentiality):ipsec發(fā)送方在通過網(wǎng)絡(luò)傳輸包前對包進行加密。
2、數(shù)據(jù)完整性(dataintegrity):ipsec接收方對發(fā)送方發(fā)送來的包進行認(rèn)證,以確保數(shù)據(jù)在傳輸過程中沒有被篡改。
3、數(shù)據(jù)來源認(rèn)證(dataauthentication):ipsec在接收端可以認(rèn)證發(fā)送ipsec報文的發(fā)送端是否合法。
4、防重放(anti-replay):ipsec接收方可檢測并拒絕接收過時或重復(fù)的報文。
盡管ipsec具有以上這些安全性能,但這些安全性能是由密碼算法的安全性來保證的。為了充分發(fā)揮ipsec的安全性能,達到安全可控,必須采用國內(nèi)自有的密碼算法。
ipsec是第三層安全協(xié)議,windows系統(tǒng)中是由在協(xié)議棧的內(nèi)核部分實現(xiàn),不方便在其基礎(chǔ)上增加國家商用密碼算法。也正是由于在內(nèi)核中實現(xiàn),與windows版本依賴性太強,更不易實現(xiàn)跨版本的設(shè)計。
sm1對稱分組密碼算法是一種算法非公開的密碼算法,只能通過硬件ip來實現(xiàn),即密碼算法只能由硬件模塊實現(xiàn),更加增加了實現(xiàn)難度。為滿足100m網(wǎng)絡(luò)的加/解密速度,現(xiàn)有的實現(xiàn)方案成本高,不利于大規(guī)模推廣應(yīng)用,嚴(yán)重阻礙了國家商用密碼算法在網(wǎng)絡(luò)安全方面的普及應(yīng)用。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種基于國家商用密碼算法的網(wǎng)絡(luò)安全通信系統(tǒng)及方法,實現(xiàn)支持國家商用密碼算法的ipsec安全網(wǎng)絡(luò)通信,具有通信安全性高、生產(chǎn)成本低、實用性強、易于推廣應(yīng)用等優(yōu)點。
本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
一種基于國家商用密碼算法的網(wǎng)絡(luò)安全通信系統(tǒng)包括:
國密ipsec驅(qū)動模塊,嵌入tcp/ip協(xié)議處理模塊,位于網(wǎng)絡(luò)層的ipsec協(xié)議處理與網(wǎng)絡(luò)接口層之間,對于外發(fā)的ip包,在ipsec協(xié)議處理之后按過濾規(guī)則表進行攔截,獲得向通信對方ip地址外發(fā)的ip包,對于來自網(wǎng)絡(luò)的esp包,在ipsec協(xié)議處理之前按過濾規(guī)則表進行攔截,獲得來自通信對方ip地址的esp包,所述過濾規(guī)則表包括通信對方ip地址;
國密算法硬件模塊,用于實現(xiàn)包含sm1算法、sm2算法、sm3算法和sm4算法的國家商用密碼算法;
國密應(yīng)用模塊,分別連接國密ipsec驅(qū)動模塊和國密算法硬件模塊,通過ike協(xié)商過程建立通信雙方的ipsec信道和sa(securityassociation,安全關(guān)聯(lián)),并通過esp包安全通信過程基于sa進行接收esp包解析、解密和發(fā)送ip包加密、組包,esp包安全通信過程具體為:
對于來自通信對方ip地址的esp包,國密應(yīng)用模塊利用國密算法硬件模塊對 來自通信對方ip地址的esp包進行解密后得到明文ip包,該明文ip包經(jīng)國密ipsec驅(qū)動模塊進入ipsec協(xié)議處理,對于向通信對方ip地址外發(fā)的ip包,國密應(yīng)用模塊利用國密算法硬件模塊對向通信對方ip地址外發(fā)的ip包進行加密后得到密文esp包,該密文esp包經(jīng)國密ipsec驅(qū)動模塊和網(wǎng)絡(luò)接口層發(fā)送到網(wǎng)絡(luò)上。
還包括連接國密應(yīng)用模塊的安全策略配置模塊,所述安全策略配置模塊用于添加、編輯或刪除安全策略配置文件,所述安全策略配置文件包括支持ike協(xié)商過程的第一配置參數(shù)、支持esp包安全通信過程的第二配置參數(shù)和遠(yuǎn)端ip地址,所述國密應(yīng)用模塊讀取安全策略配置文件,根據(jù)第一配置參數(shù)設(shè)置ike協(xié)商過程的加解密算法,根據(jù)第二配置參數(shù)設(shè)置esp包安全通信過程的加解密算法,并將遠(yuǎn)端ip地址設(shè)置為通信對方ip地址后發(fā)送給國密ipsec驅(qū)動模塊,國密ipsec驅(qū)動模塊將接收到的通信對方ip地址添加到過濾規(guī)則表中。
所述第一配置參數(shù)設(shè)置ike協(xié)商過程的對稱分組密碼算法為sm1算法或sm4算法,密碼雜湊算法為sm3算法,公鑰算法為sm2算法。
所述第二配置參數(shù)設(shè)置esp包安全通信過程的對稱加密算法為sm1算法或sm4算法,密碼雜湊算法為sm3算法。
所述國密ipsec驅(qū)動模塊內(nèi)嵌有用于支持不同windows系統(tǒng)運行環(huán)境的驅(qū)動單元,所述驅(qū)動單元包含不同windows系統(tǒng)對應(yīng)的ndis版本的驅(qū)動程序,當(dāng)國密ipsec驅(qū)動模塊嵌入tcp/ip協(xié)議處理模塊后,國密ipsec驅(qū)動模塊通過驅(qū)動單元識別出當(dāng)前windows系統(tǒng)并安裝對應(yīng)的ndis版本的驅(qū)動程序。
所述國密ipsec驅(qū)動模塊通過第一回調(diào)函數(shù)向國密應(yīng)用模塊傳輸來自通信對方ip地址的esp包或向通信對方ip地址外發(fā)的ip包,所述第一回調(diào)函數(shù)的內(nèi)容包括待處理包緩沖區(qū)、待處理包長度、包處理后緩沖區(qū)和包標(biāo)識,所述待處理包緩沖區(qū)和包處理后緩沖區(qū)均由國密ipsec驅(qū)動模塊分配,并在國密應(yīng)用模塊處理后由國密ipsec驅(qū)動模塊釋放,對于來自通信對方ip地址的esp包,待處理包緩沖區(qū)和包處理后緩沖區(qū)指向相同的緩沖區(qū)地址,對于向通信對方ip地址外發(fā)的ip包,待處理包緩沖區(qū)指向的緩沖區(qū)地址和包處理后緩沖區(qū)指向的緩沖區(qū)地址存在設(shè)定的偏置量,所述包標(biāo)識指向包處理后緩沖區(qū)的緩沖區(qū)地址;
所述國密應(yīng)用模塊通過第二回調(diào)函數(shù)向國密ipsec驅(qū)動模塊發(fā)送處理后的明文ip包或密文esp包,所述第二回調(diào)函數(shù)的內(nèi)容包括包標(biāo)識、包處理后緩沖區(qū)和包處理后長度。
當(dāng)包處理后長度的值為零時,表示國密應(yīng)用模塊檢測到包錯誤或者ipsec信道未建立,此時國密ipsec驅(qū)動模塊拋棄該包,釋放包標(biāo)識指向的緩沖區(qū)地址;當(dāng)包處理后長度的值為非零時,表示國密應(yīng)用模塊檢測到包正常,此時國密ipsec驅(qū)動模塊將返回的明文ip包發(fā)送到ipsec協(xié)議處理或者將返回的密文esp包經(jīng)網(wǎng)絡(luò)接口層發(fā)送到網(wǎng)絡(luò)上,并釋放包標(biāo)識指向的緩沖區(qū)地址。
所述ike協(xié)商過程的消息僅在國密ipsec驅(qū)動模塊和國密應(yīng)用模塊中處理,其中:
向通信對方發(fā)出ike協(xié)商的消息流程為:國密應(yīng)用模塊生成用于ike協(xié)商的udp包,該udp包經(jīng)國密ipsec驅(qū)動模塊和網(wǎng)絡(luò)接口層直接發(fā)送到網(wǎng)絡(luò)上;
接收通信對方發(fā)出的ike協(xié)商的消息流程為:國密ipsec驅(qū)動模塊按過濾規(guī)則攔截到通信對方發(fā)出的udp包后轉(zhuǎn)發(fā)給國密應(yīng)用模塊,國密應(yīng)用模塊利用國密算法硬件模塊處理通信對方發(fā)出的udp包。
一種利用如上述系統(tǒng)的基于國家商用密碼算法的網(wǎng)絡(luò)安全通信方法,用于實現(xiàn)第一通信裝置和第二通信裝置之間的網(wǎng)絡(luò)安全通信,所述第一通信裝置和第二通信裝置內(nèi)均分別設(shè)有國密ipsec驅(qū)動模塊、國密算法硬件模塊和國密應(yīng)用模塊,第一通信裝置上與第二通信裝置之間通信過程為:
1)第一通信裝置和第二通信裝置分別在各自的過濾規(guī)則表中增加對方的ip地址;
2)第一通信裝置和第二通信裝置通過ike協(xié)商過程建立通信雙方的ipsec信道和sa;
3)第一通信裝置和第二通信裝置通過esp包安全通信過程進行數(shù)據(jù)傳輸。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
1)本發(fā)明通過國密ipsec驅(qū)動模塊和國密應(yīng)用模塊將國密算法硬件模塊的國家商用密碼算法應(yīng)用到ipsec安全網(wǎng)絡(luò)通信中,克服了ipsec的基礎(chǔ)上不方便增加國家商用密碼算法以及國密算法硬件模塊應(yīng)用不便的困難,由國密ipsec驅(qū)動模塊實現(xiàn)負(fù)責(zé)規(guī)則匹配、網(wǎng)絡(luò)包提取、緩存區(qū)分配/釋放功能,由國密應(yīng)用模塊實現(xiàn)sa協(xié)商、esp包生成/esp包解析、加密/解密、hmac驗算等數(shù)據(jù)處理,從而實現(xiàn)利用國內(nèi)自有的密碼算法充分發(fā)揮ipsec的安全性能的目標(biāo),達到安全可控。
2)本發(fā)明中國密ipsec驅(qū)動模塊內(nèi)設(shè)有驅(qū)動單元,安裝時能自動識別出windows系統(tǒng)版本,依據(jù)識別出的windows系統(tǒng)版本來安裝windows系統(tǒng)對應(yīng)的 ndis版本的驅(qū)動程序,從而使得本發(fā)明系統(tǒng)能在windowsxp到windows8所有版本的x86、x64系統(tǒng)上運行,實用性強。
3)為了實現(xiàn)通信裝置原系統(tǒng)內(nèi)置的ipsec安全功能和本發(fā)明的ipsec安全功能共存,將安全策略文件單獨存儲于安全策略配置模塊中,方便策略項添加、編輯及刪除。
4)ipsec的安全性完全處決于對稱加密算法、hmac算法及非對稱加密算法的密碼強度及實現(xiàn)安全性,本發(fā)明中對稱加密算法采用sm1或sm4分組密碼算法,hmac算法采用sm3密碼雜湊算法,非對稱加密算法采用sm2橢圓曲線公鑰密碼算法,對稱加密算法、hmac算法及非對稱加密算法都在國密算法硬件模塊由硬件邏輯實現(xiàn),進一步增加了算法的安全性。
5)本發(fā)明中國密ipsec驅(qū)動模塊和國密應(yīng)用模塊之間通過回調(diào)函數(shù)實現(xiàn)數(shù)據(jù)包交互,在esp安全通信過程,只進行了一次緩沖區(qū)的分配/釋放操作,不再重新分配緩存區(qū),避免了數(shù)據(jù)塊的多次復(fù)制,加快處理速度。
6)本發(fā)明中ike協(xié)商過程中的消息只由國密應(yīng)用模塊和國密ipsec驅(qū)動模塊處理,不會進入?yún)f(xié)議棧的上層,也不會涉及其它應(yīng)用模塊,減少了被竊取的路徑,有效地保證了ike協(xié)商過程的安全性。
7)本發(fā)明國密算法硬件模塊的加/解密速度達100mbps,滿足100m網(wǎng)絡(luò)的加/解密速度,相比現(xiàn)有的實現(xiàn)方案,成本低,有利于大規(guī)模推廣應(yīng)用,便于實現(xiàn)國家商用密碼算法在網(wǎng)絡(luò)安全方面的普及應(yīng)用。
附圖說明
圖1為本發(fā)明中網(wǎng)絡(luò)安全通信系統(tǒng)結(jié)構(gòu)示意圖;
圖2為本發(fā)明中網(wǎng)絡(luò)安全通信系統(tǒng)數(shù)據(jù)傳輸示意圖;
圖3為實施例中國密應(yīng)用模塊和國密算法硬件模塊的硬件結(jié)構(gòu)連接示意圖;
圖4為esp包安全通信過程中國密ipsec驅(qū)動模塊分配緩沖區(qū)的結(jié)構(gòu)示意圖;
其中,(4a)為對網(wǎng)絡(luò)上接收到的esp包分配的緩沖區(qū)示意圖,(4b)為對要發(fā)送到網(wǎng)絡(luò)上的esp包分配的緩沖區(qū)示意圖。
圖中:1、國密ipsec驅(qū)動模塊,2、國密應(yīng)用模塊,3、國密算法硬件模塊,4、tcp/ip協(xié)議處理模塊,41、網(wǎng)絡(luò)接口層,42、網(wǎng)絡(luò)層,43、傳輸層,44、應(yīng)用層,5、pciex1插槽,6、pciex1轉(zhuǎn)usb芯片,7、微處理器,8、國密安全芯片。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細(xì)說明。本實施例以本發(fā)明技術(shù)方案為前提進行實施,給出了詳細(xì)的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
本發(fā)明提出一種經(jīng)濟型、windows操作系統(tǒng)下、支持國家商用密碼算法和ipsec協(xié)議的網(wǎng)絡(luò)安全通信系統(tǒng),如圖1所示,該系統(tǒng)包括工作在user-mode模式下的國密應(yīng)用模塊2、工作在kernel-mode模式下的國密ipsec驅(qū)動模塊1以及實現(xiàn)國家商用密碼算法(包括sm1算法、sm2算法、sm3算法和sm4算法)的國密算法硬件模塊3,國密ipsec驅(qū)動模塊1嵌入tcp/ip協(xié)議處理模塊4,位于網(wǎng)絡(luò)層42的ipsec協(xié)議處理與網(wǎng)絡(luò)接口層41之間,國密應(yīng)用模塊2分別連接國密ipsec驅(qū)動模塊1和國密算法硬件模塊3,tcp/ip協(xié)議處理模塊4由應(yīng)用層44、傳輸層43、網(wǎng)絡(luò)層42和網(wǎng)絡(luò)接口層41構(gòu)成。
國密ipsec驅(qū)動模塊1是一個內(nèi)核層模塊,作為ndis過濾驅(qū)動插入到windows的tcp/ip協(xié)議棧中,其邏輯位置是處于windows內(nèi)置ipsec協(xié)議處理模塊的下層。其功能是:
1)對于外發(fā)的ip包,按過濾規(guī)則表執(zhí)行目的地址匹配,過濾規(guī)則表包括通信對方ip地址,若與過濾規(guī)則表中的地址項匹配,則獲得向通信對方ip地址外發(fā)的ip包,把該ip包發(fā)送給國密應(yīng)用模塊2,由國密應(yīng)用模塊2進行esp封包處理后送回到國密ipsec驅(qū)動模塊1,并由國密ipsec驅(qū)動模塊1發(fā)送到網(wǎng)絡(luò)上;若目的地址與規(guī)則表中沒有地址項匹配,則直接把該ip包發(fā)送到網(wǎng)絡(luò)上;
2)對于來自網(wǎng)絡(luò)的esp包,在windows內(nèi)置ipsec協(xié)議處理之前實現(xiàn)攔截,與過濾規(guī)則表中ip地址進行匹配,滿足匹配項,則獲得來自通信對方ip地址的esp包,把該esp包發(fā)送給國密應(yīng)用模塊2進行進一步處理,否則,送回tcp/ip協(xié)議棧,由tcp/ip協(xié)議棧的上層繼續(xù)處理。
國密ipsec驅(qū)動模塊1內(nèi)嵌有用于支持不同windows系統(tǒng)運行環(huán)境的驅(qū)動單元,驅(qū)動單元包含不同windows系統(tǒng)對應(yīng)的ndis版本的驅(qū)動程序,當(dāng)國密ipsec驅(qū)動模塊1嵌入tcp/ip協(xié)議處理模塊4后,國密ipsec驅(qū)動模塊1通過驅(qū)動單元識別出當(dāng)前windows系統(tǒng)并安裝對應(yīng)的ndis版本的驅(qū)動程序,則國密ipsec驅(qū)動模塊1安裝時能自動識別出windows系統(tǒng)版本,依據(jù)識別出的windows系統(tǒng)版本來安裝 windows系統(tǒng)對應(yīng)的ndis版本的驅(qū)動程序,使得網(wǎng)絡(luò)安全通信系統(tǒng)應(yīng)用于pc機上時,能在pc機的windowsxp到windows8所有版本的x86、x64系統(tǒng)上運行。
國密應(yīng)用模塊2是一個windowsuser-mode軟件模塊,實現(xiàn)ipsec協(xié)議的全過程,包括sa協(xié)商、esp包生成/esp包解析、加密/解密、hmac驗算等。其主要包括以下三個功能:
1)安全策略配置
安全策略以文本文件形式存放于單獨的安全策略配置文件中,安全策略配置文件存儲于連接國密應(yīng)用模塊2的安全策略配置模塊,方便策略項添加、編輯及刪除。安全策略文件包含支持ike協(xié)商過程的第一配置參數(shù)(如:對稱密碼算法、密碼雜湊算法、公鑰算法、會話密鑰更新周期、重認(rèn)證周期等)、支持esp包安全通信過程的第二配置參數(shù)(如:對稱密碼算法、密碼雜湊算法等)、鑒權(quán)方式、遠(yuǎn)端ip地址等。
在國密應(yīng)用模塊2啟動時會自動讀取安全策略文件以導(dǎo)入安全策略,具體為:國密應(yīng)用模塊2啟動運行后,首先讀取安全策略配置文件,基于配置文件來配置sa協(xié)商、esp相關(guān)參數(shù),包括:根據(jù)第一配置參數(shù)設(shè)置ike協(xié)商過程的加解密算法和根據(jù)第二配置參數(shù)設(shè)置esp包安全通信過程的加解密算法,并且,把讀取的遠(yuǎn)端ip地址設(shè)置為通信對方ip地址通過ip地址命令傳送到國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1把這些遠(yuǎn)端ip地址加入到過濾規(guī)則列表中。
國密應(yīng)用模塊2運行過程中,可以通過命令行工具來導(dǎo)入更改的安全策略配置文件以實現(xiàn)安全策略更改功能,即可以通過其他指令直接向國密ipsec驅(qū)動模塊1添加/刪除過濾規(guī)則項。
為實現(xiàn)windows內(nèi)置的ipsec安全功能和本發(fā)明的ipsec安全功能共存,windows內(nèi)部的安全功能配置不能包含安全策略文件中所列舉的遠(yuǎn)端ip地址。
2)調(diào)用國密商用密碼算法
ipsec協(xié)議是一個工業(yè)標(biāo)準(zhǔn)網(wǎng)絡(luò)安全協(xié)議,為ip網(wǎng)絡(luò)通信提供透明的安全服務(wù),通過對稱加密算法來保證傳輸數(shù)據(jù)的安全保密性,通過hmac算法來保證數(shù)據(jù)包的完整性及防篡改,通過非對稱加密算法來實現(xiàn)數(shù)據(jù)源驗證。ipsec的安全性完全處決于對稱加密算法、hmac算法及非對稱加密算法的密碼強度及實現(xiàn)安全性。ietf標(biāo)準(zhǔn)的ipsec都是采用國外標(biāo)準(zhǔn)的對稱加密算法(3des、aes等)、hmac算法(sha-1等)及非對稱加密算法(dh、rsa等),存在安全風(fēng)險及后門風(fēng)險。 為避免上述風(fēng)險,本發(fā)明系統(tǒng)基于國家密碼管理局的“ipsecvpn技術(shù)規(guī)范”(gm/t0022-2014)來實現(xiàn)ipsec功能,對稱加密算法采用sm1或sm4分組密碼算法,hmac算法采用sm3密碼雜湊算法,非對稱加密算法采用sm2橢圓曲線公鑰密碼算法。對稱加密算法、hmac算法及非對稱加密算法都在國密算法硬件模塊3由硬件邏輯實現(xiàn),進一步增加了算法的安全性。對應(yīng)安全策略配置文件的設(shè)置:第一配置參數(shù)設(shè)置ike協(xié)商過程的對稱分組密碼算法為sm1算法或sm4算法,密碼雜湊算法為sm3算法,公鑰算法為sm2算法;第二配置參數(shù)設(shè)置esp包安全通信過程的對稱加密算法為sm1算法或sm4算法,密碼雜湊算法為sm3算法。
3)ike密鑰協(xié)商及sa協(xié)商過程
ipsec信道由國密應(yīng)用模塊2來創(chuàng)建,ipsec通信過程可以分為兩部分:ike協(xié)商階段的ike協(xié)商過程和esp通信階段的esp包安全通信過程,國密ipsec驅(qū)動模塊1把過濾規(guī)則匹配的收、發(fā)網(wǎng)絡(luò)包都轉(zhuǎn)發(fā)到國密應(yīng)用模塊2,國密應(yīng)用模塊2首先要判斷對應(yīng)的ipsec信道是否已經(jīng)建立(sa是否存在),若已建立,則按已有ipsec信道通信;若還沒有建立,則通過ike協(xié)商過程建立ipsec信道,然后,再進行通信。
ike協(xié)商階段建立ipsec安全信道,ike協(xié)商過程劃分為兩個子階段:主模式(mainmode)子階段和快速模式(quickmode)子階段。主模式子階段中需要交換六組消息,快速模式子階段中需要交換三組消息。ike協(xié)商過程中的消息只由國密應(yīng)用模塊2和國密ipsec驅(qū)動模塊1處理,不會進入?yún)f(xié)議棧的上層,也不會涉及其它應(yīng)用模塊。
本機系統(tǒng)發(fā)出的ike消息流程是:
由國密應(yīng)用模塊2生成消息udp包,通過國密應(yīng)用模塊2與國密ipsec驅(qū)動模塊1之間的數(shù)據(jù)發(fā)送接口發(fā)送到國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1直接經(jīng)過網(wǎng)絡(luò)接口層41把該udp包外發(fā)到網(wǎng)絡(luò)上。
ike消息接收流程如下:
<1>國密ipsec驅(qū)動模塊1攔截到接收方向的網(wǎng)絡(luò)包后,檢查上層協(xié)議為udp,且端口號為500或4500,則判斷為ike協(xié)商包;
<2>把該網(wǎng)絡(luò)包的源ip地址與規(guī)則表中的ip地址進行匹配,若匹配上,則通過國密應(yīng)用模塊2與國密ipsec驅(qū)動模塊1之間的數(shù)據(jù)接收接口發(fā)送給國密應(yīng)用模塊2進行處理;
<3>國密應(yīng)用模塊2處理完成后,釋放該ip包占用的緩存區(qū)。
4)只需分配一次緩存區(qū)的esp包安全通信過程
ipsec信道建立后,后續(xù)的esp安全通信階段所有要處理的數(shù)據(jù)包都來自國密ipsec驅(qū)動模塊1監(jiān)測到的并匹配規(guī)則的收、發(fā)網(wǎng)絡(luò)包,國密應(yīng)用模塊2通過libusbkapi控制國密算法硬件模塊3采用sm1/sm4國家商用密碼算法實現(xiàn)ipsec的對稱加/解密,采用sm3密碼雜湊算法實現(xiàn)ipsec的hmac驗算,如圖2所示,對于來自通信對方ip地址的esp包,國密應(yīng)用模塊2利用國密算法硬件模塊3對來自通信對方ip地址的esp包進行解密后得到明文ip包,該明文ip包經(jīng)國密ipsec驅(qū)動模塊1進入ipsec協(xié)議處理,對于向通信對方ip地址外發(fā)的ip包,國密應(yīng)用模塊2利用國密算法硬件模塊3對向通信對方ip地址外發(fā)的ip包進行加密后得到密文esp包,該密文esp包經(jīng)國密ipsec驅(qū)動模塊1和網(wǎng)絡(luò)接口層41發(fā)送到網(wǎng)絡(luò)上。
esp包安全通信過程中,收、發(fā)兩個方向的都是由國密ipsec驅(qū)動模塊1截獲協(xié)議棧中的網(wǎng)絡(luò)包,分配好緩存區(qū),并把這些包傳送到國密應(yīng)用模塊2,則國密應(yīng)用模塊2對網(wǎng)絡(luò)包變換處理過程中不再重新分配緩存區(qū),而是僅利用國密ipsec驅(qū)動模塊1所分配的緩存區(qū)完成整個包變換過程(發(fā)送方向,由ip包生成esp包;接收方向,由esp包還原成ip包),避免了數(shù)據(jù)塊的多次復(fù)制,加快處理速度。國密應(yīng)用模塊2處理完成的esp包(或ip包)仍然在原緩沖區(qū)中,回送給國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1依據(jù)包的傳輸方向把這些包外發(fā)到網(wǎng)絡(luò)上或送入到協(xié)議棧;完成包轉(zhuǎn)送后,釋放了包所占用的緩沖區(qū),即整個處理過程中只進行了一次緩沖區(qū)的分配/釋放操作。
綜上,在網(wǎng)絡(luò)安全通信系統(tǒng)中,國密ipsec驅(qū)動模塊1負(fù)責(zé)規(guī)則匹配、網(wǎng)絡(luò)包提取、緩存區(qū)分配/釋放功能;國密應(yīng)用模塊2負(fù)責(zé)網(wǎng)絡(luò)包的變換處理功能,處理后的網(wǎng)絡(luò)包再全部回送回國密ipsec驅(qū)動模塊1;國密算法硬件模塊3提供國家商用密碼算法支持。
將網(wǎng)絡(luò)安全通信系統(tǒng)應(yīng)用到pc機上分別得到第一通信裝置和第二通信裝置,則第一通信裝置和第二通信裝置之間網(wǎng)絡(luò)通信過程為:
1)第一通信裝置和第二通信裝置分別在各自的過濾規(guī)則表中增加對方的ip地址;
2)第一通信裝置和第二通信裝置通過ike協(xié)商過程建立通信雙方的ipsec信道和sa;
3)第一通信裝置和第二通信裝置通過esp包安全通信過程進行數(shù)據(jù)傳輸。
如圖3所示,國密算法硬件模塊3是一個硬件密碼卡,由硬件邏輯高速實現(xiàn)sm1、sm2、sm3、sm4國家商用密碼算法及硬件隨機數(shù)生成,可采用通用型國密安全芯片8,例如:tf32a09等國密安全芯片8;國密應(yīng)用模塊2可采用微處理器7,微處理器7要求內(nèi)置高速usb接口,內(nèi)置flash等程序存儲器及ram等數(shù)據(jù)存儲器,具有數(shù)據(jù)、地址、控制等總線信號;微處理器7通過pciex1轉(zhuǎn)usb芯片6插在pc機的pciex1插槽5上,pciex1轉(zhuǎn)usb芯片6實現(xiàn)pciex1接口與usb接口之間的功能轉(zhuǎn)換,pciex1轉(zhuǎn)usb芯片6可采用貨架式的通用芯片,國密安全芯片8與微處理器7之間通過總線通信,以實現(xiàn)加/解密數(shù)據(jù)的高速交互。由于都是規(guī)模化量產(chǎn)芯片,網(wǎng)絡(luò)安全通信系統(tǒng)可以做到低成本,適用于大規(guī)模推廣應(yīng)用。國密算法硬件模塊3的加/解密速度達100mbps,以適應(yīng)100m網(wǎng)絡(luò)的傳輸速度需求。
國密算法硬件模塊3通過國密應(yīng)用模塊2插入pc機后,借用pc機上的pciex1物理插槽實現(xiàn)邏輯的usb接口功能,國密應(yīng)用模塊2與國密算法硬件模塊3的邏輯usb接口的設(shè)備類型采用大容量存儲器(massstorageclass)類型,windows識別其為大容量存儲器設(shè)備(msd),安裝開源的libusbk驅(qū)動,使國密算法硬件模塊3能夠由windows的user-mode應(yīng)用程序直接操作,實現(xiàn)了windows版本無關(guān)性,國密應(yīng)用模塊2通過專用的apdu指令來控制國密算法硬件模塊3實現(xiàn)ipsec的sm1/sm4對稱加/解密,hmac計算的sm3密碼雜湊計算/驗算、非對稱加/解密的sm2簽名驗算工作。
國密ipsec驅(qū)動模塊1與國密應(yīng)用模塊2之間的數(shù)據(jù)包交互是通過回調(diào)函數(shù)的方法來實現(xiàn)的。具體如下:
1)國密ipsec驅(qū)動模塊1通過第一回調(diào)函數(shù)向國密應(yīng)用模塊2傳輸來自通信對方ip地址的esp包或向通信對方ip地址外發(fā)的ip包,第一回調(diào)函數(shù)的內(nèi)容包括待處理包緩沖區(qū)、待處理包長度、包處理后緩沖區(qū)和包標(biāo)識,則第一回調(diào)函數(shù)可表示為:
typedefint(*p_packet_callback)(unsignedchar*pindata,unsignedintnsize,unsignedchar*poutdata,unsignedintpktid);
其中:
pindata表示待處理包緩沖區(qū);
nsize表示待處理包長度;
poutdata表示包處理后的緩沖區(qū);
pktid表示包標(biāo)識。
待處理包緩沖區(qū)和包處理后緩沖區(qū)均由國密ipsec驅(qū)動模塊1分配,并在國密應(yīng)用模塊2處理后由國密ipsec驅(qū)動模塊1釋放,包標(biāo)識指向包處理后緩沖區(qū)的緩沖區(qū)地址。國密ipsec驅(qū)動模塊1初始分配一個全長緩存區(qū),然后依據(jù)ip包的收發(fā)方向設(shè)置pindata和poutdata的偏置量。
對于來自通信對方ip地址的esp包,國密應(yīng)用模塊2執(zhí)行的處理是變換為ip包,其長度會短于esp包,因此,待處理包緩沖區(qū)和包處理后緩沖區(qū)指向相同的緩沖區(qū)地址,如圖(4a)所示。
對于向通信對方ip地址外發(fā)的ip包,國密應(yīng)用模塊2執(zhí)行的處理是把ip包變換成esp包,其長度要大于原ip包,并且,在原包的頭部要增加內(nèi)容,則待處理包緩沖區(qū)指向的緩沖區(qū)地址和包處理后緩沖區(qū)指向的緩沖區(qū)地址存在設(shè)定的偏置量。如圖(4b)所示,國密ipsec驅(qū)動模塊1采用下面的方式來分配緩存:
a、分配一個(ip包長+128)的緩存區(qū)pbuf;
b、把ip包放到偏移128字節(jié)處,即:pindata的頭指針=pbuf+128;
c、poutdata設(shè)置為pbuf,即:poutdata的頭指針=pbuf。
國密應(yīng)用模塊2對包進行變換處理時,從pindata中讀取數(shù)據(jù)進行處理,把處理好的數(shù)據(jù)寫入到poutdata中。
2)國密應(yīng)用模塊2通過第二回調(diào)函數(shù)向國密ipsec驅(qū)動模塊1發(fā)送處理后的明文ip包或密文esp包,第二回調(diào)函數(shù)的內(nèi)容包括包標(biāo)識、包處理后緩沖區(qū)和包處理后長度,則第二回調(diào)函數(shù)可表示為:
發(fā)送方向的回調(diào)函數(shù):boolcommitsenddata(unsignedintpktid,unsignedchar*poutdata,unsignedintnsizes);
接收方向的回調(diào)函數(shù):boolcommitrecvdata(unsignedintpktid,unsignedchar*poutdata,unsignedintnsizes);
其中:
pktid表示包標(biāo)識,復(fù)制p_packet_callback回調(diào)函數(shù)的pktid;
poutdata表示應(yīng)用處理后的包緩存區(qū),與p_packet_callback回調(diào)函數(shù)的poutdata相同;
nsizes表示應(yīng)用處理后包的長度。當(dāng)nsizes=0時,表明應(yīng)用程序檢測到包錯誤或ipsec鏈路還沒建立,應(yīng)用要求拋棄該包。國密ipsec驅(qū)動模塊1只需釋放緩存區(qū),而無包需要回送到協(xié)議棧上。
commitsenddata()函數(shù)實現(xiàn)如下功能:
檢查nsizes是否為0,若為0,表明該網(wǎng)絡(luò)包異常,拋棄該包,釋放pktid指定的緩存區(qū);
若nsizes不為0,則把poutdata處長度為nsizes的網(wǎng)絡(luò)包發(fā)送到網(wǎng)絡(luò)上,發(fā)送完成后,釋放pktid指定的緩存區(qū)。
commitrecvdata()函數(shù)實現(xiàn)如下功能:
檢查nsizes是否為0,若為0,表明該網(wǎng)絡(luò)包異常,拋棄該包,釋放pktid指定的緩存區(qū);
若nsizes不為0,則把poutdata處長度為nsizes的ip包回送到協(xié)議棧中由協(xié)議棧的上層繼續(xù)處理該ip包,回送完成后,釋放pktid指定的緩存區(qū)。
實際應(yīng)用時,設(shè)pc機a的ip地址為192.168.18.88,pc機b的ip地址為192.168.18.77,該兩個pc機之間的網(wǎng)絡(luò)通信都需要通過國密算法的ipsec安全信道進行保護。實施過程如下:
<1>兩個pc機上都要插上國密算法硬件模塊3,安裝好libusbk驅(qū)動;
<2>兩個pc機上都安裝好國密ipsec驅(qū)動模塊1;
<3>編輯安全策略配置文件,設(shè)置ike協(xié)商安全參數(shù)的對稱分組密碼算法為sm1,密碼雜湊算法為sm3,公鑰算法為sm2;設(shè)置esp安全參數(shù)的對稱分組密碼算法為sm1,密碼雜湊算法為sm3;遠(yuǎn)端ip地址分別設(shè)置為對方的ip地址;
<4>雙方都運行國密應(yīng)用模塊2,國密ipsec驅(qū)動模塊1的過濾規(guī)則表中分別增加了一個對方ip地址項;
<5>pc機a上的一個應(yīng)用程序需要與pc機b上的一個應(yīng)用程序通信,pc機a內(nèi)的信息包按圖2所示的發(fā)送網(wǎng)絡(luò)數(shù)據(jù)流方向通過協(xié)議棧以ip包結(jié)構(gòu)進入國密ipsec驅(qū)動模塊1,下面以pc機a內(nèi)處理過程為例進行說明,pc機b內(nèi)處理過程同理;
<6>pc機a內(nèi)的國密ipsec驅(qū)動模塊1把該ip包內(nèi)的目的ip地址(192.168.18.77)與過濾規(guī)則表進行匹配,過濾規(guī)則表中有192.168.18.77地址項,匹配成功;
<7>則pc機a內(nèi)的國密ipsec驅(qū)動模塊1把該ip包發(fā)送到國密應(yīng)用模塊2;
<8>pc機a內(nèi)的國密應(yīng)用模塊2檢查該ip包的目的ip地址是否已存在sa,若存在,則進入步驟<10>,不存在,則執(zhí)行步驟<9>;
<9>啟動ike協(xié)商過程,建立sa后進入步驟<10>;
<10>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm1加密模式,加密密鑰為sa的加密會話密鑰,對ip包數(shù)據(jù)進行加密;
<11>pc機a內(nèi)的國密應(yīng)用模塊2在密文數(shù)據(jù)前部添加上esp頭,國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm3雜湊計算模式,密鑰為sa的雜湊會話密鑰,對esp頭及密文數(shù)據(jù)進行雜湊計算;
<12>pc機a內(nèi)的國密應(yīng)用模塊2依據(jù)上述數(shù)據(jù)構(gòu)建esp包,由commitsenddata()函數(shù)發(fā)送到國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1把該esp包發(fā)送到網(wǎng)絡(luò)上;
<13>pc機a接收pc機b發(fā)出的esp包按圖2中所示接收網(wǎng)絡(luò)數(shù)據(jù)流的方向送入到pc機a內(nèi)的國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1把該esp包的源地址(192.168.18.77)與過濾規(guī)則表進行匹配,過濾規(guī)則表中有192.168.18.77地址項,匹配成功,國密ipsec驅(qū)動模塊1把該esp包發(fā)送到國密應(yīng)用模塊2;
<14>pc機a內(nèi)的國密應(yīng)用模塊2檢查該網(wǎng)絡(luò)包的協(xié)議類型為esp,則該網(wǎng)絡(luò)包執(zhí)行esp解析處理;
<15>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm3雜湊計算模式,密鑰為sa的雜湊會話密鑰,對esp頭及密文數(shù)據(jù)進行雜湊計算,計算結(jié)果與esp包中esp認(rèn)證數(shù)據(jù)比較以驗證esp的完整性;
<16>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm1解密模式,解密密鑰為sa的加密會話密鑰,對esp包的密文部分進行解密;
<17>pc機a內(nèi)的國密應(yīng)用模塊2依據(jù)解密后的明文恢復(fù)為原協(xié)議的ip包;
<18>pc機a內(nèi)的國密應(yīng)用模塊2由commitrecvdata()函數(shù)發(fā)送到國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1把該ip包送回到協(xié)議棧中,該ip包最后送至pc機內(nèi)的應(yīng)用;
<19>重復(fù)<10>~<18>之間的步驟,直到通信結(jié)束或會話密鑰更新。
其中,步驟<9>具體包括以下步驟:
<91>pc機a內(nèi)的國密應(yīng)用模塊2生成主模式消息1的udp協(xié)議的ip包,由 commitsenddata()函數(shù)發(fā)送到國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1把該ip包發(fā)送到網(wǎng)絡(luò)上;
<92>pc機a接收pc機b發(fā)出的主模式消息2的udp協(xié)議的ip包,送入到pc機a內(nèi)的國密ipsec驅(qū)動模塊1,國密ipsec驅(qū)動模塊1把該ip包的源地址(192.168.18.77)與過濾規(guī)則表進行匹配,過濾規(guī)則表中有192.168.18.77地址項,匹配成功;
<93>pc機a內(nèi)的國密ipsec驅(qū)動模塊1把該ip包發(fā)送到國密應(yīng)用模塊2;
<94>pc機a內(nèi)的國密應(yīng)用模塊2檢查該ip包的協(xié)議類型為udp,并且,端口號為500或4500,則由ike協(xié)商過程處理;
<95>pc機a內(nèi)的國密應(yīng)用模塊2識別該ip包為主模式消息2,則保存該消息攜帶的公鑰簽名證書cert_sig_r及公鑰加密證書cert_enc_r;
<96>pc機a內(nèi)的國密應(yīng)用模塊2從國密算法硬件模塊3得到隨機數(shù),并由隨機數(shù)生成臨時密鑰ski;
<97>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm1加密模式,加密密鑰為ski,分別對ni及idi進行加密;
<98>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm2加密模式,加密密鑰是從cert_enc_r證書中得到的公鑰pub_r,對ski加密;
<99>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm2簽名模式,簽名私鑰是priv_i,并進行簽名;
<910>pc機a內(nèi)的國密應(yīng)用模塊2依據(jù)上述的加密數(shù)據(jù)、簽名數(shù)據(jù)及簽名證書cert_sig_i、加密證書cert_enc_i生成主模式消息3,主模式消息3經(jīng)過國密ipsec驅(qū)動模塊1發(fā)向pc機b;
<911>pc機a接收pc機b發(fā)出的主模式消息4的udp協(xié)議的ip包,送入到pc機a內(nèi)的國密ipsec驅(qū)動模塊1,與步驟<92>、<93>、<94>相同的方式到達國密應(yīng)用模塊2的ike協(xié)商過程;
<912>pc機a內(nèi)的國密應(yīng)用模塊2識別該ip包為主模式消息4,國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm2解密模式,解密密鑰為
<913>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm1解密模式,解密密鑰為skr,分別解密出nr、idr;
<914>pc機a內(nèi)的國密應(yīng)用模塊2設(shè)置國密算法硬件模塊3為sm2簽名驗算 模式,簽名共鑰是簽名證書cert_sig_r的公鑰pub_r,并進行驗算;
<915>采用上述同樣方法處理主模式的其余消息及快速模式消息,最終建立ipsec信道,創(chuàng)建sa,進入步驟<10>。