GML數(shù)據(jù)傳輸中的加密研究

GML(Geography Madcup Language)是由OGC制定的基于XML的地理信息(包括幾何和屬性特征)編碼、傳輸、存儲的XML語法規(guī)范。它提供了一個開放的,用來定義地理空間數(shù)據(jù)的框架,允許用戶開發(fā)出基于XML規(guī)范的應(yīng)用子集H1。由于GML數(shù)據(jù)在描述、存儲、傳輸?shù)乩砜臻g信息時具有很強(qiáng)的可理解性,如果不采取安全措施,GML數(shù)據(jù)在傳輸過程中很容易被非法用戶截獲和篡改。

一、基于Web服務(wù)的GML數(shù)據(jù)傳輸

當(dāng)前,Web服務(wù)是發(fā)布、傳輸?shù)乩砜臻g數(shù)據(jù)的主要方法。這種方法首先對地理空間信息進(jìn)行基于XML的地理特征編碼,然后用抽象規(guī)范GML對地理空間信息進(jìn)行建模、傳輸和存儲,最后實現(xiàn)GML要素層異構(gòu)數(shù)據(jù)的獲取和服務(wù)的互操作,以及GML數(shù)據(jù)的訪問機(jī)制WFS (Web Feature Serr ice)。

GML存儲形式靈活;不受地理空間信息數(shù)據(jù)源格式限制,運(yùn)用GML封裝的地理空間數(shù)據(jù)和圖形解釋是清楚分離的,即數(shù)據(jù)的內(nèi)容和其表現(xiàn)形式是分離的。因此,在針對不同的客戶端應(yīng)用開發(fā)時,客戶端程序都能運(yùn)用GML技術(shù)傳輸獨(dú)立的地理空間信息數(shù)據(jù)。例如:生成ActiveX或者Java控件嵌入IE中作為瘦客戶端應(yīng)用;直接利用Windows構(gòu)建胖客戶端應(yīng)用,如Map Info;保持當(dāng)前GIS數(shù)據(jù)格式,借助GML進(jìn)行分布式傳輸??傊?,基于Web服務(wù)的GML數(shù)據(jù)傳輸極大地提高了WebGIS服務(wù)的互操作性,減少了服務(wù)器和客戶機(jī)之間的頻繁交互。但由于不同數(shù)據(jù)源的(異構(gòu))數(shù)據(jù)的共享性和服務(wù)的互操作性,也給基于Web服務(wù)的GML數(shù)據(jù)傳輸帶來了一定的安全隱患。

二、基于Web服務(wù)的GML數(shù)據(jù)傳輸安全機(jī)制

Web服務(wù)的協(xié)議棧如表1所示。

GML數(shù)據(jù)傳輸中的加密研究

由Web服務(wù)的協(xié)議棧可見,Web服務(wù)的消息都是通過應(yīng)用層傳輸?shù)模踩杂涩F(xiàn)有的網(wǎng)絡(luò)層的安全機(jī)制來保障。目前,基于Web服務(wù)的傳輸安全機(jī)制是安全套接協(xié)議層(SSL),加密、簽名、訪問控制等安全措施都是基于SSL的具體應(yīng)用。但在SSL中的加密、簽名等安全機(jī)制并沒有充分考慮CML數(shù)據(jù)傳輸?shù)奶攸c(diǎn),即數(shù)據(jù)量巨大,實時性要求高傈些軍用系統(tǒng))。因此,只依靠SSL并不能有效地保證基于Web服務(wù)的GML數(shù)據(jù)傳輸安全。主要原因有以下3個。

1)GML數(shù)據(jù)只是一種面向數(shù)據(jù)的標(biāo)記規(guī)范,所以它通常總是力求準(zhǔn)確清晰地說明數(shù)據(jù)本身的涵義,即使對于一些非常陌生的GML文件,對手很容易理解其所要表達(dá)的內(nèi)容。從這個意義上講,GML數(shù)據(jù)是完全開放的。因此,一旦含有軍事信息或商業(yè)機(jī)密的GML文檔被對手得到,泄密幾乎是必然的,而且對手也可以對數(shù)據(jù)進(jìn)行隨意地篡改和偽造。

2)SSL只能對全部的信息進(jìn)行加密,而不能有選擇地對部分信息進(jìn)行加密。以GML數(shù)據(jù)編碼的地理信息的數(shù)據(jù)量巨大,但有些情況下并不是GML文檔的所有信息都需要加密處理,有時只需要對GML文檔的某一部分或單元做加密處理。SSL只能對GML數(shù)據(jù)的全部信息進(jìn)行加密,而不能有選擇性地對GML數(shù)據(jù)的核心或敏感部分進(jìn)行加密。因此,用SSL這種單一粒度的加密方法給GML數(shù)據(jù)加密帶來了實用性差的問題。

