專(zhuān)利名稱(chēng):一種嵌入式ssl vpn的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式通信系統(tǒng)技術(shù)領(lǐng)域,特別是一種使用hternet協(xié)議和SSL協(xié)議 的嵌入式VPN安全通信系統(tǒng)。
背景技術(shù):
隨著hternet和嵌入式技術(shù)的迅速發(fā)展,嵌入式設(shè)備(探測(cè)器、智能家居、個(gè)人醫(yī) 療、移動(dòng)設(shè)備等)連接入網(wǎng)的數(shù)量急劇增長(zhǎng),并且這種增長(zhǎng)的趨勢(shì)將會(huì)持續(xù)下去。具有通信 功能的嵌入式設(shè)備使得計(jì)算機(jī)技術(shù)應(yīng)用于現(xiàn)場(chǎng)監(jiān)控、醫(yī)療緊急響應(yīng)、戰(zhàn)場(chǎng)管理和家居自動(dòng) 化等設(shè)備中成為可能,這些設(shè)備種類(lèi)復(fù)雜,通過(guò)各種不同的方式連入hternet,這些嵌入式 設(shè)備都需具備高安全性保障,如果沒(méi)有足夠的安全性,攻擊者可能竊取通信數(shù)據(jù),破壞數(shù)據(jù) 完整性,甚至控制這些設(shè)備并弓I發(fā)災(zāi)難性的后果。嵌入式設(shè)備除了存在一些通信安全問(wèn)題外,在資源管理方面也有很多問(wèn)題需要改 進(jìn)。越來(lái)越多的嵌入式設(shè)備應(yīng)用于遠(yuǎn)程控制,例如水利系統(tǒng)監(jiān)控、電力系統(tǒng)監(jiān)控、油田數(shù)據(jù) 采集等。在數(shù)據(jù)采集或監(jiān)控的過(guò)程中,每一個(gè)設(shè)備節(jié)點(diǎn)采集的數(shù)據(jù)最終被匯集在公司內(nèi)部 中央數(shù)據(jù)庫(kù)統(tǒng)一管理。隨著遠(yuǎn)程化辦公趨勢(shì)的到來(lái),工作人員常常希望能夠在世界各地通 過(guò)像手機(jī)、手持電腦等移動(dòng)嵌入式設(shè)備直接訪(fǎng)問(wèn)公司內(nèi)部中央數(shù)據(jù)庫(kù)或者各個(gè)設(shè)備節(jié)點(diǎn)的 數(shù)據(jù),這使得解決嵌入式系統(tǒng)資源統(tǒng)一管理的問(wèn)題迫在眉睫。嵌入式設(shè)備所面臨的通信安全問(wèn)題和資源統(tǒng)一管理問(wèn)題在全社會(huì)各行業(yè)應(yīng)用中 逐漸凸顯。例如銀行作為國(guó)家的重要金融機(jī)構(gòu),位于城市的各個(gè)角落,它具有規(guī)模多樣、重 要設(shè)施繁多、出入人員管理復(fù)雜、涉及領(lǐng)域廣等特點(diǎn)。而今高科技犯罪越來(lái)越多,因此,銀行 需要建立一套先進(jìn)、可靠的嵌入式監(jiān)控系統(tǒng)。該系統(tǒng)保證M小時(shí)全天候不間斷地工作,且 進(jìn)行安全實(shí)時(shí)的數(shù)據(jù)傳輸,能滿(mǎn)足擴(kuò)大營(yíng)業(yè)網(wǎng)點(diǎn)或機(jī)構(gòu)調(diào)整,可隨時(shí)增大監(jiān)控的規(guī)模。銀行的監(jiān)控系統(tǒng)主要應(yīng)用在收銀柜臺(tái)監(jiān)控、儲(chǔ)蓄所現(xiàn)場(chǎng)、ATM機(jī)監(jiān)控等,有了監(jiān) 控系統(tǒng)能有效地解決搶劫、信息被盜等案件。尤其對(duì)ATM業(yè)務(wù)來(lái)說(shuō),其犯罪現(xiàn)象越來(lái)越多, 在全國(guó)各地出現(xiàn)了多起盜取合法持卡人錢(qián)款的犯罪活動(dòng)以及各種破壞ATM的惡性事件,如 何保護(hù)用戶(hù)的合法財(cái)產(chǎn)及銀行的利益,防范各種針對(duì)銀行的犯罪行為是一個(gè)亟待解決的問(wèn) 題,因此許多銀行都開(kāi)始積極推進(jìn)嵌入式監(jiān)控系統(tǒng)的深入應(yīng)用。目前大多數(shù)銀行通過(guò)專(zhuān)網(wǎng)進(jìn)行業(yè)務(wù)傳送,專(zhuān)網(wǎng)的帶寬往往不能支撐監(jiān)控等視頻信 息的傳送。專(zhuān)網(wǎng)的高帶寬是以高成本為代價(jià),如IM的DDN專(zhuān)線(xiàn)每個(gè)月的線(xiàn)路費(fèi)用為兩千 元,因此用戶(hù)無(wú)法將監(jiān)控業(yè)務(wù)通過(guò)網(wǎng)絡(luò)集中管理、集中保存監(jiān)控?cái)?shù)據(jù)。由于帶寬限制,目前 絕大部分的監(jiān)控圖像只能在本地保存,這樣一方面由于數(shù)據(jù)分散,設(shè)備的投入和維護(hù)工作 量都較大,數(shù)據(jù)丟失風(fēng)險(xiǎn)就更高;另一方面由于無(wú)法實(shí)現(xiàn)集中管理,使得系統(tǒng)的隨意性較 大,增加了數(shù)據(jù)丟失風(fēng)險(xiǎn)。近年來(lái)基于hternet協(xié)議通過(guò)VPN(Virtual Private Network, 虛擬專(zhuān)用網(wǎng)絡(luò))技術(shù)來(lái)實(shí)現(xiàn)的集中監(jiān)控系統(tǒng)開(kāi)始逐漸為銀行所接受,由于其廉價(jià)的寬帶接 入,并且有足夠的帶寬保證銀行集中監(jiān)控系統(tǒng),同時(shí)還可通過(guò)VPN技術(shù)獲得了很好的數(shù)據(jù) 安全保障,可謂是一舉兩得。目前,Ethernet, ADSL等接入線(xiàn)路一般都能夠提供1 100M的帶寬,完全能滿(mǎn)足傳送多媒體等業(yè)務(wù)。目前主流的VPN技術(shù)主要有兩類(lèi)IPkc VPN和SSL Secure Socket Layer,安全 套接層)VPN。IPSec VPN是基于IPSec協(xié)議的,屬于OSI模型第三層VPN技術(shù),協(xié)議定義了完整 的安全機(jī)制,對(duì)用戶(hù)數(shù)據(jù)的完整性和私密性都有完善的保護(hù)措施。過(guò)去,大多數(shù)公司都是使 用傳統(tǒng)的IPkc VPN來(lái)解決遠(yuǎn)程接入的問(wèn)題,但是IPkc VPN最初是為了解決網(wǎng)對(duì)網(wǎng)(Lan To Lan)的安全問(wèn)題而制定的協(xié)議,因此在此基礎(chǔ)上建立的遠(yuǎn)程接入方案在面臨越來(lái)越多 的點(diǎn)對(duì)網(wǎng)(End To Lan)或者點(diǎn)對(duì)點(diǎn)(End To End)應(yīng)用情況下已經(jīng)力不從心。由于IPSec VPN自身的局限性,導(dǎo)致其還存在以下缺點(diǎn)1.部署IPsec VPN網(wǎng)絡(luò)時(shí),需要在用戶(hù)設(shè)備上安裝復(fù)雜的客戶(hù)端軟件,而遠(yuǎn)程用 戶(hù)的移動(dòng)性要求VPN可以快速部署客戶(hù)端,并動(dòng)態(tài)建立連接;遠(yuǎn)程終端的多樣性還要求VPN 的客戶(hù)端具有跨平臺(tái)、易于升級(jí)和維護(hù)等特點(diǎn),這些問(wèn)題基于IPSec協(xié)議實(shí)現(xiàn)VPN技術(shù)難度 很大。2.傳統(tǒng)的IPSec解決方案無(wú)法檢查用戶(hù)設(shè)備的安全性。如果用戶(hù)通過(guò)不安全的嵌 入式終端設(shè)備訪(fǎng)問(wèn)公司內(nèi)部網(wǎng)絡(luò),可能引起公司內(nèi)部網(wǎng)絡(luò)感染病毒。3.訪(fǎng)問(wèn)控制不夠細(xì)致。由于IPsec是在網(wǎng)絡(luò)層實(shí)現(xiàn)的,對(duì)IP報(bào)文的內(nèi)容無(wú) 法識(shí)別,因而不能控制高層應(yīng)用的訪(fǎng)問(wèn)請(qǐng)求。隨著企業(yè)經(jīng)營(yíng)模式的改變,企業(yè)需要建立 Extranet (外聯(lián)網(wǎng)),與合作伙伴共享某些信息資源,以便提高企業(yè)的運(yùn)作效率。對(duì)合作伙 伴的訪(fǎng)問(wèn)必須進(jìn)行嚴(yán)格有效地控制,才能保證企業(yè)信息系統(tǒng)的安全,而IPsec VPN很難實(shí)現(xiàn) 訪(fǎng)問(wèn)權(quán)限的控制。4.在復(fù)雜的組網(wǎng)環(huán)境中,II3Sec VPN部署比較困難。在使用NAT的場(chǎng)合,II^sec VPN 需要支持NAT穿越技術(shù),在部署防火墻的網(wǎng)絡(luò)環(huán)境中,由于msec協(xié)議在原TCP/UDP頭的前 面增加了 If3Sec報(bào)文頭,因此,需要在防火墻上進(jìn)行特殊的配置,允許msec報(bào)文通過(guò)。5.設(shè)備支持問(wèn)題。隨著未來(lái)嵌入式技術(shù)的發(fā)展,嵌入式終端的種類(lèi)將會(huì)越來(lái)越多, IPSec客戶(hù)端需要有更多的版本來(lái)適應(yīng)這些終端,但隨著終端種類(lèi)的爆炸性增長(zhǎng),這幾乎是 不可能的。SSL協(xié)議是Netscape (美國(guó)網(wǎng)景)公司提出一種基于WEB應(yīng)用的安全協(xié)議,主要是 使用公開(kāi)密鑰體制和數(shù)字證書(shū)技術(shù)保護(hù)信息傳輸?shù)臋C(jī)密性和完整性,適用于點(diǎn)對(duì)點(diǎn)之間的 信息傳輸。SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,它可以為任何基于TCP或UDP 協(xié)議的應(yīng)用層協(xié)議提供安全性保證,高層的應(yīng)用層協(xié)議(例如HTTP,F(xiàn)TP,TELNET...)能透 明的建立于SSL協(xié)議之上。SSL協(xié)議在應(yīng)用層協(xié)議通信之前就已經(jīng)完成加密算法、通信密鑰 的協(xié)商以及服務(wù)器認(rèn)證工作,在此之后應(yīng)用層協(xié)議所傳送的數(shù)據(jù)都會(huì)被加密,從而保證通 信的私密性。如圖2所示為SSL協(xié)議分層結(jié)構(gòu)圖,SSL協(xié)議本身分為兩層(1)上層為SSL握手協(xié)議、SSL改變密碼規(guī)則協(xié)議和SSL報(bào)警協(xié)議;(2)底層為 SSL 記錄協(xié)議(SSL record protocol)。其中SSL握手協(xié)議是SSL協(xié)議非常重要的組成部分,用來(lái)協(xié)商通信過(guò)程中使用的加密套件(加密算法、密鑰交換算法和MAC算法等)、在服務(wù)器和客戶(hù)端之間安全地交換密鑰、實(shí) 現(xiàn)服務(wù)器和客戶(hù)端的身份驗(yàn)證。SSL密碼變化協(xié)議客戶(hù)端和服務(wù)器端通過(guò)密碼變化協(xié)議通知對(duì)端,隨后的報(bào)文 都將使用新協(xié)商的加密套件和密鑰進(jìn)行保護(hù)和傳輸。SSL警告協(xié)議用來(lái)向通信對(duì)端報(bào)告告警信息,消息中包含告警的嚴(yán)重級(jí)別和描 述。SSL記錄協(xié)議主要負(fù)責(zé)對(duì)上層的數(shù)據(jù)(SSL握手協(xié)議、SSL密碼變化協(xié)議、SSL警 告協(xié)議和應(yīng)用層協(xié)議報(bào)文)進(jìn)行分塊、計(jì)算并添加MAC值、加密,并把處理后的記錄塊傳輸 給對(duì)端。SSL VPN是基于SSL協(xié)議實(shí)現(xiàn)的VPN技術(shù)。SSL VPN克服了之前所述的IPsec VPN 技術(shù)的缺點(diǎn),以其跨平臺(tái)、免安裝、免維護(hù)的客戶(hù)端,豐富有效的權(quán)限管理而成為遠(yuǎn)程接入 方式中的首選。雖然我們可以通過(guò)SSL VPN方案來(lái)解決嵌入式智能設(shè)備的網(wǎng)絡(luò)安全及資源的統(tǒng)一 管理問(wèn)題,但將其應(yīng)用到嵌入式設(shè)備上還存在以下幾個(gè)難點(diǎn)1.嵌入式系統(tǒng)可以采用有線(xiàn)或者無(wú)線(xiàn)方式接入hternet網(wǎng)絡(luò),在遠(yuǎn)程控制中常 采用ZigBee、GPRS, WiFi等無(wú)線(xiàn)接入方式,這就很難保證網(wǎng)絡(luò)中不同平臺(tái)的客戶(hù)端之間數(shù) 據(jù)的安全共享,身份的合法性以及網(wǎng)絡(luò)的穩(wěn)定性。2.嵌入式系統(tǒng)大多會(huì)受到資源的嚴(yán)格限制,其系統(tǒng)本身經(jīng)過(guò)裁剪定制,安全性和 穩(wěn)定性有待于長(zhǎng)時(shí)間的檢測(cè),如果采用復(fù)雜的網(wǎng)絡(luò)安全協(xié)議對(duì)于嵌入式智能設(shè)備的性能也 是一個(gè)新的挑戰(zhàn)。3.嵌入式系統(tǒng)相對(duì)傳統(tǒng)PC設(shè)備數(shù)據(jù)處理能力較差、存儲(chǔ)器較小、系統(tǒng)功能單一, 安全性較低,所以更加難以保證網(wǎng)絡(luò)通信時(shí)其數(shù)據(jù)的安全性和身份的合法性。如果不能很 好地解決安全問(wèn)題,這些嵌入式智能設(shè)備的安全將成為一個(gè)嚴(yán)重的漏洞。4.嵌入式系統(tǒng)平臺(tái)差異性較大,對(duì)于多個(gè)不同平臺(tái)的嵌入式智能設(shè)備要想在同一 個(gè)網(wǎng)絡(luò)內(nèi)互聯(lián)通信,直接采用傳統(tǒng)的VPN實(shí)施部署方案是行不通的。本發(fā)明專(zhuān)利針對(duì)上述各難點(diǎn)結(jié)合不同的嵌入式智能平臺(tái)的特點(diǎn)提出相應(yīng)的解決 方法,從根本上解決了嵌入式系統(tǒng)多平臺(tái)、多鏈路網(wǎng)絡(luò)通信的安全問(wèn)題,以及改善嵌入式系 統(tǒng)多平臺(tái)資源難以統(tǒng)一管理的問(wèn)題。
發(fā)明內(nèi)容
如
圖1所示,一種嵌入式SSL VPN的實(shí)現(xiàn)方法所闡述的主要思想為利用虛擬網(wǎng)卡 統(tǒng)一封裝技術(shù)解決多嵌入式平臺(tái)多鏈路數(shù)據(jù)包封裝格式不統(tǒng)一的問(wèn)題;利用自定義VPN通 信協(xié)議解決嵌入式資源難以統(tǒng)一管理的問(wèn)題,簡(jiǎn)化VPN服務(wù)器同時(shí)支持基于MAC地址和IP 地址進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的實(shí)現(xiàn)方法,方便兼容多協(xié)議版本的VPN客戶(hù)端;利用抽象接口技術(shù)解 決嵌入式設(shè)備通過(guò)多鏈路進(jìn)行數(shù)據(jù)通信時(shí)難以統(tǒng)一通信設(shè)備接口的問(wèn)題。一、虛擬網(wǎng)卡嵌入式平臺(tái)種類(lèi)繁多,個(gè)體差異性較大。不同的嵌入式平臺(tái)之間可能會(huì)使用不同 的通信鏈路進(jìn)行通信,按照不同的鏈路協(xié)議標(biāo)準(zhǔn),最終在數(shù)據(jù)鏈路層封裝的數(shù)據(jù)幀格式也 各不相同。如果采用傳統(tǒng)方式實(shí)現(xiàn)SSL VPN系統(tǒng),在進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)就會(huì)出現(xiàn)如下問(wèn)題
6
(I)VPN服務(wù)器一般只能針對(duì)多臺(tái)使用相同鏈路協(xié)議的嵌入式設(shè)備進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。 如果多臺(tái)設(shè)備使用不同鏈路協(xié)議通信,服務(wù)器需要針對(duì)每種協(xié)議的數(shù)據(jù)幀進(jìn)行解析、重組, 構(gòu)造新的數(shù)據(jù)幀進(jìn)行轉(zhuǎn)發(fā)。如果服務(wù)器能夠支持各種協(xié)議幀的轉(zhuǎn)換,并假設(shè)鏈路層協(xié)議共 有M種,那么服務(wù)器則需要實(shí)現(xiàn)M* (M-I)種轉(zhuǎn)換模塊。然而由于很多鏈路協(xié)議標(biāo)準(zhǔn)決定了 協(xié)議幀的格式不能夠進(jìn)行二次轉(zhuǎn)換,所以要實(shí)現(xiàn)這樣的服務(wù)器轉(zhuǎn)發(fā)模塊成本太高,甚至無(wú) 法實(shí)現(xiàn)。( VPN服務(wù)器針對(duì)不同的通信鏈路傳遞過(guò)來(lái)的數(shù)據(jù)幀采用所對(duì)應(yīng)的通信協(xié)議標(biāo) 準(zhǔn)進(jìn)行解析、轉(zhuǎn)發(fā),而現(xiàn)有的鏈路協(xié)議標(biāo)準(zhǔn)就達(dá)10種以上,隨著電子信息技術(shù)的發(fā)展,新技 術(shù)、新協(xié)議、新標(biāo)準(zhǔn)產(chǎn)生的更快。如果依然采用傳統(tǒng)方式進(jìn)行數(shù)據(jù)幀轉(zhuǎn)發(fā),VPN服務(wù)器端的 數(shù)據(jù)轉(zhuǎn)發(fā)模塊將會(huì)因?yàn)闊o(wú)限制的增加新協(xié)議解析而會(huì)出現(xiàn)模塊過(guò)度膨脹,代碼激增,這都 將導(dǎo)致VPN服務(wù)器的穩(wěn)定性下降,效率降低。VPN服務(wù)器是VPN系統(tǒng)的核心模塊,如果服務(wù) 器的穩(wěn)定性和效率無(wú)法保證,整個(gè)VPN系統(tǒng)將會(huì)十分脆弱和低效。(3)安裝了 VPN客戶(hù)端的主機(jī)上的數(shù)據(jù)包可以分為兩類(lèi)一類(lèi)是屬于VPN專(zhuān)用隧 道內(nèi)的數(shù)據(jù)包,另一類(lèi)是普通數(shù)據(jù)包,如何區(qū)分這兩類(lèi)數(shù)據(jù)包,是實(shí)現(xiàn)VPN系統(tǒng)的一個(gè)重 點(diǎn)。常見(jiàn)的做法是對(duì)數(shù)據(jù)包加上標(biāo)志位,通過(guò)標(biāo)志位來(lái)進(jìn)行判別,或者使用NDIS中間層驅(qū) 動(dòng)進(jìn)行過(guò)濾操作,但是前一種做法會(huì)讓數(shù)據(jù)包的解析變的十分復(fù)雜,后一種做法會(huì)導(dǎo)致整 個(gè)系統(tǒng)架構(gòu)十分混亂,不利于系統(tǒng)的擴(kuò)展。針對(duì)以上問(wèn)題,本發(fā)明提出了一種虛擬網(wǎng)卡的解決方法解決了嵌入式SSL VPN的 關(guān)鍵性問(wèn)題。使用虛擬網(wǎng)卡解決方案,特點(diǎn)如下(1)通過(guò)使用虛擬網(wǎng)卡使所有的VPN數(shù)據(jù)包統(tǒng)一封裝為以太網(wǎng)數(shù)據(jù)包格式,這樣 就避免了 VPN服務(wù)器需要對(duì)數(shù)據(jù)包進(jìn)行復(fù)雜的協(xié)議格式轉(zhuǎn)換,并且VPN服務(wù)器針對(duì)不同的 通信鏈路傳遞過(guò)來(lái)的數(shù)據(jù)幀不需要分類(lèi)處理。這樣,就在很大程度上降低了 VPN服務(wù)器的 負(fù)荷,簡(jiǎn)化了 VPN服務(wù)器的轉(zhuǎn)發(fā)規(guī)則,提高了轉(zhuǎn)發(fā)效率。(2)由于SSL VPN系統(tǒng)可以方便地使用虛擬網(wǎng)卡從TCP/IP協(xié)議棧獲取相關(guān)的數(shù)據(jù) 包,不需要另外編寫(xiě)程序來(lái)區(qū)分是否為VPN數(shù)據(jù)包,并且將這些數(shù)據(jù)包送入系統(tǒng)的VPN專(zhuān)用 隧道,從而可以保證數(shù)據(jù)包在公網(wǎng)中的安全傳輸。使用了虛擬網(wǎng)卡解決方案,對(duì)數(shù)據(jù)包的過(guò) 濾是在驅(qū)動(dòng)層進(jìn)行,對(duì)數(shù)據(jù)包的處理(含加解密)是在應(yīng)用層進(jìn)行,這種架構(gòu)設(shè)計(jì)保證了系 統(tǒng)的穩(wěn)定性和在嵌入式平臺(tái)的可擴(kuò)展性。(3)所有VPN客戶(hù)端的虛擬網(wǎng)卡在分配了一個(gè)虛擬IP之后,可以方便系統(tǒng)定位到 每一臺(tái)VPN客戶(hù)端,這種方式較其他方式更為方便、快捷。虛擬網(wǎng)卡的設(shè)計(jì)原理如下虛擬網(wǎng)卡一般包括兩個(gè)部分,一部分是虛擬網(wǎng)卡驅(qū)動(dòng),負(fù)責(zé)與TCP/IP協(xié)議棧進(jìn)行交互;另一部分是交互驅(qū)動(dòng),負(fù)責(zé)與處于用戶(hù)態(tài)的VPN處理進(jìn)程 進(jìn)行交互。交互驅(qū)動(dòng)與虛擬網(wǎng)卡驅(qū)動(dòng)進(jìn)行數(shù)據(jù)包傳遞的方式在不同平臺(tái)下是不同的,取決 于交互驅(qū)動(dòng)的具體實(shí)現(xiàn)。交互驅(qū)動(dòng)在不同的平臺(tái)下實(shí)現(xiàn)也是不同的,如在Linux平臺(tái)下是 字符驅(qū)動(dòng),在WinCE平臺(tái)下是NDIS協(xié)議驅(qū)動(dòng)。總之,虛擬網(wǎng)卡驅(qū)動(dòng)和交互驅(qū)動(dòng)需要一起完 成數(shù)據(jù)包在用戶(hù)態(tài)VPN處理進(jìn)程和對(duì)應(yīng)的應(yīng)用程序之間的傳遞。虛擬網(wǎng)卡的設(shè)計(jì)原理如圖3所示,數(shù)據(jù)在整個(gè)系統(tǒng)中的流向是雙向可逆的,單獨(dú) 的發(fā)送和接收數(shù)據(jù)是單向不可逆。
虛擬網(wǎng)卡的工作流程如下(1)發(fā)送數(shù)據(jù)包當(dāng)應(yīng)用程序發(fā)送一個(gè)數(shù)據(jù)包之后,這個(gè)數(shù)據(jù)包會(huì)被傳送到TCP/ IP協(xié)議棧。在這個(gè)協(xié)議棧中,數(shù)據(jù)包會(huì)根據(jù)自身的目的IP進(jìn)行分流,從而選擇被發(fā)送到虛 擬網(wǎng)卡還是物理網(wǎng)卡。當(dāng)對(duì)應(yīng)的數(shù)據(jù)包進(jìn)入虛擬網(wǎng)卡之后,交互驅(qū)動(dòng)會(huì)將數(shù)據(jù)包從虛擬網(wǎng) 卡的緩沖區(qū)中讀取出來(lái),并傳遞到VPN處理進(jìn)程。(2)接收數(shù)據(jù)包當(dāng)物理網(wǎng)卡從VPN虛擬專(zhuān)用隧道收到數(shù)據(jù)包之后,物理網(wǎng)卡會(huì)將 數(shù)據(jù)包通過(guò)TCP/IP協(xié)議棧提交給VPN處理進(jìn)程,然后由交互驅(qū)動(dòng)從VPN處理進(jìn)程讀取這個(gè) 數(shù)據(jù)包,并傳送到虛擬網(wǎng)卡驅(qū)動(dòng)。虛擬網(wǎng)卡驅(qū)動(dòng)收到數(shù)據(jù)包之后,會(huì)由自身的回調(diào)函數(shù)將數(shù) 據(jù)包經(jīng)TCP/IP協(xié)議棧傳遞給對(duì)應(yīng)的應(yīng)用程序。虛擬網(wǎng)卡的具體實(shí)現(xiàn)取決于各個(gè)平臺(tái),不同平臺(tái)虛擬網(wǎng)卡的實(shí)現(xiàn)是有差異的。在Linux平臺(tái)下,虛擬網(wǎng)卡驅(qū)動(dòng)包括兩個(gè)組成部分,交互驅(qū)動(dòng)部分對(duì)應(yīng)字符設(shè)備 驅(qū)動(dòng),還有一部分是網(wǎng)卡驅(qū)動(dòng)部分。利用網(wǎng)卡驅(qū)動(dòng)部分接收來(lái)自TCP/IP協(xié)議棧的網(wǎng)絡(luò)分包 并發(fā)送,同時(shí)將接收到的網(wǎng)絡(luò)分包傳給TCP/IP協(xié)議棧進(jìn)行處理,而字符驅(qū)動(dòng)部分則負(fù)責(zé)網(wǎng) 絡(luò)分包在內(nèi)核與用戶(hù)態(tài)之間傳送,模擬物理鏈路的數(shù)據(jù)接收和發(fā)送。網(wǎng)卡驅(qū)動(dòng)的設(shè)備結(jié)構(gòu)
見(jiàn)代碼清單1。
程序清單1網(wǎng)卡驅(qū)動(dòng)的設(shè)備結(jié)構(gòu)示意代碼
struct virnic—struct{
charname[8];/*設(shè)備名*/
struct fasync—struct氺fasync ;/*文件異步通知結(jié)構(gòu)*/
wait_queue—head—tread_wait ;/*等待隊(duì)列*/
struct net—devicedev ;/^linux抽象網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)*/
struct sk—buff—heaktxq ;/*網(wǎng)絡(luò)緩沖區(qū)隊(duì)列*/
struct net—device—statsstats ;/*網(wǎng)卡狀態(tài)信息結(jié)構(gòu)*/
};
struct net—device ^ Linux 豐亥 Ι Λ白勺■一-網(wǎng)絡(luò)設(shè)備結(jié)構(gòu),定義了系統(tǒng)統(tǒng)
一的訪(fǎng)問(wèn)接口。網(wǎng)卡驅(qū)動(dòng)中需要實(shí)現(xiàn)的處理例程見(jiàn)程序清單2。程序清單2網(wǎng)卡驅(qū)動(dòng)實(shí)現(xiàn)的處理例程示意代碼
/*網(wǎng)絡(luò)設(shè)備初始化例程*/int net_init (struct net_device*dev);/*打開(kāi)網(wǎng)絡(luò)設(shè)備*/static int net_open(struct net_device氺dev);/*數(shù)據(jù)包發(fā)送例程*/static int net—send (struct sk_buff氺skb, struct net—device氺dev);/*數(shù)據(jù)包接收例程*/static int ent_recv(struct sk_buff氺skb, struct net—device氺dev);/*關(guān)閉網(wǎng)絡(luò)設(shè)備/*static int net_close(struct net_device氺dev);在Linux中,字符設(shè)備和塊設(shè)備統(tǒng)一以文件的方式訪(fǎng)問(wèn),都是使用openO函數(shù)打開(kāi)設(shè)備文件或普通文件,用read()和writeO函數(shù)實(shí)現(xiàn)讀寫(xiě)文件等等。虛擬網(wǎng)卡驅(qū)動(dòng)部分 定義的字符設(shè)備的訪(fǎng)問(wèn)接口見(jiàn)程序清單3。程序清單3LinuX驅(qū)動(dòng)字符設(shè)備訪(fǎng)問(wèn)接口示意代碼static struct file_operations fops = {owner :THIS_M0DULE,llseek :chr_lseek,reda :chr_read,write :chr_write ;poll :chr_poll,ioctl :chr_ioctl ;open :chr_open,release :chr_close,fasync :chr_fasync};在WinCE平臺(tái)下,虛擬網(wǎng)卡驅(qū)動(dòng)也包括兩個(gè)組成部分,一部分是NDIS協(xié)議驅(qū)動(dòng),另 一部分是NDIS小端口驅(qū)動(dòng)。類(lèi)似于Linux下虛擬網(wǎng)卡驅(qū)動(dòng)的實(shí)現(xiàn),利用NDIS小端口驅(qū)動(dòng) 部分接收來(lái)自TCP/IP協(xié)議棧的網(wǎng)絡(luò)分包并發(fā)送,同時(shí)將接收到的網(wǎng)絡(luò)分包傳給TCP/IP協(xié) 議棧處理,而NDIS協(xié)議驅(qū)動(dòng)部分則將網(wǎng)絡(luò)分包在內(nèi)核與用戶(hù)態(tài)之間傳送,模擬物理鏈路的 數(shù)據(jù)接收和發(fā)送。NDIS協(xié)議驅(qū)動(dòng)需要實(shí)現(xiàn)的處理例程見(jiàn)程序清單4。程序清單4NDIS協(xié)議驅(qū)動(dòng)實(shí)現(xiàn)例程示意代碼pDriverObject- > MajorFunction[IRP_MJ_CREATE] = NdisProtOpen ;pDriverObject- > MajorFunction[IRP_MJ_CL0SE] = NdisProtClose ;pDriverObject- > MajorFunction[IRP_MJ_READ] = NdisProtRead ;pDriverObject- > MajorFunction[IRP_MJ_WRITE] = NdisProtffrite ;pDriverObject- > MajorFunction[IRP_MJ_CLEANUP] = NdisProtCleanup ;pDriverObject- > Ma j orFunc t i on [ I RP_M J_DEV I CE_C0NTR0L]= NdisProtIoControl ;pDricerObject- > DriverUnload = NdisProtUnload ;NDIS協(xié)議驅(qū)動(dòng)需要實(shí)現(xiàn)的一些回調(diào)函數(shù)見(jiàn)程序清單5。程序清單5NDIS協(xié)議驅(qū)動(dòng)需要實(shí)現(xiàn)的回調(diào)函數(shù)protocolChar. OpenAdapterCompleteHandler = NdisProtOpenAdapterCompIete ;protocolChar. CloseAdapterCompleteHandler = NdisProtCloseAdapterCompIete ;protocolChar. SendCompleteHandler= NdisProtSendCompIete ;protocolChar. TransferDataCompleteHandler = NdisProtTransferDataCompIete ;protocolChar. ResetCompleteHandler= NdisProtResetCompIete ;0101]protocolChar. RequestCompleteHandler=NdisProtRequestCompIete0102]protocolChar. ReceiveHandler=NdisProtReceive ;0103]protocolChar. ReceiveCompleteHandler=NdisProtReceiveCompIete0104]protocolChar. StatusHandler=NdisProtStatus ;0105]protocolChar. StatusCompleteHandler=NdisProtStatusCompIete ;0106]protocolChar. BindAdapterHandler=NdisProtBindAdapter ;0107]protocolChar. UnbindAdapterHandler=NdisProtUnbindAdapter ;0108]protocolChar. UnloadHandler=NULL ;0109]protocolChar. ReceivePacketHandler=NdisProtReceivePacket ;0110]protocolChar. PnPEventHandler=NdisProtPnPEventHandler0111]NDIS小端口驅(qū)動(dòng)需要實(shí)現(xiàn)的回調(diào)函數(shù)見(jiàn)程序清單6。0112]程序清單6NDIS小端驅(qū)動(dòng)需要實(shí)現(xiàn)的回調(diào)函I 0113]MPChar. InitializeHandler = MPInitialize ;0114]MPChar. HaltHandler = MPHalt ;0115]MPChar. SetInformationHandler = MPSetInformation ;0116]MPChar. QueryInformationHandler =MPQueryInformation ;0117]MPChar. SendPacketsHandler =MPSendPackets ;0118]MPChar. ReturnPacketHandler =MPReturnPacket ;0119]MPChar. ResetHandler =MPReset ;0120]MPChar. CheckForHangHandler =MPCheckForHang ;//optional0121]#ifdef NDIS51—MINIP0RT0122]MPChar. CancelSendPacketsHandler=MPCanceISendPackets ;0123]MPChar. PnPEventNotifyHandler=MPPnPEventNotify ;0124]MPChar. AdapterShutdownHandler=MPShutdown ;0125]#endif0126]二、通信協(xié)議0127]嵌入式VPN通信協(xié)議是自定義通信協(xié)議,基于該協(xié)議可以實(shí)現(xiàn)系統(tǒng)資源統(tǒng)
理,客戶(hù)端IP動(dòng)態(tài)分配,獲取客戶(hù)端實(shí)時(shí)狀態(tài)信息等功能。采用協(xié)議的方式實(shí)現(xiàn)VPN系統(tǒng) 的第三方功能擴(kuò)展只需要在協(xié)議的基礎(chǔ)上進(jìn)行,有些功能只需要一個(gè)命令就能實(shí)現(xiàn),這很 大程度上降低了 VPN系統(tǒng)功能擴(kuò)展的開(kāi)發(fā)難度,提高了開(kāi)發(fā)效率,同時(shí)也方便代碼的統(tǒng)一 化管理。為了保證該系統(tǒng)的可擴(kuò)展性,該協(xié)議在制定過(guò)程中還另外增加了相應(yīng)的預(yù)留域。VPN協(xié)議封裝數(shù)據(jù)包結(jié)構(gòu)如圖4所示。1.VPN封裝數(shù)據(jù)包格式客戶(hù)端與服務(wù)器通信過(guò)程中所有標(biāo)志信息封裝在數(shù)據(jù)包頭部,經(jīng)過(guò)封裝后的數(shù)據(jù) 包結(jié)構(gòu)如下所示。
協(xié)議頭I數(shù)據(jù)包I外帶數(shù)據(jù)_2. VPN協(xié)議頭格式VPN協(xié)議頭大小為8字節(jié),VPN協(xié)議頭詳細(xì)組織結(jié)構(gòu)如下所示。
權(quán)利要求
1.一種嵌入式SSL VPN的實(shí)現(xiàn)方法,具備由網(wǎng)絡(luò)連接的VPN服務(wù)器及多個(gè)嵌入式設(shè)備 中的VPN客戶(hù)端,其特征在于所述VPN服務(wù)器按照自定義VPN通信協(xié)議標(biāo)準(zhǔn)進(jìn)行通信;所述 VPN客戶(hù)端使用虛擬網(wǎng)卡獲取相關(guān)數(shù)據(jù)包并進(jìn)行統(tǒng)一封裝,并通過(guò)虛擬網(wǎng)卡定位虛擬局域 網(wǎng)中嵌入式設(shè)備的位置;所述VPN客戶(hù)端通過(guò)統(tǒng)一抽象接口,針對(duì)不同的鏈路通信模塊和 嵌入式主板之間的接口進(jìn)行統(tǒng)一化處理。
2.根據(jù)權(quán)利要求1所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于VPN客戶(hù)端與 服務(wù)器基于所述VPN通信協(xié)議的通信步驟如下(1)客戶(hù)端從虛擬網(wǎng)卡中讀取原始數(shù)據(jù)幀;(2)由VPN處理模塊對(duì)原始數(shù)據(jù)幀添加上VPN協(xié)議頭和附加數(shù)據(jù)段;(3)客戶(hù)端通過(guò)物理網(wǎng)卡將再封裝的數(shù)據(jù)幀發(fā)送到服務(wù)器端;(4)服務(wù)器接收到客戶(hù)端發(fā)送過(guò)來(lái)的數(shù)據(jù),解析數(shù)據(jù)幀的VPN協(xié)議頭,根據(jù)協(xié)議頭命令 碼段判斷是否為命令數(shù)據(jù)幀,如果是命令數(shù)據(jù)幀,則將該數(shù)據(jù)幀轉(zhuǎn)交給服務(wù)器端的命令處 理模塊處理,如果不是命令數(shù)據(jù)幀,則按照步驟5處理;(5)根據(jù)協(xié)議版本號(hào),解析數(shù)據(jù)幀的IP地址或MAC地址,查找IP或MAC轉(zhuǎn)發(fā)表獲取相 關(guān)的上下文轉(zhuǎn)發(fā)給對(duì)應(yīng)的客戶(hù)端;(6)接收到轉(zhuǎn)發(fā)數(shù)據(jù)幀的客戶(hù)端將數(shù)據(jù)寫(xiě)入客戶(hù)端虛擬網(wǎng)卡做相應(yīng)處理。
3.根據(jù)權(quán)利要求1或2所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述自定 義的VPN通信協(xié)議,能夠?qū)蛻?hù)端動(dòng)態(tài)分配虛擬IP地址,步驟如下(1)客戶(hù)端向服務(wù)器發(fā)送IP動(dòng)態(tài)分配的請(qǐng)求幀,該數(shù)據(jù)幀的VPN協(xié)議頭命令碼字段的 值為IP動(dòng)態(tài)分配的請(qǐng)求命令;(2)服務(wù)器接收到該請(qǐng)求幀,解析VPN協(xié)議頭,得知該數(shù)據(jù)幀為請(qǐng)求命令幀,請(qǐng)求命令 為IP動(dòng)態(tài)分配,服務(wù)器根據(jù)該命令計(jì)算獲取給客戶(hù)端分配的IP地址,并在服務(wù)器端的數(shù)據(jù) 轉(zhuǎn)發(fā)表中記錄下IP地址;(3)服務(wù)器構(gòu)造返回?cái)?shù)據(jù)幀,填充VPN協(xié)議頭命令字段的值為IP動(dòng)態(tài)分配的請(qǐng)求命令, 最終發(fā)送給請(qǐng)求的客戶(hù)端。
4.根據(jù)權(quán)利要求1或2所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述自定 義的VPN通信協(xié)議,可在服務(wù)器端根據(jù)客戶(hù)端的接入系統(tǒng)情況自動(dòng)形成網(wǎng)絡(luò)拓?fù)鋱D,步驟 如下(1)服務(wù)器以廣播的形式向客戶(hù)端發(fā)送命令請(qǐng)求,請(qǐng)求客戶(hù)端的屬性,包括物理地 址、硬件標(biāo)識(shí),軟件標(biāo)識(shí);(2)客戶(hù)端收到請(qǐng)求幀,解析VPN協(xié)議頭判斷該數(shù)據(jù)幀為請(qǐng)求命令幀,請(qǐng)求命令為獲取 客戶(hù)端所有狀態(tài)的請(qǐng)求命令,客戶(hù)端根據(jù)該命令獲取所有狀態(tài)信息;(3)客戶(hù)端構(gòu)造返回?cái)?shù)據(jù)幀,填充VPN協(xié)議頭命令字段的值為獲取客戶(hù)端所有狀態(tài)的 請(qǐng)求命令,最終發(fā)送給服務(wù)器端;(4)服務(wù)器匯集所有客戶(hù)端的信息,將該信息在服務(wù)器端分類(lèi),以該信息作為源信息生 成拓?fù)鋱D。
5.根據(jù)權(quán)利要求1或2所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述自定 義的VPN通信協(xié)議,可在服務(wù)器端根據(jù)客戶(hù)端的版本信息,決定根據(jù)虛擬MAC地址或者虛擬 IP地址進(jìn)行數(shù)據(jù)幀轉(zhuǎn)發(fā),步驟如下(1)客戶(hù)端向服務(wù)器發(fā)送轉(zhuǎn)發(fā)數(shù)據(jù)幀;(2)服務(wù)器接收到客戶(hù)端的數(shù)據(jù)幀,解析VPN協(xié)議頭部分,判斷版本號(hào)字段的值,如果 該值為根據(jù)MAC地址轉(zhuǎn)發(fā)的協(xié)議版本號(hào),服務(wù)器接下來(lái)根據(jù)MAC轉(zhuǎn)發(fā)表進(jìn)行轉(zhuǎn)發(fā)數(shù)據(jù),如果 該值為根據(jù)IP地址轉(zhuǎn)發(fā)的協(xié)議版本號(hào),服務(wù)器接下來(lái)根據(jù)IP轉(zhuǎn)發(fā)表進(jìn)行轉(zhuǎn)發(fā)數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述虛擬網(wǎng)卡 對(duì)多種嵌入式平臺(tái)不同數(shù)據(jù)鏈路的數(shù)據(jù)包統(tǒng)一封裝為以太網(wǎng)數(shù)據(jù)幀。
7.根據(jù)權(quán)利要求1所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述虛擬網(wǎng)卡 自動(dòng)識(shí)別并獲取用戶(hù)發(fā)送的VPN原始數(shù)據(jù),再將該數(shù)據(jù)傳遞到用戶(hù)態(tài)處理程序進(jìn)行處理。
8.根據(jù)權(quán)利要求1所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述虛擬網(wǎng)卡 通過(guò)自身的虛擬IP,能夠在嵌入式SSL VPN整個(gè)系統(tǒng)虛擬的局域網(wǎng)中定位每一臺(tái)設(shè)備。
9.根據(jù)權(quán)利要求1所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述虛擬網(wǎng)卡 包括兩個(gè)部分,一部分是虛擬網(wǎng)卡驅(qū)動(dòng),負(fù)責(zé)與TCP/IP協(xié)議棧進(jìn)行交互,另一部分是交互 驅(qū)動(dòng),負(fù)責(zé)與處于用戶(hù)態(tài)的VPN處理進(jìn)程進(jìn)行交互。
10.根據(jù)權(quán)利要求1或9所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于所述虛擬 網(wǎng)卡的工作步驟如下(1)應(yīng)用程序發(fā)送一個(gè)數(shù)據(jù)包至TCP/IP協(xié)議棧,數(shù)據(jù)包根據(jù)自身的目的IP進(jìn)行分流, 選擇被發(fā)送到虛擬網(wǎng)卡或物理網(wǎng)卡,對(duì)應(yīng)的數(shù)據(jù)包進(jìn)入虛擬網(wǎng)卡后,交互驅(qū)動(dòng)從虛擬網(wǎng)卡 的緩沖區(qū)中讀取數(shù)據(jù)包,并將其傳遞到VPN處理進(jìn)程;(2)物理網(wǎng)卡從VPN虛擬專(zhuān)用隧道收取數(shù)據(jù)包,將其通過(guò)TCP/IP協(xié)議棧提交給VPN處 理進(jìn)程,由交互驅(qū)動(dòng)從VPN處理進(jìn)程讀取此數(shù)據(jù)包,并傳送到虛擬網(wǎng)卡驅(qū)動(dòng),虛擬網(wǎng)卡驅(qū)動(dòng) 收到數(shù)據(jù)包之后,由自身的回調(diào)函數(shù)將數(shù)據(jù)包經(jīng)TCP/IP協(xié)議棧傳遞給對(duì)應(yīng)的應(yīng)用程序。
11.根據(jù)權(quán)利要求1所述的一種嵌入式SSLVPN的實(shí)現(xiàn)方法,其特征在于在SSL VPN客 戶(hù)端中通過(guò)采用抽象接口技術(shù),結(jié)合客戶(hù)端配置文件通過(guò)軟件枚舉的方式實(shí)現(xiàn)客戶(hù)端針對(duì) 不同鏈路接口進(jìn)行選擇通信,其中抽象接口技術(shù)工作的基本步驟如下(1)配置本地系統(tǒng)文件;(2)VPN客戶(hù)端啟動(dòng)時(shí)首先讀取本地的配置文件;(3)讀取完配置文件信息,客戶(hù)端調(diào)用InitInterface接口進(jìn)行初始化硬件接口信息, 調(diào)用SendData接口向通信模塊發(fā)送數(shù)據(jù),調(diào)用RecvData接口從終端模塊讀數(shù)據(jù),在VPN客 戶(hù)端結(jié)束時(shí)調(diào)用Uninithterface做系統(tǒng)接口清除處理。
全文摘要
本發(fā)明涉及嵌入式通信系統(tǒng)技術(shù)領(lǐng)域,采用嵌入式SSL VPN的方法解決了在不同嵌入式設(shè)備之間通信的數(shù)據(jù)安全性問(wèn)題和資源的統(tǒng)一管理性問(wèn)題。本發(fā)明的特征在于(1)VPN服務(wù)器通過(guò)自定義的VPN通信協(xié)議標(biāo)準(zhǔn)進(jìn)行通信;(2)VPN客戶(hù)端通過(guò)采用虛擬網(wǎng)卡技術(shù)獲取相關(guān)數(shù)據(jù)包并進(jìn)行統(tǒng)一封裝,同時(shí),可以通過(guò)虛擬網(wǎng)卡定位虛擬局域網(wǎng)中嵌入式設(shè)備的位置;(3)VPN客戶(hù)端通過(guò)采用統(tǒng)一抽象接口技術(shù),針對(duì)不同的鏈路通信模塊和嵌入式主板之間的接口進(jìn)行了統(tǒng)一化的處理。由于本發(fā)明在嵌入式領(lǐng)域?qū)崿F(xiàn)了SSL VPN方法,保證了數(shù)據(jù)傳輸?shù)陌踩裕⒃诤艽蟪潭壬蟽?yōu)化了多嵌入式平臺(tái)資源管理的現(xiàn)狀,所以對(duì)于嵌入式領(lǐng)域的發(fā)展有著重要的影響。
文檔編號(hào)H04L29/08GK102065125SQ20101054971
公開(kāi)日2011年5月18日 申請(qǐng)日期2010年11月18日 優(yōu)先權(quán)日2010年11月18日
發(fā)明者周立功 申請(qǐng)人:廣州致遠(yuǎn)電子有限公司