張遠紅, 苗 放, 任 淯
(1.成都理工大學 地球物理學院, 成都 610059;2.成都理工大學 地球科學學院, 成都 610059)
在2004年美國《自然》雜志中,名為“Mapping opportunities”的文章[3]把地球空間信息技術(Geotechnology)、生物技術和納米技術定為21世紀的三大前沿科學。由于新地理(Neogeography)時代的來臨,讓更多的人們學會利用空間的思維和地理思考為自己服務。伴隨著全球衛星定位系統(GNSS)的應用、各種專業地理信息平臺、數字城市和數字地球建設,對空間數據需求越來越強烈。G/S模式是一種空間數據交換標準,它基于新型的超圖形(或超地理)標記語言HGML(Hyper Graphic Markup Language或Hyper Geographic Markup Language),其中G是空間信息瀏覽器,S是空間信息服務器。中間件是未來云服務的核心[2],它介于應用軟件和操作系統之間,處于應用軟件的下層,位于空間數據庫、網絡和操作系統之上,主要用于幫助用戶高效地、靈活地集成和開發比較復雜的應用軟件[4]。由于空間數據極其復雜,加之系統環境中的用戶和資源都具有數量大、動態變化等特點,由此帶來了空間數據安全的新挑戰和新機遇。將中間件技術與新型的G/S模式相結合,實現系統連接、應用程序、消息的加密解密等多個層次的安全[9],并對其架構體系中空間數據傳輸安全性機制研究,為探索和建立新地理信息時代下以服務為核心的大眾化空間信息服務應用平臺的可用性,提供理論依據和應用模型[8]。
大數據應用的爆發性增長,數據的安全性問題越來越值得我們高度重視。由大數據衍生出的不同架構,將推動對海量數據的收集、處理、存儲及應用,同時對網絡、物聯網、計算機技術而言也是新的挑戰[11]。在大數據時代,基礎設施即服務(IaaS)、軟件即服務(SaaS)及平臺即服務(PaaS)的理念將是以后軟件服務業的發展方向。
從空間信息流動過程的角度來說,G/S模式是基于網狀結構的空間信息服務模式,它采用“請求—聚合—服務”的工作機制,通過客服端實現動態聚合。G/S模式通過HGML標記語言統一的、多層次化的、靈活的對空間數據進行組織管理[12]。G/S模式不僅是統一的空間數據的交換模式,而且也是G/S模式中數據的管理、組織、交換和展示的規范。G/S模式與B/S模式、C/S模式最大的區別在于G/S模式的核心——HGML。HGML針對空間數據提供了靈活、層次化統一的組織和管理。它不僅是G/S模式中組織數據、交換、展示、管理的標準,也是G/S模式區別于B/S、C/S模式的最顯著特性。同時,HGML它本身是統一的數據交換方式。

表1 G/S與B/S、C/S的對比情況
G/S與B/S、C/S的對比較情況見表1。
G/S模式下空間數據安全中間件系統實現了對應用程序的安全認證、系統連接的安全認證[6]以及對消息的加解密等多層次的安全,而其中對消息的加解密是安全系統設計的核心問題[7]。從通信機制和程序設計風格的角度出發,中間件可以分為遠程過程調用中間件、消息中間件、面向對象中間件、面向服務中間件等[5]。由于云應用與云平臺是松散耦合的,多類型應用、多種用戶和多種服務同時運行在云平臺上,用戶之間可能存在著某種復雜的交互關系,其中惡意破壞、賬戶或服務劫持、數據泄密等信息安全問題處理在G/S模式下中間件系統中顯得非常重要[10]。G/S模式下中間件系統體系結構如圖1所示。訪問接入點AP(Access Point)支持數據加密、多用戶接入以及多速率發送[1]。本系統中,用戶通過自己申請的AP進行遠程訪問中間件下級進行安全注冊,然后通過系統管理員配置的密碼建立連接訪問中間件上級。由于加密密鑰主要集成在中間件上級,因此當數據從AP進入系統,從中間件上級流出之后即完成加密過程。