3)SSL只能確保點(diǎn)對點(diǎn)(Point to Point)的安全,而無法保障端到端(End to End)的安全。在基于Web服務(wù)的GML數(shù)據(jù)傳輸中,由地理信息服務(wù)的動態(tài)分布性和靜態(tài)分布性可知,GML編碼的數(shù)據(jù)往往要經(jīng)過一系列的中間節(jié)點(diǎn),每個節(jié)點(diǎn)都會對GML數(shù)據(jù)做一定的處理。雖然SSL可以確保GML數(shù)據(jù)在節(jié)點(diǎn)之間是安全的,但是由于在節(jié)點(diǎn)內(nèi)部GML數(shù)據(jù)是以明文方式存在的,因此一旦節(jié)點(diǎn)被攻擊者接管,攻擊者就可以查看甚至篡改GML數(shù)據(jù)。

所以,當(dāng)前基于Web服務(wù)的GML數(shù)據(jù)的傳輸機(jī)制存在著一定的安全隱患和實用性差的問題。由于GML數(shù)據(jù)傳輸?shù)陌踩珯C(jī)制是一個較為龐大的系統(tǒng)工程,這里僅對GML數(shù)據(jù)傳輸?shù)陌踩珯C(jī)制的核心——加密進(jìn)行研究。

三、基于GML數(shù)據(jù)的加密

當(dāng)前,雖然GCML數(shù)據(jù)在WebGIS中的應(yīng)用日益廣泛和深入,但基于GML的安全規(guī)范標(biāo)準(zhǔn)的制訂卻還沒有進(jìn)展。對GML數(shù)據(jù)的加密可以參照XML的安全規(guī)范,但GML數(shù)據(jù)的加密又不同于XML數(shù)據(jù)和二進(jìn)制數(shù)據(jù)包的加密。這主要體現(xiàn)在以下兩點(diǎn):

1)多源異構(gòu)的地理空間信息轉(zhuǎn)化成GML數(shù)據(jù)時,其數(shù)據(jù)量要比轉(zhuǎn)換成二進(jìn)制格式的數(shù)據(jù)包大3倍以上,用傳統(tǒng)的RAS,MD5等方法對全部二進(jìn)制格式的數(shù)據(jù)包加密,會在傳輸時帶來嚴(yán)重的延時性問題;

2)與一般的XML數(shù)據(jù)不同,GML數(shù)據(jù)既包含空間信息又包含屬性信息,在選擇GML數(shù)據(jù)的加密粒度時,應(yīng)重點(diǎn)考慮拓?fù)潢P(guān)系和區(qū)域關(guān)系的加密和訪問控制。比如:提取GML數(shù)據(jù)空間信息的拓?fù)潢P(guān)系作為加密的粒度或者作為訪問控制的關(guān)鍵點(diǎn),或者只考慮對完全包含在區(qū)域中的對象集進(jìn)行加密和訪問控制,或者考慮對完全包含在區(qū)域中的對象集和對象集與區(qū)域的交集部分進(jìn)行加密和訪問控制。

1、GML數(shù)據(jù)的加密算法

GML數(shù)據(jù)的加密算法可分為兩種。一種是對整個GML文檔進(jìn)行加密,根據(jù)SSL協(xié)議建立安全數(shù)據(jù)通道,采用對稱加密技術(shù)(DES,AES等)對傳輸?shù)腉ML文檔進(jìn)行加密,很顯然只依靠這種算法密鑰管理有難度。另一種是對GML文檔的一部分,或某一元素加密,即選擇GML文檔的加密粒度。如前所述,可選擇GML數(shù)據(jù)的空間信息或?qū)傩孕畔?、拓?fù)潢P(guān)系或區(qū)域關(guān)系作為加密的粒度。這種算法可提高加密傳輸?shù)男?,且更具靈活性。這里主要對第2種加密算法作以介紹。

GML數(shù)據(jù)加密后仍以GML格式表示,并且由一個< Encryp tedData>元素或元素來標(biāo)識。< Encryp tedData>元素用來表示除加密密鑰以外所有的加密內(nèi)容,而< Encryp ted- Key>元素用來表示加密后的數(shù)據(jù)是一個加密密鑰。除了表示加密內(nèi)容外,GML加密還表示了其他的加密信息,如所使用的加密算法和加密密鑰等,這樣使應(yīng)用程序的工作得以簡化。針對GML數(shù)據(jù)比二進(jìn)制數(shù)據(jù)包大得多的現(xiàn)實,提出了一種GML數(shù)據(jù)的加密算法,如圖1所示。

