張朕榮
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
一種將國(guó)密算法添加至Openswan的方法
張朕榮
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
隨著網(wǎng)絡(luò)安全產(chǎn)品對(duì)國(guó)家安全的影響與日俱增,使用國(guó)密標(biāo)準(zhǔn)ECC算法對(duì)于網(wǎng)絡(luò)安全產(chǎn)品十分必要,但是目前IPSec VPN產(chǎn)品只支持DES、3DES等國(guó)際標(biāo)準(zhǔn)加密算法,所以有必要使用加密卡將國(guó)密算法ECC-SM1添加到IPSec VPN產(chǎn)品當(dāng)中。主要通過(guò)修改Openswan的算法庫(kù)和策略庫(kù)來(lái)將國(guó)密算法ECC-SM1注冊(cè)到Openswan當(dāng)中,完成Openswan對(duì)國(guó)密算法的支持,并提高Openswan的安全性。
IPSec;國(guó)密算法;加密卡;SM1;Openswan
隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)安全的問(wèn)題日益凸顯。為了保證公共網(wǎng)絡(luò)上信息傳輸?shù)陌踩?,人們使用了一系列解決方案,包括了代理技術(shù)、防火墻技術(shù)、VPN技術(shù),等等。IPSec VPN就是當(dāng)下應(yīng)用最廣泛的VPN解決方案之一。
在關(guān)注VPN的解決方案同時(shí),就可以意識(shí)到,加密算法、密鑰長(zhǎng)度以及密鑰管理是VPN安全程度評(píng)判的標(biāo)準(zhǔn)。在網(wǎng)絡(luò)迅速發(fā)展的現(xiàn)在,利用網(wǎng)絡(luò)薄弱環(huán)節(jié)攻擊、破解加密算法不僅僅會(huì)對(duì)正常網(wǎng)絡(luò)造成巨大的威脅,還上升到了國(guó)家的安全戰(zhàn)略層次[1~2]。所以使用國(guó)密標(biāo)準(zhǔn)ECC系列算法不僅僅是解決民生安全的威脅,還是為國(guó)家安全提供保障[3]。在這樣的大環(huán)境下,研究基于國(guó)密算法的VPN網(wǎng)絡(luò)產(chǎn)品就具有十分重要的意義。
1.1 國(guó)密標(biāo)準(zhǔn)算法
中國(guó)國(guó)家標(biāo)準(zhǔn)的IPSec VPN則建立在以ECC私鑰加密的安全認(rèn)證和以ECC私鑰加密來(lái)共享加密密鑰的基礎(chǔ)上[3]。標(biāo)準(zhǔn)規(guī)范了IPSec使用的算法,主要包括:對(duì)稱加密算法、非對(duì)稱加密算法和雜湊算法。
標(biāo)準(zhǔn)中IPSec VPN需要實(shí)現(xiàn)以ECC-SM1為核心的加密算法的套組:
●IKE階段:加密使用128位ECC-SM1-CBC算法,公鑰加密使用ECC-SM2算法,數(shù)據(jù)驗(yàn)證使用256位HMAC-ECC-SM3雜湊算法。
●IPSec階段:采用嵌套AH+ESP或單獨(dú)的ESP協(xié)議封包,加密使用128位ECC-SM1-CBC算法,數(shù)據(jù)驗(yàn)證使用256位HMAC-ECC-SM3雜湊算法。
標(biāo)準(zhǔn)允許IPSec兼容國(guó)際主流加密算法以保證其通用性。
1.2 加密卡介紹
所謂加密卡就是將加密算法通過(guò)硬件來(lái)實(shí)現(xiàn),這樣將所有涉及加解密和驗(yàn)證的過(guò)程全部交給加密卡,可以極大地提升加解密的效率和產(chǎn)品整體的性能。
國(guó)家加密卡就是遵循了國(guó)家相關(guān)技術(shù)規(guī)范實(shí)現(xiàn)的支持國(guó)密標(biāo)準(zhǔn)算法、國(guó)際標(biāo)準(zhǔn)算法的高速密碼處理設(shè)備[6]。在研究過(guò)程中,主要使用的加密卡是漁翁國(guó)密加密卡SJK0809-B v2.0。
圖1 加密卡架構(gòu)
加密卡的主要架構(gòu)如圖1所示[7]。其中PCI模塊主要是負(fù)責(zé)加密卡掛載到PCI總線上,配置和管理之間的通信;加密卡控制模塊主要完成加密卡內(nèi)部模塊之間的控制和調(diào)度;加解密模塊就是通過(guò)硬件來(lái)加解密,例如SM1加密;驗(yàn)證模塊也是通過(guò)硬件方式進(jìn)行驗(yàn)證;存儲(chǔ)模塊則是儲(chǔ)存配置信息,以及加解密產(chǎn)生的數(shù)據(jù)包。
加密卡和IPSec進(jìn)程并行工作流程如圖2所示[8]:
圖2 數(shù)據(jù)加密處理流程
(1)IPSec協(xié)議調(diào)用驅(qū)動(dòng)的加/解密接口函數(shù)將數(shù)據(jù)包送往加密卡的緩沖隊(duì)列等待處理;
(2)加密卡驅(qū)動(dòng)的核心線程檢查等待加密隊(duì)列,取出隊(duì)首數(shù)據(jù),根據(jù)包描述符和SA的包含信息啟動(dòng)加/解密操作;
(3)完成上述操作后,將數(shù)據(jù)包送回描述符指定的目的地址,同時(shí)設(shè)置控制端口,通知操作以及完成;
(4)核心線程檢測(cè)到數(shù)據(jù)加/解密完成以后,喚醒IPSec進(jìn)程,通知其在指定目的地址進(jìn)行數(shù)據(jù)讀取。
2.1 Openswan修改設(shè)計(jì)
目前,在開(kāi)源IPSec VPN中,Openswan是最成熟的實(shí)現(xiàn)。Openswan是Linux下的開(kāi)源項(xiàng)目,對(duì)IPSec支持完整,兼容性好,適合二次開(kāi)發(fā)和研究工作。
本文所主要關(guān)注的點(diǎn)在于如何使Openswan不僅支持國(guó)際標(biāo)準(zhǔn)算法,也支持國(guó)密辦發(fā)布的國(guó)家標(biāo)準(zhǔn)安全算法,并且實(shí)現(xiàn)對(duì)端到站(Client-to-Network)和站到站(Network-to-Network)的安全通信的基本要求。
VPN模塊主要包含了兩個(gè)部分,一個(gè)是IKE協(xié)議子模塊,一個(gè)是IPSec數(shù)據(jù)包處理子模塊。它們共同完成Openswan的主要功能,如圖3所示。
IKE協(xié)議子模塊主要負(fù)責(zé)協(xié)商、建立連接以及維護(hù)的工作。通過(guò)IKE協(xié)議子模塊的協(xié)商后,可以建立一條數(shù)據(jù)隧道來(lái)提供安全傳輸,并持續(xù)更新和維護(hù)這條數(shù)據(jù)隧道直到服務(wù)意外斷開(kāi)或者正常關(guān)閉。
IPSec數(shù)據(jù)包子模塊則主要負(fù)責(zé)對(duì)數(shù)據(jù)隧道中的包進(jìn)行加密、解密以及認(rèn)證的工作。作為系統(tǒng)內(nèi)核的模塊,該模塊能在網(wǎng)絡(luò)協(xié)議棧中高效地處理數(shù)據(jù)包,為上層應(yīng)用提供IPSec的安全保護(hù)和認(rèn)證。
圖3 VPN功能模塊結(jié)構(gòu)
2.2 IKE處理模塊
本模塊主要通過(guò)修改開(kāi)源項(xiàng)目Openswan的算法庫(kù)與策略庫(kù)來(lái)進(jìn)行實(shí)現(xiàn),重點(diǎn)在于實(shí)現(xiàn)國(guó)密標(biāo)準(zhǔn)的協(xié)議和算法。在實(shí)現(xiàn)流程上,協(xié)議分為兩個(gè)階段:第一階段(ISAKMPSA階段)和第二階段(IPSec SA階段)。國(guó)際主流標(biāo)準(zhǔn)基于RSA簽名(RSA_SIG)進(jìn)行身份驗(yàn)證,并以Diffie-Hellman算法(DH算法)為基礎(chǔ)進(jìn)行身份驗(yàn)證;國(guó)密標(biāo)準(zhǔn)則基于公鑰數(shù)字信封認(rèn)證方式(DE_SIG)進(jìn)行身份驗(yàn)證,并以SM2算法(ECC算法)為基礎(chǔ)進(jìn)行密鑰交換。
國(guó)密標(biāo)準(zhǔn)的IPSec VPN在IKE協(xié)議階段使用到的國(guó)密算法有三個(gè):
(1)對(duì)稱加密算法——SM1(即SCB2);
(2)非對(duì)稱加密算法(公鑰算法)——SM2;
(3)雜湊算法——SM3。
其中,國(guó)密算法的SM 1對(duì)稱加密算法、非對(duì)稱加密算法都是通過(guò)加密卡來(lái)實(shí)現(xiàn)。這是為了提高加密的效率,并且加密模塊封裝也能很好地保證安全性。
IKE協(xié)議處理模塊以IKE協(xié)議處理引擎為中心,作為用戶態(tài)守護(hù)進(jìn)程,主要是監(jiān)聽(tīng)網(wǎng)絡(luò)中IKE數(shù)據(jù)包,以及對(duì)IKE協(xié)議進(jìn)行認(rèn)證和協(xié)商。IKE模塊的主要結(jié)構(gòu)如圖4所示。
圖4 IKE協(xié)議處理子模塊結(jié)構(gòu)圖
2.3 IPSec數(shù)據(jù)包處理子模塊
IPSec數(shù)據(jù)包處理子模塊圍繞IPSec協(xié)議處理引擎展開(kāi),運(yùn)行在系統(tǒng)的內(nèi)核態(tài),監(jiān)聽(tīng)網(wǎng)絡(luò)中的IPSec數(shù)據(jù)包,對(duì)其進(jìn)行加解密以及認(rèn)證的操作。
圖5 IPSec協(xié)議處理子模塊算法實(shí)現(xiàn)框架
IPSec協(xié)議處理引擎通過(guò)一個(gè)算法庫(kù)來(lái)支持所有的算法及其相關(guān)的信息。國(guó)際主流算法主要應(yīng)用內(nèi)核中的相關(guān)實(shí)現(xiàn)來(lái)在本模塊中完成,可以直接用Crypto接口進(jìn)行靜態(tài)加載;ECC算法的實(shí)現(xiàn)需要訪問(wèn)密碼卡內(nèi)核驅(qū)動(dòng)接口,因此在具體實(shí)現(xiàn)上較前者更為復(fù)雜,基于加密卡內(nèi)核驅(qū)動(dòng)、遵循接口規(guī)范的算法框架如圖5所示:
國(guó)密標(biāo)準(zhǔn)ECC算法遵循內(nèi)核CryptoAPI接口標(biāo)準(zhǔn)所實(shí)現(xiàn)的函數(shù)原型舉例如下:
static int_sm1_set_key(struct IPSec_alg_enc*alg,_u8 *key_e,const_u8*key,size_t keysize);
功能:設(shè)置SM1算法對(duì)稱加密密鑰。
參數(shù):alg:算法描述結(jié)構(gòu)體,key_e:算法上下文描述結(jié)構(gòu)體,key:對(duì)稱加密密鑰,keysize:密鑰長(zhǎng)度。
返回值:0為成功,非零為失敗。
static int_sm1_cbc_encrytp(struct IPSec_alg_enc*alg, _u8*key_e,_u8*in,int ilen,_u8*iv,intencrypt);
功能:進(jìn)行CBC模式SM1算法加密。
參數(shù):alg:算法描述結(jié)構(gòu)體,key_e:算法上下文描述結(jié)構(gòu)體,in:待加密數(shù)據(jù),ilen:數(shù)據(jù)長(zhǎng)度,encrypt:是加密還是解密。
返回值:0為成功,非零為失敗。
隨著互聯(lián)網(wǎng)技術(shù)的繼續(xù)前行,越來(lái)越多的部門、企業(yè)對(duì)于安全、快速和穩(wěn)定的數(shù)據(jù)鏈路產(chǎn)生需求。本文提出一種在加密卡的基礎(chǔ)上,將國(guó)密算法嵌入到IPSec VPN中去,使其能夠很好地完成企業(yè)高效和安全的要求。如何更好、更高效地完成這一目標(biāo)將會(huì)是接下來(lái)研究和實(shí)踐的目標(biāo)。
參考文獻(xiàn):
[1] 熊都.美國(guó)網(wǎng)絡(luò)戰(zhàn)司令部成立評(píng)析[J].國(guó)防科技工業(yè),2009,8:016
[2] 熊玉祥.網(wǎng)絡(luò)戰(zhàn):新一代戰(zhàn)爭(zhēng)[J].發(fā)現(xiàn),2009,10:022
[3] 國(guó)家密碼管理局.IPSec VPN技術(shù)規(guī)范(S),2010
[4] 劉婷.虛擬專用網(wǎng)(VPN)技術(shù)綜述[J].科技廣場(chǎng),2010,1:022
[5] S.Frankel,S.Krishnan.RFC 6071:IPSecurity(IPSec)and Internet Key Exchange(IKE)Document Roadmap[J].IETF,February 2011
[6] GB/T 20518-2006.信息安全技術(shù)公鑰基礎(chǔ)設(shè)施數(shù)字證書格式[S],2006
[7] 胡月振.IPSec VPN中硬件加密卡的應(yīng)用研究[J].信息技術(shù),2011,9:153
[8] 楊黎斌.基于硬件加密的嵌入式VPN網(wǎng)關(guān)實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2007.4:122
A Method for Adding the Cryptographic Algorithm in Openswan
ZHANG Zhen-rong
(College of Computer Science,Sichuan University,Chengdu 610065)
As the impactof network security products for national security increases,it is necessary to use ECC algorithm in network security products.But currently IPSec VPN products only supports DES,3DESand other international standards eccryption algorithm.It is useful to add the ECC-SM1 cryptographic algorithm into IPSec with encryption card.Modifies SPDB and cryptos to register ECC-SM 1 into Openwan whicn improves security of Openswan.
IPSec;Cryptographic Algorithm;Encryption Card;SM1;Openswan
1007-1423(2015)06-0011-04
10.3969/j.issn.1007-1423.2015.06.003
張朕榮(1993-),男,陜西延安人,碩士研究生,研究方向?yàn)樾畔踩?/p>
2014-12-30
2015-02-01