網(wǎng)絡(luò)游戲安全性的數(shù)據(jù)文件加密方案

為了避免日趨泛濫的非法外掛程序?qū)V大游戲運營商和玩家利益的損害,我們給出了一種基于DES和RSA加密算法的網(wǎng)絡(luò)游戲數(shù)據(jù)文件加密方案。采用這種加密方案,能保證游戲數(shù)據(jù)信息不被攻擊者破譯,從而有效保障網(wǎng)絡(luò)游戲的正常運行與數(shù)據(jù)安全。

一、妨礙游戲公平性和危害網(wǎng)絡(luò)安全的“外掛”

所謂“游戲非法外掛”,是指“由合法網(wǎng)游公司和玩家以外的、未經(jīng)著作權(quán)人許可而由第三方提供的、妨礙游戲公平性或直接攻擊游戲本身的一種游戲外掛程序”。目前,國內(nèi)網(wǎng)絡(luò)游戲“非法外掛”日趨專業(yè)化、市場化。一款網(wǎng)絡(luò)游戲的正常盈利時間1.5至3年,但一旦有玩家使用“非法外掛”,就將使游戲盈利周期大大縮短,而造成商家利潤和國家利益很大損失。

眾所周知,Internet客戶/服務(wù)器模式的通訊通常采用TCP/IP通信協(xié)議,數(shù)據(jù)交換是通過IP數(shù)據(jù)包的傳輸來實現(xiàn)的。一般來說,客戶端向服務(wù)器發(fā)出某些請求,都是采用數(shù)據(jù)包的形式和服務(wù)器交換數(shù)據(jù)。服務(wù)器收到客戶端發(fā)送的消息后,會按照既定的程序把有關(guān)的信息反饋給客戶端?!胺欠ㄍ鈷臁背绦驎a(chǎn)生一種欺騙性很強的數(shù)據(jù)包,當(dāng)游戲數(shù)據(jù)包發(fā)送到游戲服務(wù)器或客戶端時,那些欺騙性虛假信息程序就修改原來的游戲數(shù)據(jù),然后模擬客戶端發(fā)送給服務(wù)器,或者模擬服務(wù)器發(fā)送給客戶端,達到攻擊游戲數(shù)據(jù)的目的。篡改和重放,是攻擊網(wǎng)絡(luò)游戲數(shù)據(jù)的主要形式。篡改,是指將截取的數(shù)據(jù)包作部分修改后而及時再送往目的地,使游戲程序被已篡改的虛假信息所欺騙;重放,是指將截取的數(shù)據(jù)包雖不作修改但經(jīng)延時后再送往目的地,使游戲程序誤以為某次事件再次發(fā)生。

如果“非法外掛”制作者已經(jīng)掌握了數(shù)據(jù)包的結(jié)構(gòu)、內(nèi)容以及加密算法的足夠信息,就很容易進一步制作出對數(shù)據(jù)包進行攻擊的“非法外掛”程序了。數(shù)據(jù)包的結(jié)構(gòu)和內(nèi)容都是公開的,因此要阻止攻擊者破譯數(shù)據(jù)包格式,唯一的辦法就是采用一種足夠健壯的加密算法,使得攻擊者很難破譯數(shù)據(jù)包的信息。

現(xiàn)在市面上的網(wǎng)絡(luò)游戲,傳輸?shù)臄?shù)據(jù)包基本上都已經(jīng)進行了自定義算法的加密,以阻止攻擊者破譯其數(shù)據(jù)包。它僅在攻擊者不知道游戲開發(fā)商自定義加密算法時,方可使所傳輸?shù)臄?shù)據(jù)包相對安全,故當(dāng)加密算法泄密或攻破時,所傳輸?shù)臄?shù)據(jù)包也就無安全性可言。一種較為理想的數(shù)據(jù)加密方案應(yīng)是采用保密或公開的健壯加密算法,從而使信息傳輸?shù)陌踩圆槐匾蕾囉谒惴ǖ陌踩裕蕾囉谟羞m當(dāng)生命周期的密鑰的安全性。顯然,DES和RSA加密算法正好符合以上特征。

