摘 要:分布式P2P計算不同于傳統的客戶/服務器模式。通過分析P2P系統的安全需求,討論了如何將PKI技術應用到P2P分布式計算中的問題。設計并實現了一種基于PKI技術的P2P安全計算平臺。該平臺結合了Web Services中的XML,SOAP等技術以及JXTA架構,在一定程度上實現了P2P環境中的安全認證與資源的訪問控制,保證了P2P計算的安全性。
關鍵詞:認證中心;數字簽名;對等計算
中圖法分類號:TP393文獻標識碼:A
文章編號:1001—3695(2007)02—0227—03
P2P(Peer-to-Peer)計算是不同于客戶/服務器的一種計算模式。該模型中所有的節點都是對等的,各節點具有相同的責任與能力并協同完成任務[3]。P2P系統中的節點具有很高的自治性和隨意性,其連接是不可靠的,節點可以隨意地加入或離去。目前P2P計算分為純P2P模式與混合P2P模式[2,3]。純P2P計算完全沒有服務器,由鏈狀的節點構成一個分散式網絡,節點之間不必通過服務器就可建立連接。這種網絡模型優點在于允許用戶設定和建立自己的網絡環境。但是由于沒有中心管理者,網絡節點難以發現,從而很難對網絡進行諸如安全管理、身份認證、流量管理、計費等控制,安全性較差;而混合型P2P網絡則是采用集中化目錄管理,對等點之間直接進行通信[2]。節點之間只要有通信,就需要有相應的安全需求。P2P系統安全可以分為通信雙方個人環境的安全需求、數據的安全、通信的安全。為防止惡意攻擊,通信的個人環境可以采用防火墻等。數據的安全則有真實性、完整性、機密性需求,可以采用身份認證、加密算法、數字簽名等機制;對于通信的安全,則要確保通信雙方通信鏈路的安全[7]。
由于P2P系統缺乏集中化的管理,安全性難以保證,這一點也正成為影響P2P計算廣泛應用的一個重要因素。本文主要根據P2P計算平臺的安全需求,設計并實現了一種P2P安全計算平臺,該平臺主要應用PKI技術以及XML,SOAP等Web Service技術[3],在一定程度上解決了P2P系統中的安全認證與訪問控制的問題。
1 相關技術介紹
1.1 PKI
PKI(Public Key Infrastructure,公鑰基礎設施)建立在現代密碼學的公鑰密碼技術基礎之上,在Internet 網絡環境中提供數據加密和數字簽名服務的統一的技術框架[1]。P2P雖然與傳統的客戶/服務器模式有許多不同的特點,但同一種安全需求可以用多種安全機制來解決。PKI中的認證、數據的機密性、完整性和不可抵賴性等機制在P2P網絡中也是適用的。P2P網絡中的對等節點對數據和資源提供很大的自制性,為避免一些法律糾紛或其他一些節外生枝的問題而引入的匿名機制[3],其應用的安全也必須是在整個系統安全的基礎之上。PKI技術提供的安全可靠服務,可以有效地解決P2P的安全性需求,特別是用戶身份識別、身份認證及授權的問題。此外,PKI具有良好的接口,普通用戶只需知道如何接入PKI,就可獲得安全服務。而P2P計算的節點大多是家用PC,用戶以達到大眾文化共享為目的。因此,用戶無須了解PKI原理,就可獲取該服務。
1.2 PKI系統的組成
PKI能夠為所有網絡應用透明地提供采用加密和數字簽名等密碼服務所必需的密鑰和證書管理。PKI系統一般具有認證機關、證書庫、密鑰備份及恢復系統、證書作廢系統、PKI應用接口系統等基本成分,如圖1所示。
認證機關 (Certificate Authority,CA)是證書的簽發機構,它是PKI的核心。其職責可以歸納為:①驗證并標志證書申請者的身份。②確保CA用于簽名證書的非對稱密鑰的質量。③確保整個簽證過程的安全性,確保簽名私鑰的安全性。④證書材料信息(包括公鑰證書序列號、CA標示等)的管理。⑤確定并檢查證書的有效期限。⑥確保證書主體表示的唯一性,防止重名。⑦發布并維護做廢證書表。⑧對整個證書簽發過程作日志記錄。⑨向申請人發通知。其中,最為重要的是CA自己的一對密鑰的管理,它必須確保其高度的機密性,防止他方偽造證書。證書庫是證書的集中存放地,是網上的一種公共信息庫,用戶可以從此處獲得其他用戶的證書和公鑰。構造證書庫的最佳方法是采用支持LDAP協議的目錄系統,用戶或機關的應用通過LDAP來訪問證書庫,系統必須確保證書庫的完整性,防止偽造、竄改證書。為避免因解密數據的密鑰的丟失而造成數據的丟失,PKI應該提供備份和恢復解密密鑰的機制。密鑰的備份與恢復由可信的機構來完成。但是,需要強調的是,簽名私鑰不能夠作備份。證書在CA為其簽署的有效期內也可能需要作廢,為實現這一點,應提供作廢證書的一系列機制。一般通過將證書列入作廢證書表CRL(Certificate RevocationList)來完成。證書的作廢處理必須在安全及可驗證的情況下進行,系統還必須保證CRL的完整性。PKI應用接口系統使得各種各樣的應用能夠以安全、一致、可信的方式與PKI交互,確保安全網絡環境的完整性和易用性。
1.3 交叉認證
認證機制包括用戶的身份認證和權限認證兩個方面。這里我們主要討論身份認證。目前身份認證主要采用基于PKI的數字證書機制,該機制能夠有效地解決網絡用戶的身份標志問題。用戶要訪問和使用系統的數據資源,首先必須通過系統身份認證中心的認證,系統身份認證中心對用戶身份認證核實無誤后,對用戶的公鑰證書加蓋時間戳進行簽名,供業務子系統驗證。用戶獲得身份認證中心簽名的公鑰證書后,才可向具體業務子系統提交服務請求。業務子系統收到用戶的服務請求后,首先調用身份認證中心的公鑰證書,驗證其對用戶公鑰證書的簽名,而后根據用戶的服務請求向權限認證中心提交用戶權限認證請求。所謂交叉認證是CA技術中連接兩個獨立的信任域的方法。通過交叉認證可以在以前沒有關聯的PKI之間建立信任關系,保證一個PKI的用戶驗證另一個PKI的用戶證書。實現交叉認證能夠擴大認證域的信用范圍,使用戶在更廣的范圍內建立起信任關系。交叉認證提供了一種解決PKI之間互相信任的機制。從技術角度看,兩個CA之間的交叉認證就是兩個CA互相為對方的根CA簽發一張證書,從而使兩個CA體系內的證書可以互相驗證;從業務角度看,CA間通過交叉認證可以擴展信用范圍。交叉認證包括證書鏈構建和證書驗證。
首先, 兩個CA 建立起信任關系。這就要求雙方安全地交換用于校驗簽名的公開密鑰,并利用自己的私有密鑰為對方簽發數字證書, 從而雙方都擁有了交叉證書;其次, 利用CA 的交叉證書校驗最終用戶的證書。這對用戶來說, 就是利用本方CA 的公鑰來校驗對方CA 的交叉證書, 從而決定對方CA 是否可信; 再利用對方CA 的公鑰來校驗對方用戶的證書, 從而決定對方用戶是否可信。
2 一種基于PKI 的P2P安全計算平臺
2.1 設計思想
因為需要應用PKI技術,因此我們采用混合的P2P網絡結構,節點的認證是通過設立專用的登錄服務器來實現用戶的認證過程,用戶間交換信息采用P2P模式,顯然,在認證過程中,可以使用PKI技術。而對于純P2P網絡(如JXTA),由于缺少集中服務器,認證工作則較為復雜。因此,我們在JXTA平臺[8]上構建了一種混合的P2P安全計算平臺。在這個計算平臺中,首先由P2P用戶自己生成證書,并向CA中心申請證書簽名;CA將簽名后的證書再返回給用戶。具有證書的用戶登錄,然后根據相應的策略請求服務。通過CA認證以加入對等組,對等組間使用交叉認證,只有通過認證的用戶方可成為對等組中的合法用戶,才可以使用P2P資源。
JXTA為P2P應用建立一個通用的開發平臺,主要包括一個獨立于編程語言、系統平臺和網絡協議集。該協議集說明了P2P應用的最基本需求。對等節點間傳送的協議均被定義為XML消息。利用JXTA平臺設計P2P計算,可以有較好的安全保證和可擴展性。
在Peer組之間的認證問題上可采用交叉認證方式,該技術在PKI中也是得到支持的[5]。交叉認證技術是第三方信任的擴展,即一個CA的網絡用戶信任其他所有自己CA交叉認證的CA用戶。交叉認證一般分為兩個操作:①兩個CA間信任關系的建立,即建立交叉認證關系,通過簽發包含一個含有另一個CA公鑰的交叉證書來實現;②端實體驗證另一個CA所簽發的用戶證書的有效性,即證書路徑處理。在這里則是組與組之間節點的認證問題。
證書中包含有效期,節點可以發送一個取消成員關系消息離開一個對等組。當這個請求被接收時,就認為對等點已經離開了該對等組,即可以更新CRL列表,表示無效的節點。圖2是一個P2P安全認證設計的實例。
2.2 應用PKI的P2P安全計算平臺設計與實現
設計方案的工作流程如圖3所示。
具體的工作主要包括以下幾個過程:①P2P用戶完成注冊,生成證書,并向CA申請簽名;②向CA發送證書;③服務器收到證書后對證書簽名,再將簽字后的證書返回給客戶端;④向P2P服務器發送連接請求;⑤認證,如果顯示連接建立及客戶證書提取的信息,即客戶得到認證;⑥策略請求,用戶需要填寫請求訪問策略信息,生成一個請求策略的XML文件;⑦SSL(安全的SOAP)傳輸通過SSL協議(或安全的SOAP協議)將生成的XML文件以及請求發送到P2P服務器一;⑧ P2P服務器一首先進行策略匹配,根據策略匹配結果將任務分解并提交給P2P服務器二。P2P服務器二計算完分配到的分解任務后,將得到的計算結果再返還給P2P服務器一 ,而P2P服務器一再將結果進行整合并返回給P2P客戶端。在這里,P2P服務器二既作客戶端,又作服務器端。在安全驗證時用作服務器,作業分配時用作客戶端。在此使用兩個服務器,分別處理安全策略和任務求解,避免了混亂。一個分布式計算1—10 000之間的素數實例[5]實現的界面如圖4所示。
圖4 一種基于PKI的P2P安全計算的應用
3 結論
P2P計算的節點之間在邏輯上相互平等,單純的P2P網絡需要建立在高度的信任機制基礎上,但目前國際上并沒有統一的信任標準,因此采用混合式的P2P計算模式并將PKI技術應用到P2P分布式的計算中是一種可行的分布式安全計算解決方案。我們提出并實現的P2P安全計算平臺有機地結合了Web Services的XML,SOAP等技術,對于Peer節點不多的情況下, 效率較高,但對于大量的Peer參與計算的情況下,需要考慮系統的帶寬、Peer組內的安全等問題,關于如何建立基于信任的安全P2P計算平臺是我們下一步研究的目標。
致謝: 本文是在P2P-Grid安全計算項目組的研究基礎上完成的。對于項目組陳宏偉博士、陳建剛博士等全體成員在本文的撰寫過程中給予的幫助,筆者表示由衷的謝意。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。