《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 主機(jī)間非安全通信變?yōu)榘踩ㄐ欧椒ǖ难芯?/span>
主機(jī)間非安全通信變?yōu)榘踩ㄐ欧椒ǖ难芯?
2014年微型機(jī)與應(yīng)用第18期
趙必廈
藍(lán)盾信息安全技術(shù)股份有限公司,廣東 廣州 510000
摘要: 大數(shù)據(jù)集群的主機(jī)之間傳輸數(shù)據(jù),由于大數(shù)據(jù)技術(shù)考慮性能比較多,認(rèn)為主機(jī)集群之間是高度可信的,在傳輸數(shù)據(jù)時(shí),數(shù)據(jù)很多都是沒有加密的,存在安全問題,這給不懷好意的入侵者提供了切入口。針對(duì)這個(gè)問題,提出了一種基于代理服務(wù)的方法,把主機(jī)間非安全通信變?yōu)榘踩ㄐ?,?shí)現(xiàn)了安全數(shù)據(jù)傳輸?shù)哪康?。首先敘述了代理服?wù)器技術(shù)和Thrift服務(wù)技術(shù),然后描述了CS架構(gòu)的一般主機(jī)的通信模型和基于代理服務(wù)的通信模型,接著歸納了幾類加密算法,之后給出了Solr搜索引擎的應(yīng)用案例,最后歸納了本方法的特點(diǎn)與應(yīng)用范圍。
Abstract:
Key words :

  摘  要: 大數(shù)據(jù)集群的主機(jī)之間傳輸數(shù)據(jù),由于大數(shù)據(jù)技術(shù)考慮性能比較多,認(rèn)為主機(jī)集群之間是高度可信的,在傳輸數(shù)據(jù)時(shí),數(shù)據(jù)很多都是沒有加密的,存在安全問題,這給不懷好意的入侵者提供了切入口。針對(duì)這個(gè)問題,提出了一種基于代理服務(wù)的方法,把主機(jī)間安全通信變?yōu)榘踩ㄐ牛瑢?shí)現(xiàn)了安全數(shù)據(jù)傳輸?shù)哪康?。首先敘述了代理服?wù)器技術(shù)和Thrift服務(wù)技術(shù),然后描述了CS架構(gòu)的一般主機(jī)的通信模型和基于代理服務(wù)的通信模型,接著歸納了幾類加密算法,之后給出了Solr搜索引擎的應(yīng)用案例,最后歸納了本方法的特點(diǎn)與應(yīng)用范圍。

  關(guān)鍵詞: 代理服務(wù);安全通信;非安全通信;主機(jī)間

0 引言

  信息安全越來越被人們所關(guān)注和重視,尤其是在云計(jì)算、大數(shù)據(jù)的時(shí)代[1]。但是,很多大數(shù)據(jù)系統(tǒng)及其應(yīng)用平臺(tái)為了性能經(jīng)常忽略掉部分安全因素,認(rèn)為集群主機(jī)之間是高度可信的,因此,該類系統(tǒng)很多都是開放明文的接口提供給其他系統(tǒng)進(jìn)行調(diào)用,這為不懷好意的入侵者提供了切入點(diǎn)。有沒有一種方法可以有效地避免明文傳輸數(shù)據(jù),而又不改變原系統(tǒng)的接口呢?本文介紹了一種基于代理服務(wù)的主機(jī)之間非安全通信變?yōu)榘踩ㄐ诺姆椒āT摲椒ɑ赥hrift服務(wù),在客戶端與服務(wù)器之間創(chuàng)建一個(gè)代理服務(wù)層,該層位于服務(wù)器節(jié)點(diǎn)上面,把服務(wù)器端明文傳輸?shù)臄?shù)據(jù)在出本機(jī)網(wǎng)卡之前進(jìn)行了加密,然后發(fā)送給客戶端,避免了明文傳輸,提高了系統(tǒng)的安全性,有效防止入侵者非法截取數(shù)據(jù)。

