本發(fā)明涉及數(shù)據(jù)加密,特別涉及一種安全的即時(shí)通信方法。
背景技術(shù):
移動(dòng)終端設(shè)備己經(jīng)普遍進(jìn)入了人們的工作與生活,豐富多樣的應(yīng)用給人們的工作與生活帶來(lái)前所未有的便利。隨著移動(dòng)終端技術(shù)和寬帶無(wú)線(xiàn)接入技術(shù)的發(fā)展,上網(wǎng)速度在不斷提升,使得人們的上網(wǎng)體驗(yàn)更好。用戶(hù)通過(guò)移動(dòng)終端訪(fǎng)問(wèn)云端進(jìn)行數(shù)據(jù)交互,提交信息給云端,并獲取從云端返回的相關(guān)信息。移動(dòng)終端上安裝的應(yīng)用程序種類(lèi)很多,很多業(yè)務(wù)應(yīng)用涉及到移動(dòng)終端的登錄賬號(hào)、密碼、財(cái)務(wù)往來(lái)等即時(shí)通信數(shù)據(jù)。由于無(wú)線(xiàn)網(wǎng)絡(luò)的開(kāi)放性特點(diǎn),使得移動(dòng)終端與云端之間數(shù)據(jù)傳輸?shù)陌踩媾R更多的挑戰(zhàn),用戶(hù)即時(shí)通信數(shù)據(jù)的傳輸需要經(jīng)過(guò)相關(guān)的處理,否則信息被截取與篡改會(huì)給數(shù)據(jù)安全傳輸構(gòu)成較大威脅?,F(xiàn)有的基于移動(dòng)終端的數(shù)據(jù)安全處理方式?jīng)]有考慮移動(dòng)終端的處理能力和有限電量,增加了過(guò)多的加密處理,給移動(dòng)終端設(shè)備用戶(hù)帶來(lái)不好的使用體驗(yàn),整體性能和效率降低。
技術(shù)實(shí)現(xiàn)要素:
為解決上述現(xiàn)有技術(shù)所存在的問(wèn)題,本發(fā)明提出了一種安全的即時(shí)通信方法,包括:
建立通信雙方的會(huì)話(huà),
交換一次性密鑰作為用戶(hù)的身份認(rèn)證,用于在即時(shí)消息通信過(guò)程中作為消息的簽名;
當(dāng)通信結(jié)束后,對(duì)已使用的一次性密鑰進(jìn)行刪除。
優(yōu)選地,用戶(hù)通過(guò)聊天界面輸入消息或者進(jìn)行會(huì)話(huà)控制時(shí),聊天界面將文本消息或者協(xié)議消息傳遞給即時(shí)通信系統(tǒng)的會(huì)話(huà)管理模塊進(jìn)行處理;
會(huì)話(huà)管理模塊處理完成后,將經(jīng)過(guò)加密的消息傳遞給即時(shí)消息系統(tǒng)發(fā)送給對(duì)端,并在聊天界面輸出,如果是已經(jīng)過(guò)封裝,則判斷消息類(lèi)型;
如果收到的是協(xié)議消息,通過(guò)協(xié)議管理模塊進(jìn)行會(huì)話(huà)的認(rèn)證和雙向身份認(rèn)證;
如果收到的是文本消息,則對(duì)消息進(jìn)行解密和簽名認(rèn)證;
確認(rèn)無(wú)誤后,將解密并解封裝的消息,傳遞給聊天界面輸出;
對(duì)于來(lái)自聊天界面的明文消息,首先判斷是否已建立安全會(huì)話(huà),如果尚未建立,則將消息直接傳遞給即時(shí)消息傳輸層;
如果已經(jīng)建立,則通過(guò)消息處理模塊使用消息加密協(xié)議對(duì)消息進(jìn)行加密、簽名和封裝,然后傳遞給即時(shí)消息傳輸層;
所述協(xié)議消息,包括用于通信雙方的身份認(rèn)證、會(huì)話(huà)的建立和消除的消息。
優(yōu)選地,在身份認(rèn)證過(guò)程中,引入會(huì)話(huà)密鑰參與認(rèn)證;
設(shè)公鑰為kp,私鑰為ks,當(dāng)前會(huì)話(huà)的會(huì)話(huà)密鑰為k;
簽名函數(shù)sgnty(x)表示使用密鑰y對(duì)數(shù)值x進(jìn)行簽名,其反簽名的過(guò)程表示為sgnt-1z(x),則計(jì)算認(rèn)證簽名過(guò)程為:
c=sgntks(md5(kp|md5(k)))
然后將認(rèn)證簽名c和公鑰kp一同發(fā)送給接收端;
接收端收到后,驗(yàn)證是否滿(mǎn)足:
md5(kp|md5(k)=sgnt-lkp(c)
如果相等,記錄對(duì)端的公鑰;
如果不相等,則認(rèn)為受到了安全攻擊,終止會(huì)話(huà)。
優(yōu)選地,在簽名機(jī)制中加入時(shí)間t;首先使用哈希函數(shù)對(duì)時(shí)間t以及即時(shí)消息明文m一起計(jì)算摘要,得到的摘要d;
使用私鑰ks對(duì)d進(jìn)行簽名,得到簽名d’;
然后將簽名d’、明文m以及發(fā)送時(shí)間t一起,用會(huì)話(huà)密鑰k進(jìn)行加密,得到加密的數(shù)據(jù)m’;
發(fā)送時(shí)將eks(m)發(fā)送給接收端,其中eks表示以私鑰ks為參數(shù)的加密算法;
接收端在收到消息后,使用eks的參數(shù)計(jì)算會(huì)話(huà)密鑰,并將加密的消息解密,得到明文消息m、簽名d’以及發(fā)送時(shí)間t;
然后,使用發(fā)送端相同的哈希函數(shù)對(duì)時(shí)間t以及即時(shí)消息明文m一起計(jì)算摘要,再對(duì)簽名進(jìn)行驗(yàn)證;
如果驗(yàn)證無(wú)誤,則輸出即時(shí)消息明文m。
本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
本發(fā)明提出了一種安全的即時(shí)通信方法,在保證移動(dòng)終端數(shù)據(jù)安全傳輸?shù)那疤嵯?,盡可能減少加密等相關(guān)處理的計(jì)算量,提高移動(dòng)應(yīng)用的整體性能和效率。
附圖說(shuō)明
圖1是根據(jù)本發(fā)明實(shí)施例的安全的即時(shí)通信方法的流程圖。
具體實(shí)施方式
下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書(shū)限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無(wú)這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書(shū)實(shí)現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種安全的即時(shí)通信方法。圖1是根據(jù)本發(fā)明實(shí)施例的安全的即時(shí)通信方法流程圖。
為在應(yīng)用層為即時(shí)通信的雙方提供端到端的安全性,本發(fā)明將通信消息分為兩類(lèi),一類(lèi)是協(xié)議消息,負(fù)責(zé)通信雙方的身份認(rèn)證、會(huì)話(huà)的建立和消除。另一類(lèi)是普通消息,是已經(jīng)經(jīng)過(guò)加密和簽名的文本消息。
用戶(hù)通過(guò)聊天界面輸入消息或者進(jìn)行會(huì)話(huà)控制時(shí),聊天界面將文本消息或者協(xié)議消息傳遞給即時(shí)通信系統(tǒng)的會(huì)話(huà)管理模塊進(jìn)行處理。會(huì)話(huà)管理模塊處理完成后,將經(jīng)過(guò)加密的消息傳遞給即時(shí)消息系統(tǒng)發(fā)送給對(duì)端,并在聊天界面輸出,如果是已經(jīng)過(guò)封裝,則判斷消息類(lèi)型,如果收到的是協(xié)議消息,通過(guò)協(xié)議管理模塊,進(jìn)行會(huì)話(huà)的認(rèn)證和雙向身份認(rèn)證。如果收到的是文本消息,則對(duì)消息進(jìn)行解密和簽名認(rèn)證。確認(rèn)無(wú)誤后,將解密并解封裝的消息,傳遞給聊天界面輸出。對(duì)于來(lái)自聊天界面的明文消息,首先判斷是否已建立安全會(huì)話(huà),如果尚未建立,則將消息直接傳遞給即時(shí)消息傳輸層;如果已經(jīng)建立,則通過(guò)消息處理模塊使用消息加密協(xié)議對(duì)消息進(jìn)行加密、簽名和封裝,然后傳遞給即時(shí)消息傳輸層。消息處理模塊對(duì)消息進(jìn)行封裝和解封裝,其中包括會(huì)話(huà)密鑰的生成、數(shù)據(jù)簽名和數(shù)據(jù)加密。
本發(fā)明給出了一種可以向通信雙方提供臨時(shí)簽名認(rèn)證的機(jī)制。當(dāng)通信雙方的會(huì)話(huà)建立時(shí),雙方交換一組一次性密鑰作為用戶(hù)的身份認(rèn)證,用于在即時(shí)消息通信過(guò)程中做消息的簽名;當(dāng)通信結(jié)束后,雙方對(duì)已使用的一次性密鑰進(jìn)行刪除。這樣,即使通信的一方將這一段經(jīng)過(guò)簽名的消息公開(kāi)給第三方,第三方也無(wú)法確認(rèn)該消息的簽名是否屬于通信的另一方。
在認(rèn)證簽名的計(jì)算過(guò)程中,引入了會(huì)話(huà)密鑰參與認(rèn)證。設(shè)公鑰為kp,私鑰為ks,當(dāng)前會(huì)話(huà)的會(huì)話(huà)密鑰為k。簽名函數(shù)sgnty(x)表示使用密鑰y對(duì)數(shù)值x進(jìn)行簽名。其反簽名的過(guò)程表示為sgnt-1z(x)。則計(jì)算認(rèn)證簽名過(guò)程為:
c=sgntks(md5(kp|md5(k)))
然后將認(rèn)證簽名c和公鑰kp一同發(fā)送給接收端。接收端收到后,驗(yàn)證是否滿(mǎn)足
md5(kp|md5(k)=sgnt-lkp(c)
如果相等,記錄對(duì)端的公鑰;如果不相等,則認(rèn)為受到了安全攻擊,終止會(huì)話(huà)。
進(jìn)一步地,本發(fā)明在簽名機(jī)制中,加入了時(shí)間t。首先使用哈希函數(shù)對(duì)時(shí)間t以及即時(shí)消息明文m一起計(jì)算摘要,得到的摘要d。接著使用的私鑰ks對(duì)d進(jìn)行簽名,得到簽名d’。然后將簽名d’、明文m以及發(fā)送時(shí)間t一起,用會(huì)話(huà)密鑰k進(jìn)行加密,得到加密的數(shù)據(jù)m’。發(fā)送時(shí),將eks(m)發(fā)送給接收端,其中eks表示以私鑰ks為參數(shù)的加密算法。
接收端在收到消息后,使用eks的參數(shù)計(jì)算會(huì)話(huà)密鑰,并將加密的消息解密,得到明文消息m、簽名d’以及發(fā)送時(shí)間t。然后,使用發(fā)送端相同的哈希函數(shù)對(duì)時(shí)間t以及即時(shí)消息明文m一起計(jì)算摘要,再對(duì)簽名進(jìn)行驗(yàn)證。如果驗(yàn)證無(wú)誤,則輸出即時(shí)消息明文m。
根據(jù)本發(fā)明另一方面,當(dāng)即時(shí)通信涉及群體中的多個(gè)終端時(shí),采用以下方法提高消息傳輸?shù)陌踩?,包括消息加密過(guò)程和消息解密兩個(gè)過(guò)程。
其中消息加密包括:接收到即時(shí)消息后,根據(jù)即時(shí)消息中的群組用戶(hù)標(biāo)識(shí)分別在認(rèn)證中心中獲取對(duì)應(yīng)的密鑰信息;使用生成的會(huì)話(huà)密鑰對(duì)與即時(shí)消息中的消息標(biāo)識(shí)對(duì)應(yīng)的消息進(jìn)行加密,生成消息密文;分別使用密鑰信息中的第一密鑰對(duì)會(huì)話(huà)密鑰進(jìn)行加密,生成相應(yīng)的會(huì)話(huà)密文;密鑰信息包括第二密鑰和第一密鑰;認(rèn)證中心使用與群組用戶(hù)標(biāo)識(shí)對(duì)應(yīng)的預(yù)設(shè)算法對(duì)生成的第二密鑰進(jìn)行計(jì)算生成第一密鑰;將即時(shí)消息中的群組用戶(hù)標(biāo)識(shí)、與群組用戶(hù)標(biāo)識(shí)對(duì)應(yīng)的密鑰信息中的第二密鑰、相應(yīng)的會(huì)話(huà)密文組和消息密文組成消息數(shù)據(jù)包;
消息解密過(guò)程包括:
獲取消息數(shù)據(jù)包并對(duì)其進(jìn)行解析,判斷能否解析出符合預(yù)設(shè)格式的數(shù)據(jù),若能則解析得到群組用戶(hù)標(biāo)識(shí)、第二密鑰、會(huì)話(huà)密文和消息密文,則根據(jù)解析得到的群組用戶(hù)標(biāo)識(shí)判斷接收者是否為發(fā)送群組其他用戶(hù),若是則輸出第二密鑰,接收密鑰生成器根據(jù)第二密鑰生成的第三密鑰,使用第三密鑰對(duì)解析得到的會(huì)話(huà)密文進(jìn)行解密,如解密成功則使用解密得到的會(huì)話(huà)密鑰對(duì)解析得到的消息密文進(jìn)行解密,如解密成功則輸出消息傳輸成功,如解密失敗則輸出消息傳輸失敗。
通過(guò)在發(fā)送端使用會(huì)話(huà)密鑰對(duì)將要發(fā)送的消息進(jìn)行加密并且使用接收者的動(dòng)態(tài)口令對(duì)會(huì)話(huà)密鑰加密,然后將會(huì)話(huà)密文和消息密文打包發(fā)送給群組其他用戶(hù)或通知其他用戶(hù)進(jìn)行接收,實(shí)現(xiàn)對(duì)消息一次加密發(fā)送給多個(gè)用戶(hù),簡(jiǎn)化向多個(gè)用戶(hù)發(fā)送消息的操作;接收者使用各自的動(dòng)態(tài)口令對(duì)會(huì)話(huà)密文進(jìn)行解密,使用解密后的會(huì)話(huà)密鑰對(duì)消息密文解密進(jìn)行查看,由于發(fā)送的是加密消息,沒(méi)有被授權(quán)的用戶(hù)無(wú)法查看,保護(hù)用戶(hù)隱私,提高消息傳輸?shù)陌踩浴?/p>
在進(jìn)一步的實(shí)施例中,發(fā)送端預(yù)先將消息存儲(chǔ)在云端服務(wù)器中。在消息加密過(guò)程中,發(fā)送端發(fā)起與云端服務(wù)器建立連接請(qǐng)求;云端服務(wù)器判斷該發(fā)送端是否是合法用戶(hù),如合法則云端服務(wù)器給發(fā)送端發(fā)送用戶(hù)合法提示信息;發(fā)送端接收包含消息標(biāo)識(shí)和用戶(hù)id的第一即時(shí)消息并轉(zhuǎn)發(fā)給云端服務(wù)器;云端服務(wù)器接收第一即時(shí)消息后,生成會(huì)話(huà)密鑰;云端服務(wù)器使用會(huì)話(huà)密鑰對(duì)存儲(chǔ)的與消息標(biāo)識(shí)對(duì)應(yīng)的消息進(jìn)行加密生成消息密文;根據(jù)第一即時(shí)消息中的群組用戶(hù)id分別從認(rèn)證中心中獲取對(duì)應(yīng)的密鑰信息,如獲取到則使用密鑰信息中的第一密鑰對(duì)會(huì)話(huà)密鑰進(jìn)行加密,生成會(huì)話(huà)密文;當(dāng)有多個(gè)密鑰信息時(shí),分別使用每個(gè)密鑰信息中的第一密鑰對(duì)會(huì)話(huà)密鑰進(jìn)行加密生成多個(gè)會(huì)話(huà)密文;云端服務(wù)器將會(huì)話(huà)密文、用戶(hù)id和第二密鑰組成群組內(nèi)用戶(hù)信息;將消息密文和群組內(nèi)用戶(hù)信息組成消息數(shù)據(jù)包并進(jìn)行存儲(chǔ);
當(dāng)消息存儲(chǔ)在發(fā)送端時(shí),本實(shí)施例中的加密過(guò)程中,發(fā)送端生成會(huì)話(huà)密鑰對(duì)消息加密生成消息密文,再?gòu)恼J(rèn)證中心中獲取第二密鑰和第一密鑰,使用第一密鑰對(duì)會(huì)話(huà)密鑰進(jìn)行加密生成會(huì)話(huà)密文,然后將會(huì)話(huà)密文、用戶(hù)id、第二密鑰和消息密文組合成消息數(shù)據(jù)包后存放到云端服務(wù)器上。
綜上所述,本發(fā)明提出了一種安全的即時(shí)通信方法,在保證移動(dòng)終端數(shù)據(jù)安全傳輸?shù)那疤嵯拢M可能減少加密等相關(guān)處理的計(jì)算量,提高移動(dòng)應(yīng)用的整體性能和效率。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算系統(tǒng)來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算系統(tǒng)上,或者分布在多個(gè)計(jì)算系統(tǒng)所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算系統(tǒng)可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)系統(tǒng)中由計(jì)算系統(tǒng)來(lái)執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
應(yīng)當(dāng)理解的是,本發(fā)明的上述具體實(shí)施方式僅僅用于示例性說(shuō)明或解釋本發(fā)明的原理,而不構(gòu)成對(duì)本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。