GML數(shù)據(jù)傳輸中的加密研究

假設(shè)發(fā)送者A向接收者B傳輸GML文檔,首先選擇GML數(shù)據(jù)加密的粒度。參照XML的安全規(guī)范,GML數(shù)據(jù)的加密粒度可以應(yīng)用在以下3種情況:

1)GML數(shù)據(jù)元素的加密。元素加密是對整個元素包括屬性數(shù)據(jù)加密,并使用< Encrypt_edData>元素代替它。

2)GML數(shù)據(jù)元素內(nèi)容的加密。內(nèi)容加密只加密元素的子節(jié)點(diǎn),并且可以用元素代替它。

3)任意數(shù)據(jù)的加密。

根據(jù)GML3.O規(guī)范可以選擇或設(shè)計算法,提出敏感或核心的空間信息或?qū)傩孕畔?,以及拓?fù)潢P(guān)系或區(qū)域關(guān)系作為加密的粒度。

選擇GML數(shù)據(jù)的加密粒度后;再利用Hash函數(shù)對加密的內(nèi)容進(jìn)行摘要,用SHA-1或MD5摘要函數(shù),對屬性數(shù)據(jù)中的屬性特征數(shù)據(jù)(布爾型、整型、字符串)或幾何數(shù)據(jù)中的幾何要素和拓?fù)潢P(guān)系進(jìn)行摘要,提取GML數(shù)據(jù)的散列值,并放在一個GML文檔中。利用A的私鑰對摘要后的GML數(shù)據(jù)完成數(shù)字簽名,進(jìn)而實現(xiàn)A發(fā)布的GML數(shù)據(jù)的完整性、不可抵賴性和可鑒別性。鑒于GML數(shù)據(jù)的數(shù)據(jù)量大,把數(shù)字簽名和GML數(shù)據(jù)用對稱加密算法形成GML密文,同時把實現(xiàn)對稱加密算法的密鑰用B已知的公鑰加密。然后對摘要后的GML數(shù)據(jù)選擇加密算法。在對GML文檔加密時并沒有定義任何新的加密算法,而是構(gòu)建于現(xiàn)有的算法之上,從而使基于GML數(shù)據(jù)表達(dá)的地理空間數(shù)據(jù)互操作成為可能。最后把GML密文、加密后的密鑰一起發(fā)送給B。

如果接收者事先不知道解密的密鑰,發(fā)送者可以先產(chǎn)生一個密鑰并發(fā)送給接收者。在傳輸過程中,可以通過元素中發(fā)送,或可以使用從中引用??上扔梅菍ΨQ加密交換對稱密鑰,再用對稱加密交換GML數(shù)據(jù)。

在一個元素中,提供密鑰,提供密文,和都是可選的。發(fā)送人和接收入可以事先商定加密方法和密鑰。

3、GML數(shù)據(jù)的解密算法

GML數(shù)據(jù)的解密算法是其加密算法過程的逆運(yùn)算,B接收GML數(shù)據(jù)前要建立和管理好自己的公鑰和私鑰。針對GML數(shù)據(jù)的解密,提出了一種如圖2所示的算法。

GML數(shù)據(jù)傳輸中的加密研究

GML數(shù)據(jù)的解密過程首先要通過元素獲取加密算法。當(dāng)B接收到GML密文、加密后的密鑰后,首先用自己的私鑰解密加密后的密鑰,取得對稱加密算法的密鑰;其次利用獲得的密鑰解密GML密文和GML文檔的數(shù)字簽名;再用事先約定的Hash函數(shù),重新對GML文檔的明文進(jìn)行摘要;然后與已接收的GML明文進(jìn)行對比,并根據(jù)對比的結(jié)果選擇是否接收。

小知識之ActiveX

ActiveX是一個開放的集成平臺,為開發(fā)人員、用戶和 Web生產(chǎn)商提供了一個快速而簡便的在Internet和Intranet 創(chuàng)建程序集成和內(nèi)容的方法。使用ActiveX,可輕松方便的在Web頁中插入多媒體效果、交互式對象、以及復(fù)雜程序,創(chuàng)建用戶體驗相當(dāng)?shù)母哔|(zhì)量多媒體CD-ROM。