朱賀 徐靖 王貴萱
【摘 要】本文描述了一個(gè)基于P2P技術(shù)的安全內(nèi)聯(lián)網(wǎng)即時(shí)通信系統(tǒng)的實(shí)現(xiàn)技術(shù),企業(yè)用戶交互數(shù)據(jù)無需通過外部服務(wù)器傳輸,防止內(nèi)部數(shù)據(jù)流入公網(wǎng),最大限度保護(hù)內(nèi)部數(shù)據(jù)安全,提高系統(tǒng)可靠性,滿足企業(yè)內(nèi)部可性,安全便捷通信的需求。
【關(guān)鍵詞】P2P;NAT穿透;即時(shí)通信;行為識別
0 引言
當(dāng)前企業(yè)員工間基本都是通過QQ、Skype等常見的商用軟件來進(jìn)行溝通交流。但這些常見的基于C/S模型的即時(shí)通信軟件過分依賴于中心服務(wù)器,所有的數(shù)據(jù)均需經(jīng)過外網(wǎng)服務(wù)器轉(zhuǎn)發(fā),若服務(wù)器或互聯(lián)網(wǎng)鏈接出現(xiàn)問題,那么整個(gè)通信系統(tǒng)將無法正常工作。另外企業(yè)內(nèi)部工作中的溝通交流會涉及商業(yè)機(jī)密,如果利用市面上的即時(shí)通信軟件進(jìn)行傳輸,數(shù)據(jù)可能會以可破解的形式出現(xiàn)在相應(yīng)軟件的服務(wù)器上,當(dāng)服務(wù)器遭受攻擊,這些機(jī)密的數(shù)據(jù)就會被泄露,且絕大多數(shù)的傳統(tǒng)即時(shí)通信軟件采用的都是用戶名、密碼的登錄認(rèn)證模式,這樣的認(rèn)證方式很容易被攻擊,從而帶來不可估量的危害。因此,針對目前即時(shí)通信軟件在企業(yè)應(yīng)用中表現(xiàn)出的種種不足,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)企業(yè)級的內(nèi)聯(lián)網(wǎng)安全通信系統(tǒng)是十分有必要的。
1 系統(tǒng)設(shè)計(jì)方案
本系統(tǒng)分為客戶端和服務(wù)端兩部分,采用P2P與C/S相結(jié)合的系統(tǒng)架構(gòu)。服務(wù)端提供用戶登錄身份驗(yàn)證,狀態(tài)通知(離線、上線等),信息查詢,數(shù)據(jù)存儲管理等功能??蛻舳藢?shí)現(xiàn)用戶數(shù)據(jù)的封裝、加密和發(fā)送,處理來自其他客戶端的文件傳輸請求,實(shí)現(xiàn)局域網(wǎng)內(nèi)客戶端之間的快速文件傳輸,在離線數(shù)據(jù)傳輸?shù)倪^程中,分擔(dān)服務(wù)器負(fù)擔(dān),處理相應(yīng)的中轉(zhuǎn)數(shù)據(jù)。
2 具體實(shí)現(xiàn)技術(shù)
2.1 NAT內(nèi)網(wǎng)穿透
穿透模塊是通信的基礎(chǔ)模塊,系統(tǒng)中的 P2P 文件傳輸是網(wǎng)絡(luò)資源共享的重要方式之一,且只適合兩個(gè)在線用戶之間發(fā)起,主動發(fā)起用戶先發(fā)消息給被傳用戶,對方同意后接收,建立點(diǎn)對點(diǎn)連接。因此要在有 NAT 設(shè)備的環(huán)境中實(shí)現(xiàn)點(diǎn)對點(diǎn)通信,首先要解決的就是NAT穿透問題。根據(jù) NAT 類型的探測的結(jié)果可以采取不同的穿透方案,在本系統(tǒng)中主要用到的就是UDP打洞和TCP打洞,它們的最終目的是將位于兩個(gè)不同子網(wǎng)中的兩個(gè)計(jì)算機(jī)連接起來。在進(jìn)行穿透前會進(jìn)行一個(gè)測試,判斷當(dāng)前網(wǎng)絡(luò)環(huán)境是否需要穿透,首先用戶A向用戶B發(fā)送一條測試消息,若A能成功接收用戶B的反饋消息則A就可以直接連接B進(jìn)行通信,否則需要進(jìn)行NAT穿透。
2.2 安全登錄認(rèn)證
傳統(tǒng)的即時(shí)通信軟件用戶的密碼是由用戶自己設(shè)定的。在登錄系統(tǒng)時(shí)輸入正確的密碼,計(jì)算機(jī)便認(rèn)為操作者就是合法用戶。實(shí)際上,由于許多用戶為了防止忘記密碼,經(jīng)常采用諸如生日、電話號碼等容易被猜測的字符串作為密碼,這樣很容易造成密碼泄漏。用戶名、密碼機(jī)制雖然在使用和部署上都非簡便,但從安全角度來說,并不是是一種安全的身份認(rèn)證方式。而基于計(jì)算機(jī)輸入行為特征的認(rèn)證方法,具有行為方式難以模仿,行為方式無需記憶,行為數(shù)據(jù)量大,行為密碼不具有明顯的特征等眾多優(yōu)點(diǎn)。所以,在本系統(tǒng)中采用基于鼠標(biāo)鍵盤行為方式分析的方法實(shí)現(xiàn)系統(tǒng)登錄的安全認(rèn)證。
2.3 數(shù)據(jù)加密
目前主流的加密算法主要有對稱加密算法和非對稱加密算法。對稱加密算法資源消耗較小,但是對稱加密算法的密鑰需要通過直接復(fù)制或網(wǎng)絡(luò)傳輸?shù)姆绞接砂l(fā)送方傳給接收方,同時(shí)無論加密還是解密都使用同一個(gè)密鑰,所以密鑰的管理和使用很不安全,如果密鑰泄露,則此密碼系統(tǒng)便被攻破。非對稱加密通過公鑰進(jìn)行加密,用私鑰進(jìn)行解密,不需要通過安全通道來傳輸密鑰,且能夠公開加密密鑰,僅需要保密解密密鑰,所以不存在密鑰管理問題。但是非對稱算法非常復(fù)雜,密鑰對的生成、數(shù)據(jù)的加解密都會消耗很多資源,對于企業(yè)即時(shí)通信系統(tǒng)來說采用非對稱加密算法加密密鑰信息是無法滿足其即時(shí)性需求的。因此,本軟件合對稱和非對稱加密算法的優(yōu)點(diǎn)設(shè)計(jì)出了客戶端和服務(wù)器間數(shù)據(jù)傳輸?shù)幕旌霞用芊桨浮?/p>
Server初始化后會通過非對稱算法生成公鑰和私鑰,當(dāng)有Client和Server進(jìn)行通信時(shí),Server便會將Server的公鑰發(fā)送給Client。
Client在登錄或者注冊時(shí),會先用非對稱算法生成公鑰和私鑰,然后將公鑰發(fā)送給Server,Server記錄下這個(gè)Client對應(yīng)的公鑰。然后將這個(gè)公鑰廣播給所有在線的Client。某個(gè)Client在離線后,Server會將該Client對應(yīng)的公鑰刪除。
如果ClientA要向ClientB發(fā)送信息,首先通過對稱加密生成密鑰key,然后在Server廣播的所有在線Client的公鑰中找到ClientB的公鑰,然后用這個(gè)公鑰加密密鑰key,然后將加密后的密鑰發(fā)送給ClientB,ClientB使用自己的私鑰解密,獲得ClientA和ClientB進(jìn)行通信的密鑰key。之后ClientA和ClientB之間的通信都是用密鑰key進(jìn)行加密和解密。
2.4 數(shù)據(jù)封裝
為了保證數(shù)據(jù)交換的方便、解析的高效以及加密解密的效率,本系統(tǒng)采用的數(shù)據(jù)封裝格式為(消息類型、用戶名、密碼、信息內(nèi)容、日期、文件名)。將要進(jìn)行傳輸?shù)臄?shù)據(jù)按照上述規(guī)則封裝之后,按照響應(yīng)的加密方式進(jìn)行加密,加密之后的數(shù)據(jù)為d,然后再對d進(jìn)行MD5消息摘要,以保證通信數(shù)據(jù)的完整性,將MD5放在數(shù)據(jù)d的頭部,形成最終可以發(fā)送的數(shù)據(jù)d2,最后將數(shù)據(jù)d2發(fā)送出去。
收到數(shù)據(jù)后,首先將頭部的MD5數(shù)值取出,計(jì)算剩下部分的MD5是否和頭部的MD5數(shù)值相等,如果相等則數(shù)據(jù)發(fā)送完整,進(jìn)行下一步的解析,否則認(rèn)為數(shù)據(jù)發(fā)送失敗,丟棄這個(gè)數(shù)據(jù)包,并且向發(fā)送者發(fā)送反饋。
3 結(jié)束語
本系統(tǒng)采用C/S和P2P混合通信模型,在系統(tǒng)中的每個(gè)節(jié)點(diǎn)作為客戶端請求服務(wù)的同時(shí),也可以作為服務(wù)端提供服務(wù),大大減輕了對服務(wù)器的依賴。而且當(dāng)服務(wù)器發(fā)生故障時(shí)整個(gè)通信系統(tǒng)不會立即癱瘓,內(nèi)部通信依舊能進(jìn)行?;谑髽?biāo)鍵盤行為方式分析的安全登錄認(rèn)證機(jī)制解決了傳統(tǒng)用戶名/密碼模式易攻破易泄露的問題,大大提高了用戶賬號的安全性。另外,為進(jìn)一步提高通信的安全性還引入了通信加密機(jī)制,使數(shù)據(jù)以密文的形式進(jìn)行傳輸和儲存,最大限度的保證了整個(gè)系統(tǒng)的穩(wěn)定性與安全性。
【參考文獻(xiàn)】
[1]郭曉靜.基于統(tǒng)計(jì)學(xué)的擊鍵序列身份認(rèn)證算法研究與改進(jìn)[J].北京郵電大學(xué),2013.
[2]沈超,蔡忠閩,管曉宏,等.基于鼠標(biāo)行為特征的用戶身份認(rèn)證與監(jiān)控[J].通信學(xué)報(bào),2010(7).
[3]張偉欣,韓秀玲.TCP穿透NAT的P2P通信技術(shù)研究[J].計(jì)算機(jī)時(shí)代,2008(11).
[4]楊天路,劉宇宏,張文.P2P網(wǎng)絡(luò)技術(shù)原理與系統(tǒng)開發(fā)案例[M].北京:人民郵電出版社,2007.
[責(zé)任編輯:田吉捷]