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