朱賀 徐靖 王貴萱
【摘 要】本文描述了一個(gè)基于P2P技術(shù)的安全內(nèi)聯(lián)網(wǎng)即時(shí)通信系統(tǒng)的實(shí)現(xiàn)技術(shù),企業(yè)用戶交互數(shù)據(jù)無(wú)需通過(guò)外部服務(wù)器傳輸,防止內(nèi)部數(shù)據(jù)流入公網(wǎng),最大限度保護(hù)內(nèi)部數(shù)據(jù)安全,提高系統(tǒng)可靠性,滿足企業(yè)內(nèi)部可性,安全便捷通信的需求。
【關(guān)鍵詞】P2P;NAT穿透;即時(shí)通信;行為識(shí)別
0 引言
當(dāng)前企業(yè)員工間基本都是通過(guò)QQ、Skype等常見(jiàn)的商用軟件來(lái)進(jìn)行溝通交流。但這些常見(jiàn)的基于C/S模型的即時(shí)通信軟件過(guò)分依賴于中心服務(wù)器,所有的數(shù)據(jù)均需經(jīng)過(guò)外網(wǎng)服務(wù)器轉(zhuǎn)發(fā),若服務(wù)器或互聯(lián)網(wǎng)鏈接出現(xiàn)問(wèn)題,那么整個(gè)通信系統(tǒng)將無(wú)法正常工作。另外企業(yè)內(nèi)部工作中的溝通交流會(huì)涉及商業(yè)機(jī)密,如果利用市面上的即時(shí)通信軟件進(jìn)行傳輸,數(shù)據(jù)可能會(huì)以可破解的形式出現(xiàn)在相應(yīng)軟件的服務(wù)器上,當(dāng)服務(wù)器遭受攻擊,這些機(jī)密的數(shù)據(jù)就會(huì)被泄露,且絕大多數(shù)的傳統(tǒng)即時(shí)通信軟件采用的都是用戶名、密碼的登錄認(rèn)證模式,這樣的認(rèn)證方式很容易被攻擊,從而帶來(lái)不可估量的危害。因此,針對(duì)目前即時(shí)通信軟件在企業(yè)應(yīng)用中表現(xiàn)出的種種不足,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)企業(yè)級(jí)的內(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ù)存儲(chǔ)管理等功能。客戶端實(shí)現(xiàn)用戶數(shù)據(jù)的封裝、加密和發(fā)送,處理來(lái)自其他客戶端的文件傳輸請(qǐng)求,實(shí)現(xiàn)局域網(wǎng)內(nèi)客戶端之間的快速文件傳輸,在離線數(shù)據(jù)傳輸?shù)倪^(guò)程中,分擔(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ā)起,主動(dòng)發(fā)起用戶先發(fā)消息給被傳用戶,對(duì)方同意后接收,建立點(diǎn)對(duì)點(diǎn)連接。因此要在有 NAT 設(shè)備的環(huán)境中實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,首先要解決的就是NAT穿透問(wèn)題。根據(jù) NAT 類型的探測(cè)的結(jié)果可以采取不同的穿透方案,在本系統(tǒng)中主要用到的就是UDP打洞和TCP打洞,它們的最終目的是將位于兩個(gè)不同子網(wǎng)中的兩個(gè)計(jì)算機(jī)連接起來(lái)。在進(jìn)行穿透前會(huì)進(jìn)行一個(gè)測(cè)試,判斷當(dāng)前網(wǎng)絡(luò)環(huán)境是否需要穿透,首先用戶A向用戶B發(fā)送一條測(cè)試消息,若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)常采用諸如生日、電話號(hào)碼等容易被猜測(cè)的字符串作為密碼,這樣很容易造成密碼泄漏。用戶名、密碼機(jī)制雖然在使用和部署上都非簡(jiǎn)便,但從安全角度來(lái)說(shuō),并不是是一種安全的身份認(rèn)證方式。而基于計(jì)算機(jī)輸入行為特征的認(rèn)證方法,具有行為方式難以模仿,行為方式無(wú)需記憶,行為數(shù)據(jù)量大,行為密碼不具有明顯的特征等眾多優(yōu)點(diǎn)。所以,在本系統(tǒng)中采用基于鼠標(biāo)鍵盤行為方式分析的方法實(shí)現(xiàn)系統(tǒng)登錄的安全認(rèn)證。
2.3 數(shù)據(jù)加密
目前主流的加密算法主要有對(duì)稱加密算法和非對(duì)稱加密算法。對(duì)稱加密算法資源消耗較小,但是對(duì)稱加密算法的密鑰需要通過(guò)直接復(fù)制或網(wǎng)絡(luò)傳輸?shù)姆绞接砂l(fā)送方傳給接收方,同時(shí)無(wú)論加密還是解密都使用同一個(gè)密鑰,所以密鑰的管理和使用很不安全,如果密鑰泄露,則此密碼系統(tǒng)便被攻破。非對(duì)稱加密通過(guò)公鑰進(jìn)行加密,用私鑰進(jìn)行解密,不需要通過(guò)安全通道來(lái)傳輸密鑰,且能夠公開(kāi)加密密鑰,僅需要保密解密密鑰,所以不存在密鑰管理問(wèn)題。但是非對(duì)稱算法非常復(fù)雜,密鑰對(duì)的生成、數(shù)據(jù)的加解密都會(huì)消耗很多資源,對(duì)于企業(yè)即時(shí)通信系統(tǒng)來(lái)說(shuō)采用非對(duì)稱加密算法加密密鑰信息是無(wú)法滿足其即時(shí)性需求的。因此,本軟件合對(duì)稱和非對(duì)稱加密算法的優(yōu)點(diǎn)設(shè)計(jì)出了客戶端和服務(wù)器間數(shù)據(jù)傳輸?shù)幕旌霞用芊桨浮?/p>
Server初始化后會(huì)通過(guò)非對(duì)稱算法生成公鑰和私鑰,當(dāng)有Client和Server進(jìn)行通信時(shí),Server便會(huì)將Server的公鑰發(fā)送給Client。
Client在登錄或者注冊(cè)時(shí),會(huì)先用非對(duì)稱算法生成公鑰和私鑰,然后將公鑰發(fā)送給Server,Server記錄下這個(gè)Client對(duì)應(yīng)的公鑰。然后將這個(gè)公鑰廣播給所有在線的Client。某個(gè)Client在離線后,Server會(huì)將該Client對(duì)應(yīng)的公鑰刪除。
如果ClientA要向ClientB發(fā)送信息,首先通過(guò)對(duì)稱加密生成密鑰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,然后再對(duì)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é)束語(yǔ)
本系統(tǒng)采用C/S和P2P混合通信模型,在系統(tǒng)中的每個(gè)節(jié)點(diǎn)作為客戶端請(qǐng)求服務(wù)的同時(shí),也可以作為服務(wù)端提供服務(wù),大大減輕了對(duì)服務(wù)器的依賴。而且當(dāng)服務(wù)器發(fā)生故障時(shí)整個(gè)通信系統(tǒng)不會(huì)立即癱瘓,內(nèi)部通信依舊能進(jìn)行?;谑髽?biāo)鍵盤行為方式分析的安全登錄認(rèn)證機(jī)制解決了傳統(tǒng)用戶名/密碼模式易攻破易泄露的問(wèn)題,大大提高了用戶賬號(hào)的安全性。另外,為進(jìn)一步提高通信的安全性還引入了通信加密機(jī)制,使數(shù)據(jù)以密文的形式進(jìn)行傳輸和儲(chǔ)存,最大限度的保證了整個(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)開(kāi)發(fā)案例[M].北京:人民郵電出版社,2007.
[責(zé)任編輯:田吉捷]