圖1SSL協(xié)議棧

握手協(xié)議在SSL數(shù)據(jù)傳輸中具有重要的作用,通過握手協(xié)議可實(shí)現(xiàn)數(shù)據(jù)的加密和身份驗(yàn)證,確保端到端的安全傳輸,能有效阻止外部對Web的攻擊。

2.3SSLVPN

SSLVPN通過SSL協(xié)議,利用PKI的證書體系,在傳輸過程中使用DES、3DES、AES、RSA、MD5、SHA1等多種密碼算法保證數(shù)據(jù)的機(jī)密性、完整性、不可否認(rèn)性,實(shí)現(xiàn)在Internet上進(jìn)行安全的信息交換。如今幾乎所有的瀏覽器都內(nèi)建有SSL功能,它正成為企業(yè)應(yīng)用、無線接入設(shè)備、Web服務(wù)以及安全接入管理的關(guān)鍵協(xié)議。

基于SSL的VPN為嵌入式系統(tǒng)提供了許多有利條件,主要有:

1)可以使用標(biāo)準(zhǔn)的軟件(如:Web瀏覽器)對嵌入式系統(tǒng)進(jìn)行訪問。

2)SSL允許在嵌入式系統(tǒng)中沒有存儲口令的情況下進(jìn)行客戶鑒定。這特別有益于需要進(jìn)行遠(yuǎn)程操作的嵌入式系統(tǒng)。

3)SSL提供了多種加密標(biāo)準(zhǔn),系統(tǒng)設(shè)計(jì)者可以在安全風(fēng)險(xiǎn)、加密強(qiáng)度之間進(jìn)行平衡。

4)SSL提供了客戶端和服務(wù)器端的認(rèn)證。

SSLVPN的核心是SSL協(xié)議,目前已有多種基于標(biāo)準(zhǔn)SSL協(xié)議實(shí)現(xiàn)的工具箱,但因其龐大的數(shù)據(jù)結(jié)構(gòu)、功能全面的系統(tǒng)管理而無法在嵌入式環(huán)境下很好地運(yùn)行。另一個主要缺陷是產(chǎn)生對稱密鑰需要大量計(jì)算且不能由簡單有效的硬件來實(shí)現(xiàn);另外,設(shè)計(jì)系統(tǒng)時(shí),要充分考慮對客戶端的認(rèn)證,因此必須對常規(guī)的 SSL協(xié)議進(jìn)行針對性的裁剪與優(yōu)化,以適應(yīng)嵌入式應(yīng)用的需要。

3SSL嵌入式優(yōu)化設(shè)計(jì)

為保證在有限的嵌入式資源環(huán)境下使用SSL技術(shù),必須要對標(biāo)準(zhǔn)SSL協(xié)議進(jìn)行裁剪與優(yōu)化。優(yōu)化的主要方面有:重新設(shè)計(jì)SSL內(nèi)部模塊,引入會話重用模塊;采用只對服務(wù)器單向認(rèn)證的RSA模式;對加密算法進(jìn)行選擇,使之適應(yīng)嵌入式計(jì)算的特點(diǎn)。

3.1會話重用

SSL協(xié)議的核心是握手協(xié)議,其連接過程如圖2所示:

圖2SSL協(xié)議握手過程

從上述的SSL連接流程不難看出SSL握手過程中需要耗費(fèi)較多的系統(tǒng)時(shí)間(CPU處理)和空間(內(nèi)存),所以利用會話重用實(shí)現(xiàn)服務(wù)器和瀏覽器的再次SSL連接,對于嵌入式瀏覽器十分必要。

會話重用的過程是:客戶與服務(wù)器通過完整的握手過程建立第一次會話,然后握手雙方將該會話保存。當(dāng)客戶采用會話重用時(shí),則將session_id作 為本次會話的session_id,否則置空。服務(wù)器收到客戶的client_hello消息后,查看session_id,如果為空則不進(jìn)行會話重用, 服務(wù)器生成新session_id,在server_hello中發(fā)給客戶,否則服務(wù)器從session_id中查找session_id會話,并恢復(fù)該 會話參數(shù)作為當(dāng)前參數(shù)??蛻羰盏絪erver_hello消息后,檢驗(yàn)服務(wù)器發(fā)來session_id是否與重用session_id一致,一致則會話重 用,否則雙方重新協(xié)商會話參數(shù)。通過會話重用,服務(wù)器和瀏覽器就可以省略公鑰和認(rèn)證操作,還可以重用以前的私鑰。

3.2單向認(rèn)證

單向SSL服務(wù)器認(rèn)證。作為SSL客戶端運(yùn)行的應(yīng)用程序,能夠驗(yàn)證作為SSL服務(wù)器運(yùn)行的應(yīng)用程序的身份,而不提供反向的認(rèn)證。這樣可以將客戶端認(rèn) 證的步驟去掉,減少握手次數(shù)以降低系統(tǒng)開銷,并節(jié)省了使用PKI對授權(quán)用戶分發(fā)證明,同時(shí)也能夠滿足大多數(shù)實(shí)際應(yīng)用對安全的要求。

