雷文虎,戶江民,王均春,譚淇文,蔣元兵,康宗緒
(1.重慶金美通信有限責任公司,重慶400030;2.中國人民解放軍31006 部隊,北京 100036)
在窄帶無線通信網絡中,通信節點之間主要使用微波、衛星、電臺等窄帶寬無線鏈路進行節點間互聯;節點之間利用OSPF 協議、EIGRP 協議等交互路由;網管系統采用SNMPv2 協議對通信節點進行管理控制;上層業務系統基于通信網絡提供的IP通道完成端到端的業務傳輸。
由于無線信道的開放性,雖然通信網絡采用了各種無線信道加密手段,仍然存在信息泄密和被竊取的風險。因此,業務系統的報文在端到端傳輸前后一般都會在信源和信宿的應用層進行壓縮和加密等處理,以保障報文的傳輸效率及安全性。
對于通信網絡本身,當網絡規模較大或者路由表數量較多時,網絡內部會產生大量的協議控制報文。對于EIGRP 協議來說,標準的EIGRP 協議報文的內容部分一般采用TLV 格式封裝,特別是其UPDATE 報文和QUERY 報文,這導致報文內容的重復度較高。對于OSPF 協議來說,標準的OSPF協議報文的內容部分主要也采用TLV 格式封裝,特別是其DD 報文和LSU 報文,同樣導致報文內容的重復度較高。此外,EIGRP 協議和OSPF 協議一般都采用明文方式傳輸,即便啟用了MD5 驗證功能,也只能增加信息交換的安全性,無法實現信息保密,同時會增加報文長度。利用網管系統對通信節點進行管理時,也會產生大量的SNMP 報文,在搜索網絡拓撲和查詢通信節點的路由表信息等操作時尤為明顯;SNMP 報文的數據部分采用BER 編碼規則進行封裝,同樣導致其內容重復度較高;某些查詢設備基礎信息的SNMP 報文甚至因為長度過長從而導致在超短波電臺信道上傳輸失敗。
針對上述問題,對窄帶無線通信網絡的協議控制報文的數據部分采用壓縮和加密等技術處理,縮減報文長度,降低報文對無線信道的帶寬占用,實現協議控制報文的安全加固,提升網絡安全保密能力,具有較強的實用意義。
數據壓縮技術[1]就是減少用于存儲和傳輸信息的位的數目。數據壓縮技術按照壓縮前后信息量劃分為無損數據壓縮和有損數據壓縮。無損壓縮沒有信息丟失,可根據壓縮后的數據完全的恢復原來數據,它是一個可逆過程;有損數據壓縮是在保真情形下移除數據的壓縮編碼技術,壓縮后的數據不能完全的恢復為原來數據,它是一個不可逆過程。網絡中傳輸的協議報文經過壓縮和解壓縮之后必須完全重現,需要采用無損壓縮技術。常用的無損壓縮方法有:時間編碼(如游程編碼)、哈夫曼編碼、算術編碼、基于字典編碼(以LZ 碼為代表)、Rice 算法等。本文選取基于字典編碼的LZW 算法和LZJH 算法進行數據壓縮處理。
LZW(Lempel-Ziv-Welch)壓縮算法[2]由Terry Welch 在1984 年開發,是一種非常著名、基于字典的串表式無損壓縮算法,支持流式解壓縮,可以根據內存大小選擇合適的最大字典串長。LZW 在壓縮和解壓縮階段字典都是自動生成的,它不需要對數據源進行分析或者傳輸額外信息給解壓方,因此壓縮和解壓縮不會產生大量的計算代價。
LZW 壓縮算法的基本思想是建立一個串表,將輸入字符串映射成定長的碼字輸出,通常碼長設置為12 bit,也可設置為其它相應的長度。串表具有“前綴性”:假設任何一個字符串Str 和某一個字符C組成一個字符串StrC,若StrC 在串表中,則C 為Str 的擴展,Str 為C 的前綴。字符串表是動態生成的,編碼前先將其初始化(通常初始化為ASCII 碼的常用字符),使其包含所有可能的單個字符值。在壓縮過程中,串表中不斷產生壓縮信息的新字符串,存儲新字符串時也保存新字符串StrC 的前綴Str 相對應的碼字。在解壓縮過程中,程序可根據碼字恢復出同樣的字符串表,解出編碼數據流。
LZJH(Lempel-Ziv-Jeff-Heath)壓縮算法[3]是一種基于代碼庫的、自適應的數據壓縮算法,最初是為衛星工業中的IP 數據包壓縮而開發的,ITU-T選擇它作為建議V.44 的基礎。LZJH 算法的壓縮和解壓縮數據的執行速度很好,在兩個IP 數據報之間重設字典所花的時間也是微不足道的。
LZJH 壓縮算法的基本思想是使用1024 個碼字和一個1024 個輸入的代碼庫,它足夠壓縮一個1500字節的幀,有1024 唯一的碼字,一個對應一個代碼庫輸入,在編碼過程中這可以表示一個字節或多個字節串擴展。如果前256 個碼字保留給一個8 比特字節所有可能的值,并且另外兩個碼字保留給控制字使用,那么串擴展得到的第一個碼字是值258。
LZJH 在任何情況下不重復使用代碼庫輸入。于是,相應于沒有指定代碼輸入的碼字可用作解碼器的信號表示N 個字節串的擴展。這種擴展機理允許LZJH 把多個字節匹配字符串在數據中第二次出現時使用兩個碼字編碼,第三次及以后再出現時使用一個碼字編碼相同的字符串。根據這種字符串擴展機理,在把字符串擴展到其最大有用長度過程中,LZJH實質上使用很少的代碼庫輸入及其相應的碼字。
數據加密技術[4]是為提高信息系統和數據的安全性和保密性,防止秘密數據被外部破譯而采用的主要技術手段之一,按照作用的不同可分為數據傳輸加密技術、數據存儲加密技術、數據完整性的鑒別技術和密鑰管理技術。
數據傳輸加密技術的目的是對傳輸中的數據流加密,防止被非法竊取、閱讀和篡改,通常有線路加密與端-端加密兩種。線路加密側重在線路上而不考慮信源與信宿,是對保密信息通過各線路采用不同的加密密鑰提供安全保護。端-端加密指信息由發送端自動加密,并且由TCP/IP進行數據包封裝,然后作為不可閱讀和不可識別的數據穿越網絡,當這些信息到達目的地,將被自動重組、解密,而成為可讀的數據。前文所述的無線信道加密手段即屬于線路加密,業務系統報文加密處理即屬于端-端加密。
數據傳輸加密技術歷經單表代替、多表代替、置換、序列、分組密碼、Merkle-Hellman 背包、LOKI91、Skipjack、RC4、RC5、MD5、Blowfish、Idea、RSA、AES、DES 等加密算法。當前比較流行的傳輸加密技術主要采用RSA 和DES 等算法。大部分加密算法加密后的內容會比原始內容更長,這是因為在加密過程中新增了額外的信息。
通過對壓縮算法處理后的報文內容分析發現,壓縮后的數據在很大程度上已經失去了數據的規律性,在不知道具體壓縮算法的情況下,已經很難將數據進行還原。因此,為提高數據的安全性,在不增加報文長度以及盡量減少加解密耗時的前提下,本文選取置換加密(Permutation)算法對報文作進一步的加密處理。即把壓縮后的字符編碼重新排列,字符本身不變,但其位置改變了,同時將位置變換規則與數據部分長度相結合,以增加破解的難度。
對于LZW 壓縮算法,參照Mark R. Nelson 于1989 年利用C 語言編寫的LZW 文件壓縮算法進行改進,使其適合于處理IP 報文數據內容,形成獨立的LZW 算法功能模塊,對外提供lzwCompressBuf和lzwExpandBuf 兩個功能函數。lzwCompressBuf (unsigned char *inputBuf, int bufLen, unsigned char *outputBuf)函數通過inputBuf 指針接收原始數據,通過bufLen 獲知數據長度,處理結束后將壓縮數據放入outputBuf 指針所指的內存區,同時返回壓縮后的數據長度;如果壓縮后長度超過原始長度,則放棄壓縮并返回0,外部調用據此作特殊 處 理。 lzwExpandBuf (unsigned char *srcBufPtr, int srcBufLen, unsigned char *dstBufPtr) 函 數 通 過srcBufPtr 指針接收壓縮數據,通過srcBufLen 獲知數據長度,處理結束后將還原數據放入dstBufPtr 指針所指的內存區,同時返回還原后的數據長度;如果因數據錯誤等原因導致解壓縮失敗,返回值為0表示異常。其中,BITS_LZW 宏定義的值原為12,經多次實驗測試發現,當值為10 時可以取得更好的壓縮效果。
對于LZJH 壓縮算法,參照ITU_T_V.44[5]的數據壓縮程序建議的壓縮算法說明,采用C 語言進行編碼實現,形成獨立的LZJH 算法功能模塊,對外提供lzjhCompressBuf 和lzjhExpandBuf 兩個功能函數。lzjhCompressBuf(unsigned char *inBuf, int inBufLen)函數通過inBuf 指針接收原始數據,通過inBufLen 獲知數據長度,處理結束后將壓縮數據放入inBuf 指針所指的內存區,同時返回壓縮后的數據長度;如果壓縮后長度超過原始長度,則放棄壓縮并返回0,外部調用據此作特殊處理。lzjhExpandBuf(unsigned char *inBuf, int inBufLen, int maxLen)函數通過inBuf 指針接收壓縮數據,通過inBufLen 獲知數據長度,通過maxLen 獲知解壓后的最大允許長度(即inBuf 開辟的內存區長度)以防止內存溢出,處理結束后將還原數據放入inBuf指針所指的內存區,同時返回還原后的數據長度;如果因數據錯誤或長度超長等原因導致解壓縮失敗,返回值為0 表示異常。其中,單字符占用最大比特數取值為8,首個可用碼字取值為4,最大字符串長度取值為255,碼字最大比特數取值為11,最大字典項數量取值為1525。
采用C語言進行編碼實現,形成獨立的Permutation Encrypt 算法功能模塊,對外提供PermuteBuf 功能 函 數。PermuteBuf(unsigned char * inputBuf, int bufLen)函數通過inputBuf 指針接收原始數據,通過bufLen 獲知數據長度,結合數據長度設定不同的數據置換規則。規則示例見表1。
同時,數據置換規則支持以格式化的配置文件方式進行加載,必要時可更換規則配置文件。
測試環境下的窄帶無線通信網絡中的路由交換設備采用Vxworks 操作系統,因此本文選用Tornado IDE 作為技術研究驗證的集成開發環境,并基于Vxworks 網絡協議棧進行開發實現。

