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