舒曉飛,蔣念平
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海200093)
基于SSLVPN的密鑰分配的安全性分析
舒曉飛,蔣念平
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海200093)
針對(duì)SSL VPN協(xié)議中密鑰分配存在安全隱患的問(wèn)題,采用Openssl和Wireshark抓包軟件,對(duì)SSL協(xié)議以及密鑰管理的安全性進(jìn)行了分析。針對(duì)分析的結(jié)果,提出采用量子密鑰分配技術(shù)解決SSL VPN密鑰分配過(guò)程中安全隱患問(wèn)題,盡可能少的對(duì)原協(xié)議的修改,通過(guò)對(duì)密鑰的獲取和替換,給出合理的實(shí)現(xiàn)方案,提高數(shù)據(jù)傳輸?shù)陌踩浴?/p>
SSL VPN;SSL協(xié)議;Openssl;Wireshark;密鑰分配;量子密鑰
互聯(lián)網(wǎng)技術(shù)的發(fā)展,致使人們對(duì)信息安全有了更多的要求。SSL VPN(Security Socket Layer Virtual Private Network)技術(shù)具有廉價(jià)、易于安裝和管理以及細(xì)粒度的訪問(wèn)控制等優(yōu)點(diǎn)[1]。自該項(xiàng)技術(shù)被開(kāi)發(fā)以來(lái),就成為當(dāng)前主要解決方案。SSL VPN是網(wǎng)絡(luò)應(yīng)用層的一種遠(yuǎn)程訪問(wèn)技術(shù),不僅基于自身成熟的SSL協(xié)議,而且可以滿足大多數(shù)網(wǎng)絡(luò)用戶的需求,近年在企業(yè)網(wǎng)中得到了廣泛應(yīng)用[2]。目前主要的SSL VPN方案與產(chǎn)品都是依賴于SSL協(xié)議的握手協(xié)議實(shí)現(xiàn)密鑰管理,大幅降低了配置和管理上的復(fù)雜性。SSL VPN 作為一種安全技術(shù),在實(shí)際應(yīng)用中還存在一些安全隱患。作為一種確保信息安全傳輸?shù)闹匾獢?shù)據(jù)傳輸技術(shù),為了實(shí)現(xiàn)更高的安全性,文中主要對(duì) SSL VPN 協(xié)議中密鑰分配優(yōu)缺點(diǎn)和安全問(wèn)題做一個(gè)綜述性的介紹,并且給出了相應(yīng)的解決方案。
虛擬專用網(wǎng)絡(luò)(Virtual Private Network,VPN),是通過(guò)公用網(wǎng)絡(luò)建立起來(lái)一個(gè)臨時(shí)的、有安全保障的通道,是一條通過(guò)公用網(wǎng)絡(luò)搭建起來(lái)的相對(duì)安全并且穩(wěn)定的隧道[3]。VPN在公共網(wǎng)絡(luò)中單獨(dú)的建立私人通道,在數(shù)據(jù)的傳送過(guò)程中,通過(guò)隧道技術(shù)確保其不會(huì)被竊取。簡(jiǎn)而言之,就是在復(fù)雜和不安全的公有網(wǎng)絡(luò)上建立起的安全和信任的私有網(wǎng)絡(luò)[4]。以O(shè)SI模型參照標(biāo)準(zhǔn),不同的VPN技術(shù)可以在不同的OSI協(xié)議層實(shí)現(xiàn)[5]如圖1所示。
圖1 VPN在不同OSI層次中的實(shí)現(xiàn)
SSL VPN是嵌入在瀏覽器里,不同于IPSec VPN需要對(duì)每臺(tái)客戶機(jī)安裝客戶端軟件才能使用。瀏覽器先是與SSL VPN瀏覽器進(jìn)行連接,接著將利用對(duì)網(wǎng)絡(luò)進(jìn)行封包并轉(zhuǎn)向的辦法,使用者能夠在異地運(yùn)行該應(yīng)用程序時(shí),并讀取服務(wù)器里的數(shù)據(jù)。SSL介于應(yīng)用層和TCP層之間,如圖2所示。應(yīng)用層數(shù)據(jù)不再直接傳遞給傳輸層,而是傳遞給SSL層,SSL協(xié)議是基于WEB應(yīng)用的安全協(xié)議,能保證數(shù)據(jù)的真實(shí)性、完整性和機(jī)密性[6]。
圖2 SSL在協(xié)議中的位置
作為安全產(chǎn)品,SSL VPN利用了對(duì)稱密碼技術(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的加密,非對(duì)稱加密技術(shù)實(shí)現(xiàn)密鑰的交換,利用PKI技術(shù)作為整個(gè)系統(tǒng)認(rèn)證的基礎(chǔ),通過(guò)這些密碼技術(shù),實(shí)現(xiàn)了通信安全的3個(gè)主要目標(biāo):即消息的完整、保密性、對(duì)端點(diǎn)的認(rèn)證[7]。
SSL協(xié)議的目的是為了客戶端和服務(wù)端經(jīng)過(guò)加密的SSL信道搭建起更有保障和穩(wěn)定的傳輸通道。它是分層的協(xié)議。在每一層協(xié)議里,包含了消息的長(zhǎng)度,已經(jīng)描述的內(nèi)容。SSL主要包含兩個(gè)協(xié)議:握手協(xié)議和記錄協(xié)議。握手協(xié)議是為通信雙方建立會(huì)話通道;記錄協(xié)議是對(duì)數(shù)據(jù)進(jìn)行封裝。圖3為SSL協(xié)議的結(jié)構(gòu)示意。
圖3 SSL協(xié)議結(jié)構(gòu)
SSL VPN自問(wèn)世以來(lái),雖然因其對(duì)數(shù)據(jù)有著較好的安全保障,而得到了廣泛的應(yīng)用,但是其安全性是有條件的[8]。隨著計(jì)算機(jī)性能的提升,算法就會(huì)有可能被破解,因此其本身依然存在著安全隱患。2014年,Openssl就被谷歌一工程師發(fā)現(xiàn)了轟動(dòng)世界的Heartbleed漏洞。
SSL協(xié)議中最重要的就是握手協(xié)議,握手協(xié)議是客戶機(jī)和服務(wù)器用SSL連接通信時(shí)使用的第一個(gè)子協(xié)議[9]。SSL握手是在SSL協(xié)議的第一階段建立的,經(jīng)過(guò)了SSL握手,客戶端和服務(wù)端就會(huì)互相認(rèn)證身份并且建立起連接,同時(shí)明確了加密需要的算法以及將要用到的會(huì)話密鑰。握手協(xié)議的過(guò)程如圖4所示。
圖4 握手協(xié)議過(guò)程
首先客戶端會(huì)給服務(wù)端發(fā)送一個(gè)Client hello消息,消息內(nèi)容包含:客戶端能夠支持SSL的最高版本號(hào);一個(gè)用于生成主秘密(Master-secret)的32字節(jié)的隨機(jī)數(shù)[10];一個(gè)確定會(huì)話的會(huì)話ID;一個(gè)客戶端可以支持的密碼套件列表以及壓縮算法列表。其中密碼套件列表包含:密鑰交換算法、加密算法、散列算法。接著服務(wù)端就會(huì)返回給客戶端一個(gè)Server hello消息,消息內(nèi)容包含的內(nèi)容與Client hello一樣。
接下來(lái)服務(wù)端先發(fā)送一個(gè)服務(wù)器證書(shū),客戶端對(duì)服務(wù)端發(fā)來(lái)的證書(shū)會(huì)進(jìn)行一系列驗(yàn)證,并從證書(shū)中抽取出來(lái)服務(wù)器中包含的公共密鑰,客戶端用這個(gè)公共密鑰將產(chǎn)生一個(gè)預(yù)共享密鑰Pre-master-secret,并利用這個(gè)預(yù)共享密鑰用之前服務(wù)端的公鑰加密后發(fā)送給服務(wù)端。在發(fā)送前,客戶端也會(huì)發(fā)送自己的證書(shū)給服務(wù)端認(rèn)證,認(rèn)證后才會(huì)接收客戶端發(fā)送來(lái)的預(yù)共享密鑰。至此客戶端和服務(wù)端都共享一個(gè)預(yù)共享密鑰,并且也互相認(rèn)證了對(duì)方的身份[11]。
然后客戶端根據(jù)預(yù)共享密鑰,字符串以及之前生成的客戶端隨機(jī)數(shù)經(jīng)過(guò)復(fù)雜的計(jì)算生成主密鑰(Master-secret),服務(wù)端用私鑰解密得到預(yù)共享密鑰,接著也生成主密鑰(Master-secret)。最后經(jīng)過(guò)散列算法,依次得到MAC密鑰、會(huì)話密鑰、會(huì)話ID。到此握手協(xié)議結(jié)束。如圖5所示為SSL協(xié)議中密鑰的導(dǎo)出過(guò)程。
圖5 密鑰的導(dǎo)出過(guò)程
計(jì)算主密鑰的公式為
Master_secret =
MD5(Pre_master_secret+SHA-1(“A”+pre_master_secret+client_random+server_random
+MD5(Pre_master_secret+SHA-1(“BB”+Pre_master_secret+client_random+server_random))
+MD5(Pre_master_secret+SHA-1(“CCC”+Pre_master_secret+client_random+server_random))
密鑰分組的計(jì)算公式為
Keyblock =
MD5(master_secret+SHA-1(“A”+master_secret+client_random+server_random
+MD5(master_secret+SHA-1(“BB”+master_secret+client_random+server_random))
+MD5(master_secret+SHA-1(“CCC”+master_secret+client_random+server_random))
SSL VPN的密鑰導(dǎo)出函數(shù)為一系列基于MD5和SHA-1組合的擴(kuò)展函數(shù)。并使用諸如“A”,“BB”等便簽常量確保每個(gè)摘要的輸出都不相同。
4.1 SSL VPN密鑰分配安全隱患分析
在搭建好客戶端和服務(wù)端進(jìn)行通信,并用Wireshark對(duì)數(shù)據(jù)進(jìn)行抓包,對(duì)比發(fā)現(xiàn)SSL VPN在第一次會(huì)話中通過(guò)握手協(xié)議完成客戶端與服務(wù)端身份認(rèn)證并協(xié)商密鑰和加密算法,等這次會(huì)話結(jié)束,下次會(huì)話當(dāng)客戶端和服務(wù)器再次握手時(shí),不再協(xié)商加密算法和主密鑰,握手協(xié)議的安全完全依賴于對(duì)主密鑰的保護(hù),并且每次會(huì)話中無(wú)論時(shí)間長(zhǎng)短,都會(huì)一直使用生成幾組密鑰,不會(huì)變動(dòng)[12]。密鑰協(xié)商過(guò)程以及用于認(rèn)證的預(yù)共享密鑰技術(shù)的安全性,都依賴于復(fù)雜繁瑣的數(shù)學(xué)計(jì)算推導(dǎo),因此只要某次會(huì)話的密鑰被竊取,就意味著這組數(shù)據(jù)所有的內(nèi)容都被竊取獲得,無(wú)法保證這組數(shù)據(jù)傳輸?shù)陌踩?/p>
第一次和第二次握手協(xié)議的過(guò)程,首次會(huì)話需要客戶端和服務(wù)端互相交換證書(shū)來(lái)證明和確認(rèn)對(duì)方身份,之后再次對(duì)話就不需要這個(gè)環(huán)節(jié),直接默認(rèn)對(duì)方的身份;同時(shí)通過(guò)交換證書(shū)用于確認(rèn)身份的密鑰也沒(méi)有改變,在握手過(guò)程中,確定的加密算法、摘要算法、壓縮算法以及首次會(huì)話中計(jì)算出的預(yù)共享密鑰和主密鑰,在之后的對(duì)中都是沒(méi)有改變的;而之后的會(huì)話密鑰則是通過(guò)之前確定的主密鑰和隨機(jī)數(shù)加上不同長(zhǎng)度的字符長(zhǎng)度通過(guò)確定好的摘要算法進(jìn)行計(jì)算得出會(huì)話密鑰[13]。如下所示為通過(guò)抓包所得密鑰的算法
Handshake Protocol: Server Hello
Handshake Type: Server Hello
Length: 85
Version: TLS 1.0(0x0301)
Random
SessionID Length: 32
SessionID:
66965c873ce25aff4b89b1545e089b1545e0
8b4cbd0087bf823ba9d8
CipherSuite:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA(0XC014)
Compression Method: null(0)
發(fā)現(xiàn)首次握手協(xié)議確定的加密、摘要、壓縮算法,之后的會(huì)話中并沒(méi)有改變。因此SSL協(xié)議在首次握手之后確定了所有的密鑰和加密算法,之后對(duì)話的安全性完全依賴于加密算法的復(fù)雜度,隨著計(jì)算機(jī)能力的不斷提升,這樣的密鑰分配機(jī)制使得其安全性并不保險(xiǎn)。一旦加密算法被破解,密鑰被復(fù)制,其傳送的信息就會(huì)被竊取。
4.2 量子密鑰的安全性
隨著量子通信技術(shù)的迅速發(fā)展[14],運(yùn)用量子技術(shù)研制出的密鑰,具有不復(fù)制性的,理論上是不可能被竊取。量子密鑰的安全性是基于量子力學(xué)為基礎(chǔ)的,量子密鑰技術(shù)可以是客服端和服務(wù)端實(shí)現(xiàn)絕對(duì)的無(wú)條件安全的密鑰分配,它的安全性是基于量子力學(xué)的基本理論來(lái)確保,竊聽(tīng)信息者即便有著無(wú)限的計(jì)算能力也將無(wú)法獲取任何關(guān)于安全密鑰的信息。
在實(shí)際的數(shù)據(jù)傳輸中運(yùn)用量子密鑰不僅可以有效的防治黑客對(duì)傳送的數(shù)據(jù)進(jìn)行竊取,同時(shí)量子密鑰在運(yùn)輸過(guò)程中充當(dāng)密碼的都是一次性的,每個(gè)量子代表1 bit的數(shù)據(jù),量子密鑰將以極化和運(yùn)動(dòng)方向來(lái)表示數(shù)據(jù)碼。量子密鑰有4種極化方式:水平、垂直為一組;兩條對(duì)角線為一組[15]。同時(shí)量子密鑰還是不可復(fù)制的,黑客根本無(wú)法知道量子的狀態(tài)也就無(wú)法竊取運(yùn)輸?shù)臄?shù)據(jù),保證了數(shù)據(jù)傳輸?shù)慕^對(duì)安全。
4.3 方案的提出與分析
針對(duì)SSL VPN密鑰分配安全性問(wèn)題,提出一種在不改變SSL協(xié)議結(jié)構(gòu)的前提下,通過(guò)替換協(xié)議過(guò)程中協(xié)商的密鑰,替換為更高安全級(jí)別的密鑰的方案;根據(jù) SSL協(xié)議的自身結(jié)構(gòu)特征,隧道在建立的過(guò)程和此后的所有會(huì)話包含 3 種類型的密鑰:(1)通信的過(guò)程中客戶端與服務(wù)端用于互相身份認(rèn)證的密鑰;(2)通過(guò)密鑰協(xié)商進(jìn)而獲得的預(yù)主密鑰和主密鑰;(3)在會(huì)話過(guò)程中由主密鑰導(dǎo)出的會(huì)話密鑰。所以量子密鑰在SSLVPN 中3個(gè)不同層次中得到運(yùn)用,分別作為認(rèn)證密鑰、主密鑰和會(huì)話密鑰。由于該密鑰技術(shù)目前只在國(guó)內(nèi)少數(shù)公司擁有這樣的技術(shù)和產(chǎn)品,所有并沒(méi)有條件做這樣的方案實(shí)現(xiàn),只是提出合理性的方案。如圖6所示為SSLVPN與量子密鑰結(jié)合的協(xié)議步驟。
圖6 SSLVPN與量子密鑰結(jié)合的協(xié)議步驟
通信過(guò)程中量子密鑰的分配與SSL VPN 的結(jié)合,最大限度的確保了數(shù)據(jù)傳輸?shù)陌踩?,使其具有安全性、?jiǎn)潔性和可拓展性。這種方法結(jié)合了量子密碼,并在SSL VPN 中用作認(rèn)證密鑰、主密鑰和會(huì)話密鑰,利用添加的消息協(xié)商過(guò)程來(lái)協(xié)商與量子密碼生成和提取等相關(guān)的內(nèi)容,整個(gè)協(xié)議都是以在不變動(dòng)已有SSL協(xié)議為條件,且運(yùn)作簡(jiǎn)單易行[16]。
SSL VPN 的整個(gè)系統(tǒng)或者過(guò)程,并不是絕對(duì)安全的,其協(xié)議過(guò)程中協(xié)商的加密算法和密鑰都存在一些安全問(wèn)題,本文對(duì)此進(jìn)行了研究,給出了一套全理的解決方案。
[1] 楊文凱. SSL VPN安全關(guān)鍵技術(shù)研究[D].成都:西南交通大學(xué), 2010.
[2] 杜理明.基于SSLVPN技術(shù)的校園網(wǎng)遠(yuǎn)程訪問(wèn)設(shè)計(jì)[J].甘肅高師學(xué)報(bào),2011,16(5):1-2.
[3] Chou W. Inside SSL: accelerating secure transactions[J]. It Professional, 2002, 4(5):37-41.
[4] Gentry P B. What is a VPN?[J]. Information Security Technical Report, 2001, 6(1):15-22.
[5] Tennfy.Socket5與VPN在原理上的異同[EB/OL]. (2015-05-28)[2015-12-23]www.tennfy.com.
[6] 麒麟.SSL協(xié)議詳解[EB/ O L].(2012-12-02)[2015 -1 2-23].http://kb.cnblogs.com/page/162080/.
[7] 程紫堯. 多種應(yīng)用環(huán)境下安全認(rèn)證協(xié)議的研究[D].北京:北京交通大學(xué),2013.
[8] 王亮. 基于WSN的ECC與AES混合加密算法研究[D]. 贛州:江西理工大學(xué), 2013.
[9] 麻光景. SaaS平臺(tái)數(shù)據(jù)安全問(wèn)題的研究[D].西安:西安電子科技大學(xué),2014.
[10] 王磊. 電子支付安全技術(shù)研究[D]. 重慶:重慶大學(xué), 2005.
[11] 程軍. 無(wú)線自動(dòng)化測(cè)試工具的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.
[12] 劉東,王雙,周靜,等. 量子密鑰在電網(wǎng)SSL VPN中的應(yīng)用[J]. 電網(wǎng)科技,2014,38(2):544-548.
[13] 孫寶林,楊球,吳長(zhǎng)海.RSA公開(kāi)密鑰密碼算法及其在信息交換中的應(yīng)用[J].武漢交通科技大學(xué)學(xué)報(bào),2000,24(2):169-172.
[14] 章麗平.AdHoc網(wǎng)絡(luò)中一種基于環(huán)狀分層結(jié)構(gòu)的組密鑰協(xié)商協(xié)議[J].計(jì)算機(jī)科學(xué),2008,35(10):61-64.
[15] 粟倩.于量子密碼算法的安全通信方案研究與設(shè)計(jì)[D]. 長(zhǎng)沙:中南大學(xué),2012.
[16] 朱媛媛. 軟件安全性測(cè)試與評(píng)估方法研究[D].鎮(zhèn)江:江蘇大學(xué),2013.
Analysis of the Security of Key Distribution Based on SSLVPN
SHU Xiaofei,JIANG Nianping
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology,
Shanghai 200093)
The security socket layer virtual private network (SSL VPN) key distribution has security flaws. The Openssl and Wireshark are adopted to analyze the safety of the key management of the SSL protocol. Quantum key distribution is proposed in view of the result analysis to solve the problem of safety problems in the process of SSL VPN key distribution by obtaining and replaceing the key with as little as possible modifications to the original agreement, thus improving the security of data transmission.
SSL VPN; the SSL protocol; Openssl; Wireshark; key distribution; quantum key
2016- 04- 06
舒曉飛(1990-),男,碩士研究生。研究方向:網(wǎng)絡(luò)控制。蔣念平(1957-),男,副教授。研究方向:計(jì)算機(jī)應(yīng)用等。
10.16180/j.cnki.issn1007-7820.2017.02.043
TN9.05.04;TN918.4
A
1007-7820(2017)02-165-04