張一
(中國電子科技集團公司第三十研究所,四川成都 610041)
隨著計算機網(wǎng)絡(luò)快速發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為企業(yè)用戶主要的通信網(wǎng)絡(luò),如何保證通信信息的安全,免遭竊聽和篡改,通過IPSec VPN可以實現(xiàn)數(shù)據(jù)的完整性和機密性保護(hù)。IPSec要求在發(fā)送數(shù)據(jù)之前先在站點網(wǎng)絡(luò)安全設(shè)備之間建立隧道,網(wǎng)絡(luò)安全設(shè)備在大容量并發(fā)用戶數(shù)進(jìn)行協(xié)商并協(xié)商成功所需要的時間,以及安全網(wǎng)絡(luò)設(shè)備在單位時間內(nèi)所能協(xié)商建立的隧道數(shù)目,即建立隧道速率(Tunnel Setup Rate),是各生產(chǎn)廠家用以區(qū)別自己的產(chǎn)品與其他同類競爭產(chǎn)品的一個關(guān)鍵衡量標(biāo)準(zhǔn),對于一款安全網(wǎng)絡(luò)設(shè)備來說,隧道容量和隧道建立速率尤其重要。
科技在發(fā)展,用戶需求也是日新月異,產(chǎn)品研發(fā)技術(shù)也一直在不斷的發(fā)展變化,測試技術(shù)也要同步發(fā)展,不僅要積累成熟經(jīng)驗,還要引入更加先進(jìn)的測試技術(shù)和方法,不斷研究創(chuàng)新,本文主要針對IPsec協(xié)議中隧道容量和隧道建立速率兩個方面內(nèi)容,介紹了一種性能測試方法。
IPSec(IP Security)是一個集合了多種標(biāo)準(zhǔn)的體系結(jié)構(gòu)。這些標(biāo)準(zhǔn)在網(wǎng)絡(luò)層為IPv4、IPv6[RFC4301]以及移動IPv6[RFC4877]提供數(shù)據(jù)源認(rèn)證、完整性、機密性以及訪問控制。它還為兩個通信的實體提供一種交換密鑰的方法、一個加密套件以及一種標(biāo)記使用壓縮的方法。
IPsec的操作可分為建立階段與數(shù)據(jù)交換階段。建立階段負(fù)責(zé)交換密鑰材料并建立安全關(guān)聯(lián)(Security Association,SA),此階段主要通過因特網(wǎng)密鑰交換(Internet Key Exchange,IKE)協(xié)議實現(xiàn)。數(shù)據(jù)交換階段會使用不同類型的封裝架構(gòu),稱為認(rèn)證頭(Authentication Heather,AH)與封裝安全負(fù)載(Encapsulating Security Payload,ESP),如圖1所示。
圖1 IPSec架構(gòu)圖Fig.1 IPSec architecture diagram
認(rèn)證頭協(xié)議AH是由RFC2402定義的,該協(xié)議可以提供無連接的數(shù)據(jù)源驗證、數(shù)據(jù)完整性和抗重放攻擊服務(wù)(通過其報文頭中的序列號進(jìn)行抗重放判斷)。數(shù)據(jù)完整性主要是基于消息驗證碼MAC來實現(xiàn)的,通過共享密鑰對整個數(shù)據(jù)報計算散列值[2]。
封裝安全載荷ESP是由RFC2406定義,該協(xié)議不僅可以提供無連接的數(shù)據(jù)來源認(rèn)證、數(shù)據(jù)的完整性和抗重放攻擊服務(wù),還可以對數(shù)據(jù)包和數(shù)據(jù)流進(jìn)行加密,提供機密性服務(wù)[2]。
密鑰交換協(xié)議IKE主要是用來實現(xiàn)安全協(xié)議的安全參數(shù)的協(xié)商,其中有加密及鑒別密鑰、加密及鑒別算法、密鑰的生存周期、通信的保護(hù)模式等,并將協(xié)商的結(jié)果保存在SA中,為后續(xù)數(shù)據(jù)交換使用[2]。
IKE是一種混合型協(xié)議,由RFC2409定義,使用了部分Internet安全關(guān)聯(lián)和密鑰管理協(xié)議(ISAKMP)、部分密鑰交換協(xié)議(Oakley)和安全密鑰交換機制(SKEME),基于UDP(User Datagram Protocol)500端口號用于動態(tài)驗證IPSec通信雙方之間協(xié)商安全服務(wù)和建立安全關(guān)聯(lián),以及生成安全密鑰。
采用IKE協(xié)商安全聯(lián)盟主要分為兩個階段:第一階段通信雙方協(xié)商和建立IKE協(xié)議本身使用的安全通道,建立一個IKE SA;第二階段利用第一階段已通過認(rèn)證和安全保護(hù)的安全通道,建立一對用于數(shù)據(jù)安全傳輸?shù)腎PSec安全聯(lián)盟。
IKE第一階段支持兩種協(xié)商模式,分別為主模式(Main Mode)和積極模式(Aggressive Mode)。
主模式主要進(jìn)行三次交換,包含6條信息,其中消息1和消息2為策略協(xié)商,并交換雙方的cookie和SA載荷;消息3和消息4為Diffie-Hellman交換和偽隨機值nonce交換,交換后生成密鑰SKEYID;消息5和消息6為協(xié)商雙方交換標(biāo)識載荷和散列載荷,進(jìn)行身份驗證,如圖2所示。
圖2 主模式的協(xié)商過程Fig.2 Negotiation process of main mod
積極模式只有三條消息,消息1主要為發(fā)起方策略和密鑰生成信息,包括Diffie-Hellman、偽隨機值nonce和五元組,消息2為回應(yīng)接收方的密鑰生成信息和身份驗證數(shù)據(jù),消息3發(fā)送發(fā)起方身份驗證信息。積極模式安全性較低,但協(xié)商速度快,如圖3所示。
IKE第二階段可以由通信的雙方中的任一方發(fā)起,主要為協(xié)商IPSec SA使用的安全參數(shù),創(chuàng)建IPSec SA,使用AH或ESP來對IP數(shù)據(jù)流加密,保護(hù)通信數(shù)據(jù)內(nèi)容。
在使用LoadRunner進(jìn)行并發(fā)測試之前,使用兩臺安全網(wǎng)絡(luò)設(shè)備進(jìn)行子網(wǎng)規(guī)劃建立網(wǎng)絡(luò)規(guī)則,進(jìn)行密鑰協(xié)商建立隧道,生成協(xié)商包,通過修改網(wǎng)絡(luò)設(shè)備腳本,將協(xié)商包保存本地使用,通過對網(wǎng)絡(luò)安全設(shè)備的程序做一定的修改,對協(xié)商過程中進(jìn)行抗重放判斷的代碼進(jìn)行修改,關(guān)閉抗重放功能。測試原理為通過LoadRunner模擬其中一端網(wǎng)絡(luò)設(shè)備,按照已經(jīng)生成的網(wǎng)絡(luò)規(guī)則進(jìn)行IKE協(xié)商,模擬網(wǎng)絡(luò)設(shè)備調(diào)用已生成的協(xié)商包進(jìn)行并發(fā)協(xié)商,對協(xié)商過程進(jìn)行測試。
前期準(zhǔn)備主要為協(xié)商文件和LoadRunner腳本,腳本主要分為三部分:分別為Vuser_init,Action,Data.ws三個腳本。
Vuser_init:主要為模擬用戶初始化腳本;此腳本主要模擬網(wǎng)絡(luò)設(shè)備加載協(xié)商包文件,從本地指定路徑讀取相應(yīng)的數(shù)據(jù)文件。
Action:主要處理協(xié)商包發(fā)送、接收腳本;通過建立網(wǎng)絡(luò)連接,模擬網(wǎng)絡(luò)設(shè)備進(jìn)行協(xié)商包發(fā)送和接收,并對接收到的協(xié)商包進(jìn)行判斷處理,在處理過程中根據(jù)協(xié)議測試內(nèi)容設(shè)置相關(guān)事務(wù)數(shù),并對各個所要測試的指標(biāo)按照事務(wù)數(shù)進(jìn)行統(tǒng)計處理;代碼在建立網(wǎng)絡(luò)連接創(chuàng)建套接字時作為一個事務(wù)開始,設(shè)置函數(shù)lr_start_action(),在斷開網(wǎng)絡(luò)連接關(guān)閉套接字作為事務(wù)結(jié)束,設(shè)置函數(shù)lr_end_action(),通過開始事務(wù)和結(jié)束事務(wù),方便對協(xié)商速率和協(xié)商時間等指標(biāo)進(jìn)行統(tǒng)計。此處主要實現(xiàn)兩種模式,一種為測試在大容量并發(fā)用戶數(shù)進(jìn)行協(xié)商并協(xié)商成功所需要的時間,另一種為測試網(wǎng)絡(luò)設(shè)備單位時間內(nèi)并發(fā)能力即建立隧道速率。
Data.ws:主要定義協(xié)商包大小,根據(jù)不同網(wǎng)絡(luò)設(shè)備定義協(xié)商包文件屬性。
圖4 測試環(huán)境拓?fù)鋱DFig.4 Test environment topology diagram
LoadRunner服務(wù)器配置網(wǎng)絡(luò)參數(shù)與模擬發(fā)包網(wǎng)絡(luò)設(shè)備端一致,配置LoadRunner用戶數(shù),選擇相應(yīng)腳本,配置場景。
2.2.1 隧道建立速率測試
測試網(wǎng)絡(luò)設(shè)備在單位時間內(nèi)所能建立的隧道數(shù)量。
(1)配置LoadRunner腳本,根據(jù)每秒啟動用戶數(shù)和總并發(fā)用戶數(shù)設(shè)置協(xié)商結(jié)束等待時間;
(2)設(shè)置LoadRunner參數(shù),設(shè)置每秒啟動用戶數(shù)和運行時間;
(3)配置網(wǎng)絡(luò)設(shè)備,將協(xié)商過程中SA的更新周期關(guān)閉,或設(shè)置更新周期大于測試時間,防止在測試過程中出現(xiàn)密鑰更新的情況;
(4)如果隧道發(fā)生故障,則降低每秒啟動用戶數(shù)和調(diào)整等待時間;
通過調(diào)整每秒啟動用戶數(shù),得出不同啟動用戶數(shù)情況下的每秒事務(wù)數(shù),進(jìn)而得到網(wǎng)絡(luò)設(shè)備隧道建立速率最優(yōu)值。
2.2.2 隧道容量測試
本測模式實際使用場景,測試大容量用戶同時向中心網(wǎng)絡(luò)設(shè)備發(fā)起協(xié)商并協(xié)商成功所需要的時間。
測試步驟:
(1)配置LoadRunner腳本,設(shè)置每次隧道協(xié)商建立以后即關(guān)閉;
(2)設(shè)置LoadRunner參數(shù),根據(jù)隧道建立速率設(shè)置每秒啟動用戶數(shù);
(3)配置網(wǎng)絡(luò)設(shè)備,將協(xié)商過程中SA的更新周期關(guān)閉,或設(shè)置更新周期大于測試時間,防止在測試過程中出現(xiàn)密鑰更新的情況;
(4)如果協(xié)商失敗或者隧道發(fā)生異常,可以通過增加協(xié)商建立隧道重試次數(shù)或者減少每秒啟動用戶數(shù)降低隧道建立速率來調(diào)整。
2.2.3 測試結(jié)果
通過調(diào)整每秒啟動用戶數(shù)和隧道重試次數(shù),得到建立不同隧道容量所需要的協(xié)商時間。
本文結(jié)合IPsec協(xié)議族的特點以及應(yīng)用,通過對IPsec-IKE兩個階段協(xié)商的過程進(jìn)行分析,利用性能測試工具LoadRunner模擬協(xié)商報文的構(gòu)造方法,處理流程,設(shè)計了一種對IPsec協(xié)議中IKE協(xié)議進(jìn)行并發(fā)性能測試的新方法,詳細(xì)描述了該測試方法和步驟,這種方法的優(yōu)點是測試數(shù)據(jù)和腳本以及測試環(huán)境構(gòu)造快速方便,可以代替人工測試,很大程度上提高了測試效率。