基于XML 的作战数据安全交换策略研究
2013-12-29欧微朱岑陈平
摘要:在指挥控制与作战仿真等军事信息系统中,存在大量的异构平台,为实现作战数据这些平台间的安全交换,提出了一种基于XML的数据交换方案。分析了基于XML的作战数据交换机制,数据安全交换的业务流程,以及XML数字签名与数据加密的基本原理,并给出了一种基于C#语言数据加密与解密模块的实现方法。实践表明,所提方案是实现作战数据安全交换的一种有效方案。
关键词:XML;作战数据;安全交换;数据加密
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2013)28-6271-03
XML(Extensible Markup Language, XML)是W3C (world Wide Web Consortium,W3C)于1998年2月发布的一种标准,是SGML(Standard Generalized Markup Language,SGML)的一个简化子集。XML遵循严格语法规范,实现了数据存储格式结构化,具有扩展性好,数据共享与重用简单和网络传输方便等优点,已成为一种通用的数据交换标准[1-2]。在C4ISR和基于HLA的作战仿真等军事信息系统中,存在大量的异构平台,只有整合这些应用平台,才能实现作战数据的交换共享。XML具有跨系统跨平台的优良特性,只要将作战数据按定义好的模式(Schema)进行封装,便可在异构系统中转换和集成,因而在军事领域得到了广泛应用。
王振[3]等在分析作战方案组成要素的基础上,提出了基于XML的作战方案的形式化描述;樊延平[4]等研究了想定数据存储模型,基于XML实现了作战想定的结构化描述;杨乐平[5]等设计了基于Agent的HLA仿真联邦,采用XML来实现系统中的数据交互,增强和扩展HLA应用;陈春永[6]等定义了基于XML的C4ISR系统作战信息表达模式,实现了各类作战数据跨系统跨平台的实时传输等。这些研究将XML应用于作战数据的规范表达与实时交换,拓展了指挥控制与仿真训练与系统的功能,但并未考虑数据交互的安全性问题,而作战数据安全性将直接影响作战行动与仿真训练的进程。该文在分析基于XML作战数据交换机制的基础上,研究基于数字签名和数据加密技术的作战数据安全交换方法。
1 基于XML的作战数据交换
XML是一种严格遵守语法要求、规范信息描述的底层语言,易于实现异构系统中数据的转换和集成,可有效实现作战数据的交换与共享。下面主要通过C4ISR系统和基于HLA框架的仿真系统,分析基于XML的作战数据的交换机制。
1.1 C4ISR系统的数据交换[6]
C4ISR系统是一个集战场感知、信息融合、智能识别、信息处理和武器控制等核心技术为一体、旨在实现军事指挥自动化的复杂军事信息系统。C4ISR由多个分系统有机组成,是各指挥层次、各军兵种、各作战平台之间不间断通信和交换信息的枢纽,只有实现数据的交换共享,这样才能实现各种作战平台的优势互补,发挥最大作战效益。但其分系统由不同部门开发,且运行在不同的硬软件平台,造成各分系统之间、各作战平台之间的信息共享和数据交换困难,制约了整体作战效能的发挥。XML能较好地解决指挥系统中各作战平台软件兼容难度大、信息表达复杂和容易形成信息孤岛的缺陷,其数据交换机制如图1所示。
数据交换过程可描述为:首先将各种战场信息进行基于XML 的封装,实现来自各异构系统的数据的快速集成,然后将封装好的XML文档通过C4ISR系统网络平台进行传输;在应用系统接收到XML文档后,通访问接口提取有用信息,同时利用XSL(eXtensible Style sheet Language)将其转换为内部系统可用的数据格式,即实现了数据的交换与处理。
1.2 HLA仿真系统的数据交换[5,7]
在HLA仿真联邦中,联邦成员间的交互分三种形式:对象类、交互类和Agent消息。对象类和交互类的交互形式遵循HLA框架所的标准交互方式,对象类属性用于在成员间交换实体的属性值,交互类实现联邦成员之间共享离散事件信息,而Agent消息用于在 Agent之间进行协同,通过将Agent消息封装为XML格式化数据,包装在HLA交互类参数当中,即可实现信息的发送和接收,如图2所示。
数据交换流程可描述为:在信息发布方,首先将数据信息封装为XML格式化数据,通过API接口打包处理,封装为联邦成员模型中的交互类参数,然后按照RTI规则进行发布;在信息订购方,其联邦成员对所需交互类参数申明订购,通过数据实时更新,接收交互类参数,然后将接收到的交互类参数传递到相应的API接口,通过解析函数进行解析,即实现了仿真系统中信息的发布与定购。
2 XML数据交互的安全策略
由上文分析可知,对于控制节点多、系统结构复杂、数据交换频繁的C4ISR与作战仿真系统,XML技术的引入可有效规范数据格式,实现异构系统中数据的转换和集成,增强系统数据交换的能力并拓展系统应用范围。而对于这些系统来说,如何确保数据的正确性、完整性及不可否认性,是系统安全运行的基础,因此需采取数字签名技术与数据加密技术等安全技术,以确保XML数据的安全性。
2.1 XML数据安全交互的流程
基于XML的作战数据的存储与传输以原作战指挥和仿真系统为基础,其数据存储与传输也是在原有的网络和硬、软件平台的基础上实现的,仅增加了XML数据封装及安全处理模块,其业务流程如图3所示。
该流程可描述为:在用户存储和发送作战数据前,先采用XML Schema 将作战数据封装为规范的XML格式文档,然后利用安全模块对XML 数据进行数字签名和加密处理,再对加密后的文件进行存储和传输;在数据接收方接收到加密数据文件后,可将加密文件存至本地磁盘,在使用前需利用安全模块对数据进行解密和数字签名验证处理,然后通过解析,即可得到原始作战数据。由于在数据传输和存储介质和传递过程中均为经数字签名和加密的Xml文件,从而确保了数据交换的通用性与安全性。
2.2 XML数据加密的基本原理
XML数字鉴名是W3C和IETF共同制定的安全标准,可对XML数据提供完整性、不可否认性及身份鉴别,文献[8-9]对XML数字鉴名技术进行了深入的研究,该文不再赘述,这里主要介绍XML数据加密原理及其实现方法。XML加密引入了加密粒度的概念,不仅可文档的整体信息进行加密,还支持对文档的部分信息甚至某个元素进行加密。
EncryptedData元素为加密文档的主要语法组件,其结构简要说明如下:(1)EncryptedData:为最外层元素,用于标示所加密的数据,包括4个可选属性:Id、 Type、MimeType、Encoding。其中Id用于标识元素的唯一性、Type定义加密类型、MimeType定义内容的MIME 类型、Encoding指定所采用的编码方式。(2)EncryptionMethod:表示所采用的加密算法,主要包括TripleDES、AES-128、AES-256和AES-192。(3)ds:KeyInfo:提供用于加密和解密数据的对称会话密钥,包括了子元素密钥会话(EncryptedKey)、建立会话密钥的方法(Agreement-Method)、密钥名称(ds:KeyName) 和用于提供URI链接ds:ReaievalMethod。(4)CipherData:用于指定已加密的数据,使用子元素CipherValue或CipherReference指定已加密的值。(5)EncryptionProperties:用于提供加密数据和密钥的附加信息。
2.3 XML数据加密的实现方法
在某仿真训练系统中,我们利用XNL文件存储和交换作战数据,通过XML Schema定义作战数据交换的规范格式,实现了作战数据在异构平台上传输与交换,为确保数据作战数据的安全性,系统使用了XML数字签名和加密技术。下面主要通过该系统的XML数据加密与解密模块,介绍基于Xml的数据交换的安全方法。
Xml数据的加密和解密模块在Visual Studio 2010环境下,利用C#编程语言开发。其中,加密和解密模块均引用了System.Security.Cryptography和System.Security.Cryptography.Xml命名空间,加密模块的核心代码如下:
public static void ImplementEncrypt(XmlDocument XmlDoc, XmlElement EleToEncrypt, SymmetricAlgorithm Key )
{ CheckEncryptArg(XmlDoc, EleToEncrypt, Key ); //参数的有效性校验
EncryptedXml EnXml = new EncryptedXml(); //实例化一个EncryptedXml对象
byte[] ErtedElemData = EnXml.EncryptData(EleToEncrypt, Key, false); //对指定元素进行加密
EncryptedData EnedElem = new EncryptedData(); //已加密的Xml元素
EnedElem.Type = EncryptedXml.XmlEncElementUrl; //统一资源标识符
EnedElem.EncryptionMethod = GetEncryptionMethod(Key); //由Key读取加密方法
EnedElem.CipherData.CipherValue = ErtedElemData; //将加密数据写至Clipher元素
EncryptedXml.ReplaceElement(EleToEncrypt, EnedElem, false); //加密后的元素替换相应元素
}
其中,XmlDoc为需进行加密的文档,EleToEncrypt为待加密的数据元素,Key是为该元素加密对应的密钥。CheckEncryptArg (...) 方法用于对传入参数的有效性进行检查,方法GetEncryptionMethod(Key) 用于通过密钥获取加密方法,这里不再详细介绍。数据加密的实现步骤可描述为:对待加密的文件XmlDoc,针对各待加密元素XmlElement,分别分配密钥(也可使用同一密钥,根据需要确定),然后依次调用ImplementEncrypt(...)方法,对待加密的元素进行加密,再用加密后的数据替换原Xml元素,即实现了数据加密。
数据解密模块的核心代码如下:
public static void ImplementDecrypt(XmlDocument XmlDoc, XmlElement EnedElement, SymmetricAlgorithm Key)
{CheckDecryptArg (XmlDoc, EnedElement, Key) // 参数的有效性校验
EncryptedData EnedData = new EncryptedData(); // 实例化一个EncryptedData对象
EnedData.LoadXml(EnedElement); //读取加密元素
EncryptedXml enXml = new EncryptedXml(); // 新建一个EncryptedXml对象
byte[]DecryptResult = enXml.DecryptData(EnedData, Key); //用密钥解密数据
enXml.ReplaceData(EnedElement, DecryptResult) ; //元素替换为解密的数据序列
}
其中,XmlDoc 为待解密的Xml文档,EnedElement 为待解密的数据元素,Key为对应的密钥,CheckDecryptArg (...)用于对传入参数的有效性进行检查。数据解密的实现步骤可描述为:对待解密的文件XmlDoc,针对各加密元素EnedElement和对应的密钥,依次调用ImplementDecrypt(...)方法,对加密元素进行解密,然后将解密后的数据序列替换原加密的Xml元素,即实现了数据解密。
3 结束语
在C4ISR和基于HLA的作战仿真系统中存在大量的异构平台,如何实现作战数据的实时交换,并其在存储与交换过程中的安全性是不容忽视的一个问题。在分析作战数据交换机制的基础上,提出了一种基于XML的作战数据的安全交换方案,利用XML的语法规范与跨平台特性实现异构平台间的数据交换,并通过采用数字签名和加密技术为数据交换提供安全保障,可提高作战数据的通用性、规范性与安全性。
参考文献:
[1] 胡宁.XML在高校数据资源库共享平台的应用[J].现代电子技术, 2011,34(9):99-101.
[2] 徐享中,王精业,刘朔.XML在层次建模上的应用研究[J].系统仿真学报, 2009,21(6):1511-1513.
[3] 樊青云,刘东波,阮启明,等.基于XML的作战计划形式化描述[J]. 计算机技术与发展,19(10):204-206.
[4] 赵邵蕾,魏石川.演习计划仿真想定的规范化表述方法研究[J]系统仿真技术[J].2011,7(1):1-5.
[5] 杨乐平,陈钦,朱彦伟. HLA框架下的Agent与XML应用研究[J].系统仿真学报,2007,19(5)1045-1048.
[6] 陈春咏,史金飞. 基于XML的C4ISR系统信息表达模式[J].火力与指挥控制,2007,32(10):22-26.
[7] 李凌鹏,刘毅,范勇. 基于HLA的地空对抗仿真系统方案设计[J]系统仿真技术,2006,2(2):69-73.
[6] 陈春咏,史金飞. 基于XML的C4ISR系统信息表达模式[J].火力与指挥控制,2007,32(10):22-26.
[7] 樊青云,刘东波,阮启明,等.基于XML的作战计划形式化描述[J]. 计算机技术与发展,19(10):204-206.
[8] 范洁,尚增光. XML安全技术在电子公文交换系统中的应用[J].计算机工程与设计,2009,30(18)4214-4216.
[9] 杨灵,邹娟.XML 安全体系研究[J]计算机技术与发展,2010,20(8):137-141.