1 代理服務(wù)器

  1.1 代理服務(wù)器技術(shù)

  代理服務(wù)器[2-3]是指源主機(jī)不直接訪問目標(biāo)主機(jī),而是由源主機(jī)與代理服務(wù)器建立連接,源主機(jī)對(duì)目標(biāo)主機(jī)的訪問請求都發(fā)送到代理服務(wù)器,然后由代理服務(wù)器直接訪問目標(biāo)主機(jī)并獲取到信息,最后由代理服務(wù)器返回信息給源主機(jī)。

  代理服務(wù)器將源主機(jī)與目標(biāo)主機(jī)的通信分為兩段,一段是從源主機(jī)到代理服務(wù)器,另一段是從代理服務(wù)器到目標(biāo)主機(jī)。這樣,代理服務(wù)器把源主機(jī)對(duì)目標(biāo)主機(jī)的訪問置于控制之下,使訪問者無法了解到目標(biāo)主機(jī)的結(jié)構(gòu)和運(yùn)行情況,提高了安全性。

  代理服務(wù)器也有不足,即源主機(jī)與目標(biāo)主機(jī)之間通信必須開啟代理服務(wù)器主機(jī),同時(shí),代理服務(wù)器主機(jī)的機(jī)器使用性能也會(huì)降低,代理服務(wù)器成為源主機(jī)與目標(biāo)主機(jī)之間的核心服務(wù)。

  1.2 Thrift服務(wù)技術(shù)

  Thrift來源于Facebook,目前是Apache基金會(huì)的一個(gè)開源項(xiàng)目,它是一個(gè)軟件服務(wù)框架,用來進(jìn)行可擴(kuò)展跨語言服務(wù)的開發(fā),結(jié)合了功能強(qiáng)大的堆棧和代碼生成引擎,能夠在C++、Java、Python等編程語言間無縫結(jié)合,提供高效的服務(wù)。

  1.2.1 Thrift服務(wù)的創(chuàng)建過程

  Thrift服務(wù)創(chuàng)建的過程如下:

 ?。?)創(chuàng)建Thrift接口文件,即“.thrift”文件;

 ?。?)產(chǎn)生目標(biāo)語言的接口文件,例如Java語言;

 ?。?)編寫服務(wù)端代碼;

  (4)編寫客戶端代碼;

 ?。?)運(yùn)行服務(wù)端應(yīng)用程序;

 ?。?)運(yùn)行客戶端應(yīng)用程序。

  1.2.2 服務(wù)端編碼的基本步驟

  服務(wù)端編碼的基本步驟為:首先實(shí)現(xiàn)服務(wù)處理接口,然后依次創(chuàng)建TProcessor、TServerTransport、TProtocol、TServer對(duì)象,最后啟動(dòng)Server。

  1.2.3 客戶端編碼的基本步驟

  客戶端編碼的基本步驟為:首先創(chuàng)建Transport,接著創(chuàng)建TProtocol,然后基于TTransport和TProtocol創(chuàng)建Client,最后調(diào)用Client的相應(yīng)方法。

  1.2.4 數(shù)據(jù)傳輸協(xié)議

  Thrift提供了以下4種數(shù)據(jù)傳輸協(xié)議:

 ?。?)TBinaryProtocol:二進(jìn)制格式的傳輸協(xié)議。

 ?。?)TCompactProtocol:壓縮格式的傳輸協(xié)議。

 ?。?)TJSONProtocol:JSON格式的傳輸協(xié)議。

 ?。?)TSimpleJSONProtocol:JSON只寫的傳輸協(xié)議,生成的文件很容易通過腳本語言解析。

2 通信模型

  2.1 CS架構(gòu)的主機(jī)的通信模型

  CS架構(gòu)的主機(jī)之間的通信模型如圖1所示。

002.jpg

  主機(jī)之間的邏輯處理流程如下:

  (1)源主機(jī)啟動(dòng)客戶端,向目標(biāo)主機(jī)的服務(wù)端發(fā)送請求;

 ?。?)目標(biāo)主機(jī)的服務(wù)端接收到請求,處理后,返回信息給源主機(jī)的客戶端;

 ?。?)流程結(jié)束。

  由于請求、返回的過程需要網(wǎng)絡(luò)傳輸數(shù)據(jù),因此存在數(shù)據(jù)被截獲的風(fēng)險(xiǎn)。而且,如果數(shù)據(jù)未經(jīng)過加密,則存在信息被泄密的安全隱患。

  2.2 CS架構(gòu)的基于代理服務(wù)的通信模型

  CS架構(gòu)的基于代理服務(wù)的主機(jī)之間的通信模型如圖2所示。

