宮明
摘 要:攻擊者可以通過各種途徑竊取網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)。如果數(shù)據(jù)使用了脆弱的加密方式或者以明文的方式傳輸,那么數(shù)據(jù)的安全性和網(wǎng)絡(luò)軟件系統(tǒng)的穩(wěn)定性將無法得到保障。對于包含敏感數(shù)據(jù)的網(wǎng)絡(luò)系統(tǒng),在設(shè)計階段應(yīng)該著重思考系統(tǒng)安全保護方案;需要根據(jù)系統(tǒng)的特點定制合理的加解密策略,既要確保安全又要兼顧效率;在自主開發(fā)的數(shù)字校園網(wǎng)絡(luò)設(shè)備監(jiān)控系統(tǒng)中,應(yīng)用非對稱加密算法和對稱加密算法相結(jié)合的方案,取得了滿意的效果。
關(guān)鍵詞:網(wǎng)絡(luò);數(shù)據(jù);安全;加解密;非對稱加密算法
中圖分類號:TP39 文獻標(biāo)識碼:A
1 引言(Introduction)
網(wǎng)絡(luò)安全是指網(wǎng)絡(luò)系統(tǒng)的硬件、軟件及其系統(tǒng)中的數(shù)據(jù)受到保護,不因偶然的或者惡意的原因而遭受到破壞、更改、泄露,系統(tǒng)連續(xù)可靠正常地運行,網(wǎng)絡(luò)服務(wù)不中斷。網(wǎng)絡(luò)安全包含網(wǎng)絡(luò)設(shè)備安全、網(wǎng)絡(luò)信息安全、網(wǎng)絡(luò)軟件安全。網(wǎng)絡(luò)信息安全側(cè)重于保護信息的保密性、真實性和完整性。避免攻擊者利用系統(tǒng)的安全漏洞進行竊聽、冒充、詐騙等有損于合法用戶的行為。其本質(zhì)是保護用戶的利益和隱私。數(shù)據(jù)竊聽是攻擊者常用的手段。2003年,有黑客在網(wǎng)上出售一種名為“隔山打?!钡哪抉R程序,它植入用戶電腦后可以對所在局域網(wǎng)進行竊聽并截獲一款當(dāng)下流行的網(wǎng)絡(luò)游戲賬號和密碼,然后以電子郵件的形式發(fā)送給攻擊者。這個木馬的實現(xiàn)原理是:首先通過ARP欺騙,把宿主計算機偽裝成路由器;導(dǎo)致局域網(wǎng)內(nèi)的其他計算機發(fā)送給遠(yuǎn)程服務(wù)器的數(shù)據(jù)都要經(jīng)過它轉(zhuǎn)發(fā)。同時它還對數(shù)據(jù)進行分析、匹配,如果發(fā)現(xiàn)符合那款游戲定義的數(shù)據(jù)包則進行解密,然后局域網(wǎng)內(nèi)玩家的賬號密碼被秘密發(fā)送到指定的電子郵箱,最后的結(jié)果是很多玩家的游戲裝備被盜,損失慘重。
這僅僅是一個開始,接下來若干年直到今天,網(wǎng)絡(luò)上的ARP病毒從沒有停止過,它們已經(jīng)發(fā)展成各種各樣的形式,竊取信息的種類也是五花八門。試想,如果沒有黑客再去制造ARP病毒,或者殺毒軟件、防御工具可以對任何ARP病毒實現(xiàn)絕殺。那么網(wǎng)絡(luò)數(shù)據(jù)是否能夠安全傳輸呢?答案是否定的。網(wǎng)絡(luò)管理員只需要用一臺計算機連接到局域網(wǎng)的主干路由器,就可以將數(shù)據(jù)鏡像到這臺計算機,剩下的事情完全由他的主觀意愿決定了。誠然,有法律和道德的約束,但這些不能保證全世界的網(wǎng)絡(luò)管理員不犯錯誤。所以,要實現(xiàn)數(shù)據(jù)在網(wǎng)絡(luò)上安全傳輸,必須依賴技術(shù)手段;設(shè)計可靠、高效的加解密方案,相當(dāng)于給數(shù)據(jù)加上一道牢固的鎖;即使數(shù)據(jù)被攻擊者截獲,但在短時間內(nèi)不能被解密成明文;或者攻擊者需要付出巨大的時間及物質(zhì)成本才能完成解密。并且攻擊者無法還原,分析數(shù)據(jù)封包的格式,不能隨意偽造數(shù)據(jù)封包欺騙遠(yuǎn)程服務(wù)端軟件,保障了網(wǎng)絡(luò)軟件安全運行。
2 分析網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包(Analysis the packets
on the network)
在互聯(lián)網(wǎng)沒有誕生之前,人們通常使用軟盤從一臺計算機拷貝數(shù)據(jù)然后復(fù)制到另一臺計算機;這種依賴存儲介質(zhì)的方式在今天仍在使用,軟盤已經(jīng)退出歷史舞臺,取而代之的是USB閃存驅(qū)動器(俗稱U盤)、移動硬盤等。使用存儲介質(zhì)有很多弊端,其中效率問題最為明顯,它會隨著兩臺計算機之間距離的增加而降低;比如,某公司在沈陽的分公司需要把計算機里的資料發(fā)送到北京的總公司,那么需要把資料拷貝到存儲介質(zhì)中,然后借助交通工具把存儲介質(zhì)運送到目的地。顯然這非常影響工作效率。
今天,互聯(lián)網(wǎng)已經(jīng)覆蓋了整個世界。人們使用一臺計算機可以在網(wǎng)上購物、聽音樂、看電影、玩游戲、和異地的朋友交流。它最大可能為人們的工作、學(xué)習(xí)、生活提供方便。人們因此有了網(wǎng)上銀行密碼、電子郵箱密碼、社交網(wǎng)絡(luò)密碼、網(wǎng)絡(luò)游戲密碼等等。有人會質(zhì)疑,這些密碼關(guān)系到個人隱私和物質(zhì)資產(chǎn),它們以什么樣的形式在網(wǎng)絡(luò)上傳輸,會不會被其他人竊取到,是不是很不安全?要解答這個問題,需要先知道數(shù)據(jù)是怎樣在網(wǎng)絡(luò)上傳輸?shù)摹?/p>
計算機之間能夠相互通信,就必須約定好通用的通信方式,即協(xié)議。其中,NETBEUI、IPX/SPX和TCP/IP[1]是常見的網(wǎng)絡(luò)通信協(xié)議。隨著互聯(lián)網(wǎng)的發(fā)展,TCP/IP已經(jīng)成為使用最廣泛的通信標(biāo)準(zhǔn)。在TCP/IP協(xié)議的基礎(chǔ)上,定義了一系列的標(biāo)準(zhǔn)應(yīng)用層協(xié)議[2]:HTTP、FTP、TELNET、DNS、POP3、SMTP,應(yīng)用層數(shù)據(jù)按照協(xié)議規(guī)定的格式組裝成數(shù)據(jù)包后由網(wǎng)絡(luò)層發(fā)送出去。軟件開發(fā)者、網(wǎng)絡(luò)管理員通常使用嗅探器抓取網(wǎng)絡(luò)封包進行相關(guān)的研究。圖1是使用Wireshark網(wǎng)絡(luò)分析器在本地計算機上抓取到的網(wǎng)絡(luò)登錄封包,它表示用戶輸入了口令和密碼登錄某個web應(yīng)用,數(shù)據(jù)是以明文的形式發(fā)送的,從圖的底部可以清晰的看到口令和密碼。
使用明文傳輸數(shù)據(jù)不但容易泄露敏感信息,而且暴露了整個封包協(xié)議的數(shù)據(jù)結(jié)構(gòu)。大多數(shù)網(wǎng)絡(luò)應(yīng)用程序都會自定義應(yīng)用層協(xié)議,例如網(wǎng)絡(luò)游戲。早期的一些網(wǎng)絡(luò)游戲使用的加密算法比較簡單,程序員使用網(wǎng)絡(luò)嗅探器抓取游戲客戶端和服務(wù)器之間通信的數(shù)據(jù)包,分析出完整的通信協(xié)議,最后開發(fā)出脫機外掛,獲取大量灰色收入,嚴(yán)重危害了服務(wù)器程序的穩(wěn)定性和可靠性。
3 定制合理的加解密方案(Customized the encryption
and decryption programme)
相對直接發(fā)送明文而言,發(fā)送方對數(shù)據(jù)進行加密必須消耗一定的系統(tǒng)時間,接收方也需要額外的時間進行解密;有的加密算法會增加數(shù)據(jù)的尺寸,在傳輸時會占用更多的網(wǎng)絡(luò)帶寬;因此加解密一定會降低系統(tǒng)的處理效率。對于實時交互,且交互頻繁的應(yīng)用,例如網(wǎng)絡(luò)游戲,在設(shè)計加解密方案的時候,應(yīng)該考慮最大限度得把效率損失降到最低。所以,針對應(yīng)用系統(tǒng)的特點,采用適合的加解密算法,是目前普遍實施的一種數(shù)據(jù)保護方案。
筆者開發(fā)了一套數(shù)字校園網(wǎng)絡(luò)設(shè)備監(jiān)控系統(tǒng)。該系統(tǒng)采用C/S和B/S混合結(jié)構(gòu),其中B/S子系統(tǒng)提供簡單的數(shù)據(jù)查詢和統(tǒng)計;主要的業(yè)務(wù)邏輯處理集中在C/S子系統(tǒng),它提供監(jiān)測、控制、管理功能。網(wǎng)絡(luò)管理員作為系統(tǒng)的使用者,需要在客戶端程序輸入口令和密碼登錄;客戶端程序和服務(wù)器程序在交互過程中會傳輸自定義的控制指令和設(shè)備的敏感信息。這些信息一旦泄露,攻擊者便可以修改全網(wǎng)設(shè)備的任何參數(shù),網(wǎng)絡(luò)安全受到巨大威脅。因此,加解密模塊是這個系統(tǒng)最重要的組成部分。endprint
如果采用傳統(tǒng)的對稱密鑰[3]算法,那么密鑰存放在什么位置最安全呢?方案1:密鑰存放在客戶端。由于這個密鑰是固定不變的,黑客只要通過反匯編與逆向工程[4]就可以跟蹤到密鑰。方案2:服務(wù)器隨機生成密鑰發(fā)送給客戶端??此坪馨踩驗槊荑€是動態(tài)變化的;但是黑客先通過逆向工程分析客戶端使用的加密算法,然后在網(wǎng)絡(luò)上嗅探密鑰和密文,有了加密算法、對稱密鑰、密文,便能夠分析出解密算法。
鑒于對稱密鑰算法的缺陷,筆者使用非對稱密鑰算法來保護系統(tǒng)的第一道門(身份認(rèn)證)。解決方案如下:客戶端發(fā)送認(rèn)證請求,服務(wù)器動態(tài)生成一對密鑰,即私鑰(private key)和公鑰(public key),服務(wù)器把公鑰發(fā)送給客戶端,客戶端使用公鑰對明文加密,然后把密文返回到服務(wù)器,服務(wù)器使用私鑰解密出登錄口令和密碼進行身份識別。攻擊者即使得到了公鑰和密文,也毫無用處,因為公鑰只能用來加密,要解密必須得到私鑰。
用戶登錄成功以后,進入客戶端主界面。用戶對客戶端程序操作的背后是客戶端程序跟服務(wù)器程序交互的結(jié)果。這些敏感信息雖然沒有登錄口令和密碼那樣重要,但它們的安全性同樣是不能被忽視的。此時,繼續(xù)使用非對稱加密并不是最佳的方案,因為非對稱加密算法的復(fù)雜度高,加解密的速度遠(yuǎn)遠(yuǎn)慢于對稱加密算法。筆者使用對稱加密算法來保護身份認(rèn)證成功后的數(shù)據(jù)傳輸安全。解決方案如下:認(rèn)證成功后,客戶端與服務(wù)器動態(tài)協(xié)商出一個密鑰,由公鑰加密后傳輸?shù)綄Χ耍蛻舳伺c服務(wù)器后續(xù)的數(shù)據(jù)傳輸使用這個密鑰進行加解密。
4 結(jié)論(Conclusion)
上述方案,應(yīng)用到筆者開發(fā)的數(shù)字校園網(wǎng)絡(luò)設(shè)備監(jiān)控系統(tǒng)。該系統(tǒng)的C/S子系統(tǒng)基于Windows 8 64位企業(yè)版和Visual Studio 2012中文旗艦版開發(fā)。系統(tǒng)目前處于試運行階段,客戶端與服務(wù)器交互響應(yīng)迅速,用戶體驗良好。
參考文獻(References)
[1] W.Richard Stevens.范建華,等,譯.TCP/IP詳解 卷1:協(xié)議[M].
北京:機械工業(yè)出版社,2000.
[2] Charles M.Kozierok.陳鳴,等,譯.TCP/IP指南(卷2)應(yīng)用層協(xié)
議[M].北京:人民郵電出版社,2008.
[3] Behrouz A.Forouzan.馬振晗,賈軍保,譯.密碼學(xué)與網(wǎng)絡(luò)安全
[M].北京:清華大學(xué)出版社,2009.
[4] Chris Eagle.石華耀,段桂菊,譯.IDA Pro權(quán)威指南(第2版)[M].
北京:人民郵電出版社,2012.
作者簡介:
宮 明(1979-),男,本科,工程師.研究領(lǐng)域:計算機網(wǎng)絡(luò),
軟件工程.endprint