武一 王月侖 王佳欣 李雪飛



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