003.jpg

  主機(jī)之間的邏輯處理流程如下:

 ?。?)源主機(jī)啟動(dòng)客戶端,向目標(biāo)主機(jī)的代理服務(wù)端發(fā)送加密請求;

  (2)目標(biāo)主機(jī)的代理服務(wù)端接收到請求,解密后轉(zhuǎn)發(fā)請求給本機(jī)的服務(wù)端;

 ?。?)目標(biāo)主機(jī)的服務(wù)端接收到請求,處理后返回信息給本機(jī)的代理服務(wù)端;

 ?。?)目標(biāo)主機(jī)的代理服務(wù)端接收到本機(jī)的服務(wù)端返回的信息,加密后返回信息給源主機(jī)的客戶端;

 ?。?)流程結(jié)束。

  代理服務(wù)端一般應(yīng)該實(shí)現(xiàn)服務(wù)端提供的所有接口,這樣,客戶端只需要在傳輸時(shí)進(jìn)行加密與改變通信端口,接收返回信息后進(jìn)行解密即可,客戶端內(nèi)部已經(jīng)實(shí)現(xiàn)的業(yè)務(wù)邏輯無需重新修改,減少了研發(fā)時(shí)間與成本。

3 加密算法

  加密是安全通信的基礎(chǔ),加密算法主要分為密鑰算法、單向散列算法和其他數(shù)據(jù)算法[4-5]。

  3.1 密鑰算法

  密鑰算法用來對(duì)敏感數(shù)據(jù)、摘要、簽名等信息進(jìn)行加密,常用的密鑰算法如表1所示。

001.jpg

  3.2 單向散列算法

  單向散列算法一般用于產(chǎn)生消息摘要、密鑰加密等,常見的單向散列算法如表2所示。

005.jpg

  3.3 其他數(shù)據(jù)算法

  其他數(shù)據(jù)算法包括一些常用編碼算法、明文轉(zhuǎn)換算法等,例如Base64、Quoted Printable、EBCDIC等。

  3.4 本文使用的加密算法及其處理過程

  本文使用的加密算法主要綜合AES算法和Base64算法。加密的過程是先使用AES算法加密,然后使用Base64算法加密后進(jìn)行傳輸;解密的過程是先使用Base64算法解密,然后使用AES算法解密,獲得明文。

4 應(yīng)用案例

  4.1 搜索引擎技術(shù)

  搜索引擎[6-7]是指“根據(jù)一定的策略、運(yùn)用特定的計(jì)算機(jī)程序從互聯(lián)網(wǎng)上搜集信息,在對(duì)信息進(jìn)行組織和處理后,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)”。搜索引擎包括全文索引、目錄索引、元搜索引擎、垂直搜索引擎等,具代表性的企業(yè)主要有百度、谷歌等。

  開源的搜索引擎主要以Lucene和Sphinx為首。其中,Lucene是Apache軟件基金會(huì)旗下一個(gè)開放源代碼的全文檢索引擎工具包,在它基礎(chǔ)之上還有一些開源的或者商用的搜索引擎,例如Constellio、SearchBlox、Solr、ElasticSearch等?;贚unece的搜索引擎都提供了完整的查詢、索引、部分文本分析等功能,有些功能更加強(qiáng)大、擴(kuò)展性更好。其中,開源中國社區(qū)OSChina是Lucene的用戶之一。Sphinx是一個(gè)基于SQL的全文檢索引擎,可以結(jié)合MySQL、PostgreSQL進(jìn)行全文搜索,提供比數(shù)據(jù)庫本身更專業(yè)的搜索功能。

  4.2 搜索引擎代理的安全隱患

  搜索引擎技術(shù)有一個(gè)共同點(diǎn):基于CS架構(gòu),需要搭建起搜索引擎服務(wù)器,然后由應(yīng)用程序調(diào)用搜索引擎服務(wù)器的接口,實(shí)現(xiàn)搜索的目的。

  由于搜索引擎的傳輸過程基本是明文傳輸?shù)?,因此,有可能?huì)被嗅探器等抓包軟件捕獲到明文,非法獲取到私隱數(shù)據(jù),存在數(shù)據(jù)滲漏的危險(xiǎn)。

  4.3 本方法應(yīng)用于搜索引擎

  本方法應(yīng)用于Solr搜索引擎[8]節(jié)點(diǎn)上面,使用Thrift服務(wù)作為代理服務(wù),其通信模式如圖3所示。

