李愛寧,唐 勇,齊曉東
(河北工程技術高等專科學校電氣自動化系,河北 滄州 061001)
隨著多媒體教育的日益深化,在高等教育教學中,尤其是工科類的教學,試驗課程得到越來越多的重視。但由于目前一些學校經費有限,設備條件不足,對于某些重要知識點不能接觸到實際應用環境,學生理解起來比較困難。MAPSec協議原理作為3G系統中的一個重要協議,是無線通信課程中的一個重要知識點,由于該原理相對抽象、復雜,并且沒有現成的針對這個知識點的實驗平臺供教學使用,為克服這種困難,該課題通過使用C#.net以及Sqlite數據庫技術設計了一個MAP信令安全傳輸實驗平臺。
MAPSec協議原理參考文獻[1-2]。全球移動通信系統(GSM)和第三代移動通信系統(3G)網絡中的控制信令是通過MAP協議實現的,MAPSec協議主要用于網絡實體間MAP消息的傳輸,MAPsec協議可以為網絡實體間MAP消息的傳輸提供安全保證,包括保密性,認證性及防止重放攻擊。MAPsec協議提供了保護模式0、保護模式1和保護模式2三種不同的保護模式。以MAPSec協議保護的MAP信令消息包括安全頭和被保護負荷2部分。
(1)MAPsec安全頭
①保護模式0下,安全頭的結構為:SPI||源端成分ID;
②保護模式 1和 2下,安全頭的結構為:SPI||源端成分ID||TVP||NE-ID||PROP,其中:SPI是一個32位的安全參數索引數。源端成分ID:用來確定被安全保護的MAP信令類型。TVP是一個32位的時間變量參數。NE-ID是一個長度為6個字節的網絡實體標識。PROP是長度4字節的所有者域。
(2)MAPsec受保護的負荷
在保護模式0中,MAP消息的受保護負荷部分以明文形式出現。
在保護模式1中,MAP消息的凈負荷的格式有:明文||f7(安全頭||明文)。在保護模式2中,MAP消息的凈負荷的格式有:f6(明文)||f7(安全頭||f6(明文))。注:f6為加密算法,f7為一種哈希函數。
假設在不同 PLMN內的兩個網絡實體 MAP NEa和MAP NEb想利用MAPsec通信,則網絡實體間通信的消息流程如圖1所示。

圖1 網絡實體間MAP信令消息傳輸流程
(1)表示層
表示層提供人機交互的界面,主要實現人機交互和軟件展示,主要負責頁面顯示、頁面狀態的控制以及頁面上各種控件的事件處理程序,如Button的Click事件。同時,負責頁面用戶的輸入信息的基本驗證功能以及為客戶端提供對應程序的訪問。
(2)業務邏輯層
該層是 MAPsec信令傳輸平臺系統實現的核心環節,該層設計關系到整體邏輯,主要用于實現對應的業務目標。主要包括:處理應用程序的業務邏輯和業務校驗;管理業務層級別的對象依賴;管理程序的執行;創建實體類,包括加解密和認證模塊;建立通用的業務接口,實現對數據訪問層的訪問。
(3)數據訪問層
實現平臺系統對數據庫的操作,完成數據庫中各參數的插入、調用及更新等操作。
傳輸平臺的3層架構如圖2所示。

圖2 傳輸平臺的3層架構
(1)表示層設計實現
傳輸平臺的界面采用 C#.net[3-4]設計。登陸界面如圖 3所示。

圖3 登陸界面
點擊“進入發送網絡節點”和“進入接收網絡節點”按鈕,分別進入發送/接收節點的子界面,如圖 4所示為發送節點界面。

圖4 發送MAPsec信令節點界面
該界面包括3個主要模塊:
模塊1:“實驗內容”、“實驗步驟”、“實驗實施”、“實驗思考”。通過點擊“保護模式0”、“保護模式1”、“保護模式2”圖標中不同的模式圖標,可以顯示相應的保護模式內容。

圖5 發送MAP信令的界面
模塊2:創建參數庫模塊,創建數據庫存放SPI、TVP、NE-ID、PROP幾個參數。
模塊3:點擊該模塊最下方的“保護模式1”按鈕,即可進入相應的保護模式的操作界面,進行MAP信令的傳輸。如圖5所示為發送MAP信令的界面(接收界面布局與此相類似)。
節點間通信使用TCP/IP協議。Socket接口作為TCP/IP網絡協議的應用程序接口(API),定義了通信所需的函數和例程[5-6]。設計流程如下:
步驟①:命名空間的添加。

步驟②:構造一個新的socket對象。
在C#中,采用socket函數構造一個socket對象,socket函數原型如下:

步驟③:Socket的配置和連接。
采用IPEndPoint類。函數原型如下:

步驟④:數據的傳送和接收。

步驟⑤:socket關閉。
(2)業務邏輯層設計
該層設計包括以下幾個主要模塊:
加/解密模塊:即用于對明文加/解密的f6函數,通過構建Encode()和 Decode ()2個函數實現。
認證碼生成模塊:即用于驗證完整性的哈希函數—f7函數,在設計中使用 MD5算法作為哈希函數,通過構建MD5_Hash()函數實現。
源端成分ID識別模塊:構建ID_value()函數確定被安全保護的MAP操作的成分類型是調用(0)、結果(1)還是錯誤(2)。
TVP時間變量參數識別模塊:構建TVP_value()函數,用來識別TVP值,防止對MAP操作進行重放攻擊。
與數據庫通信接口:數據庫的設計采用輕量級的 sqlite數據庫[7-8],sqlite數據庫結構簡單,源代碼也不是很多,降低了系統內存的占用,同時提高數據的處理效率。C#.net與sqlite數據庫連接代碼如下:


(3)數據訪問層設計
該層設計主要完成數據庫中各個參數的插入、調用以及更新等操作。

此外,平臺還設計了應用接口,通過此接口可以方便的添加到其他實驗平臺中。
由于MAPsec協議原理相對比較復雜,而且由于實際環境限制,學生不能接觸到實際應用環境,因此理解起來相對比較困難。所以搭建本實驗平臺,通過仿真基于MAPSec協議傳輸信令過程,有助于學生對知識的理解掌握,能夠提高教學效率,同時,這里實驗平臺采用C#.net技術開發具有較好的移植性和兼容性,具有較好的實用推廣價值,克服學校實驗設備不足等缺陷,對于教育教學有積極作用。
[1] 楊義先,鈕心忻.無線通信安全技術[M].北京:北京郵電大學出版社,2005:159-163.
[2] 曹晨磊,張茹,鈕心忻,等.3G實體認證協議及技術規范的綜述與安全分析[J]. 清華大學學報:自然科學版,2009,49(82): 2193-2199.
[3] 王超,潘楊.Visual C#通用范例開發寶典[M].北京:電子工業出版社,2008.
[4] 林邦杰.深入淺出 C#程序設計[M].北京:中國鐵道出版社,2005:100-300.
[5] 亓傳偉.在.NET下實現進程通信[J].通信技術,2008, 41(05):97-98.
[6] 岳曉光,梁曉誠,麥范金,等.NET下的網絡通信方案研究[J].通信技術,2010,43(01):191-192.
[7] SQLite. Ongoing Development and Maintenance of SQLite is Sponsored in Part by SQLite Consortium Members[EB/OL].(2010-11-02)[2011-03-01]. http://www.sqlite.org/.
[8] MICHAEL O.The Definitive Guide to SQLite[M]. USA:Apress,2006:100-150.