二、DES和RSA加密算法

1、DES加密算法

DES屬于對稱加密體制,具有信息傳輸?shù)陌踩愿?、計算開銷時間少、處理速度快(每秒加密4.3萬次)的特點,尤其適合對大量數(shù)據(jù)和大文件加密保護。DES加密算法的基本原理,如圖1所示。

網(wǎng)絡(luò)游戲安全性的數(shù)據(jù)健壯加密方案

DES是將64位的明文加密成64位的密文的分組加密算法,其密鑰長度為64位。它在一個56位密鑰的控制下,將按64位分組的明文信息加密。通常,人們用c= DESk(m)表示利用密鑰k對明文m加密得到密文c的過程;用m= DESk(c)表示利用密鑰k對密文c解密得到明文m的過程。

DES加密算法的加密過程由16個獨立的加密循環(huán)組成,每個循環(huán)各使用一個從主密鑰中生成的自有密鑰K(1),…,K(16)和加密函數(shù)。對于DES加密算法的每一次循環(huán),已知密鑰的加密實際只需一次48比特的運算,而不知密鑰的攻擊者卻需要作出248次嘗試,因此總的嘗試次數(shù)高達2768,其攻擊將會是得不償失的。

2、RSA加密算法

RSA加密算法的安全性是基于大整數(shù)素因子分解的困難性。1976年Diffie和Hellman提出了非對稱加密系統(tǒng)的思想,1977年由Rivest、Shamir和Adleman首次實現(xiàn)了著名的RSA加密系統(tǒng),它至今仍是使用最廣泛的非對稱加密算法。

RSA加密算法的基本流程如下:

(1)隨機地選擇兩個秘密的大素數(shù)p和q;

(2)計算公開的模數(shù)r=p×q和歐拉指標(biāo)函數(shù)φ(r)=(p -1)(q-1);

(3)選擇一個與φ(r)互素,即滿足gcd(e,φ(r))=1的量e,作為公鑰;

(4)用歐幾里得(Eu,clid)算法計算模數(shù)為φ(r)時e的乘法逆元,即求滿足de≡1(modφ(r))的d;

(5)將明文m(0<m<r-1)按模r自乘d次冪以完成加密操作,記為c=RSA(m)=mdmodr,將密文c按模r自乘e次冪以完成解密操作,記為m= RSA-1(c)=cemodr。

RSA加密算法的特點是,選擇固定的較小加密密鑰來提高運算速度,并不降低整個系統(tǒng)的安全性。因此,可考慮使用一些較小的素數(shù)(例如65537)作為公開密鑰,而其解密密鑰的獲得則可通過Euclid算法求得。

三、網(wǎng)絡(luò)游戲數(shù)據(jù)文件加密方案

由于信息傳輸?shù)陌踩允腔诿荑€的安全性,故只要選擇一個長度適中的密鑰生命周期,通過使用DES和RSA加密算法,對在網(wǎng)絡(luò)中傳輸?shù)挠螒驍?shù)據(jù)文件進行加密,就可以保證在此周期內(nèi)密鑰難于被攻破。

此外,為了防止“攻擊者將游戲數(shù)據(jù)包攔截后對服務(wù)器進行延遲再發(fā)”的重放攻擊,還應(yīng)在封包內(nèi)加入必要的時間戳TS(time starnp),進行時間核查過濾實時監(jiān)控——“在服務(wù)器端和客戶端分別設(shè)置一個寬度合適的時間窗口,只要超過時間窗口的數(shù)據(jù)包將會被自動丟棄”,就能有效抵御重放攻擊。

基于以上的思路,網(wǎng)絡(luò)游戲數(shù)據(jù)的文件加密方案可按如圖2所示的加密傳輸流程圖進行:

網(wǎng)絡(luò)游戲安全性的數(shù)據(jù)文件加密方案

