近年来,随着测绘技术和htemet技术的迅猛发展,使得社会、经济的各个行业、各个部门都建立起了大量的空间地理信息系统。但是,由于这些系统各自采取的空间数据的组织处理方式、方法和存储策略不同,以及空间信息平台的广域分布特征,导致了空间数据共享困难、信息不流通,为了实现最大程度的信息共享,OpenGIS联盟(Open CIS Consortium,OGC)将XML应用到地理空间信息领域,提出了用来描述地理空间数据建模、转换、存储的解决方案,即地理标记语言GML( Ceography Markup Lan-guage)。GML以OGC的简单特征模型为基础,对地理实体的几何属性和普通属性进行基于XML格式的编码,已经成为地理信息共享系统中进行数据交换和存储的媒介。

目前,基于GML实现多源异构GIS系统中地理信息的共享已经成为各科研机构、学者及GIS开发商的研究热点。然而,这些研究和应用中大多着重于异构空间数据的交换和集成,却很少涉及地理空间信息的安全性研究。本文主要针对基于GML的地理信息共享系统中空间数据的加密方法进行了探讨。

一、基于CML的地理信息共享系统的体系结构

目前,基于GML的地理信息共享系统通常采用3层的B/S结构,分为应用层、应用服务层和数据层,其基本体系结构如图1所示。

基于GML的地理信息共享系统的加密方法研究

各层主要功能如下:数据层由分布于不同网络的多源异构地理数据组成,包含不同格式、不同存储方式的空间数据和相应的属性数据。应用服务层主要由GML转换引擎、地理信息服务模块和SVG(可伸缩矢量标记)转换服务模块组成。其中,GML转换引擎是实现地理信息共享的关键,主要提供GML数据与各种数据源之间的映射及数据转换服务,实现空间数据向GML数据的转换和GML向空间数据的转换,能够向上提供统一的数据标准。地理信息服务模块主要提供各种地理信息服务,如WMS、WFS等。而SVG转换服务模块主要利用XSLT使GML数据动态生成基于XML的SVG文档,以备在浏览器中显示。客户层由浏览器和SVG插件组成,主要功能是响应用户操作,并以图形化显示地理空间数据。

二、GML空间数据在网络传输过程中存在的安全隐患

1、GML空间数据存在的安全隐患

从上述体系结构可以看出,系统中地理信息共享实现的关键是底层多源异构空间数据转换为了统一的GML格式的地理空间数据,应用服务层中无论核心功能的实现还是空间数据的传输都是基于这种统一的GML数据的,从而使服务器不必关心底层数据源的格式.然而,GML是一种面向数据的标记规范,它通常总是力求准确清晰地说明数据本身的涵义,对于封装了一系列几何信息及其属性信息的GML文档来说,里面的地理信息是完全开放的.因此,一旦隐藏了大量的经济、资源、军事等高敏感空间信息的GML文档被非法窃取、篡改或破坏,将产生难以估量的损失。

2、现有安全传输机制存在的弊端

目前,GML数据传输的安全性通常是由SSL( Secure Sockets Layer安全套接层)来保障的。SSL是位于TCP/IP协议与各种应用层协议之间的一种协议层.SSL通过互相认证、数字签名技术、加密技术确保数据的完整性和私密性,以实现客户端和服务器之间的安全通讯,然而,基于SSL的加密技术应用于基于GML的信息共享系统中却存在着以下两个明显弊端:

①基于SSL的加密技术无法实现GML数据的灵活加密。由于用来描述地理要素的GML文档数据量巨大,而SSL加密机制只能提供要么全有要么全无的加密保护,不能适应地理信息请求实时性高的要求。

②SSL只能确保GML数据传输的安全而不是数据本身的安全,由于SSL只能提供点对点的安全,无法保障端到端的安全。而在地理信息共享系统中,GML数据往往要经过一系列的中间节点,每个节点都会对GML数据做一定的处理.也就是说,SSL只能确保数据在各节点之间传输的安全,而无法保障GML数据在经过中间节点时的安全,一旦某个节点被攻击者接管,GML数据就可以被任何人查看甚至篡改。

三、基于XML Encryption加密GML空间数据