表1 數據置換規則
路由交換設備的TCP/IP 協議棧內部相關協議模塊之間的關系如圖1 所示。對于EIGRP 協議和OSPF 協議來說,生成的協議報文都會送到IP 協議棧的ipProto.c 文件中的ipOutput 函數進行處理后再通過交換網絡從對于接口發送出去;從各接口收到的協議報文也都會通過交換網絡送到IP 協議棧的ip_input.c 文件中的ipintr 函數進行處理后再被分派給相應的協議入口處理函數。對于SNMP 協議來說,設備生成的SNMP 報文經由UDP 模塊處理后也會送給IP 協議棧的ipOutput 函數進行處理后再通過交換網絡從相應的接口發送出去。

圖1 路由交換設備內部相關協議模塊關系
由此可見,可在路由交換設備TCP/IP 協議棧的IP 模塊對協議控制報文進行安全加固處理,具體實施方法如圖2 所示。路由交換設備可以通過配置選擇壓縮算法,也可結合壓縮報文特征動態選擇壓縮算法,源端設備進行壓縮加密并在報文中攜帶上壓縮算法標識;目的端設備收到報文后根據攜帶的壓縮算法標識進行解密解壓縮處理,實現壓縮算法的差異化。

圖2 路由交換設備協議控制報文安全加固處理
對路由交換設備的協議報文進行特征分析發現,EIGRP 協議報文的特征包括:iphead.proto=88,iphead.id=0,iphead.tos=0;OSPF 協議報文的特征包 括:iphead.proto=89,iphead.id=0,iphead.tos=0; SNMP 協議報文的特征包括:iphead.proto=17, iphead.tos=0,udphead.dport=161/162。根據以上特征在ipOutput 函數中增加發送報文識別功能,并對協議報文首先進行壓縮處理再進行加密處理。在處理過程中,需要對報文首部的長度、ID、TOS、校驗和等字段同步進行調整,壓縮調整對比如圖3 所示。同樣地,結合被調整字段特征在ipintr 函數中增加接收報文識別功能,并對協議報文首先進行解密處理再進行解壓縮處理。
對于EIGRP 協議報文和OSPF 協議報文,處理流程基本相同,將協議報文首部和內容部分作為整體進行壓縮。發報文時,采用壓縮算法對協議報文進行壓縮;利用IP 首部的TOS 字段來標識該報文是否被壓縮及其壓縮算法;利用IP 首部的ID 字段來保存報文的原始長度;采用置換加密算法對壓縮內容進行加密;重新計算IP 首部的校驗和。接收報文時,利用IP 首部的TOS 字段來判斷該報文是否被壓縮及其壓縮算法;采用置換加密算法對壓縮內容進行解密;采用壓縮算法對協議報文進行解壓縮;利用解壓縮的協議報文內容長度與IP 首部的ID 字段比對,判斷協議報文的正確性;恢復協議報文的IP 首部的長度、ID、TOS、校驗和等字段。
對于SNMP 協議報文,保留其UDP 首部,僅對其內容部分進行壓縮。發報文時,采用壓縮算法對內容部分進行壓縮;調整SNMP 報文的IP 首部的長度字段,但是不調整UDP 首部的長度字段;利用IP 首部的TOS 字段來標識該報文是否被壓縮及其壓縮方法;采用置換加密算法對壓縮內容進行加密;重新計算IP 首部的校驗和。當SNMP 協議報文到達網絡管理系統所接入的路由交換設備時對壓縮內容進行恢復,利用IP 首部的TOS 字段來判斷該報文是否被壓縮及其壓縮算法;采用置換加密算法對壓縮內容進行解密;采用壓縮算法對內容部分進行解壓縮;利用解壓縮的SNMP 報文內容長度與UDP 首部的長度字段比對,判斷SNMP 報文的正確性;調整SNMP 報文的IP 首部的長度字段。