004.jpg

  主機(jī)之間的業(yè)務(wù)處理流程如下:

  (1)源主機(jī)的Thrift客戶端使用AES算法加密,然后使用Base64算法加密進(jìn)行傳輸;

 ?。?)代理服務(wù)器的Thrift服務(wù)端接收到客戶端的請求,使用Base64算法解密,再使用AES算法解密,得到客戶端真正的請求;

 ?。?)代理服務(wù)器把客戶端的請求發(fā)送給本機(jī)的Solr服務(wù)器進(jìn)程,Solr服務(wù)器進(jìn)程處理請求后返回結(jié)果給代理服務(wù)器;

  (4)代理服務(wù)器把Solr服務(wù)器進(jìn)程的返回結(jié)果使用AES算法加密后再使用Base64加密進(jìn)行傳輸;

  (5)源主機(jī)的Thrift客戶端接收到服務(wù)器端的結(jié)果,使用Base64算法解密后,再使用AES算法解密,獲得明文的結(jié)果,轉(zhuǎn)發(fā)給應(yīng)用前端進(jìn)行展示。

  由于Thrift服務(wù)接口在本機(jī)就把Solr服務(wù)接口的查詢內(nèi)容查詢出來了,因此不影響查詢性能。在傳輸?shù)倪^程中,Thrift客戶端與Thrift服務(wù)端的傳輸是加密的,從而保證了數(shù)據(jù)傳輸?shù)陌踩?/p>

5 本方法的特點(diǎn)與應(yīng)用范圍

  本方法具有如下特點(diǎn):

  (1)可以有效防止信息被非法竊取。主機(jī)之間傳輸已經(jīng)加密,可以有效防止信息被非法竊取。不管之前主機(jī)之間是否加密,通過在原來的客戶端與服務(wù)端之間加一層代理服務(wù)端,可以有效地對(duì)主機(jī)之間相互通信的信息進(jìn)行加密。

 ?。?)不需要改變服務(wù)器端原有的協(xié)議即可實(shí)現(xiàn)加密的功能。不改變目標(biāo)主機(jī)原來服務(wù)的協(xié)議,只需要在目標(biāo)主機(jī)上部署并啟動(dòng)代理進(jìn)程,在代理進(jìn)程中開放與原來服務(wù)一樣的接口,最后對(duì)客戶端做很少的改動(dòng)即可實(shí)現(xiàn)加密的功能。

  (3)適用于“之前沒有加密,但是現(xiàn)在需要加密”的各種系統(tǒng)之間的集成,提高系統(tǒng)的安全性。

6 結(jié)論

  本文針對(duì)主機(jī)間明文傳輸數(shù)據(jù),提出了一種基于代理服務(wù)的把明文傳輸?shù)臄?shù)據(jù)先進(jìn)行加密然后傳輸?shù)姆椒?,保證了數(shù)據(jù)傳輸?shù)陌踩⒈痉椒☉?yīng)用于Solr搜索引擎節(jié)點(diǎn),在保證不影響查詢效率的同時(shí),保證了傳輸安全性。本方法可以廣泛應(yīng)用于“之前沒有加密,但是現(xiàn)在需要加密”的各種系統(tǒng)之間的集成,提高系統(tǒng)的安全性。在下一步的研究中,可以考慮改進(jìn)代理服務(wù)層的加密算法,使得數(shù)據(jù)傳輸更高效。

  參考文獻(xiàn)

  [1] 王倩,朱宏峰,劉天華.大數(shù)據(jù)安全的現(xiàn)狀與發(fā)展[J].計(jì)算機(jī)與網(wǎng)絡(luò),2013(16):66-69.

  [2] 吳益清,謝培泰.代理服務(wù)器的原理與實(shí)現(xiàn)[J].信息工程大學(xué)學(xué)報(bào),2000(4):40-43.

  [3] 周偉.高性能HTTP代理服務(wù)器關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2012.

  [4] 陳健.幾種常用數(shù)據(jù)加密算法的比較[J].福建商業(yè)高等??茖W(xué)校學(xué)報(bào),2003(5):45-47.

  [5] 廉士國,孫金生,王執(zhí)銓.幾種典型視頻加密算法的性能評(píng)價(jià)[J].中國圖象圖形學(xué)報(bào)(A輯),2004,9(4):483-490.

  [6] 張興華.搜索引擎技術(shù)及研究[J].現(xiàn)代情報(bào),2004(4):142-145.

  [7] 黃知義,周寧.幾類搜索引擎的原理剖析、比較研究及發(fā)展趨勢探討[J].圖書館學(xué)研究,2005(3):61-64,67.

  [8] 張新生.基于solr的分布式搜索引擎研究[D].武漢:華中科技大學(xué),2012.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。