W3C和IETF制定的XML加密标准(XML Encryption)能加密结构化数据并以XML格式表示加密结果,为保护地理信息共享系统中GML数据的安全提供了一种新的加密机制。

1、XML Encryption加密GML数据的优势

①XML Encryption支持包括GML文档在内的任意数据内容的加密粒度。XML加密不仅能实现GML文档的整体加密,而且还可依据空间数据的敏感度对其中的部分元素或元素内容加密实施加密。从而,能有效减少加密/解密的数据量,提高信息请求的响应速度。

②XML Encryption既能保证GML文档中地理信息在传输过程中的安全,也能确保其在中间节点停留时的安全。XML Encryption加密机制既能提供点对点的安全,也能保障端到端的安全,因此,加过密后的GML文档不管是在传输过程中还是在存储过程中,都不会被未经授权的人员访问。

③XML Encryption能够实现对GML文档中空间数据的权限控制.XML Encryption允许对同一个GML文档中的不同部分使用不同的密钥进行加密,当把同一个CML文档发给不同部门的用户时,用户只能看到与自己部门相关的空间数据,实现了不同权限的访问级别控制。

2、GML空间数据的加密过程

假设发送者A向接收者B传输GML空间数据,典型的GML数据的加密过程如图2所示。

基于GML的地理信息共享系统的加密方法研究

这里需要说明的是,在对GML数据进行加密之前,GML文档接收者B和发送者A应各自生成RSA公钥/私钥对,并将密钥对保存到安全途径,双方通过安全途径获得对方的公钥。

3、XML Encryption加密GML数据的实例

XML Encryption加密GML空间数据的结果仍然以GML格式表示,易于接受者对加密结果的理解和处理。结果中的加密元素用于标识加密后数据是除了加密密钥之外的其它信息,而加密元素则标识加密后的数据是一个加密密钥。同时,可通过子元素标识加密算法、子元素<ds:Keylnfo>标识密钥信息、子元素标识密文数据等。另外,还可以利用元素中的Type属性来说明加密的内容是整个GML文档还是文档中的元素或是文档元素的内容。下面以加密某城市河流图层对应的GML文档为例,对GML数据的加密方法进行说明.简化的GML文档如下:

<? xml version="1.O"encoding="BIG5"?>

<CityModelxmlns="http://www.opengis.net/examples"

xmlns:gml="http://www.opengi8.net/gml"xmlns:xlink="http://www.w3.org/1999/xlink"

某市

O</gml:X>50</gml:Y></ml:coord>

70</gml: X>60</gml:Y></gml:coord>

iOO</gml:X>50</l:Y></gml:coord>

河流B</gml: name>

.....

(1)对整个GML文档的数据加密

若GML文档中所有河流的空间数据均保密,则应该加密整个GML文档,加密结果如下:

<KeyN&me>MayKey

QEAJFJ606423---OIEKN16 DW

(2)对GML文档中的部分内容加密

若不允许用户访问河流A的空间数据,则只需加密河流A的数据即可,加密结果如下:

<? xml version="1.O" encoding="BIG5"?>

<CityModelxmlns="http://www.opengis.net/extrrnples"

xmlns:gml="http://www.opengis.net/grnl" xmlns:xlink="http://www.w3.orlV1999/xlink"

<gml:name>某市

MayKey </ds:Keylnfo>

< CipherValue>RAGR47552....454FDSESF

河流B

……//其它河流仍为明文数据

GML自身存在的结构清晰、易于理解、完全开放的特征为异构GIS系统信息流通提供契机的同时也带来了一定的安全隐患,对GML数据实施加密是一种非常有效而关键的安全保护措施,本文主要针对基于XML Encryption加密技术加密GML空间数据的优势及加密过程进行了详细的分析,并给出了具体的GML文档加密实例。然而,GML数据的安全保护要遵循多层次的深度防御策略,综合运用多种安全机制,只有从系统的观点出发,具体问题具体分析,才能设计出较好的安全方案。

小知识之GML

地理标记语言(外语全称:Geography MarkupLanguage、外语缩写:GML),它由开放式地理信息系统协会(外语缩写:OGC)于1999年提出,并得到了许多公司的大力支持,如Oracle、Galdos、MapInfo、CubeWerx等。GML能够表示地理空间对象的空间数据和非空间属性数据。