蔣 華 李康康 胡榮磊
1(北京電子科技學(xué)院 北京 100070)2(西安電子科技大學(xué) 陜西 西安 710071)
?
一種基于strongSwan的IPSec VPN網(wǎng)關(guān)的實(shí)現(xiàn)
蔣 華1,2李康康2胡榮磊1
1(北京電子科技學(xué)院 北京 100070)2(西安電子科技大學(xué) 陜西 西安 710071)
IPSec VPN是一種使用IPSec協(xié)議來實(shí)現(xiàn)的虛擬專用網(wǎng)技術(shù)。針對國密算法在網(wǎng)絡(luò)安全產(chǎn)品上的應(yīng)用相對較少這一問題,設(shè)計(jì)一種基于開源IPSec項(xiàng)目strongSwan的VPN網(wǎng)關(guān)。該網(wǎng)關(guān)使用SSX0912加密芯片中的國密算法接口替換了strongSwan的國際密碼算法接口,完成了strongSwan對國密標(biāo)準(zhǔn)的支持。將修改后的strongSwan移植到AM335x為核心的開發(fā)板中,在嵌入式硬件環(huán)境中實(shí)現(xiàn)了IPSec VPN的網(wǎng)關(guān)。通過搭建開發(fā)環(huán)境測試,該網(wǎng)關(guān)運(yùn)行穩(wěn)定,延時小,使用硬件加密模塊,安全性更高,相比于簡單的Linux系統(tǒng)實(shí)現(xiàn),應(yīng)用范圍也更加廣泛。
虛擬專用網(wǎng) 國密算法 strongSwan 嵌入式
隨著IPSec VPN對性能、安全性的要求越來越高,IKEv1(網(wǎng)絡(luò)密鑰交換)協(xié)議[1]的冗余性、缺乏一致性的缺點(diǎn)越來越明顯[2]。因此,在2005年10月,IETF工作組發(fā)布了IKE協(xié)議的第二版,即IKEv2[3]。IKEv2簡化了IKEv1的復(fù)雜功能,增強(qiáng)了安全性,具體體現(xiàn)在抵御中間人攻擊、拒絕服務(wù)攻擊、完美前向保護(hù)等幾個方面。IPSec協(xié)議是目前VPN技術(shù)開發(fā)中使用最廣泛的一種安全協(xié)議[4]。Linux上常用的IPSec協(xié)議實(shí)現(xiàn)有Frees/wan項(xiàng)目,F(xiàn)rees/wan分為Openswan和strongSwan。Openswan是Linux下的開源項(xiàng)目,由于軟件結(jié)構(gòu)相對簡單,安全性較好,兼容效果好,已經(jīng)集成于Cisco等多家廠商的VPN產(chǎn)品中[5]。但是Openswan也有局限性,那就是只支持IKEv1協(xié)議,而IKEv1協(xié)議的冗余性等缺點(diǎn)對它今后的發(fā)展前景帶來了很大的限制。IKEv2同時兼顧高效性、安全性的特點(diǎn)將會越來越受到人們的青睞。strongSwan同時支持IKEv1和IKEv2協(xié)議,可以廣泛應(yīng)用于不同的終端,包括PC、安卓手機(jī)、IOS手機(jī)等。
VPN的數(shù)據(jù)加解密技術(shù)、隧道技術(shù)、密鑰管理技術(shù)、用戶身份認(rèn)證技術(shù)已經(jīng)廣泛應(yīng)用于保障互聯(lián)網(wǎng)信息安全的方方面面。數(shù)據(jù)加解密技術(shù)中使用的密碼算法全部是來自于國外組織或機(jī)構(gòu)制定的標(biāo)準(zhǔn),常用的有DES、3DES、AES、SHA-1、ECC等。為了適應(yīng)我國自身的安全需求,我國國家密碼管理局批準(zhǔn)了一系列國密標(biāo)準(zhǔn)的密碼算法,例如SM1、SM2、SM3、SM4、祖沖之算法等。在此基礎(chǔ)上也制訂了基于國密算法的VPN技術(shù)規(guī)范[5]。因此,基于國密的IPSec協(xié)議標(biāo)準(zhǔn),實(shí)現(xiàn)自主可控的IPSec VPN網(wǎng)關(guān)是國家安全和經(jīng)濟(jì)發(fā)展的需要。
本文通過替換strongSwan中的加密算法,添加對國密SM3、SM4算法的支持,并且將strongSwan移植到嵌入式平臺下,搭建IPSec VPN開發(fā)環(huán)境,最后經(jīng)過測試,分析了該網(wǎng)關(guān)的性能。
網(wǎng)關(guān)結(jié)構(gòu)如圖1所示,包括加密模塊和AM3-35x為核心的開發(fā)板。
圖1 網(wǎng)關(guān)總體結(jié)構(gòu)圖
1.1 硬件加密模塊設(shè)計(jì)
硬件加密模塊是VPN網(wǎng)關(guān)實(shí)現(xiàn)的基礎(chǔ)。傳統(tǒng)的軟件加密系統(tǒng)具有開發(fā)時間短、研發(fā)成本低等優(yōu)點(diǎn),但是硬件加密在抵御攻擊、密鑰的安全存儲、運(yùn)算速度等方面有更大的優(yōu)勢。所以加密模塊的設(shè)計(jì)往往決定著VPN的性能的好壞。
本文通過美國德州儀器推出的OMAPL137[6]雙核心芯片設(shè)計(jì)了加密模塊,芯片包含ARM和DSP兩部分。其中,ARM端負(fù)責(zé)通信機(jī)制的控制,而DSP端結(jié)合SSX0912安全加密芯片對密碼算法進(jìn)行處理。ARM和DSP端通信是基于Ti公司的DSPLINK技術(shù)。加密模塊在功能上作為一個可接入多個通信終端的設(shè)備,并且加密模塊的安全服務(wù)獨(dú)立于通信系統(tǒng),加密模塊開發(fā)完成以后只向外界提供一些可用的 API 接口,外界通信終端只要調(diào)用 API 接口就能實(shí)現(xiàn)加解密等安全服務(wù)功能。
加密模塊的設(shè)計(jì)采用了SSX0912安全加密芯片。SSX0912安全加密芯片可以實(shí)現(xiàn)SM2、SM3、SM4等國標(biāo)密碼算法,同時也帶有UART總線接口、RS232總線接口、HSPI總線接口和USB2.0接口。用戶可以根據(jù)應(yīng)用選擇不同的接口。
針對安全應(yīng)用,SSX0912安全加密芯片參照了X.509V3的證書格式,自定義了證書結(jié)構(gòu),在模塊中加入了證書和CA公鑰存儲,方便密鑰協(xié)商和身份認(rèn)證。
由于OMAPL137要通過USB和外界進(jìn)行通信,要接收外界發(fā)過來的數(shù)據(jù),所以軟件方面驅(qū)動的編譯是關(guān)鍵。安全模塊相比于AM335x來說是一個從設(shè)備,這就要涉及到USB gadget的驅(qū)動開發(fā)。因?yàn)橹苯泳帉戲?qū)動程序會很困難,所以通過查閱資料,本設(shè)計(jì)決定修改Linux設(shè)備驅(qū)動程序gadget_serial.c來完成驅(qū)動程序。
通過對Linux設(shè)備驅(qū)動程序結(jié)構(gòu)的分析,Linux虛擬串口設(shè)備驅(qū)動程序的程序框架和其他設(shè)備驅(qū)動的程序框架是一樣的。所不同的是在設(shè)備驅(qū)動程序里添加一些支持字符處理的接口函數(shù),并且在 USB 虛擬串口中添加關(guān)于串口通信的驅(qū)動模塊。值得一提的是,讀寫速度有多大,串口不能控制,也就是說 USB 給出多大的速度,出口就能讀寫多大的速度。所以,虛擬串口的速度不受串口波特率的影響,只受 USB 協(xié)議讀寫速度的影響。
將修改好的程序加載到Linux內(nèi)核,然后交叉編譯內(nèi)核,生成g_serial.ko。接著通過制作Ramdisk根文件系統(tǒng)把g_serial.ko文件拷貝進(jìn)去,燒寫文件系統(tǒng),由超級終端重啟開發(fā)板OMAPL137,使用命令insmodg_serial.ko加載驅(qū)動。通過cat /proc/devices可以查看到已加載驅(qū)動的設(shè)備號,最后用mknod /dev/ttyusb c 127 0創(chuàng)建設(shè)備節(jié)點(diǎn)。為了防止每次啟動開發(fā)板系統(tǒng)都要重新加載驅(qū)動,可以在/etc/init.d/rcS程序自啟動文件中輸入以上命令,這樣每次重啟驅(qū)動就自動加載了。驅(qū)動加載完成之后就可以通過USB OTG接口和外界終端設(shè)備通信了。
1.2 AM335x驅(qū)動設(shè)計(jì)
根據(jù)圖1所示網(wǎng)關(guān)結(jié)構(gòu),strongSwan開源程序在經(jīng)過修改后,交叉編譯到AM335x中,AM335x和加密模塊通過USB接口進(jìn)行通信,此時的AM335x相對于OMAPL137來說是主設(shè)備[7]。因?yàn)榍度胧较到y(tǒng)內(nèi)核是裁剪過的,許多設(shè)備驅(qū)動并沒有,所以我們需要為主設(shè)備AM335x添加CDC-ACM驅(qū)動,CDC-ACM驅(qū)動允許任何通信設(shè)備去提供一個串口通信接口。具體步驟:
1) 在AM335x的Linux內(nèi)核中找到CDC-ACM支持的選項(xiàng),如圖2所示。
圖2 CDC-ACM內(nèi)核選項(xiàng)
2) 選中module之后,使用AM335x的交叉編譯工具編譯內(nèi)核,在./drivers/usb/class目錄下可以找到cdc-acm.ko。
3) 將cdc-acm.ko移到AM335x中,insmod cdc-acm.ko,在插上USB數(shù)據(jù)線時會動態(tài)產(chǎn)生驅(qū)動ttyACM0。
2.1 軟件平臺
VPN網(wǎng)關(guān)的操作系統(tǒng)是經(jīng)過裁剪的實(shí)時Linux系統(tǒng),通過對內(nèi)核的裁剪和修改,去除了許多不必要的模塊,保留了一些必要的驅(qū)動支持。操作系統(tǒng)由通用的Linux系統(tǒng)變?yōu)閷?shí)時的操作系統(tǒng),節(jié)省了空間,提升了便利性,使系統(tǒng)性能得到了很大的提高[8]。
2.2 strongSwan簡介
strongSwan是一個完整的IPSec實(shí)現(xiàn),支持的Linux內(nèi)核為2.6、3.x和4.x。strongSwan的重點(diǎn)是其強(qiáng)大的身份認(rèn)證機(jī)制,它還有很多優(yōu)點(diǎn),例如支持證書撤消列表和在線證書狀態(tài)協(xié)議(OCSP),完全支持IPv6 IPSec隧道和傳輸連接,支持ESP(封裝安全載荷)[9]單獨(dú)使用時的NAT穿越,完美的PFS(前向保護(hù)性)等。和Openswan僅支持IKEv1協(xié)議相比,strongSwan同時支持IKEv1和IKEv2協(xié)議。
strongSwan中的IKEv2協(xié)議的消息協(xié)商對IKEv1進(jìn)行了很大的改進(jìn)。IKEv1協(xié)商過程非常復(fù)雜,分為兩個階段,四種模式。而IKEv2取消了模式的概念,消息交換包含三個基本交換類型:初始交換(Initial交換)、協(xié)商子SA交換(CREATE_ CHI-LD_SA交換)、信息交換(INFORMATION Exchang-e)[2-3]。
strongSwan使用daemon(守護(hù)進(jìn)程)來控制IKE過程,如圖3所示。不同的IKE版本daemon不同,IKEv1協(xié)議使用pluto,而IKEv2協(xié)議使用charon。
圖3 strongSwan IKE 守護(hù)進(jìn)程
2.3 strongSwan密碼算法的替換
SSX0912加密芯片提供了SM3、SM4等國密算法的接口,外界通信終端只要調(diào)用這些接口就能實(shí)現(xiàn)加解密等安全服務(wù)功能。
通過分析strongSwan源碼的結(jié)構(gòu),其中有許多插件(plugin),加載密碼算法的插件在/src/libstrong-swan/目錄中,libstrongswan結(jié)構(gòu)如圖4。在所加載的插件中,對稱加密算法插件有aes、des等,完整性驗(yàn)證所用到的摘要算法有sha1、sha2、md4、md5等,除了這些密碼算法外,還有openssl庫、sqlite庫等。其中一些不常用的算法會使用openssl中的函數(shù)來實(shí)現(xiàn),strongSwan數(shù)字簽名算法用的就是openssl函數(shù)庫中的ECDSA,即橢圓曲線數(shù)字簽名算法。
圖4 基于plugin的libstrongswan模塊結(jié)構(gòu)
SM3、SM4算法的替換只是在原有算法的基礎(chǔ)上更改了函數(shù)的接口,并且修改了算法的命名機(jī)制,將原有的“aes-128”和“sha-256”分別替換為“SM4”和“SM3”。算法替換完成后需要證明是否替換正確。
2.3.1 SM4算法的替換
strongSwan啟動時默認(rèn)加載的是aes-128算法,即密鑰長度和數(shù)據(jù)長度均為16字節(jié),這和SM4算法相對應(yīng),所以只需修改aes_crypter.c程序即可。通過研讀aes_crypter.c,主要函數(shù)有:encrypt()和decrypt()。Encypt()函數(shù)是加密函數(shù),decrypt()是解密函數(shù),它們都包含encrypt_block()函數(shù),就是用來加密一塊數(shù)據(jù)的函數(shù)。SM4程序中對應(yīng)的函數(shù)為sm4_crypt_ecb()和sm4_crypt_cbc(),這兩個函數(shù)均為SSX0912中的算法接口,可以使用ioctl的方式調(diào)用這兩個接口。因?yàn)镾M4算法解密是加密的逆過程,所以只需將加密標(biāo)志SM4_ENRYPT換為解密標(biāo)志SM4_DECRYPT即可,具體代碼不再贅述。
2.3.2 SM3算法的替換
strongSwan默認(rèn)加載的雜湊算法為sha-1,sha-1輸出的摘要值長度為96位或者160位,而SM3算法輸出摘要值為256位。又因?yàn)閟ha-256算法的輸出摘要值長度為256位,這樣就能夠和SM3算法相對應(yīng)起來了。由于strongSwan結(jié)構(gòu)的特殊性,提供sha-256函數(shù)源碼的插件有兩個:一個是plugin文件夾中的sha2插件,這里面包含sha-256、sha-384、sha-512三個雜湊函數(shù);另一個是openssl插件,它是調(diào)用openssl庫中的開源函數(shù)來實(shí)現(xiàn)雜湊函數(shù)的。但是在IKE和ESP過程中,默認(rèn)加載的并不是sha2插件中的sha-256函數(shù),而是openssl函數(shù)庫中的sha-256函數(shù)。通過屏蔽openssl中調(diào)用sha-256函數(shù)的代碼,strongSwan就開始調(diào)用sha2插件中的sha-256函數(shù)了,這時候只要修改sha2插件中的sha2_hasher.c程序即可。
在sha2_hasher.c程序中,有兩個函數(shù):get_hash- 256()、allocate_hash256(),主要功能分別是獲取摘要值和分配哈希函數(shù)空間。它們都包含兩個主要的接口:sha256_write()和sha256_final(),將它們替換成SM3算法的接口,即sm3_update()、sm3_finish(),它們均為SSX0912加密芯片的接口。同理,al-locate_hash256()函數(shù)替換方法與之相同。
2.4 移植strongSwan
在一種計(jì)算機(jī)環(huán)境中運(yùn)行的編譯程序,能編譯出在另外一種環(huán)境下運(yùn)行的代碼,我們就稱這種編譯器支持交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼,而這種工具就是交叉編譯器。
strongSwan要想在AM335x上成功運(yùn)行,這就需要進(jìn)行交叉編譯。移植之前,已經(jīng)在Ubuntu Linux中安裝好了AM335x的交叉編譯工具。
2.4.1 strongSwan驅(qū)動編譯
strongSwan運(yùn)行時需要許多必要的驅(qū)動,這些驅(qū)動在AM335x的內(nèi)核中并沒有被加載,需要手動添加內(nèi)核選項(xiàng)并且重新編譯內(nèi)核,根據(jù)strongSwan官網(wǎng)提供的內(nèi)核編譯選項(xiàng)進(jìn)行添加,如圖5所示。
圖5 strongSwan需要的內(nèi)核驅(qū)動選項(xiàng)
按照圖5提供的內(nèi)核選項(xiàng),可以看出strongSwan需要加載AH傳輸、ESP傳輸、IPSec傳輸和隧道模式等必要的驅(qū)動。將這些驅(qū)動直接加載進(jìn)內(nèi)核中,交叉編譯AM335x開發(fā)板內(nèi)核,在./arm/boot文件夾中生成了新的內(nèi)核zImage,根據(jù)開發(fā)板提供的燒寫方法,重新燒寫內(nèi)核即可。
2.4.2 交叉編譯strongSwan
通過閱讀strongSwan在Ubuntu Linux上成功運(yùn)行的日志,可以看到strongSwan需要加載一些插件。而有些插件例如openssl庫、gmp庫、sqilte庫在嵌入式環(huán)境下是沒有的,這時候就需要將這些必要的庫移植進(jìn)開發(fā)板。
交叉編譯過程中需要注意的幾點(diǎn):
1) 從源碼安裝開始,也就是使用命令./configure,后面需要許多選項(xiàng),包括不同的插件,交叉編譯工具的路徑,生成文件的路徑,必須要鏈接的一些庫。
2) 使用make命令編譯安裝:make&&make install。
3) 編譯生成的strongSwan文件夾如果直接通過tftp協(xié)議傳到開發(fā)板中,這樣會比較麻煩,重新制作AM335x的文件系統(tǒng)再進(jìn)行燒寫會比較簡單。
3.1 測試環(huán)境的搭建
在將strongSwan移植進(jìn)AM335x開發(fā)板之后,搭建如圖6所示站點(diǎn)到站點(diǎn)的VPN。
圖6 測試環(huán)境
VPN網(wǎng)關(guān)是網(wǎng)關(guān)型安全設(shè)備,它可以訪問公網(wǎng),而不改變原配置局域網(wǎng)和路由器之間的網(wǎng)絡(luò)結(jié)構(gòu)[10]。AM335x開發(fā)板有兩個網(wǎng)口,同時支持4G和WiFi,測試環(huán)境就選在WiFi中實(shí)現(xiàn)。如圖6所示,終端PC A和PC B分別連接AM335x的eth1網(wǎng)口,兩個eth0網(wǎng)口分別通過一個Router連接公網(wǎng)Internet。
Router1 WAN口IP地址:192.168.227.121,Router2 WAN口IP地址:192.168.227.122,PC C的IP地址:192.168.227.123。設(shè)置其他網(wǎng)卡的IP地址,其中PC A的IP地址:192.168.30.101,PC B的IP地址:192.168.31.101,與A連接的eth1網(wǎng)口IP地址:192.168.30.121,eth0網(wǎng)口IP地址:192.168.1.2,與B連接的eth1網(wǎng)口IP地址:192.168.31.121,eth0網(wǎng)口IP地址:192.168.2.2。
3.2 IKE協(xié)商過程測試
strongSwan成功移植進(jìn)AM335x開發(fā)板后,使用IPSec pki命令生成證書來驗(yàn)證發(fā)起方和響應(yīng)方的身份,經(jīng)過對IPSec.conf、IPSec.secrets文件的配置,緊接著使用命令I(lǐng)PSec start-nofork分別啟動兩端的strongSwan,成功地產(chǎn)生了隧道“192.168. 30.121/24===192.168.31.121/24”,此時網(wǎng)關(guān)后面的主機(jī)A和B可以互相訪問。
通過wireshark在PC C使用混雜模式進(jìn)行抓包,可以捕捉到IKE三種消息交換的數(shù)據(jù)包。
IKEv2的初始交換分為了兩對消息[2],其中第一對消息的IKE_SA_INIT過程協(xié)商了加密與雜湊算法,交換了nonce值,完成了Diffie-Hellman密鑰協(xié)商。最后計(jì)算出了后面階段需要的各種密鑰值。在輸出日志上可以看到協(xié)商出的加密算法為SM4,雜湊算法為SM3,這就是之前替換過的算法。
3.3 ESP過程測試
根據(jù)圖6搭建的測試環(huán)境,在PC A上cmd命令行ping 192.168.31.101,也就是PC B的IP地址,再通過wireshark在PC C上抓包,使用混雜模式,就可以捕捉到了ESP包。
因?yàn)閣ireshark上抓到的ESP包是加密后的包,無法進(jìn)行解密,通過設(shè)置strongSwan的日志等級為4級。查看一些敏感信息,就可以獲得加密和HMAC所需的密鑰,然后就可以進(jìn)行SM4和SM3算法的驗(yàn)證了。
通過閱讀日志得到的數(shù)據(jù)包和加密密鑰,使用國密SM4算法軟件進(jìn)行加密,和wireshark抓到的加密包進(jìn)行比較,結(jié)果完全相同,證明算法已經(jīng)替換為了SM4國密算法。SM3算法經(jīng)過驗(yàn)證,也是正確的。
經(jīng)過對結(jié)果分析,SM3和SM4算法替換成功,已經(jīng)成功在strongSwan中添加了國密標(biāo)準(zhǔn)。
3.4 網(wǎng)關(guān)性能分析
首先測試和比較了在開發(fā)環(huán)境下,有VPN隧道和沒有VPN隧道時TCP和UDP傳輸?shù)男阅?。首要的性能指?shù)是Round-Trip Time(往返時延)[11],單位是ms。TCP一個特殊的性能指數(shù)是TCP吞吐量。UDP三個特殊的性能指標(biāo)有UDP吞吐量、網(wǎng)絡(luò)抖動時間、丟包率[11]。吞吐量單位是Mbit/s,抖動時間單位是ms。使用命令ping來測試往返時延,發(fā)送100次,結(jié)果表明,沒有VPN隧道和有VPN隧道時平均往返時間分別為1和2 ms。
在VPN網(wǎng)關(guān)上使用命令iperf測試30M帶寬下,TCP在有VPN隧道和沒有VPN隧道時的吞吐量。分別設(shè)置發(fā)送數(shù)據(jù)大小為8、128、256、512 KB。結(jié)果如表1所示。
表1 不同數(shù)據(jù)下TCP吞吐量 Mbit·S-1
由表1可知,我們可知在沒有VPN隧道的情況下,使用命令iperf讀取256 KB數(shù)據(jù)時,TCP吞吐量最大,接近為28 Mbit/s,有VPN隧道時,TCP吞吐量為19.4 Mbit/s,減少了接近31%。
分別設(shè)置測試環(huán)境中帶寬為1、10、30、50 M,使用命令iperf來測試UDP傳輸?shù)男阅堋F渲蠻DP吞吐量如表2所示。
表2 不同帶寬下UDP吞吐量 Mbit·S-1
結(jié)果表示,當(dāng)帶寬設(shè)置為50 M,沒有VPN隧道產(chǎn)生時,UDP吞吐量為29.8 Mbit/s,有VPN隧道時,UDP吞吐量為20.4 Mbit/s,減少量超過31%,而在小于30 M帶寬時,UDP吞吐量變化相對較小。
影響VPN隧道產(chǎn)生時TCP和UDP吞吐量的主要因素可能有以下幾點(diǎn):
1) 加密模塊加密程序是基于多線程設(shè)計(jì)的,每次使用都需要打開和關(guān)閉加密模塊一次,這個步驟會使實(shí)際速度不能達(dá)到理論的峰值。
2) 根據(jù)表2結(jié)果分析,吞吐量的變化量和帶寬有關(guān)系,當(dāng)帶寬為30 M時,吞吐量變化最小。
3) strongSwan程序在運(yùn)行時也會消耗一定的時間,這樣也會影響速率。
此外,用命令iperf測出的UDP抖動時間和UDP丟包率分別如表3、表4所示。
表3 不同帶寬下UDP抖動時間 ms
表4 不同帶寬下UDP丟包率 %
分析表3、表4結(jié)果可知,在VPN隧道產(chǎn)生的情況下,UDP抖動時間在減少,雖然丟包率相比無VPN隧道時有了增加,總體來說,網(wǎng)關(guān)運(yùn)行很穩(wěn)定。
本文在嵌入式平臺下實(shí)現(xiàn)VPN網(wǎng)關(guān),對系統(tǒng)內(nèi)核進(jìn)行了裁剪,去除了許多不必要的模塊,實(shí)時性相比于簡單的Linux上實(shí)現(xiàn)有較大的提高。使用開源軟件strongSwan實(shí)現(xiàn)IPSec VPN,替換了密碼算法,支持了國密標(biāo)準(zhǔn),可以滿足國家安全與經(jīng)濟(jì)發(fā)展的需求。srongSwan精簡了Openswan中IKE協(xié)商SA的過程,增強(qiáng)了安全性,提高了使用的便利性。采用硬件加密模塊,網(wǎng)關(guān)數(shù)據(jù)加解密、完整性驗(yàn)證過程都由加密模塊來完成,實(shí)現(xiàn)了端到端的加密,相比于通信鏈路加密,進(jìn)一步增強(qiáng)了安全性。根據(jù)文獻(xiàn)[11]給出的方法測試,網(wǎng)關(guān)運(yùn)行穩(wěn)定,延時小,基本符合應(yīng)用需求。在strongSwan算法庫和Linux內(nèi)核中注冊國密算法[12]而不是替換國密算法成為下一步工作的重點(diǎn)。
[1] Harkins D,Carrel D.RFC2409:The Internet Key Exch-ange (IKE) [S].1998.
[2] 劉驥宇.IKEv2協(xié)議在Linux環(huán)境下的實(shí)現(xiàn)[D].河南大學(xué),2007.
[3] Kaufman C.RFC4306:Internet Key Exchange (IKEv2) Protocol [S]. 2005.
[4] 王鳳領(lǐng).基于IPSec的VPN技術(shù)的應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(9):250-253.
[5] 鄭藝斌.基于國密標(biāo)準(zhǔn)的IPSec VPN服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2014.
[6] TI.OMAP-L137 C6000 DSP+ARM Processor Technical Reference Manual[Z]. TI:2013.
[7] 李成龍.基于 USB通信的嵌入式主從機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用[D].中南大學(xué),2013.
[8] 楊黎斌,慕德俊.基于硬件加密的嵌入式VPN網(wǎng)關(guān)實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2007,43(4):122-124.
[9] KentS.RFC4303:IP Encapsulating Security Payload(ESP) [S].IETF.2005.
[10] Fei C, Wu K, Wei C, et al. The Research and Implementation of the VPN Gateway Based on SSL[C]// Fifth International Conference on Computational and Information Sciences. IEEE, 2013:1376-1379.
[11] Du Meng.Implementation of a Host-to-Host VPN based on UDP tunnel and Open VPN Tap Interface in Java and its performance Analysis[C].International Conference on Computer Science & Education.2013:940-943.
[12] 鄧旻昊,汪海航.為IPSec添加新對稱加密算法[J].計(jì)算機(jī)安全,2008,28(1):25-27.
AN IMPLEMENTATION OF IPSEC VPN GATEWAY BASED ON STRONGSWAN
Jiang Hua1,2Li Kangkang2Hu Ronglei1
1(BeijingElectronicsScienceandTechnologyInstitute,Beijing100070,China)2(XidianUniversity,Xi’an710071,Shaanxi,China)
IPSec VPN is a technology using IPSec protocol to implement virtual private network. Aiming at the problem that the application of secret algorithm in network security product is relatively small, a VPN gateway based on the open source IPSec project strongSwan is designed. The gateway replaces strongSwan’s encryption algorithm interface with the SSX0912 encryption chip, which implements the strongSwan support for the state security standard. The modified strongSwan is transplanted to AM335x as the core of the development board in the embedded hardware environment to achieve the IPSec VPN gateway. By setting up the development environment, it is found that the gateway runs stably and has little delay. Compared with the simple Linux system, the hardware encryption module is more secure and the application range is more extensive.
Virtual private network State secret algorithm StrongSwan Embedded
2016-07-20。中央高?;究蒲袠I(yè)務(wù)費(fèi)項(xiàng)目(328201502)。蔣華,教授,主研領(lǐng)域:通信與信息安全。李康康,碩士生。胡榮磊,副研究員。
TP393.08
A
10.3969/j.issn.1000-386x.2017.07.016