一種安全通道建立方法及其數(shù)據(jù)保護(hù)方法和安全通道秘鑰更新方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種安全通道建立方法及其數(shù)據(jù)保護(hù)方法和安全通道秘鑰更新方法,特別是涉及一種適用于移動(dòng)通信的安全通道建立方法及其數(shù)據(jù)保護(hù)方法和安全通道秘鑰更新方法。
【背景技術(shù)】
[0002]現(xiàn)在非常普遍的一種安全通信通道建立與數(shù)據(jù)保護(hù)方法是使用安全傳輸層協(xié)議(TLS),用于在兩個(gè)通信終端之間基于數(shù)字證書的特性,提供保密性和數(shù)據(jù)完整性。TLS協(xié)議(RFC2246 RFC4346)處于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。
[0003]TLS握手協(xié)議(TLS Handshake Protocol ),建立在TLS記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等初始化協(xié)商功能。
[0004]TLS握手協(xié)議分為單向認(rèn)證與雙向認(rèn)證。如果要保障通訊雙方的數(shù)據(jù)以及業(yè)務(wù)安全,需要使用雙向認(rèn)證的方式,就是雙方都會(huì)互相認(rèn)證,也就是兩者之間將會(huì)交換證書。以下僅介紹雙向認(rèn)證流程,基本的過程為客戶端向服務(wù)器發(fā)送連接申請(qǐng),在服務(wù)器端將服務(wù)器端的證書、經(jīng)服務(wù)端私鑰簽名后的協(xié)商數(shù)據(jù)、數(shù)字簽名以及協(xié)商的結(jié)果一起發(fā)送給客戶端??蛻舳藙t使用服務(wù)端證書中的公鑰對(duì)協(xié)商數(shù)據(jù)的簽名驗(yàn)證成功后,將客戶端證書以及使用客戶端私鑰簽名后的密鑰協(xié)商數(shù)據(jù)與數(shù)字簽名回復(fù)給服務(wù)器端。而服務(wù)器端則會(huì)用客戶端證書中的公鑰來驗(yàn)證數(shù)字簽名的合法性。
[0005]TLS記錄協(xié)議(TLS Record Protocol),被用來封裝幾種高層協(xié)議(如HTTP,SMTP等)。使用有TLS握手協(xié)議產(chǎn)生的安全參數(shù),它首先將上層被傳輸?shù)臄?shù)據(jù)分片成便于管理的士夬,然后對(duì)數(shù)據(jù)計(jì)算出消息認(rèn)證碼MAC (如MD5或SHA),加密(如AES、DES、3DES等),最后將結(jié)果送出。接收到的數(shù)據(jù)經(jīng)過解密,校驗(yàn),重組后被傳輸?shù)缴蠈涌蛻舳恕?br>[0006]數(shù)字證書(以X.509數(shù)據(jù)證書為例,以下簡(jiǎn)稱證書)基本字段:版本號(hào),標(biāo)識(shí)證書的版本;序列號(hào),標(biāo)識(shí)證書的唯一整數(shù),由證書頒發(fā)者分配的本證書的唯一標(biāo)識(shí)符;頒發(fā)者,證書頒發(fā)者的可識(shí)別名(DN);有效期,證書有效期的時(shí)間段,本字段由“Not Before”和“NotAfter”兩項(xiàng)組成,它們分別由UTC時(shí)間或一般的時(shí)間表示(在RFC2459中有詳細(xì)的時(shí)間表示規(guī)則);主題,證書擁有者的可識(shí)別名,這個(gè)字段必須是非空的,除非你在證書擴(kuò)展中有別名;主題公鑰信息,主體的公鑰(以及算法標(biāo)識(shí)符);簽名算法,用于簽名證書的算法標(biāo)識(shí),由對(duì)象標(biāo)識(shí)符加上相關(guān)的參數(shù)組成,用于說明本證書所用的數(shù)字簽名算法。例如,SHA-1和RSA的對(duì)象標(biāo)識(shí)符就用來說明該數(shù)字簽名是利用RSA對(duì)SHA-1摘要簽名;簽名,使用簽名算法字段所標(biāo)識(shí)的算法以及頒發(fā)者的私鑰對(duì)證書內(nèi)容摘要后的數(shù)據(jù)進(jìn)行簽名后的數(shù)據(jù)。
[0007]存在的缺陷:
1、TLS協(xié)議及基于該協(xié)議建立通信的基本流程適合帶寬較大,且對(duì)通信建立時(shí)間要求不高的通信網(wǎng)絡(luò),對(duì)帶寬受限的網(wǎng)絡(luò)通信,如果完全采用該協(xié)議建立安全通信通道則存在開銷大,建立通信的時(shí)間長(zhǎng),適用性差的特點(diǎn)。
[0008]2、TLS協(xié)議需要在建立在相對(duì)比較穩(wěn)定的網(wǎng)絡(luò)環(huán)境下,且需要使用TCP協(xié)議的長(zhǎng)連接方式來維持鏈接,如果TCP鏈接一旦中斷,需要重新執(zhí)行TLS協(xié)議中的握手協(xié)議。對(duì)于移動(dòng)通信的分組域網(wǎng)絡(luò),由于移動(dòng)終端會(huì)經(jīng)常切換至不同的基站,導(dǎo)致鏈接中斷。并且一般移動(dòng)終端電量有限,如果使用TCP協(xié)議中的長(zhǎng)連接方式與服務(wù)端通信,會(huì)導(dǎo)致移動(dòng)終端用電量急劇增加,影響用戶使用體驗(yàn)。
[0009]因此基于移動(dòng)通信網(wǎng)分組域通信,如果要在客戶端和服務(wù)端之間建立安全通信通道,則在保證安全性與用戶使用體驗(yàn)的基礎(chǔ)上,對(duì)TLS協(xié)議進(jìn)行改造,縮短安全通信通道建立時(shí)間、減少移動(dòng)終端通信數(shù)據(jù)開銷,以適合具體網(wǎng)絡(luò)通信情況。
【發(fā)明內(nèi)容】
[0010]本發(fā)明要解決的技術(shù)問題是提供一種安全通信通道建立更快速,開銷更小的在基于移動(dòng)通信網(wǎng)分組域網(wǎng)絡(luò)的安全通信通道建立方法及其數(shù)據(jù)保護(hù)方法和安全通道秘鑰更新方法。
[0011]本發(fā)明采用的技術(shù)方案如下:一種安全通道建立方法及其數(shù)據(jù)保護(hù)方法和安全通道秘鑰更新方法。
[0012]一種安全通道建立方法,具體方法步驟為:
步驟一、在客戶端向服務(wù)端發(fā)送連接申請(qǐng)時(shí),客戶端首先查詢是否已緩存與服務(wù)端的會(huì)話連接信息,是則使用會(huì)話連接信息中緩存的摘要算法對(duì)會(huì)話密鑰進(jìn)行摘要計(jì)算,將會(huì)話號(hào)與摘要結(jié)果寫入連接申請(qǐng)包的會(huì)話ID與會(huì)話密鑰摘要字段中;再查詢是否已緩存服務(wù)端證書,是則將服務(wù)端的證書序列號(hào)寫入連接申請(qǐng)包的服務(wù)端證書序列號(hào)字段中,再將客戶端證書的序列號(hào)寫入客戶端證書序列號(hào)字段中;填寫非對(duì)稱加密和數(shù)字簽名算法組合列表,并向服務(wù)端發(fā)送連接申請(qǐng);
步驟二、服務(wù)端接收到客戶端發(fā)送的連接申請(qǐng)數(shù)據(jù)包后,根據(jù)會(huì)話號(hào)查詢是否緩存有對(duì)應(yīng)的會(huì)話連接信息,是則使用會(huì)話連接信息中緩存的摘要算法對(duì)會(huì)話密鑰進(jìn)行摘要計(jì)算,將計(jì)算結(jié)果與客戶端發(fā)送的會(huì)話密鑰的摘要數(shù)據(jù)進(jìn)行比對(duì);如果對(duì)比結(jié)果一致,則將會(huì)話密鑰與對(duì)稱算法作為安全通信通道中數(shù)據(jù)保護(hù)的密鑰與算法,并進(jìn)入下一步;
步驟三、服務(wù)端向終端發(fā)送協(xié)商結(jié)束命令,終端收到服務(wù)端發(fā)送的協(xié)商結(jié)束命令后,整個(gè)握手流程結(jié)束。
[0013]作為優(yōu)選,所述步驟二中,如果對(duì)比結(jié)果不一致,則執(zhí)行下述步驟流程:
A、服務(wù)端讀取客戶端發(fā)送的服務(wù)端證書的序列號(hào),如果與本端使用的證書序列號(hào)一致,則不發(fā)送服務(wù)端的證書至客戶端,并執(zhí)行下一步流程;
B、服務(wù)端讀取客戶端發(fā)送的客戶端證書的序列號(hào),根據(jù)該序列號(hào)查詢是否已緩存客戶端證書;是則不需要客戶端向服務(wù)端發(fā)送客戶端的證書,并執(zhí)行下述工作流程:
a、服務(wù)端讀取客戶端發(fā)送的算法組合列表,選擇一組加密強(qiáng)度最高的算法組合作為以下流程中使用的加密算法組合,發(fā)送至客戶端,并執(zhí)行下一步流程;
b、服務(wù)端生成一組臨時(shí)的非對(duì)稱密鑰對(duì),使用服務(wù)端的私鑰以及所述步驟a中所選擇的算法組合中的非對(duì)稱算法對(duì)臨時(shí)公鑰進(jìn)行數(shù)字簽名,將簽名結(jié)果與臨時(shí)公鑰組包,向終端發(fā)送密鑰交互數(shù)據(jù)包;
C、向客戶端發(fā)送連接申請(qǐng)結(jié)束數(shù)據(jù)包;
d、客戶端收到服務(wù)端發(fā)送的連接申請(qǐng)響應(yīng)數(shù)據(jù)包,緩存密鑰協(xié)商算法組合與會(huì)話號(hào);客戶端如果收到服務(wù)端發(fā)送的服務(wù)端證書數(shù)據(jù)包,對(duì)服務(wù)端證書進(jìn)行合法性驗(yàn)證,驗(yàn)證成功,則使用證書中的序列號(hào)作為標(biāo)識(shí),緩存服務(wù)端的數(shù)字證書;驗(yàn)證失敗,則退出本流程,斷開連接;客戶端如果收到服務(wù)端發(fā)送的申請(qǐng)客戶端證書的申請(qǐng)數(shù)據(jù)包,則將本端的證書組包成證書數(shù)據(jù)包,向服務(wù)端發(fā)送;客戶端收到服務(wù)端發(fā)送的密鑰協(xié)商數(shù)據(jù)包,則使用緩存的服務(wù)端證書中的公鑰與所述緩存的密鑰協(xié)商算法組合中的非對(duì)稱算法,對(duì)服務(wù)端的臨時(shí)公鑰簽名信息進(jìn)行驗(yàn)證,如果不成功則退出流程,并斷開鏈接;如果成功則執(zhí)行下一步;
e、客戶端隨機(jī)生成一個(gè)會(huì)話密鑰,作為安全通道中數(shù)據(jù)保護(hù)的密鑰,使用算法組合中的對(duì)稱算法作為保護(hù)算法;使用會(huì)話號(hào)作為標(biāo)識(shí),將會(huì)話密鑰、對(duì)稱算法與摘要算法進(jìn)行緩存;使用非對(duì)稱算法對(duì)會(huì)話密鑰進(jìn)行加密,并使用非對(duì)稱算法對(duì)加密后的會(huì)話密鑰進(jìn)行數(shù)字簽;將加密后的會(huì)話密鑰以及數(shù)字簽名組包,向服務(wù)端發(fā)送密鑰協(xié)商數(shù)據(jù)包;
f、向服務(wù)端發(fā)送協(xié)商結(jié)束命令;
g、服務(wù)端如果收到客戶端證書數(shù)據(jù)包,對(duì)客戶端證書進(jìn)行合法性驗(yàn)證,如果驗(yàn)證成功,使用證書中的序列號(hào)作為標(biāo)識(shí),緩存服務(wù)端的數(shù)字證書;如果驗(yàn)證失敗,則退出本流程,斷開連接;
h、服務(wù)端收到客戶端發(fā)送的密鑰協(xié)商數(shù)據(jù)包后,使用客戶端證書中的公鑰以及步驟二中所選擇的算法組合中的