圖3 協議報文壓縮調整對比
如果報文在傳輸途中被篡改或者發生了錯誤,在數據的解壓縮過程將會失敗報錯,該報文將被直接丟棄,同時該事件可被識別出來并記錄下來。如此,即可在上層協議控制模塊無感的情況下,完成協議控制報文的安全加固處理。
在試驗環境下采用7 臺路由交換設備搭建了如圖4 所示的網絡拓撲以模擬窄帶無線通信網絡, R1~R6 之間的直接連接采用ETH 接口互連,R6 與R7 之間采用超短波電臺鏈路互連,網絡管理系統采用ETH 接口與R1 互連。由于是對上層的協議報文壓縮加密效果進行測試驗證,采用ETH 鏈路代替無線鏈路并不會對最終結果引起偏差。
在路由交換設備中對報文的壓縮加密耗時及解密解壓縮耗時分別進行了長時間的打印統計,發現各種協議控制報文的處理耗時均不到1tick,路由交互及網絡管理與之前效果一樣,說明壓縮加密功能對設備的CPU 處理性能幾乎沒有影響。

圖4 試驗環境網絡拓撲

表2 協議控制報文數據壓縮效果統計
對協議報文的數據壓縮效果進行了大量統計分析,得到平均結果如表2 所示。可見,對于長度較短的報文,壓縮效果并不明顯;報文長度越長壓縮效果越好,對于EIGRP 協議的UPDATE、QUERY報文和OPSF 協議的DD、LSU 報文的壓縮效果尤為明顯;LZJH 算法的壓縮效果普遍優于LZW 算法。
采用加密算法動態變化和置換規則動態變化相結合的手段,能進一步增強數據保密能力。采用Wireshark、Ethereal 等工具軟件對路由交換設備之間的協議控制報文進行抓包統計分析,報文數據部分雜亂無規律可循。
啟用協議控制報文壓縮加密功能后,所有的SNMP管控報文均能在超短波電臺信道上成功傳輸,極大地減少了電臺接口的傳輸分片處理次數。
利用數據壓縮和加密相結合的手段對窄帶無線通信網絡的協議控制報文的數據部分進行安全加固技術處理,可在不影響網絡和設備原有性能的情況下大幅度縮減協議控制報文的傳輸長度,有效降低協議控制報文對無線信道的帶寬占用,提升通信網絡協議控制報文的傳輸效率和安全保密能力,增強網絡的內生安全。后續可以繼續開展對OLSR、AODV 等路由協議的安全加固研究與試驗。