摘 要: 大數(shù)據(jù)集群的主機之間傳輸數(shù)據(jù),,由于大數(shù)據(jù)技術(shù)考慮性能比較多,認(rèn)為主機集群之間是高度可信的,,在傳輸數(shù)據(jù)時,,數(shù)據(jù)很多都是沒有加密的,,存在安全問題,,這給不懷好意的入侵者提供了切入口。針對這個問題,,提出了一種基于代理服務(wù)的方法,,把主機間非安全通信變?yōu)榘踩ㄐ牛瑢崿F(xiàn)了安全數(shù)據(jù)傳輸?shù)哪康?。首先敘述了代理服?wù)器技術(shù)和Thrift服務(wù)技術(shù),,然后描述了CS架構(gòu)的一般主機的通信模型和基于代理服務(wù)的通信模型,接著歸納了幾類加密算法,,之后給出了Solr搜索引擎的應(yīng)用案例,,最后歸納了本方法的特點與應(yīng)用范圍。
關(guān)鍵詞: 代理服務(wù),;安全通信,;非安全通信;主機間
0 引言
信息安全越來越被人們所關(guān)注和重視,,尤其是在云計算,、大數(shù)據(jù)的時代[1],。但是,很多大數(shù)據(jù)系統(tǒng)及其應(yīng)用平臺為了性能經(jīng)常忽略掉部分安全因素,,認(rèn)為集群主機之間是高度可信的,,因此,該類系統(tǒng)很多都是開放明文的接口提供給其他系統(tǒng)進行調(diào)用,,這為不懷好意的入侵者提供了切入點,。有沒有一種方法可以有效地避免明文傳輸數(shù)據(jù),而又不改變原系統(tǒng)的接口呢,?本文介紹了一種基于代理服務(wù)的主機之間非安全通信變?yōu)榘踩ㄐ诺姆椒?。該方法基于Thrift服務(wù),在客戶端與服務(wù)器之間創(chuàng)建一個代理服務(wù)層,,該層位于服務(wù)器節(jié)點上面,,把服務(wù)器端明文傳輸?shù)臄?shù)據(jù)在出本機網(wǎng)卡之前進行了加密,然后發(fā)送給客戶端,,避免了明文傳輸,,提高了系統(tǒng)的安全性,有效防止入侵者非法截取數(shù)據(jù),。
1 代理服務(wù)器
1.1 代理服務(wù)器技術(shù)
代理服務(wù)器[2-3]是指源主機不直接訪問目標(biāo)主機,,而是由源主機與代理服務(wù)器建立連接,源主機對目標(biāo)主機的訪問請求都發(fā)送到代理服務(wù)器,,然后由代理服務(wù)器直接訪問目標(biāo)主機并獲取到信息,,最后由代理服務(wù)器返回信息給源主機。
代理服務(wù)器將源主機與目標(biāo)主機的通信分為兩段,,一段是從源主機到代理服務(wù)器,,另一段是從代理服務(wù)器到目標(biāo)主機。這樣,,代理服務(wù)器把源主機對目標(biāo)主機的訪問置于控制之下,,使訪問者無法了解到目標(biāo)主機的結(jié)構(gòu)和運行情況,提高了安全性,。
代理服務(wù)器也有不足,,即源主機與目標(biāo)主機之間通信必須開啟代理服務(wù)器主機,同時,,代理服務(wù)器主機的機器使用性能也會降低,,代理服務(wù)器成為源主機與目標(biāo)主機之間的核心服務(wù)。
1.2 Thrift服務(wù)技術(shù)
Thrift來源于Facebook,,目前是Apache基金會的一個開源項目,,它是一個軟件服務(wù)框架,用來進行可擴展跨語言服務(wù)的開發(fā),結(jié)合了功能強大的堆棧和代碼生成引擎,,能夠在C++,、Java、Python等編程語言間無縫結(jié)合,,提供高效的服務(wù),。
1.2.1 Thrift服務(wù)的創(chuàng)建過程
Thrift服務(wù)創(chuàng)建的過程如下:
(1)創(chuàng)建Thrift接口文件,,即“.thrift”文件,;
(2)產(chǎn)生目標(biāo)語言的接口文件,,例如Java語言,;
(3)編寫服務(wù)端代碼,;
?。?)編寫客戶端代碼;
?。?)運行服務(wù)端應(yīng)用程序,;
(6)運行客戶端應(yīng)用程序,。
1.2.2 服務(wù)端編碼的基本步驟
服務(wù)端編碼的基本步驟為:首先實現(xiàn)服務(wù)處理接口,,然后依次創(chuàng)建TProcessor、TServerTransport,、TProtocol,、TServer對象,最后啟動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:二進制格式的傳輸協(xié)議,。
(2)TCompactProtocol:壓縮格式的傳輸協(xié)議,。
?。?)TJSONProtocol:JSON格式的傳輸協(xié)議。
?。?)TSimpleJSONProtocol:JSON只寫的傳輸協(xié)議,,生成的文件很容易通過腳本語言解析。
2 通信模型
2.1 CS架構(gòu)的主機的通信模型
CS架構(gòu)的主機之間的通信模型如圖1所示。
主機之間的邏輯處理流程如下:
?。?)源主機啟動客戶端,,向目標(biāo)主機的服務(wù)端發(fā)送請求;
?。?)目標(biāo)主機的服務(wù)端接收到請求,,處理后,返回信息給源主機的客戶端,;
?。?)流程結(jié)束。
由于請求,、返回的過程需要網(wǎng)絡(luò)傳輸數(shù)據(jù),,因此存在數(shù)據(jù)被截獲的風(fēng)險。而且,,如果數(shù)據(jù)未經(jīng)過加密,,則存在信息被泄密的安全隱患。
2.2 CS架構(gòu)的基于代理服務(wù)的通信模型
CS架構(gòu)的基于代理服務(wù)的主機之間的通信模型如圖2所示,。
主機之間的邏輯處理流程如下:
?。?)源主機啟動客戶端,向目標(biāo)主機的代理服務(wù)端發(fā)送加密請求,;
?。?)目標(biāo)主機的代理服務(wù)端接收到請求,解密后轉(zhuǎn)發(fā)請求給本機的服務(wù)端,;
?。?)目標(biāo)主機的服務(wù)端接收到請求,處理后返回信息給本機的代理服務(wù)端,;
?。?)目標(biāo)主機的代理服務(wù)端接收到本機的服務(wù)端返回的信息,加密后返回信息給源主機的客戶端,;
?。?)流程結(jié)束。
代理服務(wù)端一般應(yīng)該實現(xiàn)服務(wù)端提供的所有接口,,這樣,,客戶端只需要在傳輸時進行加密與改變通信端口,接收返回信息后進行解密即可,,客戶端內(nèi)部已經(jīng)實現(xiàn)的業(yè)務(wù)邏輯無需重新修改,,減少了研發(fā)時間與成本。
3 加密算法
加密是安全通信的基礎(chǔ),,加密算法主要分為密鑰算法,、單向散列算法和其他數(shù)據(jù)算法[4-5]。
3.1 密鑰算法
密鑰算法用來對敏感數(shù)據(jù)、摘要,、簽名等信息進行加密,,常用的密鑰算法如表1所示。
3.2 單向散列算法
單向散列算法一般用于產(chǎn)生消息摘要,、密鑰加密等,,常見的單向散列算法如表2所示。
3.3 其他數(shù)據(jù)算法
其他數(shù)據(jù)算法包括一些常用編碼算法,、明文轉(zhuǎn)換算法等,,例如Base64、Quoted Printable,、EBCDIC等,。
3.4 本文使用的加密算法及其處理過程
本文使用的加密算法主要綜合AES算法和Base64算法。加密的過程是先使用AES算法加密,,然后使用Base64算法加密后進行傳輸,;解密的過程是先使用Base64算法解密,然后使用AES算法解密,,獲得明文,。
4 應(yīng)用案例
4.1 搜索引擎技術(shù)
搜索引擎[6-7]是指“根據(jù)一定的策略、運用特定的計算機程序從互聯(lián)網(wǎng)上搜集信息,,在對信息進行組織和處理后,,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)”,。搜索引擎包括全文索引,、目錄索引、元搜索引擎,、垂直搜索引擎等,,具代表性的企業(yè)主要有百度、谷歌等,。
開源的搜索引擎主要以Lucene和Sphinx為首,。其中,Lucene是Apache軟件基金會旗下一個開放源代碼的全文檢索引擎工具包,,在它基礎(chǔ)之上還有一些開源的或者商用的搜索引擎,,例如Constellio、SearchBlox,、Solr,、ElasticSearch等,?;贚unece的搜索引擎都提供了完整的查詢、索引、部分文本分析等功能,,有些功能更加強大,、擴展性更好。其中,,開源中國社區(qū)OSChina是Lucene的用戶之一,。Sphinx是一個基于SQL的全文檢索引擎,可以結(jié)合MySQL,、PostgreSQL進行全文搜索,,提供比數(shù)據(jù)庫本身更專業(yè)的搜索功能。
4.2 搜索引擎代理的安全隱患
搜索引擎技術(shù)有一個共同點:基于CS架構(gòu),,需要搭建起搜索引擎服務(wù)器,,然后由應(yīng)用程序調(diào)用搜索引擎服務(wù)器的接口,實現(xiàn)搜索的目的,。
由于搜索引擎的傳輸過程基本是明文傳輸?shù)?,因此,有可能會被嗅探器等抓包軟件捕獲到明文,,非法獲取到私隱數(shù)據(jù),,存在數(shù)據(jù)滲漏的危險。
4.3 本方法應(yīng)用于搜索引擎
本方法應(yīng)用于Solr搜索引擎[8]節(jié)點上面,,使用Thrift服務(wù)作為代理服務(wù),,其通信模式如圖3所示。
主機之間的業(yè)務(wù)處理流程如下:
?。?)源主機的Thrift客戶端使用AES算法加密,,然后使用Base64算法加密進行傳輸;
?。?)代理服務(wù)器的Thrift服務(wù)端接收到客戶端的請求,,使用Base64算法解密,再使用AES算法解密,,得到客戶端真正的請求,;
(3)代理服務(wù)器把客戶端的請求發(fā)送給本機的Solr服務(wù)器進程,,Solr服務(wù)器進程處理請求后返回結(jié)果給代理服務(wù)器,;
(4)代理服務(wù)器把Solr服務(wù)器進程的返回結(jié)果使用AES算法加密后再使用Base64加密進行傳輸,;
?。?)源主機的Thrift客戶端接收到服務(wù)器端的結(jié)果,使用Base64算法解密后,,再使用AES算法解密,,獲得明文的結(jié)果,,轉(zhuǎn)發(fā)給應(yīng)用前端進行展示。
由于Thrift服務(wù)接口在本機就把Solr服務(wù)接口的查詢內(nèi)容查詢出來了,,因此不影響查詢性能,。在傳輸?shù)倪^程中,Thrift客戶端與Thrift服務(wù)端的傳輸是加密的,,從而保證了數(shù)據(jù)傳輸?shù)陌踩?/p>
5 本方法的特點與應(yīng)用范圍
本方法具有如下特點:
?。?)可以有效防止信息被非法竊取。主機之間傳輸已經(jīng)加密,,可以有效防止信息被非法竊取,。不管之前主機之間是否加密,通過在原來的客戶端與服務(wù)端之間加一層代理服務(wù)端,,可以有效地對主機之間相互通信的信息進行加密,。
(2)不需要改變服務(wù)器端原有的協(xié)議即可實現(xiàn)加密的功能,。不改變目標(biāo)主機原來服務(wù)的協(xié)議,,只需要在目標(biāo)主機上部署并啟動代理進程,在代理進程中開放與原來服務(wù)一樣的接口,,最后對客戶端做很少的改動即可實現(xiàn)加密的功能,。
(3)適用于“之前沒有加密,,但是現(xiàn)在需要加密”的各種系統(tǒng)之間的集成,,提高系統(tǒng)的安全性。
6 結(jié)論
本文針對主機間明文傳輸數(shù)據(jù),,提出了一種基于代理服務(wù)的把明文傳輸?shù)臄?shù)據(jù)先進行加密然后傳輸?shù)姆椒?,保證了數(shù)據(jù)傳輸?shù)陌踩⒈痉椒☉?yīng)用于Solr搜索引擎節(jié)點,,在保證不影響查詢效率的同時,,保證了傳輸安全性。本方法可以廣泛應(yīng)用于“之前沒有加密,,但是現(xiàn)在需要加密”的各種系統(tǒng)之間的集成,,提高系統(tǒng)的安全性。在下一步的研究中,,可以考慮改進代理服務(wù)層的加密算法,,使得數(shù)據(jù)傳輸更高效。
參考文獻
[1] 王倩,,朱宏峰,,劉天華.大數(shù)據(jù)安全的現(xiàn)狀與發(fā)展[J].計算機與網(wǎng)絡(luò),2013(16):66-69.
[2] 吳益清,,謝培泰.代理服務(wù)器的原理與實現(xiàn)[J].信息工程大學(xué)學(xué)報,,2000(4):40-43.
[3] 周偉.高性能HTTP代理服務(wù)器關(guān)鍵技術(shù)研究與實現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),,2012.
[4] 陳健.幾種常用數(shù)據(jù)加密算法的比較[J].福建商業(yè)高等專科學(xué)校學(xué)報,,2003(5):45-47.
[5] 廉士國,,孫金生,,王執(zhí)銓.幾種典型視頻加密算法的性能評價[J].中國圖象圖形學(xué)報(A輯),,2004,9(4):483-490.
[6] 張興華.搜索引擎技術(shù)及研究[J].現(xiàn)代情報,,2004(4):142-145.
[7] 黃知義,,周寧.幾類搜索引擎的原理剖析、比較研究及發(fā)展趨勢探討[J].圖書館學(xué)研究,,2005(3):61-64,,67.
[8] 張新生.基于solr的分布式搜索引擎研究[D].武漢:華中科技大學(xué),2012.