專利名稱:一種基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法
技術(shù)領(lǐng)域:
本發(fā)明屬于身份認(rèn)證技術(shù)領(lǐng)域,尤其涉及基于對(duì)稱密碼的身份弱認(rèn)證和密鑰協(xié)商 方法,該方法適用于資源受限的網(wǎng)絡(luò)環(huán)境中節(jié)點(diǎn)間的快速認(rèn)證及共享密鑰的建立。
背景技術(shù):
在網(wǎng)絡(luò)環(huán)境下,通信是連接網(wǎng)絡(luò)節(jié)點(diǎn)的必要條件,而通信過程又是最容易造成信 息泄露的危險(xiǎn)途徑。因此在網(wǎng)絡(luò)中通過一定的協(xié)議規(guī)則來進(jìn)行通信,規(guī)范用戶的網(wǎng)絡(luò)行為 來保護(hù)信息的安全是一項(xiàng)重要研究內(nèi)容。保護(hù)數(shù)據(jù)不被竊取的基本技術(shù)手段是使用加密措施,而在實(shí)施加密措施之前,要 對(duì)通信雙方的身份通過某種身份認(rèn)證機(jī)制來證明它們的身份,即驗(yàn)證用戶的身份與所宣 稱的是否一致,并且協(xié)商一個(gè)會(huì)話密鑰用于消息的加解密,這就是關(guān)鍵的認(rèn)證與密鑰協(xié)商 (Authentication and Key Agreement, AKA)過程。AKA過程的基本步驟是先完成認(rèn)證,然 后進(jìn)行密鑰協(xié)商。有時(shí)候認(rèn)證與密鑰協(xié)商過程是結(jié)合在一起進(jìn)行的。傳統(tǒng)的網(wǎng)絡(luò)認(rèn)證技術(shù)包括數(shù)字簽名技術(shù)、挑戰(zhàn)應(yīng)答技術(shù)等,但這些技術(shù)都需要消 耗較大的計(jì)算和通信資源。這些消耗對(duì)資源豐富的網(wǎng)絡(luò)單元來說不算什么,但對(duì)特殊網(wǎng)絡(luò) 來說則可能是負(fù)擔(dān)不起的,比如資源受限的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的計(jì)算資源和通信方面的 能力就非常有限。因此將傳統(tǒng)的AKA技術(shù)用于資源受限的通信環(huán)境是不適合的,需要有更 高效的AKA方法。隨著物聯(lián)網(wǎng)技術(shù)與產(chǎn)業(yè)的快速推進(jìn),將有大量資源受限的傳感網(wǎng)連接到互聯(lián)網(wǎng)或 移動(dòng)網(wǎng)上,并與遠(yuǎn)程終端進(jìn)行連接和控制。這樣對(duì)傳感網(wǎng)本身的安全需求也會(huì)提高,因此使 用高效的AKA方法是必然選擇。
發(fā)明內(nèi)容
本發(fā)明針對(duì)現(xiàn)有技術(shù)的網(wǎng)絡(luò)認(rèn)證技術(shù)不適合資源受限通信環(huán)境的問題,提供一基 于對(duì)稱密碼的身份認(rèn)證和密鑰協(xié)商方法,可高效、安全地用于具有大量資源受限節(jié)點(diǎn)的物 聯(lián)網(wǎng)。本發(fā)明的技術(shù)方案為一種基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,包括如下步 驟1)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B之間預(yù)置一長期共享密鑰k。如何預(yù)置這樣的 共享密鑰不是本發(fā)明的內(nèi)容,已經(jīng)有許多現(xiàn)有技術(shù)可以完成,比如通過密鑰預(yù)分配和密鑰 池等方法使得每個(gè)節(jié)點(diǎn)都存有和其它節(jié)點(diǎn)共享的長期密鑰,這些長期密鑰存放在用戶的某 個(gè)數(shù)據(jù)庫中,存儲(chǔ)方式是(節(jié)點(diǎn)名,共享密鑰)。2)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B上各自設(shè)置一時(shí)鐘,所述各時(shí)鐘與標(biāo)準(zhǔn)時(shí)間的 誤差不超過TO秒,TO秒可以為2到3秒,因此節(jié)點(diǎn)設(shè)備A與B的時(shí)鐘設(shè)置為幾乎同步。3)在節(jié)點(diǎn)設(shè)備A和B之間內(nèi)置加密算法E和hash函數(shù)H(x)。4)利用加密算法E在節(jié)點(diǎn)設(shè)備A和B之間建立認(rèn)證和會(huì)話密鑰,具體方法為
4
節(jié)點(diǎn)設(shè)備A發(fā)送經(jīng)加密算法E和長期共享密鑰k加密的密文和節(jié)點(diǎn)設(shè)備A的相關(guān) 信息給節(jié)點(diǎn)設(shè)備B,節(jié)點(diǎn)A計(jì)算會(huì)話密鑰;節(jié)點(diǎn)設(shè)備B利用解密算法和長期共享密鑰k對(duì)密 文解密,節(jié)點(diǎn)設(shè)備B將解密后的信息與設(shè)備A的相關(guān)信息進(jìn)行對(duì)照認(rèn)證,認(rèn)證通過,如果信 息合法,則節(jié)點(diǎn)設(shè)備A和節(jié)點(diǎn)設(shè)備B之間共享會(huì)話密鑰,會(huì)話密鑰為hash函數(shù)H(x)。當(dāng)設(shè) 備A和B之間并不存長期共享密鑰時(shí),則認(rèn)證無法通過,會(huì)話密鑰無法共享。節(jié)點(diǎn)設(shè)備A和B之間建立認(rèn)證和會(huì)話密鑰的具體過程如下(1)節(jié)點(diǎn)設(shè)備A將至少包含有經(jīng)加密算法E加密的密文和節(jié)點(diǎn)設(shè)備A的身份信 息的數(shù)據(jù)發(fā)送給節(jié)點(diǎn)設(shè)備B,具體為(IDa,C),其中IdA為節(jié)點(diǎn)設(shè)備A的身份信息,密文C = Ek(IDa, T),k為密鑰,E為加密算法,T為節(jié)點(diǎn)設(shè)備A發(fā)送消息時(shí)的當(dāng)前時(shí)間;(2)節(jié)點(diǎn)設(shè)備B收到節(jié)點(diǎn)設(shè)備A發(fā)出的數(shù)據(jù),對(duì)密文進(jìn)行解密,獲得解密后的ID/ 和T;進(jìn)行認(rèn)證,判斷ID' a=IDa*T' -T彡ΔΤ是否成立,其中Τ’為節(jié)點(diǎn)B收到密文時(shí) 的當(dāng)前時(shí)間戳,ΔΤ為預(yù)先設(shè)定的時(shí)間延遲范圍,若兩者都成立,認(rèn)證通過;(3)認(rèn)證通過后,節(jié)點(diǎn)B與節(jié)點(diǎn)設(shè)備A共享會(huì)話密鑰,其共享的會(huì)話密鑰為sk = H(IDa, IDB,k,T)或sk = H(k,T)。會(huì)話密鑰在A節(jié)點(diǎn)設(shè)備和B節(jié)點(diǎn)設(shè)備分別計(jì)算,但會(huì)話 密鑰的計(jì)算和認(rèn)證可以同時(shí)進(jìn)行,例如節(jié)點(diǎn)設(shè)備A發(fā)出數(shù)據(jù)后,認(rèn)證的同時(shí)就可以計(jì)算會(huì) 話密鑰,不需要等到認(rèn)證完成再計(jì)算會(huì)話密鑰。當(dāng)認(rèn)證通過時(shí),則節(jié)點(diǎn)設(shè)備A和節(jié)點(diǎn)設(shè)備B 就可以共享該會(huì)話密鑰。所述節(jié)點(diǎn)設(shè)備A發(fā)送給節(jié)點(diǎn)設(shè)備B的信息中還包括節(jié)點(diǎn)設(shè)備B的身份信息IDb。當(dāng)上述協(xié)議的前3個(gè)步驟被執(zhí)行完后,如果節(jié)點(diǎn)設(shè)備A按照步驟進(jìn)行,則B —定能 根據(jù)A的身份查找到長期共享密鑰k,從而進(jìn)行正確解密,并進(jìn)行認(rèn)證。如果認(rèn)證通過,則 B有理由相信對(duì)方的確是A,這是因?yàn)閗是A和B共享的密鑰,只有A能夠產(chǎn)生有效的密文 Ek(IDA,T),B解密得到(ID/,Τ)后,就可以確定對(duì)方是否的確是A。為了更進(jìn)一步提高認(rèn)證和密鑰協(xié)商方法的正確性和安全性,在節(jié)點(diǎn)B與節(jié)點(diǎn)設(shè)備 A建立共享會(huì)話密鑰后還可增加節(jié)點(diǎn)設(shè)備A對(duì)節(jié)點(diǎn)B的反認(rèn)證,其步驟如下節(jié)點(diǎn)設(shè)備B在對(duì)節(jié)點(diǎn)設(shè)備A的認(rèn)證成功之后,返回應(yīng)答信息給節(jié)點(diǎn)設(shè)備A,應(yīng)答信 息為經(jīng)加密算法E’加密后的密文E' sk(X),其中X為IDB、ID^PT中的一個(gè)或它們的任意 組合,sk為共享會(huì)話密鑰,T為節(jié)點(diǎn)B發(fā)送應(yīng)答信息時(shí)的當(dāng)前時(shí)間;節(jié)點(diǎn)設(shè)備A收到應(yīng)答信 息后進(jìn)行解密并認(rèn)證解密后的信息,解密和認(rèn)證方法與步驟(2)中節(jié)點(diǎn)B對(duì)節(jié)點(diǎn)設(shè)備A的 解密和認(rèn)證方法相同,都是通過判斷解密后的身份信息和與發(fā)送來的身份信息是否相同, 以及時(shí)間的延遲是否超出設(shè)定的范圍來確定認(rèn)證是否能通過。E' sk(X)具體可為 E' sk(IDA,IDB,T)、E' sk(IDA,T)、E' sk(IDB,T)、E' sk(IDA, IDb), E' sk(IDA)、E' sk(IDB)、E' sk (T)。加密算法E’可以與E為同一算法或另一算法。節(jié)點(diǎn)設(shè)備A對(duì)節(jié)點(diǎn)設(shè)備B的另一認(rèn)證方法如下節(jié)點(diǎn)設(shè)備B在對(duì)節(jié)點(diǎn)設(shè)備A的認(rèn)證成功之后,返回應(yīng)答信息給節(jié)點(diǎn)設(shè)備A,應(yīng)答信 息為經(jīng)加密算法E’加密后的密文E' sk(X,M),其中X為IDB、IDA*T中的一個(gè)或它們的任 意組合,sk為共享會(huì)話密鑰,T為節(jié)點(diǎn)B發(fā)送應(yīng)答信息時(shí)的當(dāng)前時(shí)間;節(jié)點(diǎn)設(shè)備A收到應(yīng)答 信息后進(jìn)行解密并認(rèn)證解密后的信息,解密和認(rèn)證方法與步驟(2)中節(jié)點(diǎn)B對(duì)節(jié)點(diǎn)設(shè)備A 的解密和認(rèn)證方法相同。在這種認(rèn)證方法中,在確定B的身份的同時(shí)也得到B傳輸?shù)臄?shù)據(jù)。E' sk(X,m)具體可為 E' sk(IDA,IDb, Τ,Μ)、E' sk(IDA,T,Μ)、E' sk(IDB,Τ, Μ)、
5E' sk(IDA,IDb,M)、E' sk(IDA,M)、E' sk(IDB,M)、E' sk(T,M)。上述兩種方法中,節(jié)點(diǎn)B可以對(duì)節(jié)點(diǎn)設(shè)備A進(jìn)行反認(rèn)證,節(jié)點(diǎn)設(shè)備A首先計(jì)算出會(huì) 話密鑰sk,然后解密后經(jīng)過數(shù)據(jù)對(duì)比就可以確定對(duì)方是否為B,因?yàn)橹挥蠦才可能產(chǎn)生正確 的會(huì)話密鑰并產(chǎn)生正確的密文,無論密文是否包括真正的通信數(shù)據(jù)M。所述加密算法E和E’為對(duì)稱密鑰加密算法。所述加密算法E和E’可以是AES或DES等對(duì)稱密碼算法。本發(fā)明的有益效果效率分析與現(xiàn)有技術(shù)相比,本發(fā)明的認(rèn)證過程在計(jì)算方面只需要對(duì)稱密鑰密碼 算法的加密和解密運(yùn)算,在通信代價(jià)方面只需要單方向傳輸身份信息和密文。如果身份信 息為32比特字符串,密文為128比特字符串,那么要傳輸?shù)臄?shù)據(jù)僅為160比特。會(huì)話密鑰 的計(jì)算也是一個(gè)hash函數(shù)的執(zhí)行,其速度非??臁0踩苑治鲇捎谒褂玫膶?duì)稱密碼算法E為DES或AES,那么敵手從截獲的認(rèn)證 消息中要獲得長期共享密鑰或者密文的困難程度也相當(dāng)于破譯DES或AES算法的困難程 度。敵手重放攻擊的機(jī)會(huì)也很小,只有在時(shí)間延遲所允許的范圍內(nèi)才是有效的。而且即使重 放攻擊成功,因?yàn)橄⒍际敲芪膫魉停瑪呈忠膊荒艿玫接袃r(jià)值的信息。因此,只有擁有共享 密鑰的用戶才能解密出消息,進(jìn)行身份認(rèn)證,最后建立會(huì)話密鑰。雖然消息在傳輸中有可能 被敵手截獲或者篡改,妨礙節(jié)點(diǎn)間的身份認(rèn)證和會(huì)話密鑰建立,并且可以發(fā)起重放攻擊。但 是敵手無法假冒某節(jié)點(diǎn)進(jìn)行身份認(rèn)證,從而達(dá)到建立會(huì)話密鑰的目的。也就是說,節(jié)點(diǎn)之間 不一定能夠成功完成身份認(rèn)證并建立會(huì)話密鑰,但是只有合法的節(jié)點(diǎn)之間才能成功完成這 一過程。在認(rèn)證信息中加入了當(dāng)前時(shí)間信息,并把時(shí)間信息嵌入到會(huì)話密鑰中,使每次的身 份認(rèn)證信息都會(huì)不同,這樣的話,即使用戶在某個(gè)終端上發(fā)出的某次身份認(rèn)證信息被泄漏, 也不會(huì)危及用戶以后的身份認(rèn)證和會(huì)話密鑰的安全??傮w來說,本發(fā)明的方法需要的計(jì)算和通信能耗低。認(rèn)證只用到對(duì)稱密碼算法,對(duì) 稱密碼算法需要的密鑰長度較短,加解密速度快。用于認(rèn)證的數(shù)據(jù)量小,需要的通信帶寬也 小。在認(rèn)證成功后,會(huì)話密鑰馬上可以形成。而且,雙向認(rèn)證可以通過簡單消息回復(fù)來實(shí)現(xiàn), 或結(jié)合實(shí)際加密使用的消息一起完成,實(shí)現(xiàn)效率上的提高。具體地,通信方A通過簡單加密計(jì)算就可產(chǎn)生認(rèn)證數(shù)據(jù),將此數(shù)據(jù)傳輸給B用于認(rèn) 證,B在完成對(duì)A的認(rèn)證的同時(shí)可以生成一個(gè)會(huì)話密鑰,A在發(fā)送完消息后就可以建立會(huì)話 密鑰,會(huì)話密鑰的建立和身份認(rèn)證幾乎可以同時(shí)進(jìn)行。在會(huì)話密鑰的建立過程中,只需計(jì)算 一個(gè)hash函數(shù),效率非常高。B可以回復(fù)一個(gè)消息用于A對(duì)B的認(rèn)證,也可以將認(rèn)證數(shù)據(jù)融 合到加密后的消息中,這樣更能節(jié)省通信資源,非常適用于資源受限通信環(huán)境中。
圖1為實(shí)施例1中節(jié)點(diǎn)設(shè)備A和B之間建立認(rèn)證和會(huì)話密鑰流程框圖;圖2為實(shí)施例2中節(jié)點(diǎn)設(shè)備A和B之間建立認(rèn)證和會(huì)話密鑰流程框圖。
具體實(shí)施例方式本發(fā)明在具體實(shí)施過程中,因?yàn)槭褂脤?duì)稱加密算法,通信雙方要求有預(yù)置的共享 密鑰。在每個(gè)節(jié)點(diǎn)上預(yù)置共享密鑰的密鑰預(yù)分配的方法必須是高效的,因?yàn)樵诿總€(gè)節(jié)點(diǎn)的能量是非常有限的。其次,密鑰的安全性也是一個(gè)很重要的因素,要求每個(gè)節(jié)點(diǎn)都能夠安全 存放共享密鑰。如果長期的共享密鑰一旦泄露,就會(huì)帶來很大的安全隱患,敵手可以假冒 用戶進(jìn)行身份的認(rèn)證和會(huì)話密鑰的建立,因此必須確保每個(gè)節(jié)點(diǎn)的長期共享密鑰是不可讀 的。一個(gè)被俘獲的節(jié)點(diǎn),一旦被打開,這個(gè)節(jié)點(diǎn)的包括長期共享密鑰的一些數(shù)據(jù)就會(huì)消失, 以確保長期密鑰不被竊取。用戶進(jìn)行身份認(rèn)證時(shí),要求時(shí)鐘幾乎同步,因此,如果兩個(gè)節(jié)點(diǎn) 不在一個(gè)時(shí)區(qū)內(nèi),可以通過一時(shí)鐘服務(wù)器定期調(diào)節(jié)節(jié)點(diǎn)的時(shí)間。用戶在消息(IDa,Ek(IDa, T))中都加入了時(shí)間戳T是用來保證消息的新鮮性,并且在收到消息后,要檢查時(shí)間延遲是 否在規(guī)定的范圍以內(nèi)。這個(gè)允許的時(shí)間延遲的設(shè)定要大小適中,如果允許的時(shí)間延遲偏小, 則會(huì)因?yàn)榫W(wǎng)絡(luò)傳輸速度等原因造成協(xié)議的可用性差。如果允許的時(shí)間延遲偏大,則會(huì)給重 放攻擊創(chuàng)造條件。在物連網(wǎng)環(huán)境下,允許的時(shí)間延遲相對(duì)較小,因?yàn)樵谖镞B網(wǎng)中節(jié)點(diǎn)的生命 周期相對(duì)較小,時(shí)間延遲偏大有可能會(huì)在節(jié)點(diǎn)的生命周期內(nèi),完成的通信量較少,使得網(wǎng)絡(luò) 不實(shí)用。在身份認(rèn)證完成后,雙方建立的會(huì)話密鑰中含有時(shí)間戳,因?yàn)闀r(shí)間戳是一時(shí)鮮值, 可以隨機(jī)化最后的會(huì)話密鑰,提高會(huì)話密鑰的安全性。需要說明的是,節(jié)點(diǎn)間長期共享密鑰 的建立可以通過一些安全有效的密鑰預(yù)分配方案實(shí)現(xiàn),具體的實(shí)現(xiàn)方式不在本發(fā)明的考慮 范圍內(nèi)。實(shí)施例1 使用對(duì)稱密鑰加密算法DES的單向認(rèn)證如上所述,本發(fā)明是基于對(duì)稱密碼,在任意兩個(gè)節(jié)點(diǎn)之間已經(jīng)建立了共享密鑰,而 且在時(shí)鐘幾乎同步的前提下進(jìn)行身份認(rèn)證并建立會(huì)話密鑰的。其具體步驟如下1)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B之間預(yù)置一長期共享密鑰k。在密鑰預(yù)分配階段,首先產(chǎn)生一個(gè)大的密鑰池G和密鑰標(biāo)識(shí);然后隨機(jī)抽取不重 復(fù)的幾個(gè)密鑰組成密鑰鏈;最后把不同的密鑰鏈裝載到不同傳感器節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)都要發(fā) 現(xiàn)周圍與其有共享密鑰的節(jié)點(diǎn),僅僅存在共享密鑰的節(jié)點(diǎn)之間才被認(rèn)為是連接的。在任意 兩個(gè)節(jié)點(diǎn)都有共享密鑰的情況下,如果用戶A要向用戶B發(fā)起認(rèn)證并建立會(huì)話密鑰,用戶A 找到和用戶B的共享密鑰k,密鑰長度為64位。2)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B上各自設(shè)置一時(shí)鐘,所述時(shí)鐘與標(biāo)準(zhǔn)時(shí)間的誤 差不超過TO秒,TO秒為2-3秒,節(jié)點(diǎn)設(shè)備A與節(jié)點(diǎn)B的時(shí)鐘設(shè)置為幾乎同步。3)在節(jié)點(diǎn)設(shè)備A和B點(diǎn)之間內(nèi)置對(duì)稱密鑰加密算法E,E為DES算法。DES算法使用一個(gè)56位的密鑰以及附加的8位奇偶校驗(yàn)位,產(chǎn)生最大64位的分 組大小。這是一個(gè)迭代的分組密碼,使用稱為Feistel的技術(shù),其中將加密的文本塊分成兩 半。使用子密鑰對(duì)其中一半應(yīng)用循環(huán)功能,然后將輸出與另一半進(jìn)行“異或”運(yùn)算;接著交 換這兩半,這一過程會(huì)繼續(xù)下去,但最后一個(gè)循環(huán)不交換。DES使用16個(gè)循環(huán)。4)在節(jié)點(diǎn)設(shè)備A和B之間建立認(rèn)證和會(huì)話密鑰。(1)節(jié)點(diǎn)設(shè)備A對(duì)消息進(jìn)行加密,得到密文C = DESk(IDA,T),將密文和節(jié)點(diǎn)設(shè)備A 的身份信息發(fā)送給節(jié)點(diǎn)B,具體為(IDa,DESk(IDa, Τ)),其中IDa為節(jié)點(diǎn)設(shè)備A的身份信息,k 為密鑰,加密算法E為DES算法,T為節(jié)點(diǎn)設(shè)備A發(fā)送時(shí)當(dāng)前時(shí)間;同時(shí)節(jié)點(diǎn)設(shè)備A計(jì)算會(huì) 話密鑰 sk = H (IDa, IDb, k,Τ);(2)節(jié)點(diǎn)B收到節(jié)點(diǎn)設(shè)備A發(fā)出的信息,找到與節(jié)點(diǎn)設(shè)備A的共享密鑰k,做解密 運(yùn)算DE^1 (C),得到(ID' A,T),然后檢查ID' A=IDjnT' -T彡Δ T是否都成立,其中 T'為B收到消息的時(shí)間,ΔΤ是預(yù)先設(shè)定的時(shí)間延遲范圍,可以設(shè)定為3至5秒鐘。如果這兩項(xiàng)有一項(xiàng)不成立,拋棄密文。如果兩者都成立,則認(rèn)證通過。(3)認(rèn)證通過后,節(jié)點(diǎn)B與節(jié)點(diǎn)設(shè)備A共享會(huì)話密鑰,共享的會(huì)話密鑰為Sk = H (IDa, IDb, k,Τ)或 sk = H(k,Τ)。實(shí)施例2 使用對(duì)稱密鑰加密算法AES的雙向認(rèn)證1)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B之間預(yù)置一長期共享密鑰k。長期共享密鑰k 通過一個(gè)服務(wù)器產(chǎn)生,密鑰長度128位。隨著對(duì)稱密碼的發(fā)展,DES數(shù)據(jù)加密標(biāo)準(zhǔn)算法由于密鑰長度較小(56位),已經(jīng)不 適應(yīng)當(dāng)今分布式開放網(wǎng)絡(luò)對(duì)數(shù)據(jù)加密安全性的要求,因此1997年NIST公開征集新的數(shù)據(jù) 加密標(biāo)準(zhǔn),即AES。AES是分組密鑰,算法輸入128位數(shù)據(jù),密鑰長度也是128位。每一輪都 需要一個(gè)與輸入分組具有相同長度的擴(kuò)展密鑰Expandedkey的參與。由于外部輸入的加密 密鑰K長度有限,所以在算法中要用一個(gè)密鑰擴(kuò)展程序(Keyexpansion)把外部密鑰K擴(kuò)展 成更長的比特串,以生成各輪的加密和解密密鑰。2)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B上各自設(shè)置一時(shí)鐘,所述時(shí)鐘與標(biāo)準(zhǔn)時(shí)間的誤 差不超過TO秒,TO秒的范圍為2-3秒,節(jié)點(diǎn)設(shè)備A與節(jié)點(diǎn)B的時(shí)鐘設(shè)置為幾乎同步。3)在節(jié)點(diǎn)設(shè)備A和B點(diǎn)之間內(nèi)置對(duì)稱密鑰加密算法E,E為AES算法。4)在節(jié)點(diǎn)設(shè)備A和B之間建立認(rèn)證和會(huì)話密鑰。(1)節(jié)點(diǎn)設(shè)備A對(duì)消息進(jìn)行加密,得到密文C = AESk (IDa, T),將密文和節(jié)點(diǎn)設(shè)備A 的身份信息發(fā)送給節(jié)點(diǎn)B,具體為(IDa, AESk(IDa, T)),k為密鑰,加密算法E為AES算法,T 為節(jié)點(diǎn)設(shè)備A發(fā)送時(shí)當(dāng)前時(shí)間;(2)節(jié)點(diǎn)B收到節(jié)點(diǎn)設(shè)備A發(fā)出的加密信息,找到與節(jié)點(diǎn)設(shè)備A的共享密鑰k,做 解密運(yùn)算JE1^1(C),得到(ID' A,T),然后檢查ID' A=IDjnT' -T彡ΔΤ是否都成立,其 中T'為B收到消息的時(shí)間,ΔΤ是預(yù)先設(shè)定的時(shí)間延遲范圍,可以設(shè)定為3至5秒鐘。如 果這兩項(xiàng)有一項(xiàng)不成立,拋棄密文。如果兩者都成立,則認(rèn)證通過。(3)認(rèn)證通過后,節(jié)點(diǎn)B與節(jié)點(diǎn)設(shè)備A共享會(huì)話密鑰,共享的會(huì)話密鑰為Sk = H (IDa, IDb, k,Τ)或 sk = H(k,Τ)。(4)節(jié)點(diǎn)B對(duì)節(jié)點(diǎn)設(shè)備A的認(rèn)證通過后,如果還需要返回?cái)?shù)據(jù)用于A對(duì)B的認(rèn)證, 這時(shí)可以與數(shù)據(jù)M的加密一起進(jìn)行,加密密文為E ‘ sk (IDB,Μ),發(fā)送應(yīng)答信息AESsk (IDa, IDb, T,M)給A。A通過計(jì)算會(huì)話密鑰sk,可以成功解密得到(IDA,IDB,T,M),其中前面的部分?jǐn)?shù) 據(jù)用于A對(duì)B的認(rèn)證,即認(rèn)證節(jié)點(diǎn)B的身份是否正確;后面部分?jǐn)?shù)據(jù)是擬接收的消息M。需要注意的是,在本實(shí)施例中節(jié)點(diǎn)B給節(jié)點(diǎn)設(shè)備A的應(yīng)答信息中,使用了同一 AES 算法,但不同的加密密鑰,這在實(shí)際中為了節(jié)約資源,特別是資源受限系統(tǒng)常用的方法。當(dāng) 然,在資源不是非常受限的情況下,B對(duì)A的應(yīng)答可以使用不同的AES算法。同時(shí)B也可以單獨(dú)發(fā)送認(rèn)證數(shù)據(jù)給A,不包括數(shù)據(jù)M,這與跟數(shù)據(jù)M —起加密沒有 本質(zhì)區(qū)別,但在A首先給B發(fā)送數(shù)據(jù)的情況下有必要。
8
權(quán)利要求
一種基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,包括如下步驟1)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B之間預(yù)置一長期共享密鑰k;2)在節(jié)點(diǎn)A和B上各自設(shè)置一時(shí)鐘;3)在節(jié)點(diǎn)A和B點(diǎn)之間內(nèi)置加密算法E和hash函數(shù)H(x);4)在節(jié)點(diǎn)A和B之間建立認(rèn)證和會(huì)話密鑰,方法為節(jié)點(diǎn)A發(fā)送經(jīng)加密算法E和長期共享密鑰k加密的密文和A的相關(guān)信息給節(jié)點(diǎn)B,節(jié)點(diǎn)A計(jì)算會(huì)話密鑰;節(jié)點(diǎn)B利用解密算法和長期共享密鑰k對(duì)密文解密,節(jié)點(diǎn)B將解密后的信息與節(jié)點(diǎn)A的相關(guān)信息進(jìn)行對(duì)照,如果信息合法,認(rèn)證通過,則節(jié)點(diǎn)A和B之間共享會(huì)話密鑰;會(huì)話密鑰為hash函數(shù)H(x)。
2.如權(quán)利要求1所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于所述節(jié)點(diǎn) A和B之間建立認(rèn)證和會(huì)話密鑰的具體過程如下(1)節(jié)點(diǎn)A將至少包含有經(jīng)加密算法E加密的密文和節(jié)點(diǎn)A身份信息的數(shù)據(jù)(IDa,C) 發(fā)送給節(jié)點(diǎn)B,其中IDa為節(jié)點(diǎn)A的身份信息,密文C = Ek(IDA,T),k為密鑰,E為加密算法, T為節(jié)點(diǎn)A發(fā)送時(shí)當(dāng)前時(shí)間;(2)節(jié)點(diǎn)B收到節(jié)點(diǎn)A發(fā)出的信息,對(duì)密文進(jìn)行解密,獲得解密后的ID/和T;進(jìn)行認(rèn) 證,判斷ID' a=IDa*T' -T彡ΔΤ是否成立,其中Τ’為節(jié)點(diǎn)B收到密文時(shí)的當(dāng)前時(shí)間, Δ T為預(yù)先設(shè)定的時(shí)間延遲范圍,若兩者都成立,認(rèn)證通過;(3)認(rèn)證通過后,節(jié)點(diǎn)B與節(jié)點(diǎn)A共享會(huì)話密鑰,其會(huì)話密鑰為sk= H(IDa, IDb, k,Τ) 或 sk = H(k, Τ)。
3.如權(quán)利要求2所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于節(jié)點(diǎn)A發(fā) 送數(shù)據(jù)后,在認(rèn)證的同時(shí)計(jì)算會(huì)話密鑰。
4.如權(quán)利要求3所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于所述節(jié)點(diǎn) A發(fā)送給節(jié)點(diǎn)B的信息中還包括節(jié)點(diǎn)B的身份信息IDB。
5.如權(quán)利要求3或4所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于在節(jié) 點(diǎn)B與節(jié)點(diǎn)A建立共享會(huì)話密鑰后還增加節(jié)點(diǎn)A對(duì)節(jié)點(diǎn)B的認(rèn)證,其步驟如下節(jié)點(diǎn)B在對(duì)節(jié)點(diǎn)A的認(rèn)證成功之后,返回應(yīng)答信息給節(jié)點(diǎn)A,應(yīng)答信息為經(jīng)加密算法E’ 加密后的密文E' sk(X),其中,X為IDB、IDa和T中的一個(gè)或它們的任意組合,sk為共享會(huì) 話密鑰,T為節(jié)點(diǎn)B發(fā)送應(yīng)答信息時(shí)的當(dāng)前時(shí)間;節(jié)點(diǎn)A收到應(yīng)答信息后進(jìn)行解密并檢查解 密后信息的合法性。
6.如權(quán)利要求3或4所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于在節(jié) 點(diǎn)B與節(jié)點(diǎn)A建立共享會(huì)話密鑰后還增加節(jié)點(diǎn)A對(duì)節(jié)點(diǎn)B的認(rèn)證,其步驟如下節(jié)點(diǎn)B在對(duì)節(jié)點(diǎn)A的認(rèn)證成功之后,返回應(yīng)答信息給節(jié)點(diǎn)A,應(yīng)答信息為經(jīng)加密算法E’ 加密后的密文E' sk(X,M),其中X為IDB、IDa和T中的一個(gè)或它們的任意組合,sk為共享 會(huì)話密鑰,T為節(jié)點(diǎn)B發(fā)送應(yīng)答信息時(shí)的當(dāng)前時(shí)間;節(jié)點(diǎn)A收到應(yīng)答信息后進(jìn)行解密并認(rèn)證 解密后的信息。
7.如權(quán)利要求5所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于所述的加 密算法E和E’為對(duì)稱密鑰加密算法。
8.如權(quán)利要求7所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于所述加密 算法E和E,為AES或DES密碼算法。
9.如權(quán)利要求6所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于所述的加 密算法E和E’為對(duì)稱密鑰加密算法。
10.如權(quán)利要求9所述的基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其特征在于所述加 密算法E和E’為AES或DES密碼算法。
全文摘要
本發(fā)明公開了一種基于對(duì)稱密碼的弱認(rèn)證和密鑰協(xié)商方法,其步驟包括1)在任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備A和B之間預(yù)置一長期共享密鑰k;2)在節(jié)點(diǎn)A和B上各自設(shè)置一時(shí)鐘,各時(shí)鐘與標(biāo)準(zhǔn)時(shí)間的誤差不超過T0秒;3)在節(jié)點(diǎn)A和B點(diǎn)之間內(nèi)置加密算法E;4)利用加密算法E和長期共享密鑰k在節(jié)點(diǎn)A和B之間建立認(rèn)證和會(huì)話密鑰。本發(fā)明的方法需要的計(jì)算和通信能耗低,執(zhí)行速度快,認(rèn)證效率高,非常適用于資源受限通信環(huán)境中。本發(fā)明由于使用了對(duì)稱密碼算法DES或AES,那么敵手截獲認(rèn)證消息獲得長期共享密鑰或者密文的困難程度也相當(dāng)于破譯DES或AES算法的困難程度,保證了密文和密鑰的安全性。
文檔編號(hào)H04L9/08GK101917270SQ20101024395
公開日2010年12月15日 申請日期2010年8月3日 優(yōu)先權(quán)日2010年8月3日
發(fā)明者武傳坤, 滕濟(jì)凱 申請人:中國科學(xué)院軟件研究所