3.3算法選擇

在SSL握手過程中,服務(wù)器CPU時(shí)間大部分用在解密私用密鑰和計(jì)算主密鑰上,同時(shí)SSL連接性能在很大程度上也依賴于使用的算法,因此算法對嵌入 式系統(tǒng)中的SSL有重要的影響。在嵌入式瀏覽器上,可以選擇512位RSA公鑰算法,RSA模式只對服務(wù)器進(jìn)行認(rèn)證,可減少握手次數(shù);采用適合嵌入式環(huán)境 的對稱加密算法RC4-128對所傳輸?shù)臄?shù)據(jù)進(jìn)行加密;創(chuàng)建信息鑒定碼的摘要算法,可采用運(yùn)行速度最快的哈希函數(shù)MD5128來計(jì)算消息檢驗(yàn)碼MAC。

4SSLVPN應(yīng)用方案與實(shí)現(xiàn)

我們設(shè)計(jì)了基于SSLVPN技術(shù)的應(yīng)用方案,構(gòu)架了SSL協(xié)議的實(shí)現(xiàn)體。其實(shí)現(xiàn)原理為:在客戶端和服務(wù)器之間通過協(xié)商,采用RSA算法加密,建立起 安全通道,在此通道內(nèi)傳輸?shù)男畔⒔?jīng)過RC4加密運(yùn)算,保證數(shù)據(jù)的機(jī)密性;利用MD5函數(shù)對所傳輸?shù)男畔⑻崛∠Ⅱ?yàn)證碼,確保信息的完整性;利用證書交換技 術(shù),實(shí)現(xiàn)客戶端和服務(wù)器的識別和認(rèn)證,實(shí)現(xiàn)身份的可認(rèn)證性。

該方案可分為客戶端和服務(wù)器端兩個部分實(shí)現(xiàn)SSL協(xié)議,其程序框架如下:

傳輸過程中需要的證書和密鑰文件:

1)生成服務(wù)器端的私鑰(key文件):opensslgenrsa-des3-outserver.key512;

2)生成證書簽署請求CSR:opensslreq-new-keyserver.key-outserver.csr;

3)生成CA的key文件:openssl-des3-outca.key1024;

4)生成CA自簽名證書:opensslreq-new-x509-keyca.key-outca.crt;

5)用生成的CA的證書為剛才生成的server.csr,client.csr文件簽名:./sigh.shserver.csr。

在程序中我們選用RC4做加密,MD5做消息摘要(先進(jìn)行MD5運(yùn)算,后進(jìn)行RC4加密),由SSL_CTX_set_cipher_list(ctx,"RC4-MD5")實(shí)現(xiàn)。

我們在S3C2410硬件平臺的嵌入式LinuxWeb瀏覽器應(yīng)用中,實(shí)現(xiàn)了上述SSL優(yōu)化方案。實(shí)際應(yīng)用測試的結(jié)果,符合我們的設(shè)計(jì)目標(biāo)。在嵌入 式產(chǎn)品中使用精簡優(yōu)化后的SSL是切實(shí)可行的方案,通過簡化握手流程、減少新連接的次數(shù)、會話重用、精選加密算法等方法,使之更適合嵌入式系統(tǒng)的實(shí)際應(yīng) 用。其不足是SSLVPN在現(xiàn)階段只能訪問基于Web的應(yīng)用,遠(yuǎn)程用戶還不能進(jìn)行基于非Web界面的應(yīng)用。此外,由于SSLVPN并不對通信雙方的整個通 道進(jìn)行加密,只能為訪問資源提供有限的安全保障,在Web頁面中呈現(xiàn)的文件,無法保證只出現(xiàn)類似于上傳文件和郵件附件等簡單的文件,這樣就很難保證其它文 件不被暴露在外部,存在一定的安全隱患。這是SSLVPN面臨的一個挑戰(zhàn),也是我們今后要重點(diǎn)研究并解決的問題。

5結(jié)束語

嵌入式系統(tǒng)處理器和其它硬件性能的提升,使得基于SSL和TLS的VPN變?yōu)榭赡?,SSL采用通信數(shù)據(jù)加密、身份驗(yàn)證等安全技術(shù),較好地保證了數(shù)據(jù) 傳送過程中的保密性、身份鑒別、不可否認(rèn)和完整性,防止了竊聽、欺騙、篡改、會話劫持等多種Web攻擊手段。隨著嵌入式網(wǎng)絡(luò)安全的重要性越發(fā)突出,相信 SSLVPN的應(yīng)用將更加廣泛。

分享到

zhangcun

相關(guān)推薦