嵌入式網絡SSL VPN安全技術的研究
Internet已經成為人們獲取信息、相互交流的重要渠道。嵌入式系統與Internet相結合,將嵌入式設備接入Internet是當今嵌入式應用的發展趨勢。Internet和Web服務與嵌入式系統都具有低成本、高效率的特點,把它們集成于一體具有很多潛在的優勢,如使用TCP/IP協議、HTTP協議,可以無縫連接到以太網;使用標準的Web瀏覽器,可以進行遠程監測、診斷與控制。利用嵌入式Web技術可以實現基于Internet的遠程數據采集、遠程控制、自動報警等功能,大大擴展了嵌入式系統的應用范圍,同時能充分利用網絡資源,實現更廣泛的信息共享和更多的信息服務。
嵌入式Internet解決了終端設備的網絡化問題,然而Internet提供的網絡環境并不保障接入系統的安全性,嵌入式Internet的安全問題直接關系到嵌入式Internet的發展及其應用前景,因此在設計嵌入式Internet系統的時候,必須把嵌入式Internet通信的安全問題放到重要的地位考慮。在嵌入式網絡系統需要解決以下幾個方面:
1)許多Web服務器不僅要存取數據,也提供了對設備、機器、甚至是工廠的控制,這意味著如果嵌入式系統出現問題,就會危及設備或工廠,其結果不僅僅是失去信息,更致命的是失去控制。這要求在嵌入式環境低成本的基礎上提供高級別的安全水平。
2)數據通過公共的Internet網傳輸,隨時面臨被攻擊的危險。
3)許多嵌入式系統需要連續運轉幾個月,幾年,甚至是十幾年,這對系統的穩定性提出了極其嚴格的要求,因此它必須保證在任何情況下長時間的穩定運行。
4)嵌入式系統大多會受到資源的嚴格限制,但隨著嵌入式處理器及其它硬件性能的不斷提高,使應用復雜的網絡安全協議成為可能。
目前流行的兩類Internet遠程安全接入技術是SSLVPN與IPSecVPN,它們具有類似的功能特性,但也存在一些不同。IPSecVPN提供完整的網絡層連接功能,是實現專用網安全連接的最佳選項。IPSecVPN需要軟件客戶端支撐,它不支持公共Internet站點接入,但能實現Web或非Web類企業應用訪問。而SSLVPN的“零客戶端”架構特別適合于遠程用戶連接,用戶可通過任何Web瀏覽器訪問企業網Web應用。但是SSLVPN只對通信雙方的某個應用通道進行加密,而不對通信雙方的整個通道進行加密,這樣SSLVPN也存在一定安全風險。對實現的可行性和運行開銷進行比較,顯然SSLVPN更適合于使用Internet和Web服務的嵌入式系統。
2SSLVPN
2.1VPN介紹
VPN(VirtualPrivateNetwork,虛擬專用網),是指在公共網絡上建立專用網絡的技術。VPN網絡的任意兩個結點之間的連接并沒有傳統專網所需的點到點的物理鏈路,而是架構在公用網絡服務商ISP提供的網絡平臺之上的邏輯網絡。用戶的數據通過ISP在公共網絡中建立邏輯隧道(即點到點的虛擬專線)進行傳輸,并通過相應的加密和認證技術來保證用戶內部網絡數據在公網上的安全傳輸,從而真正實現網絡數據傳輸的專有性,并使安全性得以保證。
2.2SSL協議
SSL協議是基于Web應用的安全協議,它指定了在應用程序協議(如:HTTP、Telnet、FTP等)和TCP/IP協議之間進行數據交換的安全機制,為TCP/IP連接提供數據加密、服務器認證以及可選的客戶機認證。SSL能在TCP/IP和應用層間無縫實現Internet協議棧處理,而對其他協議層不產生任何影響。
作為應用層協議,SSL使用公開密鑰體制和X.509數字證書技術保護信息傳輸的機密性和完整性。SSL協議由SSL握手層、記錄層兩層協議組成:上層為握手層,包括SSL握手協議、SSL修改密文協議,SSL告警協議和應用數據協議;下層為SSL記錄協議,具體結構如圖1所示。它們共同為應用訪問連接提供認證、加密和防篡改功能。SSL握手協議主要是用于服務器和客戶之間的相互認證,協商加密算法和MAC算法,并用于生成在SSL記錄中發送的加密密鑰。SSL警告協議主要為對等實體傳遞與SSL相關的告警信息。SSL記錄協議則是為各種高層協議提供基本的安全服務。
圖1SSL協議棧
握手協議在SSL數據傳輸中具有重要的作用,通過握手協議可實現數據的加密和身份驗證,確保端到端的安全傳輸,能有效阻止外部對Web的攻擊。
2.3SSLVPN
SSLVPN通過SSL協議,利用PKI的證書體系,在傳輸過程中使用DES、3DES、AES、RSA、MD5、SHA1等多種密碼算法保證數據的機密性、完整性、不可否認性,實現在Internet上進行安全的信息交換。如今幾乎所有的瀏覽器都內建有SSL功能,它正成為企業應用、無線接入設備、Web服務以及安全接入管理的關鍵協議。
基于SSL的VPN為嵌入式系統提供了許多有利條件,主要有:
1)可以使用標準的軟件(如:Web瀏覽器)對嵌入式系統進行訪問。
2)SSL允許在嵌入式系統中沒有存儲口令的情況下進行客戶鑒定。這特別有益于需要進行遠程操作的嵌入式系統。
3)SSL提供了多種加密標準,系統設計者可以在安全風險、加密強度之間進行平衡。
4)SSL提供了客戶端和服務器端的認證。
SSLVPN的核心是SSL協議,目前已有多種基于標準SSL協議實現的工具箱,但因其龐大的數據結構、功能全面的系統管理而無法在嵌入式環境下很好地運行。另一個主要缺陷是產生對稱密鑰需要大量計算且不能由簡單有效的硬件來實現;另外,設計系統時,要充分考慮對客戶端的認證,因此必須對常規的SSL協議進行針對性的裁剪與優化,以適應嵌入式應用的需要。
3SSL嵌入式優化設計
為保證在有限的嵌入式資源環境下使用SSL技術,必須要對標準SSL協議進行裁剪與優化。優化的主要方面有:重新設計SSL內部模塊,引入會話重用模塊;采用只對服務器單向認證的RSA模式;對加密算法進行選擇,使之適應嵌入式計算的特點。
3.1會話重用
SSL協議的核心是握手協議,其連接過程如圖2所示:
圖2SSL協議握手過程
從上述的SSL連接流程不難看出SSL握手過程中需要耗費較多的系統時間(CPU處理)和空間(內存),所以利用會話重用實現服務器和瀏覽器的再次SSL連接,對于嵌入式瀏覽器十分必要。
會話重用的過程是:客戶與服務器通過完整的握手過程建立第一次會話,然后握手雙方將該會話保存。當客戶采用會話重用時,則將session_id作為本次會話的session_id,否則置空。服務器收到客戶的client_hello消息后,查看session_id,如果為空則不進行會話重用,服務器生成新session_id,在server_hello中發給客戶,否則服務器從session_id中查找session_id會話,并恢復該會話參數作為當前參數。客戶收到server_hello消息后,檢驗服務器發來session_id是否與重用session_id一致,一致則會話重用,否則雙方重新協商會話參數。通過會話重用,服務器和瀏覽器就可以省略公鑰和認證操作,還可以重用以前的私鑰。
3.2單向認證
單向SSL服務器認證。作為SSL客戶端運行的應用程序,能夠驗證作為SSL服務器運行的應用程序的身份,而不提供反向的認證。這樣可以將客戶端認證的步驟去掉,減少握手次數以降低系統開銷,并節省了使用PKI對授權用戶分發證明,同時也能夠滿足大多數實際應用對安全的要求。
3.3算法選擇
在SSL握手過程中,服務器CPU時間大部分用在解密私用密鑰和計算主密鑰上,同時SSL連接性能在很大程度上也依賴于使用的算法,因此算法對嵌入式系統中的SSL有重要的影響。在嵌入式瀏覽器上,可以選擇512位RSA公鑰算法,RSA模式只對服務器進行認證,可減少握手次數;采用適合嵌入式環境的對稱加密算法RC4-128對所傳輸的數據進行加密;創建信息鑒定碼的摘要算法,可采用運行速度最快的哈希函數MD5128來計算消息檢驗碼MAC。
4SSLVPN應用方案與實現
我們設計了基于SSLVPN技術的應用方案,構架了SSL協議的實現體。其實現原理為:在客戶端和服務器之間通過協商,采用RSA算法加密,建立起安全通道,在此通道內傳輸的信息經過RC4加密運算,保證數據的機密性;利用MD5函數對所傳輸的信息提取消息驗證碼,確保信息的完整性;利用證書交換技術,實現客戶端和服務器的識別和認證,實現身份的可認證性。
該方案可分為客戶端和服務器端兩個部分實現SSL協議,其程序框架如下:
傳輸過程中需要的證書和密鑰文件:
1)生成服務器端的私鑰(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做消息摘要(先進行MD5運算,后進行RC4加密),由SSL_CTX_set_cipher_list(ctx,"RC4-MD5")實現。
我們在S3C2410硬件平臺的嵌入式LinuxWeb瀏覽器應用中,實現了上述SSL優化方案。實際應用測試的結果,符合我們的設計目標。在嵌入式產品中使用精簡優化后的SSL是切實可行的方案,通過簡化握手流程、減少新連接的次數、會話重用、精選加密算法等方法,使之更適合嵌入式系統的實際應用。其不足是SSLVPN在現階段只能訪問基于Web的應用,遠程用戶還不能進行基于非Web界面的應用。此外,由于SSLVPN并不對通信雙方的整個通道進行加密,只能為訪問資源提供有限的安全保障,在Web頁面中呈現的文件,無法保證只出現類似于上傳文件和郵件附件等簡單的文件,這樣就很難保證其它文件不被暴露在外部,存在一定的安全隱患。這是SSLVPN面臨的一個挑戰,也是我們今后要重點研究并解決的問題。
5結束語
嵌入式系統處理器和其它硬件性能的提升,使得基于SSL和TLS的VPN變為可能,SSL采用通信數據加密、身份驗證等安全技術,較好地保證了數據傳送過程中的保密性、身份鑒別、不可否認和完整性,防止了竊聽、欺騙、篡改、會話劫持等多種Web攻擊手段。隨著嵌入式網絡安全的重要性越發突出,相信SSLVPN的應用將更加廣泛。
【編輯推薦】