基于PowerPC和Linux的VPN網(wǎng)關(guān)設計
目前,國內大部分VPN 網(wǎng)關(guān)在硬件平臺上使用基于x86 CPU的商用工控機主板。由于商用工控機是為一般的工業(yè)控制而設計的,作為VPN網(wǎng)關(guān)使用時(shí),存在功能冗余、成本及可靠性難于控制等問(wèn)題。因此,有必要自己設計一款性?xún)r(jià)比較高的硬件平臺供VPN網(wǎng)關(guān)使用。Motorola通信處理器PowerPC在通信業(yè)中使用廣泛,并具有良好的性?xún)r(jià)比,可以滿(mǎn)足VPN安全網(wǎng)關(guān)的設計需要。另外,安全產(chǎn)品涉及一個(gè)國家的主權和敏感的安全信息,作為保證安全極為重要的操作系統和加密算法應該完全為自己掌握。因此,采用具有自主知識產(chǎn)權的操作系統和加密算法尤為重要。而L inux操作系統源代碼的開(kāi)放性及其在網(wǎng)絡(luò )產(chǎn)品中的優(yōu)異表現,使得我們可以用其構建具有自主知識產(chǎn)權的VPN安全網(wǎng)關(guān)。
本文引用地址:http://dyxdggzs.com/article/257894.htmVPN概念
什么是VPN
VPN即虛擬專(zhuān)用網(wǎng),是通過(guò)一定的安全機制在公用的網(wǎng)絡(luò )如因特網(wǎng)中建立起與公網(wǎng)相對獨立和封閉的信息通道,以保護企業(yè)各子網(wǎng)之間、子網(wǎng)和移動(dòng)用戶(hù)之間、移動(dòng)用戶(hù)和服務(wù)器之間的通信數據的安全。VPN利用公網(wǎng)的資源,讓用戶(hù)擁有同專(zhuān)網(wǎng)相同的安全性,并享受因特網(wǎng)帶來(lái)的經(jīng)濟實(shí)惠和方便迅捷。
VPN如何保護通信安全
不同類(lèi)型的VPN所采用的協(xié)議不同,使用的安全機制也不同。關(guān)于VPN的協(xié)議比較多,但目前最完善的、安全性最高的應屬I(mǎi)PSec協(xié)議。它可使用CA 數字證書(shū)來(lái)實(shí)現通信雙方的身份認證;使用對稱(chēng)加密算法來(lái)對數據進(jìn)行加密,保證數據的安全性;使用單向散列函數對數據計算摘要,并對摘要進(jìn)行加密來(lái)保證數據的完整性。此外,VPN節點(diǎn)之間通信,不可能每次都手工配置密鑰,手工方式既不安全也不方便,可以采用因特網(wǎng)自動(dòng)密鑰交換協(xié)議來(lái)進(jìn)行密鑰的協(xié)商,設置每次會(huì )話(huà)密鑰的生命期,在快要結束生命期時(shí),自動(dòng)協(xié)商下一個(gè)會(huì )話(huà)密鑰。
當企業(yè)虛擬專(zhuān)網(wǎng)建立時(shí),需要在各個(gè)子網(wǎng)的出口配置安全網(wǎng)關(guān)。安全網(wǎng)關(guān)負責對流出數據進(jìn)行加密和計算校驗和,對進(jìn)入數據進(jìn)行檢驗和解密,并實(shí)施訪(fǎng)問(wèn)控制。VPN安全網(wǎng)關(guān)在其中具有舉足輕重的作用。比如,當一臺主機與另外一臺主機通信時(shí),會(huì )首先啟動(dòng)IKE (自動(dòng)密鑰協(xié)商)進(jìn)程協(xié)商各種工作參數,包括加密算法、驗證算法、密鑰長(cháng)度、密鑰值等,并進(jìn)行雙向的身份認證,所有這些成為一個(gè)安全關(guān)聯(lián)( Security Association) 。
VPN的使用
VPN安全網(wǎng)關(guān)與VPN Client軟件配合使用,通過(guò)靈活配置隧道策略,不僅可以解決通信的安全問(wèn)題,還可以解決用戶(hù)對公司總部網(wǎng)絡(luò )的訪(fǎng)問(wèn)授權問(wèn)題。圖1 是一個(gè)VPN安全系統的典型網(wǎng)絡(luò )拓撲圖。
當網(wǎng)關(guān)與網(wǎng)關(guān)相連時(shí),通過(guò)VPN管理中心或終端方式為需要相互通信的兩臺網(wǎng)關(guān)間配置對應的隧道,位于兩臺私口后的主機就能通過(guò)加密隧道進(jìn)行通信,防止數據被丟失、篡改并保證數據的完整。
VPN安全網(wǎng)關(guān)設計方案概述
VPN系統體系結構
VPN的主要作用是采用加密、認證和網(wǎng)絡(luò )技術(shù)在公共互聯(lián)網(wǎng)上構建相互信任方之間的安全加密信息傳輸通道,以期達到專(zhuān)用網(wǎng)絡(luò )的效果。VPN網(wǎng)關(guān)在其中將發(fā)揮非常重要的核心作用。
由圖1可知,VPN網(wǎng)關(guān)工作在本地局域網(wǎng)及與其通信的遠程局域網(wǎng)的網(wǎng)關(guān)位置,具有加密和認證功能。相互信任的局域網(wǎng)間進(jìn)行通信時(shí),仍然使用互聯(lián)網(wǎng)作為中間信道。但是,通過(guò)VPN網(wǎng)關(guān)的加密功能確保信息在不安全的互聯(lián)網(wǎng)上流通時(shí)是密文形式。這樣,即便信息被截取,也無(wú)法偷窺或篡改其內容,保證通過(guò)互聯(lián)網(wǎng)連接的局域網(wǎng)間通信的安全性、機密性、可認證性和完整性等安全性能。
VPN安全網(wǎng)關(guān)的設計目標
(1) 完整實(shí)現IPSec協(xié)議簇,完全支持VPN的要求。
(2) 要建立在具有自主版權的、安全性完全控制在自己手中的內核操作系統之上。
(3) 要確保自身的安全、協(xié)議的安全和信息通道的安全。采用國密辦批準的加密算法,由硬件實(shí)現數據加解密。
(4) 要具有較高的性?xún)r(jià)比,滿(mǎn)足低端網(wǎng)絡(luò )的要求。明文吞吐率10Mbp s;啟用IPSec協(xié)議,以隧道方式加密傳輸時(shí),吞吐率大于4Mbp s。
(5) 設計與實(shí)現要采用先進(jìn)的硬、軟件技術(shù)和方法。
(6) 盡可能方便管理、靈活配置和界面友好。
技術(shù)思想
(1) 軟件: ①自主開(kāi)發(fā)的嵌入式安全操作系統內核;②由于L inux OS的源代碼的開(kāi)放性及其在網(wǎng)絡(luò )產(chǎn)品中的優(yōu)異表現,因而可以用其構建具有自主知識產(chǎn)權的VPN安全網(wǎng)關(guān)(采用嵌入式L inux 2. 4. 4 For PowerPC,內核根據需要裁減,并加入相應的硬件驅動(dòng)程序,完成對FlashMemory和DOC文件系統的支持) ;③網(wǎng)絡(luò )協(xié)議和IPSec協(xié)議層; ④數據加/解密算法由采用國密辦批準的硬件加密芯片SSF10B實(shí)現; ⑤管理系統層需支持手工和通過(guò)SMC (安全管理中心)配置IPSec策略。
(2) 硬件:根據設計要求,該VPN網(wǎng)關(guān)將用于10Mbp s以太網(wǎng)環(huán)境中,設計采用目前在通信業(yè)中使用較廣的Mo2torola通信處理器PowerPC MPC8xx作為主CPU,選用其中一款性?xún)r(jià)比較高的控制器MPC855T。在硬件平臺的設計中,本著(zhù)滿(mǎn)足性能要求,保證高可靠性和高性?xún)r(jià)比的原則,采用有多種硬件選項的設計,來(lái)滿(mǎn)足設計要求。嵌入式L inux操作系統的構建
通常的嵌入式系統開(kāi)發(fā)大致可以分為硬件設計、裝載或引導嵌入式系統、在嵌入式系統上建立開(kāi)發(fā)平臺以及開(kāi)發(fā)應用等四個(gè)步驟。
利用ppcboot引導
ppcboot是德國Denk軟件工程中心開(kāi)發(fā)的引導程序,我們在研究開(kāi)發(fā)中使用了其中的ppcboot-1. 1. 5作為開(kāi)發(fā)藍本,對其代碼進(jìn)行了修改,以滿(mǎn)足硬件設計的要求。
ppcboot源碼樹(shù)的目錄結構
CHANGELOG / /記錄歷次版本升級時(shí)的修改內容
COPYING
CRED ITS
MAKEALL
Makefile / /制作文件
README / /必讀的文件
System. map / /當編譯連接完成后,所生成的ppcboot二進(jìn)
/ /制中所有函數、數據的地址信息
board / /各種與板子硬件關(guān)聯(lián)的. c模塊
common / /一些通用ppcboot命令集的. c模塊
config. mk
cpu / /與MPC8xx硬件關(guān)聯(lián)的系統初始化. c代碼
disk / /磁盤(pán)分區支持
doc / /技術(shù)文檔目錄
examp les / /一些簡(jiǎn)單的、無(wú)需操作系統的應用程序
fs / /ppcboot中對文件系統的支持
include / /頭文件
net / /網(wǎng)絡(luò )協(xié)議支持
ppc PowerPC / /處理器運行時(shí)環(huán)境支持
ppcboot / / elf32格式的ppcboot二進(jìn)制執行文件
ppcboot. bin / / raw二進(jìn)制格式的ppcboot執行文件
ppcboot. map / / s2record格式的ppcboot執行文件
rtc / /實(shí)時(shí)時(shí)鐘支持
tools / /與ppcboot相關(guān)的一些工具軟件ppcboot的特點(diǎn)
經(jīng)修改后, ppcboot-1. 1. 5 具有如下特性: ( 1 ) 支持bootm,直接從flash引導L inux,并提供軟件工具集,可構建出最終燒結用的影像; (2) 支持從doc或flash memory引導L inux,并提供工具集,可構建出最終燒結用的影像; (3) 板上flash /doc讀、寫(xiě)、擦除功能; (4) 支持串行口kermit協(xié)議下載代碼或數據; (5) 支持scc1以太網(wǎng)口啟動(dòng)tftp下傳數據:如內核、ramdisk、autoscrip t等影像; ( 6) 支持串行口srecord下載代碼或數據; (7) 支持autoscrip t; (8) 提供板上內存讀寫(xiě),格式化顯示,可進(jìn)行簡(jiǎn)單測試。
當完成ppcboot-1. 1. 5的改寫(xiě)后,對其進(jìn)行編譯,得到二進(jìn)制的ppcboot. bin代碼,然后將其燒錄在板上的BOOTEPROM中,這樣就可以在上電后完成對系統的引導。
建立Linux開(kāi)發(fā)平臺
修改和編譯嵌入式Linux內核
Linux內核有自己的結構體系,進(jìn)程管理、內存管理和文件系統是其最基本的三個(gè)子系統。圖2 為L(cháng)inux 內核的結構。圖中虛線(xiàn)框中部分可以看成是Linux內核的單內核結構,因此修改內核必須注意各子系統間的協(xié)調。
Linux開(kāi)發(fā)平臺使用內核版本為2. 4. 4的PowerPC嵌入式L inux操作系統作為VPN 網(wǎng)關(guān)的基本軟件平臺。為了支持硬件平臺,需要對內核進(jìn)行修改,并增加相應設備的驅動(dòng)程序。
(1) 驅動(dòng)程序列表。
DOC 驅動(dòng)程序源碼: /home / sjw01 / linux/drivers/mtd /devices/ doc2000. c;
以太網(wǎng)驅動(dòng)程序源碼: / home / sjw01 / linux/ arch /ppc /8xx _ io / enet_scc1. c fec. c;
RTC 驅動(dòng)程序源碼: /home / sjw01 / linux/drivers/unis _ rtc / rtc8xx. h rtc8xx. c setrtc8xx. cMkaefile setrtc8xx;
串口驅動(dòng)程序源碼: /home / sjw01 / linux/ arch /ppc /8xx_ io / uart. c;
flash memory 驅動(dòng)程序源碼: /home / sjw01 / linux/drivers/mtd / map s/unis. c。
(2) 交叉編譯環(huán)境。
使用hardhat CDK2. 0作為開(kāi)發(fā)工具,需將下面的路徑加入用戶(hù)環(huán)境變量$PATH 中: /op t/hardhat/devkit/ppc /8xx/bin; #export PATH = $PATH: /op t/hardhat/devkit/ppc /8xx/bin或編輯“. bash_p rofile”文件的PATH行。對于應用軟件,一般情況下只要替換編譯器cc為ppc_8xx-gcc,重新編譯一下源代碼即可。構建目標文件系統
配置DOC或FlashMemory中的文件系統是件很講究的事情,主要是因為DOC /Flash容量有限,在保證正常功能的前提下,要盡可能地少占用資源。
總體上,文件分成如下幾類(lèi): (1)共享庫類(lèi):這類(lèi)文件必不可少。(2) L inux/GNU系統實(shí)用工具:盡量用busybox、tinylogin代替,能減則減。(3)配置文件:多出現在/ etc下,不太占地方,但要注意協(xié)調關(guān)系。(4)用戶(hù)應用程序:編譯時(shí)盡量使用動(dòng)態(tài)連接,編譯后strip一下,放到固定位置。
目標文件系統列表如表1所示。
所有配置文件、可執行文件、庫文件的位置均符合L inux操作系統的慣例。
IPSec實(shí)現中的硬件加密算法
在VPN安全網(wǎng)關(guān)中,加密算法的安全、高效,是VPN網(wǎng)關(guān)安全性和有效性的重要保證。為此,在設計中采用了一種硬件加密模塊的方式,使得我們的VPN網(wǎng)關(guān)可以在硬件上使用不同的加密算法。在我們的默認配置中,使用國密辦批準的分組加密算法芯片SSF10。
為了使用硬件加密模塊,需要在Linux內核的IPSec實(shí)現中添加和修改相應的代碼,下面對其簡(jiǎn)單說(shuō)明。由于IPSec實(shí)現在內核中的特殊位置,并且MPC855T的主頻較低 (80MHz) ,采用訪(fǎng)問(wèn)設備驅動(dòng)文件的方式訪(fǎng)問(wèn)硬件SSF10加密模塊會(huì )造成速率大幅降低。因此,我們采用I/O直接訪(fǎng)問(wèn)硬件SSF10芯片。這需要將模塊驅動(dòng)中的操作分散到IPSec實(shí)現的相關(guān)部分,替換原來(lái)的軟件加密算法。同理,可以使用硬件DES/3DES、硬件AES算法和其他國密辦批準的算法,用硬件實(shí)現數據加密。對IPSec的一個(gè)實(shí)現freeswan算法部分進(jìn)行修改,使其可以實(shí)現硬件算法。與硬件加密算法有關(guān)的文件如下:
freeswan-1. 94 /klip s/net/ ip sec /Config. in;
freeswan-1. 94 / libdes/des_enc. c;
freeswan-1. 94 /klip s/net/ ip sec / ip sec_sa. h;
freeswan-1. 94 /klip s/net/ ip sec / ip sec_tunnel. c;
freeswan-1. 94 /klip s/net/ ip sec / ssf10. h;
freeswan-1. 94 /klip s/net/ ip sec / ip sec_init. c;
freeswan-1. 94 /klip s/net/ ip sec /pfkey_v2_parser. c;
freeswan-1. 94 /klip s/net/ ip sec_rcv. c。
完成修改后, 使用內核make menuconfig 命令, 選中Networking op tions→[* ] IPSEC: Use SSF10..,重新編譯即可使用SSF10硬件算法模塊。
結束語(yǔ)
為了滿(mǎn)足VPN安全網(wǎng)關(guān)設計的目標,本文在基于Motorola PowerPC和嵌入式L inux的VPN網(wǎng)關(guān)設計中使用Motorola通信處理器PowerPC、采用L inux和加密算法,構建出了具有自主知識產(chǎn)權的VPN安全網(wǎng)關(guān)。理論分析表明,本文提出的VPN安全網(wǎng)關(guān)設計方案、嵌入式L inux操作系統的構建方法以及硬件加密模塊的實(shí)現方法能夠滿(mǎn)足10Mbp s的網(wǎng)絡(luò )環(huán)境中提供虛擬專(zhuān)用網(wǎng)的安全服務(wù)。但是,由于其定位在低端,不適合在100Mbp s的網(wǎng)絡(luò )環(huán)境中使用。如果要在100Mbp s的環(huán)境中使用VPN網(wǎng)關(guān),就要考慮使用基于PowerPCMPC82xx的硬件平臺
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論