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