圖1 G/S模式下中間件系統體系結構Fig.1 Middleware architecture based on G/S model
G/S模式空間數據傳輸安全性中間件系統經過密鑰保存的方法,從而實現密鑰分發及接收,進而實現端對端加密的進程。
在G/S模式空間數據安全中間件系統中,遇到下面情況就要求系統能夠保存舊密鑰:①當某個節點的密鑰更新后,還可能會繼續接收到其他節點使用舊密鑰對消息進行加密的消息,這種情況要求系統能夠保存舊密鑰;②當一個節點在可靠性和安全性中間件系統運行時死亡(coredump),如果在它重新啟動后收到了可靠傳輸的加密消息,也要求對舊密鑰進行保存。
在G/S模式空間數據安全中間件系統中,密鑰通常被保存到緩存中或文件中。對用舊密鑰加密消息進行解密的過程,首先在緩存中尋找解密密鑰,如果沒有找到密鑰,然后采用主密鑰來對密鑰文件進行解密,再在密鑰文件里查找是否有解密密鑰,如果還是沒找到解密密鑰則對該接收消息解密失敗。
(1)將密鑰存放在cache中。在G/S模式空間數據安全中間件系統中,當建立密鑰表的共享內存時,通常系統在密鑰表后建立一個可設置長度的cache,用來對舊的密鑰進行保存。每當有節點對密鑰更新后,與此同時會把舊密鑰存放在cache密鑰表以及密鑰文件里。由于設置的cache密鑰表的長度有限,因此當cache密鑰表存放滿后會溢出,也就是說最開始存入cache密鑰表中的密鑰就將被新進入密鑰的擠掉而不再存在。
(2)將密鑰保存在文件中。G/S模式空間數據安全中間件系統中對密鑰文件采用主密鑰加密后保存在原系統中。如果要查詢密鑰文件內相應內容時,必須利用主密鑰把密鑰文件解密之后再查找。①對主密鑰的存放:對主密鑰的存放一種是對主密鑰保存在系統里,這種方式不好之處是如果主密鑰被清理刪除后將無法恢復;另一種是不在系統里進行保存,而是通過管理員自己記憶保存;②對主密鑰初始化:主密鑰的主要作用是對系統信息和密鑰的傳輸過程進行加密,所以對主密鑰的初始化的目標就是針對系統中的相關信息對象(圖2);③主密鑰的更換:當將要更新主密鑰時,首先解密所有使用原來的主密鑰進行加密的文件,再用新的主密鑰加密這些文件,重新加密完后再保存(圖3)。

圖2 主密鑰的初始化過程Fig.2 The initialization process of master key
G/S模式空間數據安全中間件系統基于對實際應用模型使用基礎之上,提出了一種本地組內密鑰分發的密鑰分發技術,該技術很好地解決了端對端的加密問題,并且還對整個G/S模式空間數據安全中間件系統中網絡的使用效率起到有效的保證。
(1)密鑰進行分發的過程。密鑰進行分發的過程是上級節點將所有與它進行密鑰交換成功的節點密鑰發送給本地組里節點的進程(圖4)。
(2)密鑰表進行分發的過程。分發密鑰表的過程是指本地組節點在與它的對應的上級節點交換密鑰后,該本地組節點將接收該上級節點分發的密鑰表的全部密鑰(圖5)。

圖3 主密鑰更新流程圖Fig.3 Update flow chart of master key

圖4 分發密鑰的過程 Fig.4 The process of key distribution

圖5 密鑰表發送Fig.5 The transmission of the keytab
(3)接收密鑰及密鑰表的過程。當密鑰或密鑰表被當地組的節點接收后,該節點把接收到的密鑰的本地組屬性值設置為YES,同時依據解密的密鑰來更新自己的密鑰表和密鑰文件,今后系統加解密消息時就使用這些新的密鑰。
在G/S模式空間數據安全中間件系統中,依據對方的節點名來找到相應的密鑰加密消息,同時在包頭將解密密鑰的節點名放在里面(圖6、圖7)。

圖6 消息的加密過程Fig.6 Message encryption process

