武一 王月侖 王佳欣 李雪飛
摘 要:隨著移動(dòng)無線網(wǎng)絡(luò)的不斷發(fā)展,研究、設(shè)計(jì)了一種基于ARM平臺(tái)和移動(dòng)網(wǎng)絡(luò)的服務(wù)器系統(tǒng),并就該系統(tǒng)的安全性進(jìn)行了分析。通過對(duì)ARM平臺(tái)內(nèi)核驅(qū)動(dòng)和應(yīng)用軟件的配置,實(shí)現(xiàn)了ARM平臺(tái)的PPP撥號(hào)上網(wǎng)功能,并利用VPN技術(shù)使之成為一個(gè)可供外網(wǎng)訪問的遠(yuǎn)程數(shù)據(jù)采集服務(wù)器。同時(shí),使用NIST隨機(jī)性檢測(cè)方法對(duì)服務(wù)器使用的移動(dòng)無線網(wǎng)絡(luò)的SNOW 3G加密算法進(jìn)行了分析、討論,為今后在野外勘測(cè)、工業(yè)控制等領(lǐng)域的實(shí)際應(yīng)用提供了參考和借鑒。
關(guān)鍵詞:ARM平臺(tái);移動(dòng)網(wǎng)絡(luò);服務(wù)器;VPN技術(shù)
中圖分類號(hào):TP393.08 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.15913/j.cnki.kjycx.2016.04.005
隨著移動(dòng)無線網(wǎng)絡(luò)的不斷發(fā)展,移動(dòng)網(wǎng)絡(luò)得到了廣泛的應(yīng)用。在嵌入式基礎(chǔ)上的移動(dòng)無線傳輸系統(tǒng)中引入VPN技術(shù),可使其成為能夠被外網(wǎng)訪問的數(shù)據(jù)采集服務(wù)器。
1 系統(tǒng)設(shè)計(jì)
系統(tǒng)硬件主要包括S3C2440處理器、電源電路、復(fù)位電路、FLASH存儲(chǔ)模塊和3G上網(wǎng)模塊等。使用HUAWEI ET128-2無線模塊,傳輸率下行最大為3.1 Mbps,上行最大為1.8 Mbps。核心板與無線模塊通過USB HOST接口連接。系統(tǒng)結(jié)構(gòu)如圖1所示。
2 內(nèi)核驅(qū)動(dòng)配置
系統(tǒng)采用S3C2440處理器作為二次開發(fā)平臺(tái)。
2.1 USB Driver
USB網(wǎng)卡包括modem、USB轉(zhuǎn)串口模塊和存儲(chǔ)模塊。當(dāng)有USB設(shè)備載入開發(fā)板時(shí),開發(fā)板會(huì)默認(rèn)以存儲(chǔ)模式來識(shí)別該設(shè)備。因此,需要在內(nèi)核中添加對(duì)modem模式的支持,為后續(xù)模式轉(zhuǎn)換作準(zhǔn)備。
內(nèi)核版本采用2.6.30,通過命令make menuconfig ARCH=arm添加驅(qū)動(dòng),位于Driver/USB/USB Serial Converter/USB Driver for GSM and CDMA modems。
2.2 Point to Point Protocol(PPP)
PPP解決了SLIP中的問題,并成為正式的因特網(wǎng)標(biāo)準(zhǔn)。添加基于arm開發(fā)板、支持PPP的內(nèi)核,位于Network device support/PPP support,并添加目錄下關(guān)于PPP的驅(qū)動(dòng)。
2.3 廣域網(wǎng)口
要實(shí)現(xiàn)上網(wǎng)功能,需同時(shí)添加廣域網(wǎng)口下PPP支持,位于Wan interfaces support/Synchronous Point to Point Protocol support。
3 應(yīng)用程序編譯
3.1 Libusb庫(kù)
要通過模式轉(zhuǎn)換才能使USB設(shè)備實(shí)現(xiàn)上網(wǎng)功能。Linux平臺(tái)的驅(qū)動(dòng)主要有兩種,即內(nèi)核驅(qū)動(dòng)開發(fā)和基于Libusb庫(kù)的無驅(qū)設(shè)計(jì)。
3.2 usb-modeswitch
usb-modeswitch主要用于控制USB設(shè)備(含有多個(gè)USB子設(shè)備)的模式切換。用此工具將網(wǎng)卡由存儲(chǔ)模式轉(zhuǎn)換到modem模式。解壓數(shù)據(jù)包后,重新配置Makefile文件CC=arm-linux-gcc CFLAGS=-Wall–l usb –I/3g/libusb-0.1.12/_install/include–L/3g/libusb-0.1.12/_install/lib,以確定交叉編譯工具和編譯所依賴的Libusb庫(kù),然后make編譯。
3.3 PPP撥號(hào)程序
下載PPP撥號(hào)源代碼,配置交叉編譯工具./configure–prefix=arm-linux,然后make編譯。編譯完成后,在目錄下會(huì)有chat和pppd目錄生成,更改兩目錄權(quán)限為chmod 777 chat/chat和chmod 777 pppd/pppd,以備移植。
4 開發(fā)板配置
首先是開發(fā)板啟動(dòng)腳本/etc/init.d/rcS,設(shè)置busybox啟動(dòng)后默認(rèn)執(zhí)行操作。掛載設(shè)備和USB線程,mount–t devpts devpts/dev/pts,mount–t usbfs usbfs/proc/bus/usb。
掛載nfs共享,將Libusb、usb-modeswitch和PPP編譯后產(chǎn)生的部分目錄文件移至開發(fā)板。圖2所示為移至開發(fā)板的文件。
將各文件依文件類型歸入不同的文件夾——cp libusb*/lib/、cp chat/usr/sbin/、cp pppd/ust/sbin/和cp usb_modeswitch/bin/。將網(wǎng)卡重新插入,斷開現(xiàn)有網(wǎng)絡(luò)ifconfig eth0 down,切換USB模式usb_modeswitch–W–v 12d1 –p 1dal–V 12d1–P 1da1–D 0–H 1。
在PPP目錄下chap-secrets和pap-secrets文件內(nèi),將權(quán)限設(shè)定為最大權(quán)限。首先在connect-chat文件內(nèi)更改連接時(shí)限等設(shè)定,在gprs文件中設(shè)置回顯、硬件接口等信息,然后撥號(hào)pppd call gprs。圖3所示為反饋信息。將反饋信息中的DNS值寫入resolv.conf文件。
下面對(duì)難點(diǎn)問題進(jìn)行解析。
在操作過程中,如果有USB設(shè)備模式轉(zhuǎn)換錯(cuò)誤“USB error:could not clear/halt ep 1:Connection timed out”,找到文件/driver/usb/serial/option.c,在文件中添加網(wǎng)卡ID信息。
{USB_DEVICE(HUAWEI_VENDOR_ID),HUAWEI_PRO DUCT_ID)}
#define HUAWEI_VENDOR_ID 0x12d1
#define HUAWEI_PRODUCT_ID 0x1da1
如果有地址請(qǐng)求失敗“IPCP:timeout sending Config-Requests”,檢查連接腳本命令,必須有“OKAT+CGDCONT=1,"IP","CMNET"”,“CMNET”為系統(tǒng)網(wǎng)卡APN,在網(wǎng)絡(luò)指令A(yù)TDT后加入中國(guó)移動(dòng)gprs的接入號(hào)碼“*99***1#”。
如果有只能ping純ip地址而不能解析域名的情況,將/ppp/resolv.conf(內(nèi)容為新dns值)內(nèi)容拷貝到/etc/resolv.conf中或者做一個(gè)到/etc/resolv.conf的鏈接,即可以實(shí)現(xiàn)ping通域名。
5 VPN配置
面對(duì)移動(dòng)網(wǎng)絡(luò)中客戶端所獲私有動(dòng)態(tài)IP不能被外網(wǎng)通過IP地址直接訪問的問題,可采用VPN技術(shù)實(shí)現(xiàn)一個(gè)虛擬的局域網(wǎng),以固定設(shè)備IP并實(shí)現(xiàn)訪問。
目前用以構(gòu)建VPN的協(xié)議主要有三種,即PPTP、L2TP和IPSec。PPTP以其速度快、占用資源少的優(yōu)勢(shì)占據(jù)了重要市場(chǎng)。
將pptp-1.7.2解壓后,修改根目錄下的Makefile文件,將CC=gcc改為CC=arm-linux-gcc,make生成PPTP可執(zhí)行文件,并拷貝到ARM平臺(tái)/usr/sbin目錄下。
接下來對(duì)PPTP打入補(bǔ)丁并重新編譯。按照上述內(nèi)容將PPP解壓后,將補(bǔ)丁文件(格式為.patch)拷貝入PPP根目錄并執(zhí)行patch–p1,以打入補(bǔ)丁。重新編譯后,將所需文件拷貝至ARM平臺(tái)。
執(zhí)行指令pptp--debug serverip user $username password $password mppc mppe stateless,以連接VPN服務(wù)器。
補(bǔ)丁版本必須與PPP版本一致,否則無法同Windows 的VPN服務(wù)器實(shí)現(xiàn)加密鏈接。
6 安全性討論
移動(dòng)網(wǎng)絡(luò)的加密主要包括保密性算法和完整性算法。保密性算法用于保護(hù)UE、RNC間的用戶數(shù)據(jù)和信令數(shù)據(jù)的機(jī)密性,是一種對(duì)稱同步串行加密方法;完整性算法用來鑒別UE和RNC間的數(shù)據(jù)完整性,是一種消息認(rèn)證碼(MAC)算法。
移動(dòng)網(wǎng)絡(luò)采用了SNOW族的加密算法,其代表性算法為SNOW 2.0。對(duì)SNOW 2.0進(jìn)行改進(jìn),得到SNOW 3G算法。
6.1 SNOW 2.0
SNOW 2.0為SNOW族代表性算法,基于線性反饋移位寄存器LFSR和狀態(tài)機(jī)FSM運(yùn)作,圖4為其運(yùn)作圖。
將相關(guān)數(shù)據(jù)代入式(4),可得SR代數(shù)表達(dá)式是254次,9項(xiàng)多項(xiàng)式。
6.2 SNOW 3G
為了進(jìn)一步降低SNOW 2.0的線性相關(guān)性,3GPP對(duì)其進(jìn)行了升級(jí)。在FSM中添加一個(gè)寄存器R3和一個(gè)S盒,如圖5所示。
6.2.3 完整性階段
在該階段,從產(chǎn)生的密鑰流中取z1~z5,其中z1、z2和明文message作為MUL的輸入進(jìn)行運(yùn)算,得到EVAL的中間值EVAL_M;EVAL_M與明文長(zhǎng)度LENGTH進(jìn)行異或運(yùn)算后的值與z3、z4再次調(diào)用MUL函數(shù),得到新的EVAL值;取該EVAL的高32位與z5進(jìn)行異或運(yùn)算,即可得到完整性保護(hù)密鑰MAC-1。
6.3 NIST隨機(jī)性測(cè)試
NIST隨機(jī)性檢測(cè)的數(shù)學(xué)依據(jù)是假設(shè)檢驗(yàn)。設(shè)定一個(gè)顯著性水平α,由此計(jì)算當(dāng)前樣本統(tǒng)計(jì)量的值P-value。當(dāng)結(jié)果P-value≥α?xí)r,則認(rèn)為待測(cè)樣本是隨機(jī)序列,通過測(cè)試;否則為非隨機(jī)。P-value值越大,隨機(jī)性越好。NIST規(guī)定了16種隨機(jī)性測(cè)試項(xiàng),就其中的12項(xiàng)在1%的水平進(jìn)行測(cè)試,測(cè)試結(jié)果如表1所示。
由表1中的數(shù)據(jù)可以看出各項(xiàng)的P-value>α(=0.01),并且有5項(xiàng)均超過了0.5,能夠很好地滿足隨機(jī)性要求。
7 總結(jié)
本文設(shè)計(jì)了一種基于ARM平臺(tái)和移動(dòng)無線網(wǎng)卡的遠(yuǎn)程數(shù)據(jù)采集服務(wù)器系統(tǒng),且其加密算法隨機(jī)性良好,為今后野外勘測(cè)、工業(yè)控制等領(lǐng)域的實(shí)際應(yīng)用提供了可行性方法。
參考文獻(xiàn)
[1]Jan Axelson.USB開發(fā)大全:第四版[M].李鴻鵬,譯.北京:人民郵電出版社,2011.
[2]姚振國(guó).基于Linux的USB設(shè)備管理器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2012,1(10).
[3]Greg Kroah Hartman.Linux USB stuff:USBview[EO/OL].http://www.kroah.com/Linux/usb,2012-06-12.
[4]謝大吉.基于PPTP的VPN技術(shù)研究[J].四川文理學(xué)院學(xué)報(bào),2011(02).
[5]姚丹丹,張?bào)?,王釗,?基于隨機(jī)性測(cè)試的SNOW 2.0算法部件分析與改進(jìn)[J].電子與信息學(xué)報(bào),2014,36(1).
[6]楊宏志.對(duì)稱密碼算法簇設(shè)計(jì)及其仿真[D].鄭州:解放軍信息工程大學(xué),2010.
[7]Specification of the 3GPP Confidentiality and Integrity Algorithms UEA2 & UIA2. Document2:SNOW3GSpecification[EB/OL/].[2010-03-19].http//gsmworld.com/documents/.
[8]Specification of the 3GPP confidentiality and integrityal gorithms UEA2&UIA2 Document3:ImplementorsTestData[EB/OL/].[2010-03-19].http//gsmworld.com/documents/.
[9]Specification of the 3GPP confidentiality and integrityal gorithms UEA2&UIA2 Document4:DesignConformanceTestData[EB/OL/].[2010-03-19].http//gsmworld.com/documents/.
[10]張永強(qiáng),李順波,屈帥,等. NIST隨機(jī)性檢測(cè)方法及應(yīng)用[J].電腦知識(shí)與技術(shù),2014,10(26).
〔編輯:劉曉芳〕