登陸鏈接方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及登陸鏈接方法及系統(tǒng)。
【背景技術(shù)】
[0002]手游研發(fā)商需要根據(jù)各家手游平臺的登錄規(guī)范,實現(xiàn)用戶登錄驗證功能,一般步驟如下:
1.平臺為了防止研發(fā)商得到用戶的用戶名和密碼以及其他安全問題,會先讓用戶在平臺提供的頁面中輸入用戶名和密碼登錄,中間使用必要的SSl加密等手段確保安全傳輸,防止中間人監(jiān)聽等,用戶會得到一個令牌(token),例如11814024959cb47eefl734bl5bc94c79984493a922b7c5c088,有些平臺也會附帶用戶的id。
[0003]2.用戶向游戲服務(wù)器發(fā)起連接,發(fā)送令牌(有些平臺還要附帶用戶id),服務(wù)器調(diào)用平臺的玩家認證接口,獲取這個令牌所代表的用戶的詳細信息(或者驗證用戶id和令牌是否匹配),實現(xiàn)用戶登錄。
[0004]3.用戶和游戲服務(wù)器開始正常通信。
[0005]但是在第2步中存在著如下冋題:
用戶和游戲服務(wù)器之間的連接是不安全的,可能存在中間人截取到玩家發(fā)送給游戲服務(wù)器的令牌,替代玩家登錄;也可能存在嗅探者,把玩家發(fā)送給游戲服務(wù)器的網(wǎng)絡(luò)包重新發(fā)送給游戲服務(wù)器一次,替代玩家登錄。
[0006]玩家斷開連接時,不能要求玩家重新向平臺輸入用戶名和密碼,獲取新令牌登陸;
玩家可能會自己錄制下和游戲服務(wù)器之間所有的網(wǎng)絡(luò)包,重復發(fā)送給游戲服務(wù)器,實現(xiàn)機器人效果。
[0007]玩家可能會篡改之后的網(wǎng)絡(luò)通信包,如果預(yù)先將加密消息的密鑰存在手機游戲客戶端中,通過破解等手段獲得密鑰的風險很大。
【發(fā)明內(nèi)容】
[0008]為了解決現(xiàn)有技術(shù)中的問題,本發(fā)明提供了一種登陸鏈接方法。
[0009]本發(fā)明提供了一種登陸鏈接方法,在服務(wù)器執(zhí)行如下步驟:
接收步驟,服務(wù)器接收客戶端發(fā)送的加密后的登錄消息login_message ;
解密步驟,服務(wù)器收到登錄消息loginjnessage后,使用非對稱加密算法的私鑰進行解密;
處理步驟,服務(wù)器生成一串隨機字符串key,用登錄消息login_message中解密得到的隨機字符串login_key作為密鑰使用對稱加密算法加密隨機字符串key,將加密后的隨機字符串key發(fā)送給客戶端;
其中,在登錄消息login_message中包括令牌、客戶端生成的一串隨機字符串login_key,使用服務(wù)器的非對稱加密算法的公鑰加密令牌、隨機字符串login_key ; 在該登陸鏈接方法中,客戶端和服務(wù)器所有的通信都使用隨機字符串key作為密鑰使用對稱加密算法加密。
[0010]作為本發(fā)明的進一步改進,在所述登錄消息login_message中還包括客戶端當前的時間time,所述客戶端當前的時間time使用服務(wù)器的非對稱加密算法的公鑰加密;在所述解密步驟中,服務(wù)器收到登錄消息loginjnessage后,使用非對稱加密算法的私鑰進行解密獲得令牌、隨機字符串login_key、及客戶端當前的時間time后執(zhí)行比較步驟;
在所述比較步驟中,服務(wù)器調(diào)用平臺接口獲得令牌代表的用戶的詳細信息,從數(shù)據(jù)庫中讀取此用戶上次成功登錄的時間timeO,如果timeO大于或等于time,那么登錄失敗,反之則登錄成功,并在數(shù)據(jù)庫中將此用戶上次成功登錄時間設(shè)為time。
[0011 ] 作為本發(fā)明的進一步改進,在該登陸鏈接方法中,服務(wù)器還執(zhí)行如下步驟:
判斷步驟,服務(wù)器接收客戶端發(fā)送的消息序號sequence,判斷當前消息序號sequence是否大于此條連接上一次發(fā)送的消息中的sequence,如果大于,則合法,不然則為非法消息。
[0012]作為本發(fā)明的進一步改進,客戶端執(zhí)行如下步驟:
生成加密步驟,客戶端生成一串隨機字符串login_key,再獲取當前的時間time,使用服務(wù)器的非對稱加密算法的公鑰加密令牌、隨機字符串login_key、及客戶端當前的時間time,獲得加密后的登錄消息login_message ;
發(fā)送步驟,客戶端將登錄消息login_message發(fā)送至服務(wù)器。
[0013]作為本發(fā)明的進一步改進,在客戶端還包括執(zhí)行如下步驟:
獲取步驟,客戶端使用隨機字符串login_key解密,獲得隨機字符串key ;
其中,非對稱加密算法為RSA算法,對稱加密算法為AES算法,所述服務(wù)器為游戲服務(wù)器。
[0014]本發(fā)明還提供了一種登陸鏈接系統(tǒng),在服務(wù)器中包括:
接收模塊,用于接收客戶端發(fā)送的加密后的登錄消息login_message ;
解密模塊,用于收到登錄消息loginjnessage后,使用非對稱加密算法的私鑰進行解密;
處理模塊,用于生成一串隨機字符串key,用登錄消息login_message中解密得到的隨機字符串login_key作為密鑰使用對稱加密算法加密隨機字符串key,將加密后的隨機字符串key發(fā)送給客戶端;
其中,在登錄消息login_message中包括令牌、客戶端生成的一串隨機字符串login_key,使用服務(wù)器的非對稱加密算法的公鑰加密令牌、隨機字符串login_key ;
在該登陸鏈接系統(tǒng)中,客戶端和服務(wù)器所有的通信都使用隨機字符串key作為密鑰使用對稱加密算法加密。
[0015]作為本發(fā)明的進一步改進,在所述登錄消息login_message中還包括客戶端當前的時間time,所述客戶端當前的時間time使用服務(wù)器的非對稱加密算法的公鑰加密;
在所述解密模塊中,服務(wù)器收到登錄消息loginjnessage后,使用非對稱加密算法的私鑰進行解密獲得令牌、隨機字符串login_key、及客戶端當前的時間time后執(zhí)行比較模塊; 在所述比較模塊中,服務(wù)器調(diào)用平臺接口獲得令牌代表的用戶的詳細信息,從數(shù)據(jù)庫中讀取此用戶上次成功登錄的時間timeO,如果timeO大于或等于time,那么登錄失敗,反之則登錄成功,并在數(shù)據(jù)庫中將此用戶上次成功登錄時間設(shè)為time。
[0016]作為本發(fā)明的進一步改進,在該登陸鏈接系統(tǒng)中,服務(wù)器還包括:
判斷模塊,服務(wù)器接收客戶端發(fā)送的消息序號sequence,判斷當前消息序號sequence是否大于此條連接上一次發(fā)送的消息中的sequence,如果大于,則合法,不然則為非法消息。
[0017]作為本發(fā)明的進一步改進,客戶端包括:
生成加密模塊,用于生成一串隨機字符串login_key,再獲取當前的時間time,使用服務(wù)器的非對稱加密算法的公鑰加密令牌、隨機字符串login_key、及客戶端當前的時間time,獲得加密后的登錄消息login_message ;
發(fā)送模塊,用于將登錄消息login_message發(fā)送至服務(wù)器。
[0018]作為本發(fā)明的進一步改進,在客戶端中還包括:
獲取模塊,使用隨機字符串login_key解密,獲得隨機字符串key ;
其中,非對稱加密算法為RSA算法,對稱加密算法為AES算法,所述服務(wù)器為游戲服務(wù)器。
[0019]本發(fā)明的有益效果是:本發(fā)明在不安全的信道上安全地交換密鑰,使用戶安全地登錄和斷線重連,包括之后所有的通信內(nèi)容都無法被網(wǎng)絡(luò)監(jiān)聽和嗅探,并且防止玩家篡改或重新發(fā)送網(wǎng)絡(luò)包,保證了用戶的安全性。
【附圖說明】
[0020]圖1是本發(fā)明的方法流程圖。
【具體實施方式】
[0021]如圖1所示,本發(fā)明公開了一種登陸鏈接方法,在該登陸鏈接方法中需要做如下準備工作:
選擇一種安全的非對稱加密算法(比如RSA),以下當作使用RSA ;
選擇一種安全的對稱加密算法(比如AES),以下當作使用AES ;
研發(fā)商生成一對RSA公鑰和私鑰,公鑰存在手機游戲客戶端(以下簡稱客戶端)中,對所有人開放.私鑰存在游戲服務(wù)器(以下簡稱服務(wù)器)中,沒有第三方能獲得。
[0022]在本發(fā)明的登陸鏈接方法中,在服務(wù)器中執(zhí)行如下步驟:
接收步驟,服務(wù)器接收客戶端發(fā)送的加密后的登錄消息login_message ;
解密步驟,服務(wù)器收到登錄消息loginjnessage后,使用非對稱加密算法的私鑰進行解密;
處理步驟,服務(wù)器生成一串隨機字符串key,用登錄消息login_message中解密得到的隨機字符串login_key作為密鑰使用對稱加密算法加密隨機字符串key,將加密后的隨機字符串key發(fā)送給客戶端;
其中,在登錄消息login_message中包括令牌、客戶端生成的一串隨機字符串login_key,使用服務(wù)器的非對稱加密算法的公鑰加密令牌、隨機字符串login_key ; 在該登陸鏈接方法中,客戶端和服務(wù)器所有的通信都使用隨機字符串key作為密鑰使用對稱加密算法加密。
[0023]在所述登錄消息login_message中還包括客戶端當前的時間time,所述客戶端當前的時間time使用服務(wù)器的非對稱加密算法的公鑰加密;
在所述解密步驟中,服務(wù)器收到登錄消息loginjnessage后,使用非對稱加密算法的私鑰進行解密獲得令牌、隨機字符串login_key、及客戶端當前的時間time后執(zhí)行比較步驟;
在所述比較步驟中,服務(wù)器調(diào)用平臺接口獲得令牌代表的用戶的詳細信息,從數(shù)據(jù)庫中讀取此用戶上次成功登錄的時間timeO,如果timeO大于或等于time,那么登錄失敗,反之則登錄成功,并在數(shù)據(jù)庫中將此用戶上次成功登錄時間設(shè)為time。
[0024]在該登陸鏈接方法中,服務(wù)器還執(zhí)行如下步驟:
判斷步驟,服務(wù)器接收客戶端發(fā)送的消息序號sequence,判斷當前消息序號sequence是否大于此條連接上一次發(fā)送的消息中的sequence,如果大于,則合法,不然則為非法消息。
[0025]客戶端執(zhí)行如下步驟:
生成加密步驟,客戶端生成一串隨機字符串login_key,再獲取當前的時間time,使用服務(wù)器的非對稱加密算法的公鑰加密令牌、隨機字符串login_key、及客戶端當前的時間time,獲得加密后的登錄消息login_message ;
發(fā)送步驟,客戶端將登錄消息login_message發(fā)送至服務(wù)器。
[0026]在客戶端還包括執(zhí)行如下步驟:
獲取步驟,客戶端使用隨機字符串login_key解密,獲得隨機字符串key ;
其中,非對稱加密算法為RSA算法,對稱加密算法為AES算法,所述服務(wù)器為游戲服務(wù)器。
[0027]本發(fā)明還公開了一種登陸鏈接系統(tǒng),在服務(wù)器中包括:
接收模塊,用于接收客戶端發(fā)送的加密后的登錄消息login_message ;
解密模塊,用于收到登錄消息loginjnessage后,使用非對稱加密算法的私鑰進行解密;
處理模塊,用于生成一串隨機字符串key,用登錄消息login_message中解