徐 莉
(北京信息科技大學計算機學院 中國 北京 10085)
隨著計算機網絡技術的迅猛發展,核電企事業單位都建立了計算機網絡系統,形成了由各企事業單位局域網絡為節點組成的龐大的互聯網絡。為了及時而準確的獲得核電安全運行的數據,核電安全網絡平臺的可靠性成為了當前核電安全分析與管理的重要保證。在核電安全網絡平臺各節點之間,越來越多的數據交換任務需要完成,以實現核安全數據的共享。但是,由于網絡上黑客、計算機病毒等的存在,網絡數據傳遞的安全性不強,數據傳遞者傳遞的數據有可能會在數據傳輸過程中被盜或篡改,因而保證核電安全網絡平臺中數據傳輸的安全性至關重要。
網絡數據傳輸安全的核心是通過對數據發送、網絡傳輸、數據接收各個環節中的數據進行加密處理,以保護在網絡中傳輸的數據的保密性、可靠性和不可抵賴性等。其中數據加密技術是數據傳輸安全的核心,它通過加密算法將數據從明文加密為密文并進行傳輸,然后通過對應解碼技術解碼密文還原明文。在數據加密解密技術中,主要有對稱密鑰體制和非對稱密鑰體制兩種。對稱密鑰體制在加密解密時用同一個密鑰,其優點是算法理解起來比較簡單,容易實現,加密速度快,但是對稱加密的安全性完全依賴于密鑰,如果密鑰丟失,整個加密就完全不起作用。非對稱加密體制有兩個密鑰,一個為公鑰,一個為私鑰,兩個密鑰均可用于加密解密。非對稱加密體制的優點是安全性高,缺點是加密速度緩慢。用非對稱密鑰加密對稱密鑰,能提高文件安全傳輸安全性和加密/解密效率。
密鑰管理涉及兩方面的內容,一是公鑰的分配,二是如何分配管理密鑰。公鑰證書是由證書管理機構CA(certificate authority)為用戶建立的,其中的數據項有與該用戶的密鑰相關的公鑰及用戶的身份和時間戳等。所有的數據項經CA用自己的密鑰簽字后形成證書。用戶可將自己的公鑰通過公鑰證書的形式發給其他用戶,接收方可用CA的公開鑰對證書加以驗證。使用時間戳還可以保證證書的新鮮,防止他方重新放一舊證書。證書的產生過程如圖1所示。

