徐进
摘要:该文提出了远程服务的数据交互应用中面对的主要问题是安全性和通用性,再深入分析的基础上提炼了一种解决这类问题的通用模型,再结合现有的技术条件,如采用密码签名技术解决安全性问题,通过配置、反射技术实现一个解释引擎适应不同业务,解决通用性问题,然后实现了这个模型,即通用数据交互平台,最后展现了数据交互平台在多个应用系统中和远程系统交互情况。
关键词:签名;安全;反射;httpclient;通用性
中图分类号:TP302.1 文献标识码:A 文章编号:1009-3044(2016)17-0037-04
Abstract:In this paper, the application of remote service interactive data in the face of the main problems is the safety and versatility, further in-depth analysis based on refined a general model to solve this kind of problem, combined with the existing technology, such as the use of cryptographic signature technology to solve the security problem, through the realization of an interpretation engine configuration, reflection technology adapt to different business, solve common problems, and then the model is realized, namely the general data exchange platform, finally show the data exchange platform in many application systems and remote system interaction.
Key words:Signature; security; reflection; httpclient; generality
1背景
随着互联网的发展,互联网应用系统越来越多,这些系统不光在一个企业内部交互,其中的很多应用需要在不同企业之间交互,例如电子商务网站依赖电子支付公司在线支付时,就是电子商务系统发送请求给异地的电子支付系统,由其完成支付并反馈支付状态,在这个过程中电子支付系统提供远程Web服务[1]。远程Web服务改变了传统业务模式,产生了巨大的应用价值,但是远程Web服务使用互联网作为通信链路,首先要考虑其安全风险,在Web服务中安全风险是多方面的,包括身份与认证以及访问控制等等,但Web服务中交互的数据安全需要特别关注,另外数据传输和数据校验也是数据交互的主要任务,同时做好这三个方面工作才能保证远程交换的数据安全正确的传输。
文献[2] 提出了一种基于XML安全技术的Web服务安全通信机制,通过安全会话实现了高效的安全通信。文献[3]对Web服务安全的多个方面进行了全面的阐述,例如数据安全、安全策略、攻击与防御、访问控制等等。文献[4]在消息级安全的规范基础上,设计了一消息安全模型。
文献[5-6]对使用Web Service技术做数据传输做了详细介绍,文献[7]对传输的数据格式Json做了介绍,并且对其性能进行深入分析。文献[8]对使用XML技术实现可配置组合式数据校验做了详细的介绍。本文首先分析了远程Web服务中,数据交互中面对的问题,并提出一种解决该问题的模型,然后实现该模型,最后展示了该模型被使用在不同业务场景的效果。
2数据处理模型分析和架构
2.1分析与架构
远程Web服务数据交互是指:请服务求方和服务方提供方通过互联网进行数据交互,请求方发起数据交互请求,服务方收到请求并返回响应给请求方。具体过程见图1。从远程服务分析,该过程包括:数据打包和解包、数据签名和验签、数据传输以及数据验证,在实际应用中每个远程服务接口都是上述服务过程,但是每个接口的数据项不同,数据打包解包内容不同,数据项验证规则不同。为了实现数据交互的通用模型,需要对变化点进行设计,通过特定技术支持变化,例如工作流引擎可以支持不同流程执行,规则引擎可以解释不同规则,本文面对上面的变化点采用配置思路和反射实现技术,让一个模型满足不同应用。给出其架构模型见图2。 2.2通用数据交互模型 通用数据交互模型是指:把数据交互从业务过程中分离出来,成为一个独立的服务单元,实现数据交互的所有功能,通过配置和反射技术提供通用功能。通用数据交互模型设计首先要满足通用性,而业务千变万化,业务接口数据项也丰富多变,这些要求和通用性是一对矛盾。为了在不牺牲通用性的前提下解决这对矛盾,借助软件产品线[9]思想,分析其变化点,即找到哪些在不同的业务和技术环境下可能变化的,哪些在不同的业务和技术环境下是不变的。针对变化点分析其变化特性,采用相应的技术支持变化,例如可以通过配置、反射、设计模式、引擎等技术支持变化。在通用数据交互模型中,数据签名验签以及数据传输是不随业务变化而变化,但会能随着技术变化;数据打包和数据验证会随着业务接口变化而不同。针对这些变化通过引擎技术和反射技术可以屏蔽通用数据交互模型对业务的感知。根据上述分析可以构建出一个通用架构模型见图3。
3数据交互平台设计和实现
根据提出通用数据交互模型,可以实现一个通用功能的平台,该平台可以应用在远程数据交互场景中,该平台设计实现主要包括:报文设计、安全设计、传输设计、数据处理设计。
3.1 报文设计
数据交互模型设计目标是通过一套通用框架处理不同应用和不同接口,每个接口数据内容不尽相同,设计每个接口报文时需要考虑通用性和易用性,把报文组成设计成报文头和报文体,报文头是报文公共特性,报文头有两种即请求报文头和应答报文头。报文头见表1,交易代码标识唯一的接口,渠道代码,标识这个接口和哪个商户进行交易,版本号,用户升级报文时,新老报文兼容性问题,签名信息用于存储签名数据。
3.2签名与验签设计
在远程数据交互中需要确保通信双方的数据完整性[10],即保证传输过程中数据没有被修改,还要确保不可抵赖性[10]即信息是由签名者发送,使用数字签名机制可以保护数据不被修改。
不同的Hash结果以、相同的数据得到相同的Hash结果以及Hash运算时不可逆,Hash签名可以保证数据完整性;DES签名是对称加密技术,该算法要求数据接收方和发送方都持有相同的密钥,这个技术有个缺点是密码管理不方便以及密钥丢失问题。RSA算法是非对称算,加密的一方持有私钥,解密一方是公钥,公钥是公开的,这种方法可以做到数据完整性和不可抵赖性,完全满足数据交互对安全的要求。
本模型中数字签名采用RSA算法,明文、签名密钥、验证密钥组成签名要素,签名密钥是私钥,而验证密钥是公开的。签名步骤:①对报文用签名密钥进行签名运算得到运算结果②把运算结果放入报文头的签名信息字段③接收方收到数据报文,然后对剔除签名信息的报文进行验签。在文献[12]介绍了RSA签名算法,本文中采用SHA1WithRSA算法实现。签名过程实现代码如下:
3.3配置设计
配置的业务分析,为了用一套程序动态实现不同业务数据封包、解包和验证,需要把业务字段信息和接口字段独立开,另外需要动态获取业务字段、接口字段属性和值,还要能动态获得接口字段的验证规则,对字段属性定义及验证规则定义则是配置设计的内容。封包过程是指,当数据交互模型收到业务请求数据,根据请求者系统编号和业务代码编号,从配置库中获取对应的反序列化类,然后用这个类反序列化成对象,再从配置中查找对应的通信接口类,然后实例化通信接口类,再从配置中获取业务对象属性和通信接口对象属性的映射关系,根据映射关系把业务对象数据转入通信接口对象,最后从配置中获取验证规则,对通信接口对象各属性值进行验证。从上面的分析实体包括:业务对象、通信接口对象和验证规则对象,业务对象属性和通信接口对象属性有映射关系,他们关系是多对多关系,实体关系[13]见图4.
3.4反射设计
反射机制[14]是在运行中获得类的属性和方法,通过类的属性方法执行对应对象的方法或者获得对应对象属性的值,其作用可以提高程序的自适应能力,提升软件的灵活性,通过反射可以在运行时根据配置创建对象,也可以根据配置在运行时通过对象属性名获取对象属性值,在数据打包过程中是这样使用反射的,在数据验证中也用到反射机制。
3.5通信设计
1) 数据传输格式
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 语法是 JavaScript 对象表示语法的子集。规则包括:数据在键值对中、数据由逗号分隔、花括号保存对象、方括号保存数组。JSON有两种结构:对象和数组,对象在js中表示为{key:value,key:value,...}的键值对的结构,数组在JSON中表示为[{"aaa","bbb"},{"ccc","ddd"}]。
JSON数据解析多个组件,但是fastjson效率高对中文字符支持好,在POM.xml文件中加入如下内容引入fastjson。
2) 通信协议
HTTP协议(超文本传输协议)以明文方式传输数据,因此不适合传输敏感信息。HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道。HTTPS的安全基础是SSL层,SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议。数据交换模型中采用HTTPS保证通信敏感数据不被泄密
通信框架HttpClient 是 Apache Jakarta Common 下的子项目,实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)并且支持支持 HTTPS 协议。使用中需要注意编码符和超时时间,调用过程如图。
3.6类设计
通用数据交互平台通用性设计是类设计首要解决的问题,通过设计分离变化点和不变点,从而再设计出对变化点的支持。从设计模式[15]可以得到很多经验,例如针对接口编程,使用继承和组合等等。结合实际,一次请求包括打包解包数据、数据验证、签名验签、传输、接收返回,这个过程不会变,不论在不同业务和不同接口中都是一样,所以把这个过程封装到一个类的公共方法中,针对数据打包和验证根据不同业务而变化,采用引擎类实现。ExchangeCenter类exchage()方法实现总体交互,DataFactory类定义数据打包解包和验证的接口,Transmission类实现数据传输,TransSign实现签名和验签。
4模型应用
5结束语
数据交互模型应用在多个和外部外部交互的系统中,通过配置即可实现功能,一个平台为多个系统服务,缩短了系统开发周期,增强了系统可维护性,通过数据签名机制保证了数据安全性,为应用保驾护航,最后在实际应用中产生很大经济价值。
参考文献:
[1] 岳昆,王晓玲,周傲英. Web服务核心支撑技术:研究综述[J]. 软件学报, 2004,15(3):428-442.
[2] 陈荻玲,怀进鹏. 一种Web服务安全通信机制的研究与实现[J]. 计算机研究与发展, 2004,41(4):679-688.
[3] 贺正求,吴礼发,洪征, 等. Web服务安全问题研究[J]. 计算机科学,2010,37(8):32-39.
[4] 汤卫东,周永权.Web服务消息级安全模型的设计及评价[J]. 计算机工程与设计, 2006,27(10):1873-1875.
[5] 王慧. 移动校园系统数据传输关键技术研究与实现[D]. 青岛: 中国海洋大学, 2014.
[6] 李良. 基于WebServices异构系[D]. 重庆: 重庆大学, 2008.
[7] 高静,段会川.JSON数据传输效率研究[J]. 计算机工程与设计, 2011,32(7):2267-2270.
[8] 林霞,申端明, 时迎, 等.可配置组合式数据校验方法[J]. 计算机系统应用 2015,24(15):161-165.
[9] Colin Atkinson. 基于构件的产品线工程UML方法[M]. 顾剑,钟鸣,束尧,等, 译. 北京: 机械出版社,中信出版社, 2005: 22-52.
[10] Christopher Steel, Ramesh Nagappan, Ray Lai. 安全模式[M]. 陈秋萍,罗邓,袁国忠, 等, 译.北京: 机械工业出版社, 2006: 165-166.
[11] 李克洪,王大玲,董晓梅.实用密码学与计算机数据安全[M].沈阳: 东北大学出版社, 2001: 24-30.
[12] 李丽新,袁烨. 网络安全通讯中的数字签名[J]. 现代情报, 2007(8):53-56.
[13] Stephens R K,Plew R R. 数据库设计[M]. 何玉洁,武欣,邓一凡, 等, 译.北京:机械工业出版社, 2001: 103-112.
[14] 孙巍,徐学东,徐学军.Java反射机制在可重构Web框架中的应用[J]. 计算机工程与应用, 2005 (36):92-94.
[15](美)Erich Gamma Richand Helm Ralph Johnson etc, 著,李英军,马晓星,蔡敏, 等, 译.设计模式[M]. 北京: 机械工业出版社, 2000: 10-15.