吳鵬程 李孝成
摘 要:隨著網(wǎng)絡技術(shù)和嵌入式系統(tǒng)的發(fā)展,嵌入式系統(tǒng)對網(wǎng)絡安全的要求也在逐步提升。對此,本文分析了一種解決網(wǎng)絡安全的網(wǎng)絡隧道方案的原理,并針對嵌入式系統(tǒng)的特性和嵌入式網(wǎng)絡環(huán)境的特性,提出了一套基于安全隧道且適合嵌入式系統(tǒng)使用的虛擬專屬網(wǎng)絡工具 KidVPN的設計。全文從其組成的三個方面對 KidVPN進行了詳細設計介紹,并針對其使用場景等,進行了模擬環(huán)境測試與最終的報文分析驗證。
關鍵詞:嵌入式系統(tǒng),安全網(wǎng)絡隧道,虛擬專屬網(wǎng)絡,KidVPN
中圖分類號:TP311.1? ? ? ? ? 文獻標識碼:A
引言
隧道技術(shù)指的是利用一種網(wǎng)絡協(xié)議來傳輸另一種網(wǎng)絡協(xié)議的技術(shù)。他可以利用公共網(wǎng)絡來實現(xiàn)某些使用特別通信協(xié)議的網(wǎng)絡或用戶之間的連接和通信,或在不改變網(wǎng)絡標準的條件下,在公共網(wǎng)絡中建立某種固定連接。網(wǎng)絡隧道是虛擬專用網(wǎng)絡 VPN技術(shù)(virtual private network)實現(xiàn)的基礎[1]。VPN技術(shù)是一種在公共網(wǎng)絡上 (主要是Internet網(wǎng)) 將多個私有專用網(wǎng)絡或網(wǎng)絡節(jié)點采用加密、身份驗證、隧道協(xié)議等技術(shù)連接起來, 為用戶提供可通過公用網(wǎng)絡安全地對私有專用網(wǎng)絡進行遠程訪問服務的虛擬專用網(wǎng)絡構(gòu)建技術(shù)[2]。目前許多嵌入式操作系統(tǒng)也開始對 VPN技術(shù)提供了良好的支持,本文借助基于SylixOS的一款輕量型 VPN— KidVPN來闡述安全隧道在嵌入式系統(tǒng)中的場景使用與原理分析。
1.網(wǎng)絡隧道簡介
1.1網(wǎng)絡隧道的原理
一幀網(wǎng)絡報文由兩部分組成,分別為報頭與載荷。整個網(wǎng)絡報文通信時,只有報頭起作用,而真正的報文數(shù)據(jù)存在載荷內(nèi),在傳輸過程中不會被分析和處理。如圖1所示。
如果在傳輸過程中,將一個完成的網(wǎng)絡報文封裝在另一個網(wǎng)絡報文的載荷中,作為另一個網(wǎng)絡報文的數(shù)據(jù)字段在網(wǎng)絡中進行傳送,那個這個傳送的報文所經(jīng)過的路徑就是網(wǎng)絡隧道。如圖2所示。隧道轉(zhuǎn)變了在報文頭部中協(xié)議嚴格分層的思路,通過隧道的建立,可實現(xiàn)將數(shù)據(jù)強制送到特定的地址、隱藏私有的網(wǎng)絡地址、在 IP網(wǎng)絡上傳遞非 IP數(shù)據(jù)包、提供數(shù)據(jù)安全支持等功能。
1.2網(wǎng)絡隧道協(xié)議
為了在通信兩端建立隧道,通信雙方(一般角色為客戶端和服務器)需要使用相同的網(wǎng)絡協(xié)議,這類協(xié)議就成為隧道協(xié)議。這類協(xié)議主要有兩類,一類是以OSI模型中以第二層數(shù)據(jù)鏈路層為基礎的,還有一類是以第三層網(wǎng)絡網(wǎng)絡層為基礎的。
第一類是以幀作為數(shù)據(jù)交換的單位,主要有:
●PPTP(點對點隧道協(xié)議)
●L2TP(第二層隧道協(xié)議)
●L2F(第二層轉(zhuǎn)發(fā)協(xié)議)
第二類是以數(shù)據(jù)包作為數(shù)據(jù)交換的單位,主要有:
●IPsec;
●IP in IP
1.3網(wǎng)絡隧道的形成
如1.1 中原理介紹所說,形成網(wǎng)絡隧道的方法只有一種,就是報文封裝。報文封裝是借助上文提到的隧道協(xié)議將上層的數(shù)據(jù)進行打包封裝,但此時這部分數(shù)據(jù)此時仍然是明文的,在網(wǎng)絡傳輸中無法收到保護,很不安全,不符合網(wǎng)絡隧道安全的這一特性。因此在形成隧道時,除了會用到報文封裝外,還會使用到另一種技術(shù),就是隧道加密。隧道加密與報文封裝是相關的,光有隧道加密不無法形成隧道的,只有將數(shù)據(jù)先經(jīng)過隧道加密后,再次進行封裝傳輸,這樣才可以形成加密隧道。如圖3所示。
2.嵌入式系統(tǒng)中的網(wǎng)絡隧道
嵌入式系統(tǒng)指的是一個以應用為中心、以計算機技術(shù)為基礎、軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、體積、功耗嚴格要求的專用計算機系統(tǒng)。
在嵌入式系統(tǒng)中,有如下幾個特點:
●專用性強
●嵌入式硬件性能較低
●嵌入式軟件操作系統(tǒng)的內(nèi)核小
●嵌入式系統(tǒng)需要較高的實時性
●嵌入式系統(tǒng)需要較高的安全性
隨著技術(shù)的發(fā)展,嵌入式系統(tǒng)的復雜程度逐漸提高,對網(wǎng)絡功能的需求也日趨上升。尤其是物聯(lián)網(wǎng)的發(fā)展與普及,網(wǎng)絡隧道技術(shù)也被應用到各個嵌入式行業(yè)中。各種嵌入式終端設備在接入網(wǎng)絡時,常常會借助網(wǎng)絡隧道技術(shù)實現(xiàn)嵌入式設備與網(wǎng)絡設備的安全通信。在嵌入式系統(tǒng)中,網(wǎng)絡隧道通常需要滿足如下條件:
●網(wǎng)絡隧道搭建與開發(fā)容易
●網(wǎng)絡隧道使用便捷
●網(wǎng)絡隧道對資源的消耗低
●基于網(wǎng)絡隧道的通信安全
●基于網(wǎng)絡隧道的通信能滿足實時性的要求
3.嵌入式輕量型VPN(KidVPN)設計
VPN技術(shù)通過對網(wǎng)絡數(shù)據(jù)進行封包和加密, 在Internet網(wǎng)絡或其他公共網(wǎng)絡中建立一條虛擬的專用通道, 在公網(wǎng)上傳輸私有數(shù)據(jù), 同時, 保證私有網(wǎng)絡安全性, 將公共網(wǎng)絡的便捷性與專用, 網(wǎng)絡的安全性結(jié)合起來, 實現(xiàn)公網(wǎng)私用[3]。本文將論述一款符合上文描述的嵌入式系統(tǒng)網(wǎng)絡隧道特性的一款輕量型VPN—
KidVPN的設計。KidVPN一款開源的,體量輕,操作便捷,極其適合嵌入式系統(tǒng)下使用的虛擬專屬網(wǎng)絡工具。KidVPN支持 SylixOS和 Linux操作系統(tǒng)。同時,KidVPN也符合虛擬性,專用性的VPN特點[4],其組成框圖如圖4所示。
3.1KidVPN的網(wǎng)絡隧道設計
KidVPN使用的是IPIP隧道協(xié)議。IPIP隧道是一種三層隧道,通過把原來的IP包封裝在新的IP包里面,來創(chuàng)建隧道傳輸。IPIP隧道協(xié)議的實現(xiàn)原理簡單,非常符合在嵌入式系統(tǒng)中使用。如圖5所示
左側(cè)A報文是原始的正常報文,其內(nèi)部具備“IP頭部”與“IP載荷”。在經(jīng)過IPIP隧道協(xié)議后,報文變成了圖中右側(cè)B報文的結(jié)構(gòu)。其中,原始A報文的“IP頭部”變成了右側(cè)B報文中的“內(nèi)部IP頭部”,原始A報文的IP載荷沒有變化。同時,右側(cè)B報文結(jié)構(gòu)中又多出了“外部IP頭部”與“隧道頭部”。“外部IP頭部”是用來將封裝好的B報文進行網(wǎng)絡傳輸?shù)年P鍵,此時網(wǎng)絡傳輸中的尋址發(fā)送等操作都是根據(jù)“外部IP頭部”中的內(nèi)容進行的。而“隧道頭部”則是用來告知此次傳輸?shù)腂報文是隧道報文,報文內(nèi)容需要進行二次處理后,才能拿到真實的數(shù)據(jù),及封裝前的A報文。
3.2KidVPN的數(shù)據(jù)收發(fā)設計
KidVPN通信是基于IPIP網(wǎng)絡隧道協(xié)議實現(xiàn)的,但隧道設計只是VPN實現(xiàn)需要考慮的一部分內(nèi)容。VPN的實現(xiàn)還需要考慮的第二部分內(nèi)容是網(wǎng)絡報文的收發(fā)實現(xiàn)。
KidVPN采用的是虛擬網(wǎng)卡的方式,實現(xiàn)隧道報文收發(fā)流程。其整體流程如下:
1.首先在嵌入式系統(tǒng)中需要創(chuàng)建一個虛擬網(wǎng)卡設備,它與真實的網(wǎng)卡設備的差別就在于它沒有對應的硬件。但從上層看到,它與真實的物理網(wǎng)卡設備沒有區(qū)別;
2.此時,如果嵌入式設備需要借助網(wǎng)絡隧道發(fā)送一幀報文時,報文在經(jīng)過協(xié)議棧操作進行尋址后,協(xié)議棧會將此報文送到第一步創(chuàng)建出的虛擬網(wǎng)卡中,進行報文的發(fā)送;
3.由于KidVPN接管了虛擬網(wǎng)卡的操作,因此當虛擬網(wǎng)卡收到報文時,KidVPN就會對報文進行隧道封裝,此時封裝后的報文就是一幀符合IPIP隧道協(xié)議的報文;
4.在KidVPN封裝好隧道報文之后,會進行正常的 UDP通信將報文再次送到協(xié)議棧,此時,協(xié)議棧在進行尋址等操作時,就會按照封裝后的“外部IP頭部”的內(nèi)容進行操作,從而將封裝好的隧道報文經(jīng)過真實的物理網(wǎng)卡發(fā)送到目的端,實現(xiàn)整個網(wǎng)絡隧道報文的發(fā)送流程。
同樣的,KidVPN隧道報文的接收與發(fā)送類似,當接收端收到隧道報文時,協(xié)議棧只會看“外部IP頭部”,然后將報文去掉“外部IP頭部”后,發(fā)現(xiàn)是一幀 UDP報文,因此會將此報文傳送到上層 UDP服務,即 KidVPN中。此時,KidVPN會對這幀報文進行解包處理,從而拿到隧道封裝前的數(shù)據(jù)報,并將其發(fā)送給虛擬網(wǎng)卡設備。而虛擬網(wǎng)卡設備收到解包好后報文后,會將其作為一個正常的報文在此傳入到協(xié)議棧。這樣完成一個正常隧道報文的接收流程。
另外,為了保證數(shù)據(jù)的正確連續(xù)通信,KidVPN雙方還需要約定好相關的通信參數(shù),如MTU、保持心跳等。
因此,KidVPN使用時,通信雙方需要先創(chuàng)建一個虛擬網(wǎng)卡設備,用來進行隧道報文的收發(fā)流程。接著雙方需要建立連接,協(xié)商好通信的參數(shù),最后上層應用即可借助 KidVPN進行正常的網(wǎng)絡隧道通信。
3.3KidVPN的通信安全設計
KidVPN主要從兩方面來保證數(shù)據(jù)通信的安全性。
1.KidVPN使用加密隧道保證數(shù)據(jù)安全
3.2 中描述了 KidVPN網(wǎng)絡隧道通信的實現(xiàn),但此時的報文仍然是明文報文,如果進行抓包分析處理,仍然可以看到真實的報文內(nèi)容。因此KidVPN使用了 AES高級加密標準加密算法對隧道報文進行了加解密。在網(wǎng)絡隧道通信時,只有“外部IP頭部”是明文的,而涉及到的真實報文數(shù)據(jù),均是加密后的內(nèi)容,因此可以很大程度的保證數(shù)據(jù)安全。
2.KidVPN使用雙重驗證保證設備安全
在使用 KidVPN時,客戶端與服務器需要先建立通信連接,用來確保通信報文的準確性與穩(wěn)定性。在建立連接時,KidVPN要求雙方需要提供相同的 AES KEY與 密鑰。KidVPN采用這種雙重認證的方式,來確保加入虛擬專屬網(wǎng)絡中的設備是經(jīng)過認證安全的。
4.嵌入式輕量型VPN(KidVPN)使用場景驗證
4.1KidVPN 模擬測試環(huán)境
由于是 VPN的使用場景一般是兩個網(wǎng)絡,因此需要兩臺設備來搭建驗證 KidVPN的模擬環(huán)境。本文使用兩臺路由器來模擬測試,一臺路由器A作為 KidVPN的服務器,另一臺路由器B作為 KidVPN的客戶端。將這兩臺路由器均接入互聯(lián)網(wǎng)中,此時,這兩臺路由器下的內(nèi)網(wǎng)設備雖能同時訪問互聯(lián)網(wǎng),但它們是不具備互通功能的[5]。拓撲結(jié)構(gòu)如圖6所示。
4.2KidVPN驗證與報文分析
此時,配置兩臺路由器讓其運行 KidVPN。在配置時,如上文描述所示需要指定好相關配置參數(shù)與連接密鑰等內(nèi)容。在配置好后,使用B路由器去連接A路由器中的KidVPN服務,出現(xiàn)“[KidVPN] Client add”時,則說明連接成功。此后,配置好路由器上對應的路由策略后,兩個路由器及接入他們的子網(wǎng)設備均已經(jīng)處于同一子網(wǎng)下,此時使用B路由器下的一個主機設備,IP地址為 10.9.0.201 去pingA路由器的虛擬網(wǎng)卡地址也可直接ping通。如圖7所示。
PC端再通過 wireshare去抓取從路由器 A中發(fā)出的ping報文,抓包內(nèi)容如圖8所示。
此時,wireshark抓到的 ping報文不是一幀 ICMP報文,而是一幀 UDP報文,其中端口號是 KidVPN服務器使用的 10088 端口號,并且 UDP報文的載荷也已經(jīng)是加密后混亂的數(shù)據(jù),根本無法分析得到真正的 ping報文,從而可以保證數(shù)據(jù)的安全通信。
綜上,KidVPN經(jīng)過模擬測試環(huán)境的測試,可以實現(xiàn)其預設的功能,能夠做到快速的搭建一個虛擬專屬網(wǎng)絡,同時也符合嵌入式系統(tǒng)下的安全隧道的要求。
參考文獻:
[1] 郭鋒.高效圖書館VPN網(wǎng)絡建設研究[J].情報檢索, 2010, (2) :105~107..
[2] 周群.VPN技術(shù)應用于圖書館研究概述[J].圖書館學刊, 2011, (3) :100~102.
[3] Sixto Ortiz Jr.Virtual Private Networks:Levera-ging the Internet[J].Computer, 1997, (30) :18~20.
[4] 蘇東出.利用RounterOs構(gòu)建高校圖書館無縫網(wǎng)絡辦公系統(tǒng)[J].現(xiàn)代圖書情報技術(shù), 2007, (11) :84~86.
[5] 魏念忠.基于VPN技術(shù)的多校區(qū)校園網(wǎng)絡安全研究[J].微電子學與計算機, 2007, (10) :108~110.