圖1 證書的產生過程
公鑰分配完成之后,如果直接使用公鑰密碼體制進行保密通信,由于密鑰的長度比較長,加密大文件的速度會令人無法接受。如果將公鑰用在分配單密鑰體制的密鑰上,會大大提高加密的速度。
數據加密可以較好的解決信息安全所面臨的被動攻擊問題。解決信息安全所面臨的主動攻擊的方法是消息認證。消息認證用以檢驗接收消息的真實性和完整性,同時還用于檢驗消息的順序性和時間性。除此以外,在網絡安全方面還考慮業務的不可否認性,即防止通信雙方中的某一方對所傳輸消息的否認。消息認證碼(MAC)是信息被一密鑰控制的公開函數作用后產生的。如果接收端得到的MAC值與計算得到的MAC一致,則接收方相信發送方發來的信息未被篡改并且接收方相信發送方不是冒充的。MAC函數與加密算法類似,不同之處為MAC函數不必是可逆的,因此,與加密算法相比更不易被攻破。
數字簽名在網絡安全,包括身份認證、數據完整性、不可否認性以及匿名性等方面有著非常重要的應用。數據簽名算法包含簽名和驗證兩個部分,遵循著“私鑰簽名,公鑰驗證”的簽名驗證方式。簽名時需要使用私鑰和待簽名數據,驗證時則需要公鑰,簽名值和待簽名數據,其核心算法主要是消息摘要算法。本核電安全網絡平臺下的數據安全傳輸軟件的數字簽名算法:先使用消息摘要算法對原始消息做摘要處理,然后再使用私鑰對摘要值做簽名處理。驗證簽名時,使用公鑰驗證消息的摘要值。
網絡通信軟件多采用C/S結構和P2P結構。P2P是英文Peer-to-Peer的簡稱,是一種網絡新技術,它依賴網絡中參與者的計算能力和帶寬,而不是把依賴都聚集在較少的幾臺服務器上。P2P依中央化程度分為純P2P、雜P2P和混合P2P三種。純P2P結構中沒有中心服務器和中心路由器;各節點同時作為客戶端和服務器端。雜P2P結構有一個中心服務器和中心路由器;中心服務器保存節點的信息,并對請求這些數據的要求做出響應;路由器通過一組索引引用來取得絕對地址。節點負責發布這些數據,讓中心服務器知道它們想共享什么數據,讓需要它的節點下載其可共享的資源;混合P2P結構同時含有純P2P結構和雜P2P結構的特點。
考慮到核電安全網絡平臺上有很多客戶端,若數據傳輸軟件單純的使用C/S結構,服務器端的負載會很重,因為中心服務器需要提供命名服務、安全服務和資源服務三種服務。其中在命名服務中會產生很多線程;在安全服務中又會使用到安全算法,這些安全算法大多要進行大數運算,對服務器的計算性能提出了很高的要求;在資源服務中,服務器會頻繁地與數據庫交互,占用大量的資源。如果再用中心服務器來轉發數據,中心服務器很有可能會隨著客戶端數量的增加而跨掉。因此,本數據安全傳輸軟件采用混合的P2P結構較好。
服務器端可采用Java多線程技術分別響應多客戶端發來的不同請求,主要包括命名服務模塊,CA安全服務模塊和資源服務模塊三個模塊。
其中CA安全服務模塊主要用于產生和頒發安全證書,是軟件的核心模塊。該模塊作為一個單獨的線程,在系統啟動時啟動。模塊中用到的安全算法,由Java API提供,主要是用RSA算法產生公鑰和密鑰。公鑰發給每個客戶端,密鑰自己保留,用于簽字產生安全證書。
資源服務主要為客戶端提供一個共享資源的列表。該列表的內容是客戶端提交到服務器的文件名和文件所在機器節點的地址。其他客戶端得到文件的地址后,從文件所在的機器節點上獲取文件。服務器本身不存儲資源,這樣不僅可以節省服務器的存儲空間,也可以減少客戶端與服務器端的長時間通信,從而提高整個軟件系統的性能。
每個客戶端擁有一個主線程來發送信息和四個被動線程來監聽來自外部的信息。
主線程分為文件處理模塊和安全處理模塊兩部分。文件處理模塊用于發送文件或發送共享文件到中心服務器。安全處理模塊包括密鑰的產生,密鑰的管理,和對文件的加密解密等功能,其中用到的安全算法也來自Java API提供的函數。四個被動線程分別是服務器監聽線程、CA服務器監聽線程、安全監聽線程和文件接收線程。服務器監聽線程用于監聽來自服務器端發來登錄和退出的信息響應。CA服務器監聽線程用于監聽來自服務器端發來的證書消息,將得到的證書及服務器安全方面相關的信息分配到不同的功能模塊中去。安全監聽線程用于監聽其他客戶端發來的有關安全證書的消息,根據得到的安全證書驗證其合法性并根據結果做處理。文件接收線程用于接收外部發來的文件。
核電安全運行關系到核電廠周圍的環境及人民生命財產的安全,快速準確的傳輸核電安全運行數據是核電安全運行的基礎。在核電安全網絡平臺的數據安全傳輸軟件中,結合對稱密鑰體制和非對稱密鑰體制的優點,用非對稱密鑰加密對稱密鑰,能提高文件傳輸的安全性和加密解密效率。軟件采用Java設計模式中的命令模式及用單例模式,使得軟件易于擴展;采用混合P2P的解決方案,使客戶端在與其他客戶端通信時,不再通過中心服務器轉發,從而降低網絡瓶頸的產生,提高整個軟件系統的性能。
[1]梁棟.Java加密于解密的藝術[M].北京:機械工業出版社,2010.
[2]楊波.現代密碼學[M].北京:清華大學出版社,2010.