摘 要: 大数据集群的主机之间传输数据,由于大数据技术考虑性能比较多,认为主机集群之间是高度可信的,在传输数据时,数据很多都是没有加密的,存在安全问题,这给不怀好意的入侵者提供了切入口。针对这个问题,提出了一种基于代理服务的方法,把主机间非安全通信变为安全通信,实现了安全数据传输的目的。首先叙述了代理服务器技术和Thrift服务技术,然后描述了CS架构的一般主机的通信模型和基于代理服务的通信模型,接着归纳了几类加密算法,之后给出了Solr搜索引擎的应用案例,最后归纳了本方法的特点与应用范围。
关键词: 代理服务;安全通信;非安全通信;主机间
0 引言
信息安全越来越被人们所关注和重视,尤其是在云计算、大数据的时代[1]。但是,很多大数据系统及其应用平台为了性能经常忽略掉部分安全因素,认为集群主机之间是高度可信的,因此,该类系统很多都是开放明文的接口提供给其他系统进行调用,这为不怀好意的入侵者提供了切入点。有没有一种方法可以有效地避免明文传输数据,而又不改变原系统的接口呢?本文介绍了一种基于代理服务的主机之间非安全通信变为安全通信的方法。该方法基于Thrift服务,在客户端与服务器之间创建一个代理服务层,该层位于服务器节点上面,把服务器端明文传输的数据在出本机网卡之前进行了加密,然后发送给客户端,避免了明文传输,提高了系统的安全性,有效防止入侵者非法截取数据。
1 代理服务器
1.1 代理服务器技术
代理服务器[2-3]是指源主机不直接访问目标主机,而是由源主机与代理服务器建立连接,源主机对目标主机的访问请求都发送到代理服务器,然后由代理服务器直接访问目标主机并获取到信息,最后由代理服务器返回信息给源主机。
代理服务器将源主机与目标主机的通信分为两段,一段是从源主机到代理服务器,另一段是从代理服务器到目标主机。这样,代理服务器把源主机对目标主机的访问置于控制之下,使访问者无法了解到目标主机的结构和运行情况,提高了安全性。
代理服务器也有不足,即源主机与目标主机之间通信必须开启代理服务器主机,同时,代理服务器主机的机器使用性能也会降低,代理服务器成为源主机与目标主机之间的核心服务。
1.2 Thrift服务技术
Thrift来源于Facebook,目前是Apache基金会的一个开源项目,它是一个软件服务框架,用来进行可扩展跨语言服务的开发,结合了功能强大的堆栈和代码生成引擎,能够在C++、Java、Python等编程语言间无缝结合,提供高效的服务。
1.2.1 Thrift服务的创建过程
Thrift服务创建的过程如下:
(1)创建Thrift接口文件,即“.thrift”文件;
(2)产生目标语言的接口文件,例如Java语言;
(3)编写服务端代码;
(4)编写客户端代码;
(5)运行服务端应用程序;
(6)运行客户端应用程序。
1.2.2 服务端编码的基本步骤
服务端编码的基本步骤为:首先实现服务处理接口,然后依次创建TProcessor、TServerTransport、TProtocol、TServer对象,最后启动Server。
1.2.3 客户端编码的基本步骤
客户端编码的基本步骤为:首先创建Transport,接着创建TProtocol,然后基于TTransport和TProtocol创建Client,最后调用Client的相应方法。
1.2.4 数据传输协议
Thrift提供了以下4种数据传输协议:
(1)TBinaryProtocol:二进制格式的传输协议。
(2)TCompactProtocol:压缩格式的传输协议。
(3)TJSONProtocol:JSON格式的传输协议。
(4)TSimpleJSONProtocol:JSON只写的传输协议,生成的文件很容易通过脚本语言解析。
2 通信模型
2.1 CS架构的主机的通信模型
CS架构的主机之间的通信模型如图1所示。
主机之间的逻辑处理流程如下:
(1)源主机启动客户端,向目标主机的服务端发送请求;
(2)目标主机的服务端接收到请求,处理后,返回信息给源主机的客户端;
(3)流程结束。
由于请求、返回的过程需要网络传输数据,因此存在数据被截获的风险。而且,如果数据未经过加密,则存在信息被泄密的安全隐患。
2.2 CS架构的基于代理服务的通信模型
CS架构的基于代理服务的主机之间的通信模型如图2所示。
主机之间的逻辑处理流程如下:
(1)源主机启动客户端,向目标主机的代理服务端发送加密请求;
(2)目标主机的代理服务端接收到请求,解密后转发请求给本机的服务端;
(3)目标主机的服务端接收到请求,处理后返回信息给本机的代理服务端;
(4)目标主机的代理服务端接收到本机的服务端返回的信息,加密后返回信息给源主机的客户端;
(5)流程结束。
代理服务端一般应该实现服务端提供的所有接口,这样,客户端只需要在传输时进行加密与改变通信端口,接收返回信息后进行解密即可,客户端内部已经实现的业务逻辑无需重新修改,减少了研发时间与成本。
3 加密算法
加密是安全通信的基础,加密算法主要分为密钥算法、单向散列算法和其他数据算法[4-5]。
3.1 密钥算法
密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法如表1所示。
3.2 单向散列算法
单向散列算法一般用于产生消息摘要、密钥加密等,常见的单向散列算法如表2所示。
3.3 其他数据算法
其他数据算法包括一些常用编码算法、明文转换算法等,例如Base64、Quoted Printable、EBCDIC等。
3.4 本文使用的加密算法及其处理过程
本文使用的加密算法主要综合AES算法和Base64算法。加密的过程是先使用AES算法加密,然后使用Base64算法加密后进行传输;解密的过程是先使用Base64算法解密,然后使用AES算法解密,获得明文。
4 应用案例
4.1 搜索引擎技术
搜索引擎[6-7]是指“根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统”。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎等,具代表性的企业主要有百度、谷歌等。
开源的搜索引擎主要以Lucene和Sphinx为首。其中,Lucene是Apache软件基金会旗下一个开放源代码的全文检索引擎工具包,在它基础之上还有一些开源的或者商用的搜索引擎,例如Constellio、SearchBlox、Solr、ElasticSearch等。基于Lunece的搜索引擎都提供了完整的查询、索引、部分文本分析等功能,有些功能更加强大、扩展性更好。其中,开源中国社区OSChina是Lucene的用户之一。Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL、PostgreSQL进行全文搜索,提供比数据库本身更专业的搜索功能。
4.2 搜索引擎代理的安全隐患
搜索引擎技术有一个共同点:基于CS架构,需要搭建起搜索引擎服务器,然后由应用程序调用搜索引擎服务器的接口,实现搜索的目的。
由于搜索引擎的传输过程基本是明文传输的,因此,有可能会被嗅探器等抓包软件捕获到明文,非法获取到私隐数据,存在数据渗漏的危险。
4.3 本方法应用于搜索引擎
本方法应用于Solr搜索引擎[8]节点上面,使用Thrift服务作为代理服务,其通信模式如图3所示。
主机之间的业务处理流程如下:
(1)源主机的Thrift客户端使用AES算法加密,然后使用Base64算法加密进行传输;
(2)代理服务器的Thrift服务端接收到客户端的请求,使用Base64算法解密,再使用AES算法解密,得到客户端真正的请求;
(3)代理服务器把客户端的请求发送给本机的Solr服务器进程,Solr服务器进程处理请求后返回结果给代理服务器;
(4)代理服务器把Solr服务器进程的返回结果使用AES算法加密后再使用Base64加密进行传输;
(5)源主机的Thrift客户端接收到服务器端的结果,使用Base64算法解密后,再使用AES算法解密,获得明文的结果,转发给应用前端进行展示。
由于Thrift服务接口在本机就把Solr服务接口的查询内容查询出来了,因此不影响查询性能。在传输的过程中,Thrift客户端与Thrift服务端的传输是加密的,从而保证了数据传输的安全。
5 本方法的特点与应用范围
本方法具有如下特点:
(1)可以有效防止信息被非法窃取。主机之间传输已经加密,可以有效防止信息被非法窃取。不管之前主机之间是否加密,通过在原来的客户端与服务端之间加一层代理服务端,可以有效地对主机之间相互通信的信息进行加密。
(2)不需要改变服务器端原有的协议即可实现加密的功能。不改变目标主机原来服务的协议,只需要在目标主机上部署并启动代理进程,在代理进程中开放与原来服务一样的接口,最后对客户端做很少的改动即可实现加密的功能。
(3)适用于“之前没有加密,但是现在需要加密”的各种系统之间的集成,提高系统的安全性。
6 结论
本文针对主机间明文传输数据,提出了一种基于代理服务的把明文传输的数据先进行加密然后传输的方法,保证了数据传输的安全。将本方法应用于Solr搜索引擎节点,在保证不影响查询效率的同时,保证了传输安全性。本方法可以广泛应用于“之前没有加密,但是现在需要加密”的各种系统之间的集成,提高系统的安全性。在下一步的研究中,可以考虑改进代理服务层的加密算法,使得数据传输更高效。
参考文献
[1] 王倩,朱宏峰,刘天华.大数据安全的现状与发展[J].计算机与网络,2013(16):66-69.
[2] 吴益清,谢培泰.代理服务器的原理与实现[J].信息工程大学学报,2000(4):40-43.
[3] 周伟.高性能HTTP代理服务器关键技术研究与实现[D].哈尔滨:哈尔滨工程大学,2012.
[4] 陈健.几种常用数据加密算法的比较[J].福建商业高等专科学校学报,2003(5):45-47.
[5] 廉士国,孙金生,王执铨.几种典型视频加密算法的性能评价[J].中国图象图形学报(A辑),2004,9(4):483-490.
[6] 张兴华.搜索引擎技术及研究[J].现代情报,2004(4):142-145.
[7] 黄知义,周宁.几类搜索引擎的原理剖析、比较研究及发展趋势探讨[J].图书馆学研究,2005(3):61-64,67.
[8] 张新生.基于solr的分布式搜索引擎研究[D].武汉:华中科技大学,2012.