基于消息中间件的数据安全交换方案
摘要:由于内外网安全管理权限的不同,大量相互独立、分散的数据未能实现有效连接、交换,制约了相关单位信息化建设的进一步发展。
消息中间件的出现为实现分布式环境下的数据交换提供了良好的解决方案。
本文提出在现有消息中间件的基础上增加消息标识信息及完整性校验过程,构建了基于标识的SSL改进技术,并设计了相应的数据安全交换方案,从而保证了交换过程的安全可靠。
关键词:消息中间件标识SSL 安全交换
1 现有通信机制
在分布式环境下,为了集成分布式应用,开发者需要对异构环境下的分布式应用提供有效的通信手段。
系统间通信常采用的方式包括远程过程调用、分布式对象技术和消息传递。
1.1 远程过程调用RPC(Remote Procedure Call)
远程过程调用是支持分布式应用系统之间通信的一种重要机制。
RPC技术需要采用软件代理实现不同地址空间执行程序之间的通信。
RPC应用分为Client和Server两部分,Server用于提供多个远程过程以供调用,Client用于向Server发送调用远程过程的请求。
RPC通过本地机器的过程声明调用过程,从而达到过程的实现在远程机器上,过程的声明在本地机器上。
通常情况下,远程过程调用是同步通讯,如果采用线程机制也能够进行异步调用,但是使用过程较为繁琐。
同步通信机制存在一定的局限性,例如需要考虑网络和系统故障、流量控制以及进程同步等复杂问题。
此外,由于缺少中间代理处理请求,Client发出请求时Server 必须处于运行状态,导致Client和Server的生命周期耦合。
1.2 分布式对象技术
分布式对象技术是伴随网络而发展起来的一种面向对象的技术,是分布式技术与面向对象技术的结合。
由于对象请求代理负责请求传送和Server定位,Client和Server之间并不需要直接连接。
Client不需要了解如何与Server通信以及如何激活和存储Server对象,也不必知道Server对象的位置、使用何种操作系统及其他与接口无关的成分的状态。
但是分布式对象技术中客户端与服务器之间的耦合程度也比较高,客户请求服务器方的服务时,必须知道调用的方法名称及其参数。
此外,当客户访问服务器方的服务时,必须确保服务器处于正常的运行状态。
如果服务器因故不能运行或者存在网络故障,客户将无法及时与其进行交互。
1.3 消息传递
消息传递就是用消息在不同的系统之间进行通信,每个消息用户都和一个消息代理相连,由消息代理负责提供消息的发送、接收和读取服务。
消息代理通常由消息中间件(Message oriented Middleware)
实现。
MOM独立于操作系统和网络,能够屏蔽底层异构操作系统、网络平台、通讯协议及消息格式的差异,为上层应用提供一致的通讯标准。
采用消息中间件实现应用系统之间松散耦合的分布式通信,在实践中得到了广泛应用,其原理如图2所示:
ActiveMQ是Apache出品用于实现JMS(Java Message Service)接口的开源消息中间件。
相比其他消息中间件,ActiveMQ具备以下特点:(1)消费者负载平衡原则。
ActiveMQ可以在消费者端进行负载平衡,假设希望尽快处理位于某一个队列中的订单,JMS提供者会在消费者之间根据负载平衡原则合理分配这些消息;(2)消息持久化。
即使生产者在传递消息时消费者不在线,在消息中心重新启动后仍然可以收到消息,这样增强了消息传递的可靠性;(3)ActiveMQ支持生产者以同步或异步方式发送消息到代理上;(4)ActiveMQ支持多种传送协议:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA;
由于消息中间件ActiveMQ具备上述特质,故选用其构建底层通信架构。
2 基于标识的SSL改进技术
2.1 ActiveMQ中SSL协议的分析
ActiveMQ支持多种传输协议如TCP、UDP等,并且支持SSL安全协议。
SSL协议主要提供了以下服务:一是加密网络上客户端和服务器相互发送的信息;二是验证消息在传送过程是否被人改动;三是
用公钥方法验证服务器和客户机身份。
2.2 基于标识的SSL改进技术
由于SSL协议存在一定的缺陷和漏洞,特别是针对SSL协议的中间人攻击。
因此,单纯采取SSL协议并不能保证通信信道的可靠。
本文在分析了消息中间件ActiveMQ消息队列格式的基础上,提出在消息头字段中添加一定的标识信息,用于交换服务器的验证,从而保证通信信道的可靠性。
本方案中设计、在交换进程启动之后,对放入消息传输队列中的数据流添加特定标识,主节点通过检测带标识的数据流,达到检测目的。
标识信息主要包括以下内容:(1)节点身份序列:节点在管理平台注册时,系统会根据节点注册信息生成一个包括节点密级、IP地址、Mac地址、端口号、硬件编号和范畴等内容的节点身份序列。
(2)交换策略信息:节点在每次的任务定制过程中都会包含相应的策略信息,管理平台将策略信息下发后,交换进程将策略信息作为标识信息写入消息队列中。
(3)时间戳:系统将每次交换进程启动的时间信息写入消息队列的标识信息中,接收方可以通过比对收到的数据时间与消息标识中的时间,检测数据是否受到了重放攻击,确保数据交换的新鲜性。
(4)消息内容的哈希值:系统将每个消息队列中的消息内容进行哈希,将哈希结果作为消息标识信息。
交换服务器通过对消息队列中标识信息的严格认证,确保了对节点交换策略的审查和对消息完整性、新鲜性的验证,从而有效抵御针对SSL协议的中间人攻击,保证了通信信道的可靠。
3 基于消息中间件的数据安全方案
本节根据数据安全交换特性,设计基于消息中间件的数据安全交换方案,通过设计安全交换架构,定义了安全交换流程,实现了内外网数据安全可靠的传输。
3.1 数据安全交换架构
系统架构如图3所示[7][8]:
系统运行平台为可信计算平台,采取JA V A技术,JDK版本需要1.6以上支持。
在本系统架构中,各组成部分说明如下:(1)数据源。
本文不侧重于数据格式的转换,故采用基本文件系统(如word文件、txt文件、视频文件等)。
(2)交换进程初始化。
交换进程初始化是帮助应用系统进行数据交换的JA V A程序。
此程序是在消息中间件ActiveMQ的基础上,利用其封装的接口函数实现的,确保了消息通信的异步性、持久性和可靠性。
(3)基于标识的SSL通道。
SSL通道是在ActiveMQ 的基础上实现的,并添加了标识认证信息,避免了SSL协议本身的
安全缺陷,确保了消息传输过程的可靠性。
(4)可信计算平台。
基于可信计算平台,系统从可信根加载,一级验证一级,一级信任一级,确保了交换进程启动可信和交换行为动态安全。
3.2 数据安全交换流程
下面对应用系统间数据交换的传输过程简要分析如下,假设应用系统A向应用系统B发送数据请求,假设此时任务定制过程已经结束,双方采取点对点通信方式。
交换流程如图4所示:
(1)应用系统A将交换数据内容封装至消息队列中,交换进程通过可信链加载启动并对函数调用序列校验。
(2)校验成功后交换进程启动,将策略信息、时间戳等标识信息添加至消息队列中,并将消息发送至交换服务器的队列中。
(3)交换服务器通过对消息队列标识信息的审核,确定无误后将消息发送至应用系统B的接收队列中。
(4)应用系统B监听指定队列,若有消息到来时,接收消息并将消息解析,从而完成一次数据交换过程。
3.3 方案特性
本文提出的基于消息中间件的数据安全交换方案,具有以下几个特点:(1)跨平台性。
JMS规范是基于JA V A语言的,具有JA V A语言特有的平台无关性。
(2)异步性。
请求数据的应用系统和发送数据的应用系统不需要同时连接至交换服务器。
(3)松耦合性。
数据发送方不需要考虑数据接收方之间的通信情况,也不需要考虑数据被接收
后如何处理,只要发送符合双方约定的格式,接收方即可正确响应。
(4)可靠性。
ActiveMQ的异步消息机制保证了应用系统间数据交换的可靠性,基于标识的SSL安全通道保证了交换信道的安全、可靠。
(5)交换进程动态可信。
系统从可信根加载,一级验证一级,一级信任一级,交换进程处于可信链中,保证了启动过程可信;通过对交换进程函数调用序列的校验,保证了交换行为动态可信。
(6)一体化程度高。
通过利用消息中间件ActiveMQ本身的安全机制,避免了再集成开源SSL工具和其它可靠传输机制时可能带来的边界安全问题,一体化程度高。
4结语
本文从数据交换过程面临的问题出发,分析了现有的一些主要解决方案,并在深入研究消息中间件ActiveMQ通信机制的基础上,指出其采用的SSL协议存在安全缺陷,并提出了一种基于标识的SSL 改进技术及基于消息中间件的数据安全交换解决方案,从而可以有效的保证数据交换过程中的安全可靠。
参考文献
[1] 叶晓彤,邓云,简清明.基于IBE的XML加密数据安全交换研究[J].计算机应用与软件,2010,27(3):110-113.
[2] 周杭霞,夏荣钊,何利力.基于XML数据安全交换的方法[J].计算机应用研究,2006(4):126-128.
[3] 徐晶,许炜.消息中间件综述[J].计算机工程,2005,31(16):73-76.。