客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信中的動(dòng)態(tài)密鑰技術(shù),具體涉及客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]移動(dòng)客戶端和服務(wù)器通信時(shí)需要做加密,使用非對(duì)稱加密時(shí),根據(jù)秘鑰使用的時(shí)長(zhǎng),需要更新秘鑰增加安全性。
[0003]因此本發(fā)明有必要提出一種客戶端與服務(wù)器之間通信時(shí)動(dòng)態(tài)密鑰的實(shí)現(xiàn)方法。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問(wèn)題是:提出一種客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,增加通信安全性。
[0005]本發(fā)明解決上述技術(shù)問(wèn)題所采用的方案是:客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,包括以下步驟:
[0006]a.密鑰傳遞步驟:
[0007]al.客戶端通過(guò)登錄信息向服務(wù)器請(qǐng)求公鑰信息;
[0008]a2.服務(wù)器對(duì)登錄信息驗(yàn)證通過(guò)后,利用服務(wù)器公鑰進(jìn)行加密生成token(令牌);
[0009]a3.服務(wù)器將token連同服務(wù)器公鑰作為返回參數(shù)傳遞給客戶端;
[0010]a4.在后續(xù)通信過(guò)程中,客戶端與服務(wù)器之間使用所述token及客戶端公鑰進(jìn)行通信;
[0011]b.密鑰更新步驟:
[0012]bl.客戶端向服務(wù)器傳遞數(shù)據(jù)時(shí),在數(shù)據(jù)包中保留兩個(gè)特定字段用于存放客戶端公鑰及時(shí)間偏移量;
[0013]b2.服務(wù)器接收到數(shù)據(jù)時(shí),如果數(shù)據(jù)包中此兩個(gè)特定字段不為空,則使用服務(wù)器私鑰解密比對(duì)token中的信息與客戶端相關(guān)信息是否一致以及時(shí)間偏移量是否在閾值范圍之內(nèi);如果滿足該條件,則替換掉服務(wù)器中存放的客戶端公鑰;
[0014]b3.服務(wù)器如果更新服務(wù)器公鑰,則將新的服務(wù)器公鑰傳遞給客戶端。
[0015]進(jìn)一步的,步驟al中,所述登錄信息包括用戶名及密碼信息。
[0016]進(jìn)一步的,步驟a2中,所述服務(wù)器利用服務(wù)器公鑰進(jìn)行加密生成token的方法是:
[0017]服務(wù)器利用服務(wù)器公鑰加密當(dāng)前系統(tǒng)時(shí)間s_time和用戶名生成token。
[0018]進(jìn)一步的,步驟bl中,所述時(shí)間偏移量為客戶端傳遞數(shù)據(jù)的時(shí)間與服務(wù)器通過(guò)心跳數(shù)據(jù)包發(fā)送的其當(dāng)前系統(tǒng)時(shí)間的差值。
[0019]進(jìn)一步的,步驟b2中,客戶端根據(jù)時(shí)間偏移量的增長(zhǎng)規(guī)模設(shè)定規(guī)則對(duì)客戶端公鑰定時(shí)更新。
[0020]進(jìn)一步的,步驟b3中,服務(wù)器根據(jù)運(yùn)行時(shí)長(zhǎng)定期更新服務(wù)器公鑰。
[0021]進(jìn)一步的,步驟b2中,客戶端傳輸?shù)臄?shù)據(jù)包中只有在需要服務(wù)器更新客戶端公鑰時(shí),所述兩個(gè)特定字段才不為空。
[0022]本發(fā)明的有益效果是:實(shí)現(xiàn)客戶端與服務(wù)器之間的動(dòng)態(tài)密鑰通信,增加通信的安全性。
【具體實(shí)施方式】
[0023]本發(fā)明旨在提出一種客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,增加通信安全性。本發(fā)明采用的加密機(jī)制為非對(duì)稱密鑰機(jī)制,非對(duì)稱密鑰機(jī)制需要客戶端和服務(wù)器端相互保存對(duì)方的公鑰,用于驗(yàn)證簽名以及加密信息。
[0024]該實(shí)現(xiàn)方法,包括以下步驟:
[0025]a.密鑰傳遞步驟:
[0026]al.客戶端通過(guò)登錄信息向服務(wù)器請(qǐng)求公鑰信息;
[0027]a2.服務(wù)器對(duì)登錄信息驗(yàn)證通過(guò)后,利用服務(wù)器公鑰進(jìn)行加密生成token(令牌);
[0028]a3.服務(wù)器將token連同服務(wù)器公鑰作為返回參數(shù)傳遞給客戶端;
[0029]a4.在后續(xù)通信過(guò)程中,客戶端與服務(wù)器之間使用所述token及客戶端公鑰進(jìn)行通信;
[0030]b.密鑰更新步驟:
[0031]bl.客戶端向服務(wù)器傳遞數(shù)據(jù)時(shí),在數(shù)據(jù)包中保留兩個(gè)特定字段用于存放客戶端公鑰及時(shí)間偏移量;
[0032]b2.服務(wù)器接收到數(shù)據(jù)時(shí),如果數(shù)據(jù)包中此兩個(gè)特定字段不為空,則使用服務(wù)器私鑰解密比對(duì)token中的信息與客戶端相關(guān)信息是否一致以及時(shí)間偏移量是否在閾值范圍之內(nèi);如果滿足該條件,則替換掉服務(wù)器中存放的客戶端公鑰;
[0033]b3.服務(wù)器如果更新服務(wù)器公鑰,則將新的服務(wù)器公鑰傳遞給客戶端。
[0034]下面結(jié)合具體實(shí)例對(duì)本發(fā)明方案的實(shí)現(xiàn)作更具體的描述:
[0035]1.密鑰傳遞:
[0036]初始通信時(shí)客戶端不知道服務(wù)器的公鑰,先使用用戶名+密碼信息向服務(wù)器請(qǐng)求公鑰信息,服務(wù)器驗(yàn)證用戶名密碼后通過(guò)[當(dāng)前系統(tǒng)時(shí)間][用戶名]生成token,此token為服務(wù)器使用服務(wù)器公鑰(以下簡(jiǎn)稱s_publiC_key)加密[當(dāng)前系統(tǒng)時(shí)間(以下簡(jiǎn)稱s_time)][用戶名];token作為用戶標(biāo)識(shí)代替后續(xù)傳遞數(shù)據(jù)中的用戶名和密碼.該token和s_public_key和s_time作為返回參數(shù)傳遞回客戶端。
[0037]2.密鑰更新:
[0038]客戶端傳輸數(shù)據(jù)時(shí),在數(shù)據(jù)包中保留兩個(gè)字段用于存放客戶端公鑰(以下簡(jiǎn)稱d_public_key)和時(shí)間偏移量(客戶端傳遞當(dāng)前數(shù)據(jù)時(shí)系統(tǒng)時(shí)間與s_time的差值,下文簡(jiǎn)稱time_offset);該s_time由服務(wù)器在心跳包返回?cái)?shù)據(jù)中傳遞;
[0039]服務(wù)器接收到數(shù)據(jù)時(shí)如果這兩個(gè)字段不為null,使用服務(wù)器私鑰(以下簡(jiǎn)稱s_private_key)解密比對(duì)token中的用戶名和time_offset (服務(wù)器接收到數(shù)據(jù)時(shí)的系統(tǒng)時(shí)間與s_time的差值)是否一致或在閾值范圍內(nèi)(用戶時(shí)間戳和d_public_Key值存放于內(nèi)存中),如果滿足,替換掉服務(wù)器端存放的d_publiC_key ;下次數(shù)據(jù)使用新的d_public_key ;從而實(shí)現(xiàn)客戶端密鑰的更新;
[0040]服務(wù)器如果密鑰更新,在心跳包返回值中傳遞新的密鑰給客戶端;
[0041]3.密鑰更新策略,由于加入了 time_offset,可以依據(jù)該值的增長(zhǎng)規(guī)模設(shè)定規(guī)則對(duì)客戶端密鑰定時(shí)更新.同樣服務(wù)器端密鑰根據(jù)服務(wù)器運(yùn)行時(shí)間時(shí)長(zhǎng),定時(shí)更新。
[0042]4.傳遞的TokenData數(shù)據(jù)只在客戶端需要服務(wù)器端更新d_public_key時(shí)才不為空。
【主權(quán)項(xiàng)】
1.客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,其特征在于,包括以下步驟: a.密鑰傳遞步驟: al.客戶端通過(guò)登錄信息向服務(wù)器請(qǐng)求公鑰信息; a2.服務(wù)器對(duì)登錄信息驗(yàn)證通過(guò)后,利用服務(wù)器公鑰進(jìn)行加密生成token ; a3.服務(wù)器將token連同服務(wù)器公鑰作為返回參數(shù)傳遞給客戶端; a4.在后續(xù)通信過(guò)程中,客戶端與服務(wù)器之間使用所述token及客戶端公鑰進(jìn)行通信; b.密鑰更新步驟: bl.客戶端向服務(wù)器傳遞數(shù)據(jù)時(shí),在數(shù)據(jù)包中保留兩個(gè)特定字段用于存放客戶端公鑰及時(shí)間偏移量; b2.服務(wù)器接收到數(shù)據(jù)時(shí),如果數(shù)據(jù)包中此兩個(gè)特定字段不為空,則使用服務(wù)器私鑰解密比對(duì)token中的信息與客戶端相關(guān)信息是否一致以及時(shí)間偏移量是否在閾值范圍之內(nèi);如果滿足該條件,則替換掉服務(wù)器中存放的客戶端公鑰; b3.服務(wù)器如果更新服務(wù)器公鑰,則將新的服務(wù)器公鑰傳遞給客戶端。2.如權(quán)利要求1所述的客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,其特征在于,步驟al中,所述登錄信息包括用戶名及密碼信息。3.如權(quán)利要求2所述的客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,其特征在于,步驟a2中,所述服務(wù)器利用服務(wù)器公鑰進(jìn)行加密生成token的方法是: 服務(wù)器利用服務(wù)器公鑰加密當(dāng)前系統(tǒng)時(shí)間s_time和用戶名生成token。4.如權(quán)利要求3所述的客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,其特征在于,步驟bl中,所述時(shí)間偏移量為客戶端傳遞數(shù)據(jù)的時(shí)間與服務(wù)器通過(guò)心跳數(shù)據(jù)包發(fā)送的其當(dāng)前系統(tǒng)時(shí)間s_time的差值。5.如權(quán)利要求1所述的客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,其特征在于,步驟b2中,客戶端根據(jù)時(shí)間偏移量的增長(zhǎng)規(guī)模設(shè)定規(guī)則對(duì)客戶端公鑰定時(shí)更新。6.如權(quán)利要求1所述的客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,其特征在于,步驟b3中,服務(wù)器根據(jù)運(yùn)行時(shí)長(zhǎng)定期更新服務(wù)器公鑰。7.如權(quán)利要求1所述的客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,其特征在于,步驟b2中,客戶端傳輸?shù)臄?shù)據(jù)包中只有在需要服務(wù)器更新客戶端公鑰時(shí),所述兩個(gè)特定字段才不為空。
【專利摘要】本發(fā)明涉及網(wǎng)絡(luò)通信中的動(dòng)態(tài)密鑰技術(shù),其公開(kāi)了一種客戶端與服務(wù)器之間通信動(dòng)態(tài)密鑰實(shí)現(xiàn)方法,增加通信安全性。該方法包括:客戶端使用和服務(wù)器約定好的登錄信息請(qǐng)求服務(wù)器公鑰,服務(wù)器驗(yàn)證登錄信息,并利用公鑰加密登錄信息生成用戶token并和服務(wù)器公鑰返回給客戶端;客戶端和服務(wù)器端通信使用token及客戶端公鑰;當(dāng)服務(wù)器收到客戶端的數(shù)據(jù)時(shí),根據(jù)數(shù)據(jù)包中的特定字段的情況判斷客戶端有無(wú)更新公鑰的需求,若客戶端需要更新公鑰,則服務(wù)器保存新的客戶端公鑰信息,服務(wù)器如果更新服務(wù)器公鑰,則將新的服務(wù)器公鑰傳遞給客戶端。本發(fā)明適用于客戶端與服務(wù)器之間的安全通信。
【IPC分類】H04L29/08, H04L9/30, H04L9/16, H04L29/06
【公開(kāi)號(hào)】CN105391549
【申請(qǐng)?zhí)枴緾N201510916909
【發(fā)明人】魏勁超, 江濤
【申請(qǐng)人】四川長(zhǎng)虹電器股份有限公司
【公開(kāi)日】2016年3月9日
【申請(qǐng)日】2015年12月10日