圖7 消息的加密示例Fig.7 The diagram of message encryption process
(1)t201加密消息到t20時,加密密鑰是key_t20,解密密鑰是key_t201。
(2)t201當加密消息到t202(或t2、t3)時,key_t202(或key_t2、key_t3)就是加密密鑰,其解密密鑰為t201的上級key_t20,這三個密鑰都是通過t20的分發所得到的密鑰,因此具有本地組屬性。
(3)當t2加密消息到t201時,其加密密鑰為t20;而t2的掩碼為3,那么就取t201的前三位t20,因此當t2加密消息到t201時,其子網密鑰是key_t20。
(4) 所有的前端節點都不在t3 的子網里面,因此t3就只有把消息加密到t20節點,而消息不可以被加密到t200節點或者t201節點、t202節點以及t203節點。
在系統中,加密消息和文件,提供了以下兩個API函數來實現:
CommEncryptData(node , in , inlen, out , outlen)加密消息
node 使用node節點的密鑰加密
in 輸入的消息
inlen 輸入消息的長度
out 加密后的消息
outlen 加密后消息的長度
CommEncryptFile(node, in, inlen, out, outlen)加密文件
其中in表示輸入文件名,而out就是輸出文件名。另外的參數跟上面相同。文件加密就是將系統輸入的文件每次都讀出256 bytes大小的塊 ,然后進行分塊加密,最后保存在out的過程。
很多節點的密鑰都可以被保存在一個G/S模式空間數據安全中間件系統節點,很多個新舊密鑰可以被保存在同一個節點的密鑰里。在G/S模式空間數據安全中間件系統中,每個密鑰都是使用節點名+keyed 來區分的。所以在G/S模式空間數據安全中間件系統中,當消息頭被加密時,為了標識使用的哪一個密鑰,不僅需要用一個keyID來標識,還要有一個解密密鑰節點名字。由于KeyID在不斷地擴大(達到設定值后,從新從“0”開始),因此后面生成的密鑰肯定比先生成的密鑰大。在G/S模式空間數據安全中間件系統中,依據消息頭的解密密鑰節點名字以及通過keyID來尋找密鑰。
為了研究該技術的可行性和有效性,首先在Linux系統的服務器上進行試驗。該服務器是由六臺IBM機架式服務器組成,首先當有數據輸入時,給出提示生成公鑰和私鑰,如圖8所示。然后查看服務器是否生成公鑰和私鑰,如圖9和圖10所示。
根據實驗可知道,中間件系統條件下的加密技術完全具有一定的可行性。

圖8 生成公鑰和私鑰Fig.8 Generate public and private keys

圖9 生成的公鑰Fig.9 Generate public keys

圖10 生成的私鑰Fig.10 Generate private keys
作者對空間數據傳輸安全的研究進一步完善了G/S模式的理論架構,為今后空間信息系統在空間數據安全和可靠性方面做了前瞻性研究。從密鑰的保存、分發、加密到解密,完成了空間數據的安全傳輸。但文章對中間件系統安全可靠性的研究未進行普適性的研究。如果能將這一空間數據傳輸的安全理論進一步運用,將會取得更好的效果。
參考文獻:
[1] CHRIS BRITTON, PETER BYE. IT Architectures and Middleware : Strategies for Building Large, Integrated Systems[M], Addison-Wesley,2004.
[2] CHEN BINGXING,QIU BAOZHI. Construction technology of cluster message-oriented middleware[J].Application Research of Computers,2012(05) :36-38.
[3] 郭曦榕. 基于 G/S 模式的數字旅游工程及其評估技術研究[D]. 成都:成都理工大學,2002.
[4] 張云勇,張智江,劉錦德,等.中間件技術原理與應用[M].北京:清華大學出版社,2004.
[5] 吳泉源.網絡計算中間件[J].軟件學報,2013,24(1):67-76.
[6] 張方舟,葉潤國,馮彥君,等.3G接入技術中認證鑒權的安全性研究[J].微電子學與計算機,2004,21(9):33-37.
[7] 秦璟,高文,儲方杰.中間件技術研究[J].計算機應用研究,2003(08):36-38.
[8] 傅宇凡.中間件和應用研究值得國內關注[J].中國教育網絡,2006(06):20-21.
[9] 胡斌,林宗楷,郭玉釵,等.基于多層結構中間件(EdbClient,EdbServer)的設計與實現[J].計算機研究與發展,1998(10):870-872.
[10] 王玉海. 地理信息服務中數據傳輸的策略研究[D] .河南:解放軍信息工程大學,2006.
[11] 楊義先.信息安全新技術[M].北京:郵電出版社,2002.
[12] 龔強. 關于地理空間信息網格結構層次的設計與研究[J].測繪科學,2005,30(4):24-25.