王一飛
摘要:該文介紹了P2P應(yīng)用以及P2P應(yīng)用所面臨的安全問題,針對這些安全問題進(jìn)行分析研究,提出了一種P2P網(wǎng)絡(luò)系統(tǒng)中的安全策略。
關(guān)鍵詞:P2P;對等網(wǎng);用戶識別;安全策略;安全威脅
近年來,隨著P2P(Peer-to-Peer)技術(shù)的日趨成熟,基于P2P網(wǎng)絡(luò)的各種應(yīng)用系統(tǒng)不斷涌現(xiàn)和壯大,P2P技術(shù)應(yīng)用主要集中在:1)分布式計算。P2P技術(shù)可以將網(wǎng)絡(luò)中眾多計算機(jī)暫時不用的計算能力連接起來,用這積累起來的巨大的計算能力來解決問題。如有許多大型的計算,比如某些天體力學(xué)中的計算,單靠一個或數(shù)個PC的計算能力是不可能完成的,甚至單個的大型計算機(jī)的計算能力也不能滿足其需求;2)交互應(yīng)用。交互應(yīng)用是指Internet上用戶之間的實時通信,比如即時消息、語音聊天、視頻聊天等。這是我們平時經(jīng)常用到的P2P技術(shù)的應(yīng)用實例。在交互的過程中,應(yīng)包括信息的發(fā)布者,信息的接受者和管理員三種角色;3)文件共享。文件共享也是P2P技術(shù)的重要應(yīng)用之一。有三種角色參與了文件共享的過程,即文件的發(fā)布者、文件的接受者和管理員。
1P2P應(yīng)用帶來的安全問題
基于P2P的分布式計算所面臨的可靠性和安全性問題,遠(yuǎn)比單機(jī)的計算任務(wù)要復(fù)雜得多。在計算任務(wù)的提交者(分布式計算用戶)將計算任務(wù)(可以包含應(yīng)用程序、數(shù)據(jù)、結(jié)果位置、需要的資源、通知機(jī)制等)提交后,有一個中心的管理服務(wù)器(不是必需的,可以由發(fā)起者完成管理工作)按照一定的策略,將工作分配下去,于是開始了該分布式計算的過程。而對于提供這些計算資源的用戶,分布式計算程序應(yīng)該對他們盡量透明,分布式計算程序不影響他們現(xiàn)行的工作,他們也不知道使用其計算資源的用戶身份、分布式計算程序的具體操作和得到的數(shù)據(jù)信息。
基于P2P的交互應(yīng)用信任模型很依賴于具體應(yīng)用實例的特殊性以及所包含內(nèi)容的敏感度。對于傳輸內(nèi)容有一定敏感性的應(yīng)用,可能存在著以下這些安全威脅:1)竊?。旱谌娇梢杂帽O(jiān)聽信道或橋接攻擊的方法非法得到通信內(nèi)容;2)篡改:第三方可以用橋接攻擊的方法,改變被傳輸?shù)膬?nèi)容;3)偽裝:偽裝通訊的某一方,騙取通訊內(nèi)容。
基于P2P的文件共享應(yīng)用過程中,文件的發(fā)布者希望知道:誰是文件的接受者、他是否有權(quán)限接受此文件。文件的接受者希望所接受的文件就是他想要的,即要保證文件的完整性。管理員希望對文件內(nèi)容可以做一定的審記。另外,為了保證文件的安全傳輸,也要防止數(shù)據(jù)在傳輸期間可能受到的攔截攻擊。
2P2P系統(tǒng)安全策略的研究
根據(jù)上述P2P的三種應(yīng)用中我們分析出的安全威脅,我們可以得到我們的安全機(jī)制所要完成的工作包括:
1)用戶身份的識別與認(rèn)證
這在三種應(yīng)用中都有必要,可以說是整個P2P安全機(jī)制中的核心內(nèi)容,在分布式計算中,要對計算任務(wù)的提交者進(jìn)行身份認(rèn)證,防止對計算資源的非授權(quán)使用;在交互應(yīng)用中,要對交互對手的身份進(jìn)行驗證,重點(diǎn)是對信息發(fā)布者的身份進(jìn)行驗證,防止偽裝攻擊;在文件共享中,用身份認(rèn)證保證文件訪問控制的正確實施。
2)基于資源的訪問控制
與身份認(rèn)證組合使用,保證只有被授權(quán)的合法用戶才能得到想要的資源。
3)安全傳輸
無論是分布式計算中的數(shù)據(jù)和結(jié)果傳輸,交互應(yīng)用中的交互信息,文件共享中的文件傳輸,都需要一個加/解密過程,來保證對應(yīng)內(nèi)容傳輸過程中不被竊聽、篡改。
4)完整性保護(hù)
在分布式計算,要保證被分發(fā)到各個計算資源的程序代碼和數(shù)據(jù)的完整性,保證計算結(jié)果的完整性;文件共享中要保證被共享文件的完整性。
3P2P系統(tǒng)安全策略的設(shè)計
首先我們要實現(xiàn)的就是對等認(rèn)證,在C/S方式下,用戶可以有多種認(rèn)證方式,最常見的是基于口令的身份認(rèn)證。但這種認(rèn)證方式的安全強(qiáng)度較低,存在著窮舉口令或攔截認(rèn)證報文等多種可能的攻擊,另外一個最大的問題是,在對等方式下,沒有一個集中存放口令的sever來驗證用戶身份,不可能要求每一個交互對手都知道我的口令,所以在P2P方式下,這樣的身份認(rèn)證手段是不適合的。
基于x.509證書的身份認(rèn)證很適合在應(yīng)用P2P技術(shù)的系統(tǒng)中使用,因為在認(rèn)證過程中,它并不要求要有一個sever存在,而是把認(rèn)證建立在雙方對于簽發(fā)對方證書的CA的信任之上的。X.509證書是建立在非對稱加密體制上的,所有人都使用數(shù)字證書(最終成為數(shù)字身份證),所有網(wǎng)絡(luò)上有安全需求的服務(wù)都有基于數(shù)字證書的認(rèn)證過程才是整個網(wǎng)絡(luò)安全的終級方案,才能在網(wǎng)絡(luò)上建立和現(xiàn)實社會中一樣的安全秩序。
下面我們就給出一個身份認(rèn)證過程的實例來具體說明。
假設(shè)A要驗證B的身份,B有由A所信任的CA甲簽發(fā)的數(shù)字證書(所謂信任,一是A承認(rèn)甲的權(quán)威性,同時A擁有甲的公鑰)。B所擁有的數(shù)字證書當(dāng)然要包含以下內(nèi)容:簡單的用戶信息,B的公鑰,CA甲對以上內(nèi)容的簽名(做文摘后甲用私鑰匙加密)交互過程如下:
1)A要求B提交證書。
2)B向A提交證書,A用甲的公鑰做驗證,確認(rèn)證書。
3)A用B的公鑰加密一個由時戳生成的隨機(jī)數(shù),將它發(fā)給B,(同時再給B一個對稱密鑰,或是對話密鑰)。
4)B用自己的私鑰對A送回的信息解密,將所得的信息送回(可以用A傳來的對稱密鑰加密)。
5)完成身份認(rèn)證過程。
傳輸安全和部分的完整性保護(hù)工作,我們采用SSL來完成。SSL工作過程是在身份認(rèn)證過程中,交互雙方交換了通訊所要使用的一對對稱密鑰匙(會話密鑰),然后所有要發(fā)送的數(shù)據(jù)在發(fā)送端加密,在接受方被解密。這樣,就能有效地防止竊聽信道、篡改傳輸數(shù)據(jù)等攻擊。
完整性保護(hù)工作的重點(diǎn)是保護(hù)內(nèi)容的完整性,如保護(hù)文件共享時,文件接受者收到的就是他要求的文件,或者至少他能追查出是誰生成了這個文件。有許多方法可以驗證內(nèi)容,包括簡單的校驗和,加密和水印技術(shù)。在保證內(nèi)容完整性的時候,我們引進(jìn)一種基于非對稱加密機(jī)制的數(shù)字簽名的機(jī)制:
1)在安全連接建立好后,對等點(diǎn)A向?qū)Φ赛c(diǎn)B要求一個內(nèi)容。
2)如果對等點(diǎn)B創(chuàng)建了該內(nèi)容,它就會在傳送該內(nèi)容之前為其數(shù)字簽名。如果對等點(diǎn)B只是發(fā)布在別處創(chuàng)建的內(nèi)容,那么該內(nèi)容是已經(jīng)被簽名過的。
3)在對等點(diǎn)A收到內(nèi)容后,它將驗證附在內(nèi)容上的數(shù)字簽名。具體過程是,A對收到的文件內(nèi)容做文摘,用B的公鑰對B的簽名解密,將得到的結(jié)果與文摘做比較,就可以得到結(jié)果。
鑒于P2P文件共享時文件被多次復(fù)制,接受者多半不是從文件的發(fā)布者得到文件,有很大的危險性。所以對文件內(nèi)容進(jìn)行校驗是十分必要的。
4小結(jié)
本文對P2P網(wǎng)絡(luò)系統(tǒng)中安全問題進(jìn)行了分析研究,提出了強(qiáng)認(rèn)證機(jī)制的安全策略,增強(qiáng)了P2P系統(tǒng)的安全性和可審計性,然而所給的安全解決方案也并不全面,例如沒有涉及如何解決引入互操作性所帶來的安全問題等,不足之處將會成為我們?nèi)蘸蟮难芯恐攸c(diǎn)。