(1)客戶端向服務(wù)器端發(fā)送明文的CONN信息,請求建立連接。服務(wù)器端收到該信息后,隨機產(chǎn)生一個DES對稱密鑰key,使用服務(wù)器端保密的RSA私鑰d加密數(shù)據(jù)key得到密文KEY。

(2)服務(wù)器端將經(jīng)過加密的數(shù)據(jù)KEY發(fā)送到已經(jīng)建立了連接的客戶端,客戶端用RSA公鑰e解密該數(shù)據(jù),得到DES密鑰key。

(3)客戶端將需要發(fā)送到服務(wù)器端的明文數(shù)據(jù)m1,加上時間戳TSi后,使用密鑰key經(jīng)過DES算法加密后得到密文c2,將c2發(fā)送到服務(wù)器端。服務(wù)器端接收到密文c1后,使用密鑰key經(jīng)過DES加密算法解密后,即可檢驗時間戳TS,,如果在時間窗口內(nèi),就處理數(shù)據(jù)m1。

(4)服務(wù)器端將需要反饋到客戶端的明文數(shù)據(jù)m2,加上時間戳TS2后,使用密鑰key經(jīng)過DES加密算法加密后得到密文C2,將C2發(fā)送到客戶端。客戶端接收到密文C2后,使用密鑰key經(jīng)過DES算法解密后,即可檢驗時間戳TS,,如果在時間窗口內(nèi),就處理數(shù)據(jù)m2。

(5)反復(fù)進行以上操作。

(6)客戶端將斷開連接的信息disconn,加上時間戳TS。后,使用密鑰key經(jīng)過DES加密算法加密得到密文DISCONN,將DISCONN發(fā)送到服務(wù)器端。在確認連接已斷開后,銷毀密鑰key。

(7)服務(wù)器端接收到密文DISCONN后,使用密鑰key經(jīng)過DES算法解密后,檢驗時間戳TS。,如果在時間窗口內(nèi),就斷開與客戶端的連接。在確認連接已斷開后,銷毀密鑰key。

四、網(wǎng)絡(luò)游戲安全性的數(shù)據(jù)文件加密方案的意義

首先,DES加密算法和RSA加密算法本身都是健壯性很強的加密算法,故要在加密算法上尋找陷門進行破解,事實上基本已無可能,而就是采用耗費天文數(shù)字般時間、人力、物力、財力的窮舉法,也將使攻擊者無法、無力、無益來破解網(wǎng)絡(luò)游戲數(shù)據(jù)。

其次,DES加密算法的密鑰是隨機產(chǎn)生的,并且只在從游戲者登陸游戲到退出游戲的這段時間內(nèi)有效。因此,就算攻擊者耗費九牛二虎之力破解了一次密鑰,他下一次登陸游戲時,該密鑰已失效,使其再次破解又只能再重新耗費高昂代價。同時,為了避免攻擊者采用長期掛線的手段攻擊數(shù)據(jù)包,也可以設(shè)置游戲者在線一定長時間(比如一天)后就自動對密鑰進行及時更新,以增強密鑰的安全性。

第三,在游戲時傳送的數(shù)據(jù)包中,都加入了時間戳,并且與游戲數(shù)據(jù)一起進行了加密,攻擊者要修改時間戳將是一件非常困難的事情,重放攻擊數(shù)據(jù)包也基本不再可能。

第四,對于在線人數(shù)眾多的網(wǎng)絡(luò)游戲來說,大量的密鑰管理需要大量的計算機資源,而且對大量數(shù)據(jù)進行DES加密也對計算機的運行速度提出了相當(dāng)高的要求。“非法外掛”的私服者要進行大規(guī)模的數(shù)據(jù)處理,也是相當(dāng)困難的,從而在一定程度上防止了非法私服的出現(xiàn)與泛濫。

小知識之健壯性

健壯性又稱魯棒性,是指軟件對于規(guī)范要求以外的輸入情況的處理能力。