專利名稱:一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密認(rèn)證方法
一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密認(rèn)證方法
(-)技術(shù)領(lǐng)域
本發(fā)明涉及一種保證自組織分組無線網(wǎng)(Ad hoc網(wǎng)絡(luò))端到端通信安全的加密、 認(rèn)證方法,尤其涉及一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密、認(rèn)證方法,屬于無線網(wǎng)絡(luò)技術(shù)領(lǐng) 域。
背景技術(shù):
保證通信安全是網(wǎng)絡(luò)應(yīng)用所必須面對的挑戰(zhàn),在無線環(huán)境中尤其如此。本發(fā)明是 基于Ad Hoc網(wǎng)絡(luò)的,它不需要基礎(chǔ)設(shè)施的支持,可通過節(jié)點自由的組網(wǎng)實現(xiàn)通信,針對Ad hoc網(wǎng)絡(luò)的研究是由軍事通信應(yīng)用而發(fā)起的,目前軍事應(yīng)用仍然是其主要的應(yīng)用領(lǐng)域;同 時它在民用領(lǐng)域也有著非常廣闊的應(yīng)用前景,可支持移動商務(wù)、移動會議、自然或人為災(zāi)難 營救過程中的信息交換以及臨時性交互式通信等。可以預(yù)測,Ad hoc網(wǎng)絡(luò)在未來的移動通 信領(lǐng)域中將扮演非常重要的角色。與此同時,由于Ad Hoc網(wǎng)絡(luò)具有的開放媒質(zhì)、動態(tài)拓?fù)洹?缺乏集中式管理、資源受限等特點,其通信安全面臨著巨大的挑戰(zhàn)首先,由于通信使用無 線信道,使得Ad Hoc網(wǎng)絡(luò)易于受到鏈路攻擊,從被動的竊聽到主動的扮演、消息重發(fā)、消息 破壞,竊聽能使得攻擊者獲得敏感信息而破壞機密性;主動攻擊可能造成攻擊者刪除、修改 消息甚至扮演一個合法節(jié)點,破壞了可用性、完整性、認(rèn)證和不可否認(rèn)性。在上述研究背景下,為了實現(xiàn)信息安全,需要通過兩個基本途徑數(shù)據(jù)加密以及身 份認(rèn)證。在Ad hoc網(wǎng)絡(luò)中面對實際應(yīng)用,需要將兩者結(jié)合,形成完整的安全傳輸協(xié)議。目 前用于解決Ad hoc網(wǎng)絡(luò)通信安全問題的協(xié)議很多,但都有各自的優(yōu)勢和不足,有的是安全 性不夠,對于某些攻擊無法抵抗;有的是帶來的系統(tǒng)開銷太大,不利于具體實施。所以在這 個方向上還需要進(jìn)行更多的研究,不斷的進(jìn)行完善。本發(fā)明涉及XOR運算,E⑶H密鑰協(xié)商算法,AES加密算法。XOR運算即異或運算,表示為 ,是二進(jìn)制運算。m XOR η的運算過程是將m,η轉(zhuǎn) 化為2進(jìn)制數(shù),再進(jìn)行對比,每個數(shù)位上的0或1如果相同,那么結(jié)果就取0,如果不同就取 1,將得到的結(jié)果轉(zhuǎn)化為原來進(jìn)制的數(shù),就是運算結(jié)果。即1 1 = 0,0 0 = 0,1 0=1,0 1 = 1XOR運算的特點是高效,運算速度快。采用XOR運算作加密操作,若使用暴力破解, 如所述m XOR n = k,假設(shè)k有L(L為m、n中位數(shù)較大的數(shù)的位數(shù))位長度,那么單從k去 反推m和η的值,有f種可能的結(jié)果,可見XOR運算的加密強度還是很高的。E⑶H(橢圓曲線Diffie-Hellman)密鑰協(xié)商算法,使兩個用戶可以創(chuàng)建共享的密 鑰,并且這兩個用戶可以在不安全的公共媒體上完成此操作,而不必事先交換任何私有信 息。該密鑰協(xié)商算法通常用于派生密鑰材料,對稱算法(AES算法)可以使用該密鑰材料對 后續(xù)消息進(jìn)行加密。ECDH密鑰協(xié)商算法依賴兩個公共參數(shù)p和g,參數(shù)ρ是一個大的質(zhì)數(shù), 參數(shù)g是一個小于P的整數(shù),這兩個參數(shù)可以通過不安全的線路進(jìn)行交換。進(jìn)行密鑰協(xié)商 的兩個節(jié)點A和B收到這兩個公共參數(shù)后,分別選擇一個整數(shù)作為私鑰,假設(shè)A選擇了 a,B 選擇了 b ;然后,A和B使用公共參數(shù)及其私鑰創(chuàng)建公鑰,A使用(g~a)mod ρ, B使用(g~b)mod p,這些是非對稱密鑰,因為它們不匹配;A和B交換這些公鑰,并使用它們計算共享的 密鑰,雖然A和B不知道彼此的私鑰,E⑶H算法卻能保證A和B將計算出同一共享密鑰。 計算方法如下A 計算(((g"b)mod ρ) “a)mod p,B 計算(((g"a)mod p)"b)mod p,由 g~ (ab) = g~(ba)可推導(dǎo)出(((g"b)mod ρ) "a)mod ρ = (((g"a)mod p) "b)mod p。如果 p、g、a 禾口 b 是較小的值,那么它們生成的加密消息很容易被暴力攻擊破壞,在實際情況中,會取較大的 數(shù)。在本發(fā)明涉及的加密認(rèn)證方法中,通信雙方交換的密鑰協(xié)商信息會經(jīng)過XOR運算進(jìn)行 加密,所以不需要取大數(shù)也能達(dá)到足夠的安全強度,避免帶來過大的系統(tǒng)計算開銷。AES加密算法,即高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard),又稱 Ri jndael 加密法,是美國聯(lián)邦政府采用的一種對稱分組加密標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)用來替代原先的DES,已 經(jīng)被多方分析且廣為全世界所使用。經(jīng)過五年的甄選流程,高級加密標(biāo)準(zhǔn)由美國國家標(biāo)準(zhǔn) 與技術(shù)研究院(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日 成為有效的標(biāo)準(zhǔn)。2006年,高級加密標(biāo)準(zhǔn)已然成為對稱密鑰加密中最流行的算法之一。
發(fā)明內(nèi)容
(1)發(fā)明目的本發(fā)明的目的是提供了一種Ad hoc網(wǎng)絡(luò)傳輸層上的加密認(rèn)證方法,它是為解決Ad hoc網(wǎng)絡(luò)節(jié)點間端到端的通信安全問題而應(yīng)運產(chǎn)生的,其實現(xiàn)的功能包括對通信雙方的身 份進(jìn)行認(rèn)證、對數(shù)據(jù)進(jìn)行加密,并盡量避免帶來太大的系統(tǒng)開銷。(2)技術(shù)方案為了達(dá)到上述目的,本發(fā)明的技術(shù)方案如下Ad hoc網(wǎng)絡(luò)中的兩個節(jié)點A、B,直接或者經(jīng)過多跳路由進(jìn)行通信,在數(shù)據(jù)傳輸開始 之前,會在傳輸層上進(jìn)行握手協(xié)商,進(jìn)行端對端認(rèn)證并協(xié)商密鑰對接下來的數(shù)據(jù)進(jìn)行加密。 下面將結(jié)合
在所述兩節(jié)點間進(jìn)行傳輸層上的加密認(rèn)證的技術(shù)方案。本發(fā)明一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密、認(rèn)證方法,其特征在于,所述方法包 括五個部分配置階段,認(rèn)證階段,密鑰協(xié)商階段,加密過程,密鑰更新流程。這五個部分之 間的相互關(guān)系如附圖1所示,在部署Ad hoc網(wǎng)絡(luò)節(jié)點前先進(jìn)入配置階段,配置完成后可部 署配置好的節(jié)點;在每次通信會話開始時先進(jìn)入認(rèn)證階段,讓需要進(jìn)行通信的兩個節(jié)點彼 此通過對方的認(rèn)證;然后就可以進(jìn)入密鑰協(xié)商階段,在此階段里,通信的兩個節(jié)點通過協(xié)商 算法協(xié)商密鑰;成功后即可進(jìn)入加密階段,使用協(xié)商好的密鑰材料,對接下來的通信消息進(jìn) 行加密(這里使用分組加密方法AES);在會話工程中,一方可以發(fā)起密鑰更新請求,進(jìn)入密 鑰更新流程,密鑰更新過程即雙方重新進(jìn)行一次密鑰協(xié)商,產(chǎn)生新的協(xié)商密鑰,然后重新進(jìn) 入加密階段,密鑰更新能帶來更高的安全性。本發(fā)明所述的加密、認(rèn)證方法的主要思想和各 部分的詳細(xì)步驟詳述如下。本發(fā)明一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密、認(rèn)證方法,其步驟如下1.配置階段配置階段主要是在各節(jié)點中部署節(jié)點ID表,建立節(jié)點及節(jié)點ID的對應(yīng)關(guān)系???以假設(shè)Ad hoc網(wǎng)絡(luò)中的每個節(jié)點(如手持終端,移動電腦,車載終端甚至傳感器節(jié)點)都 有一定的存儲能力和計算能力,本加密認(rèn)證方法對節(jié)點的存儲空間要求較低,會隨著網(wǎng)絡(luò) 中節(jié)點數(shù)量的增加而有所增加,但能保持在千字節(jié)(KB)數(shù)量級上,以目前的硬件條件完全可以達(dá)到。在配置階段,每個節(jié)點在自己的內(nèi)存中存儲一份節(jié)點身份(本文后面將用“節(jié)點 ID表”表示,身份用ID即Identity表示)表,如圖2所示,表中包含節(jié)點名稱和節(jié)點ID兩 列,網(wǎng)絡(luò)中的每個節(jié)點對應(yīng)表中的一條記錄,節(jié)點名稱可為節(jié)點的IP、編號等等,是可明文 發(fā)送的信息;每個節(jié)點都有唯一的節(jié)點ID作為該節(jié)點的標(biāo)識碼與之相對應(yīng),在認(rèn)證彼此身 份時會被使用,節(jié)點ID必須密文發(fā)送,所以這份節(jié)點ID表不能泄露,防止攻擊者利用該表 破壞認(rèn)證機制,進(jìn)行冒名攻擊。2.認(rèn)證階段如在配置階段所述,節(jié)點具備一定的計算能力,本方法涉及的算法復(fù)雜度都比較 低,比如異或(X0R,記作 )運算、雜湊運算,都可以在節(jié)點計算能力受限的條件下進(jìn)行,下 面介紹具體步驟。本發(fā)明認(rèn)證階段的具體步驟如下步驟1 所述節(jié)點A生成隨機數(shù)Ra,并計算MACa = h(RA IDa),MACa為所述節(jié)點A 的消息認(rèn)證碼(message authentication code), h()為一雜湊函數(shù),IDa為所述節(jié)點A的 標(biāo)識碼(ID)。步驟2 所述節(jié)點A查詢節(jié)點ID表得到所述節(jié)點B的認(rèn)證碼IDB,將RA,IDa, IDb 一 起做XOR運算,將MACa,Ra IDa IDb發(fā)送給所述節(jié)點B。
步驟3:所述節(jié)點B將接收到的Ra IDa IDb存儲起來,查詢節(jié)點ID表得 到所述節(jié)點 A 的認(rèn)證碼 IDa,并計算(Ra IDa) ‘ = (Ra IDa IDb) IDb, MACa'= h((RA IDa)'),判斷MACa與MACa'是否相等,若相等,則所述節(jié)點B認(rèn)證所述節(jié)點A成 功;否則,認(rèn)證失敗,握手失敗。步驟4:若步驟3中認(rèn)證成功,所述節(jié)點B生成隨機數(shù)Rb,并計算出MACb = h(RB IDb),MACb為所述節(jié)點B的消息認(rèn)證碼。步驟5 所述節(jié)點B,將Rb,IDb, IDa 一起做XOR運算,將MACB,Rb IDb IDa發(fā)送 給所述節(jié)點A。步驟6 所述節(jié)點A將接收到的Rb IDb IDa存儲起來,計算(Rb IDb)‘= (Rb IDb IDa) IDajMACb' = h ( (Rb IDb)‘),判斷 MACb 與 MACb'是否相等,若相等, 則所述節(jié)點A認(rèn)證所述節(jié)點B成功,雙方彼此認(rèn)證成功,認(rèn)證階段完成;否則,認(rèn)證失敗,握 手失敗。3.密鑰協(xié)商階段本發(fā)明密鑰協(xié)商階段的具體步驟如下步驟7 所述節(jié)點A生成整數(shù)a作為自己的私鑰。步驟8 所述節(jié)點A計算Ra ((g"a)mod ρ),并將其發(fā)送給所述節(jié)點B。步驟9 所述節(jié)點B生成整數(shù)b作為自己的私鑰。步驟10 :所述節(jié)點B使用步驟3中存儲的Ra IDa IDb,計算出Ra = (Ra IDa IDb) (IDb IDa),進(jìn)而計算 K= ((Ra (Ra ((g"a)mod p)))"b)mod ρ = (((g"a)mod p)"b)mod p,K為協(xié)商后的共享密鑰。步驟11 所述節(jié)點B計算Rb ((g"b)mod ρ),并將其發(fā)送給所述節(jié)點A。步驟12 :所述節(jié)點A使用步驟6中存儲的Rb IDb IDa,計算Rb = (Rb IDb IDa) (IDb IDA),進(jìn)而計算 K= ((Rb (Rb ((g"b)mod p)))"a)mod ρ = (((g"b)mod p)"a)mod p,K為協(xié)商后的共享密鑰,密鑰協(xié)商階段完成。4.加密過程
在完成認(rèn)證、密鑰協(xié)商后,所述兩個節(jié)點可使用共享密鑰K作為AES加密算法的密鑰材料,對在它們之間交換的消息進(jìn)行加密,保證通信安全。AES加密算法目前已成為對稱 密鑰加密中最流行的算法之一,有非常成熟和豐富的實現(xiàn)方法,包括軟件實現(xiàn)(如JAVA,C# 中的相關(guān)類)和硬件實現(xiàn)(如AES加密算法芯片),由于本發(fā)明只是闡述方法實現(xiàn)的思想, 具體實現(xiàn)可根據(jù)具體的實施環(huán)境(網(wǎng)絡(luò)環(huán)境,節(jié)點類型等),采用最合適的實現(xiàn)方法。5.密鑰更新流程在通信進(jìn)行一段時間后所述節(jié)點還可以發(fā)起密鑰更新流程,密鑰更新可以進(jìn)一步 減小密鑰被破譯的可能,為數(shù)據(jù)通信帶來更大的安全強度。假設(shè)所述密鑰更新流程由所述 節(jié)點A發(fā)起,其密鑰更新流程的步驟如下步驟13:所述節(jié)點A生成整數(shù)a'作為新的私鑰,要求a'不等于a。步驟14 所述節(jié)點A計算Ra ((g"a' )mod ρ),并將其發(fā)送給所述節(jié)點B。步驟15:所述節(jié)點B生成整數(shù)b'作為新的私鑰,要求b'不等于b。步驟16 所述節(jié)點 B 計算 K' = ((Ra (Ra ((g~a' )mod p)))"b' )mod ρ = (((g"a' )mod p)"b' )mod p, K'為更新后的共享密鑰。步驟17 所述節(jié)點B計算Rb ((g"b' )mod ρ),并將其發(fā)送給所述節(jié)點A。步驟18 所述節(jié)點 A 計算 K' = ((Rb (Rb ((g~b' )mod p)))"a' )mod ρ = (((g"b' )mod p)"a' )mod p,K'為更新后的共享密鑰,密鑰更新流程完成。(3)優(yōu)點及功效本發(fā)明一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密、認(rèn)證方法,其優(yōu)點是實現(xiàn)了相互通 信的兩個節(jié)點間的身份認(rèn)證、對密鑰協(xié)商、數(shù)據(jù)加密、密鑰更新的功能,并且產(chǎn)生的系統(tǒng)開 銷并不大。由于ECDH密鑰協(xié)商算法無法抵抗中間人攻擊,本發(fā)明所涉及方法先對兩個通信 節(jié)點進(jìn)行相互認(rèn)證,使攻擊者無法發(fā)起中間人攻擊;在密鑰協(xié)商過程中使用XOR算法對協(xié) 商信息進(jìn)行加密,這樣就可以不用選擇非常大的公共參數(shù)就能抵御暴力破解的攻擊,減小 了系統(tǒng)開銷;提供了密鑰更新的方法,減小了密鑰被破解的風(fēng)險。本發(fā)明申請書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
圖1本發(fā)明所述方法流程2本發(fā)明所述節(jié)點ID表圖3本發(fā)明所述認(rèn)證加密流程4本發(fā)明所述密鑰更新流程中符號說明如下Θ 異或運算符;“冪運算,如g~b指g的b次冪運算;h()雜湊運算符,如h (RB IDB)指求RB IDB的雜湊值。
具體實施例方式由于本發(fā)明主要是闡述方法實現(xiàn)的思想,具體實現(xiàn)可根據(jù)具體的實施環(huán)境(網(wǎng)絡(luò)環(huán)境,節(jié)點類型等),采用最合適的實現(xiàn)方法,下面在介紹本發(fā)明的技術(shù)方案的具體實施方 式時會采用一些具體的方法(如具體的雜湊函數(shù)等),但實際的實現(xiàn)并不限于所述的方法。 下面將結(jié)合附圖直觀的說明在兩節(jié)點間進(jìn)行傳輸層上的所述加密認(rèn)證方法的具體實施,圖 1為加密認(rèn)證方法流程圖;圖2為節(jié)點ID表;圖3為認(rèn)證加密流程;圖4為密鑰更新流程。 具體實施過程如下。本發(fā)明所述的一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密、認(rèn)證 方法,如圖1所示包括 五個部分配置階段,認(rèn)證階段,密鑰協(xié)商階段,加密過程,密鑰更新流程。在部署Ad hoc 網(wǎng)絡(luò)節(jié)點前先進(jìn)入配置階段,配置完成后可部署配置好的節(jié)點;在每次通信會話開始時先 進(jìn)入認(rèn)證階段,讓需要進(jìn)行通信的兩個節(jié)點彼此通過對方的認(rèn)證;然后就可以進(jìn)入密鑰協(xié) 商階段,在此階段里,通信的兩個節(jié)點通過協(xié)商算法協(xié)商密鑰;成功后即可進(jìn)入加密階段, 使用協(xié)商好的密鑰材料,對接下來的通信消息進(jìn)行加密(這里使用分組加密方法AES);在 會話工程中,一方可以發(fā)起密鑰更新請求,進(jìn)入密鑰更新流程,密鑰更新過程即雙方重新進(jìn) 行一次密鑰協(xié)商,產(chǎn)生新的協(xié)商密鑰,然后重新進(jìn)入加密階段,密鑰更新能帶來更高的安全 性。能組成Ad hoc網(wǎng)絡(luò)的節(jié)點種類很多,如手持終端,移動電腦,車載終端或者傳感器 節(jié)點,但要能應(yīng)用本發(fā)明所述的加密認(rèn)證方法,需要節(jié)點具有一定的軟、硬件條件。主要包 括(1)具有一定的存儲空間,本方法需要在每個節(jié)點中存儲一份節(jié)點ID表,并在通信過程 中需要存儲一些參數(shù),對存儲空間的具體要求與網(wǎng)絡(luò)的規(guī)模有關(guān),比如網(wǎng)絡(luò)中有1000個節(jié) 點,那么只需要最少4KB(具體的計算過程見下文)的存儲空間;如果網(wǎng)絡(luò)擴大100倍,包 含100000個(實際應(yīng)有中不會有這么大的ad hoc網(wǎng)絡(luò))節(jié)點,那么也只需最少6KB的存 儲空間,可見本方法對空間的要求并不高;(2)具有一定的計算能力,要求節(jié)點具有能運行 雜湊函數(shù)和指數(shù)計算的計算能力,鑒于其中雜湊算法復(fù)雜度較高,可以根據(jù)節(jié)點的實際硬 件計算水平選用其可以負(fù)擔(dān)的雜湊算法,比較常用的有MD5,SHA-I等,可以采用軟件實現(xiàn), 也可以采用硬件實現(xiàn)。不妨設(shè)兩個節(jié)點A和B,然后以這兩個節(jié)點間的加密認(rèn)證過程為例來具體闡述這 五個階段的具體實施方式
。1.配置階段在配置階段,在每個節(jié)點的內(nèi)存空間中存儲一份節(jié)點ID表,如圖2所示,表中包 含節(jié)點名稱和節(jié)點ID兩項,網(wǎng)絡(luò)中的每個節(jié)點對應(yīng)表中的一條記錄,節(jié)點名稱可為節(jié)點的 IP、編號等等;節(jié)點ID作為該節(jié)點的認(rèn)證碼與該節(jié)點相對應(yīng)。下面以采用編號做節(jié)點名稱 為例,在具有1000個節(jié)點的網(wǎng)絡(luò)中,節(jié)點名稱占用2字節(jié)(2字節(jié)可記錄(Γ65535的編號), 節(jié)點ID占用2字節(jié)就足夠,這樣的話所述網(wǎng)絡(luò)中需要配置到節(jié)點的節(jié)點ID表占用的存儲 空間僅為(2+2) X1000 = 4000字節(jié)即4KB。為了提高安全性,節(jié)點ID采用32位的認(rèn)證碼, 即4字節(jié),在這種情況下所述網(wǎng)絡(luò)的節(jié)點ID表也僅占6KB的存儲空間。在本例中節(jié)點ID 表中的記錄為A 節(jié)點名稱——0x0001,節(jié)點ID——0xE48269AC ;B 節(jié)點名稱——0x0002, 節(jié)點ID——0xl5240FEl,這里節(jié)點ID的生成方法不限(本例中采用的是以認(rèn)證碼和一個 隨機數(shù)作為參數(shù)處理產(chǎn)生),只要讓他們彼此不同即可。2.認(rèn)證階段在本階段需要進(jìn)行雜湊運算,雜湊運算是在信息安全領(lǐng)域有廣泛和重要應(yīng)用的密碼算法,主要作用是數(shù)據(jù)完整性驗證和消息認(rèn)證,其把任意有限長的輸入行映射到固定長的行。目前常用的雜湊函數(shù)有MD4,MD5,SHA-I, SHA-224, SHA-256等等,其中復(fù)雜度MD4, MD5 低于 SHA-I,SHA-224, SHA-256 等,相應(yīng)的安全性 SHA-224,SHA-256 高于 SHA-I,MD5 (MD5 算法在某種程度上已經(jīng)被破解,SHA-I也面臨被破解),可根據(jù)節(jié)點計算能力的強弱和對安 全性要求的高低選用具體雜湊函數(shù),在本例中闡述認(rèn)證階段的具體實施時使用MD5作為雜 湊函數(shù)。本發(fā)明認(rèn)證階段的具體步驟如下步驟1 所述節(jié)點A生成消息認(rèn)證碼MACa,具體公式為MACa = h (Ra IDa),Ra為一 隨機數(shù)(本例中可取與節(jié)點認(rèn)證碼一樣的長度,即32位),h()為雜湊函數(shù)(在本例中采用 MD5算法),在本例中取Ra = 0x014A0513, IDa為本例中所述節(jié)點A的認(rèn)證碼0xE48269AC, 則 Ra IDa = 0x014A0513 0xE48269AC = 0000 0001 0100 1010 0000 0101 0001 0011 1110 0100 1000 0010 0110 1001 1010 1100 = 1110 0101 1100 1000 0110 1100 1011 1111 = 0xE5C86CBF,MACa = h (Ra IDa) = hm5 (0xE5C86CBF) = Ox 2765C463684462 2CCD6D8F4039E67295。步驟2 所述節(jié)點A查詢節(jié)點ID表得到所述節(jié)點B的認(rèn)證碼IDb = 0xl5240FEl, 將Ra,IDa, IDb—起做XOR運算,將MACa,Ra IDa IDb發(fā)送給所述節(jié)點B,在本例中 Ra IDa IDb = 0x014A0513 0xE48269AC 0xl5240FEl = 0xF0EC635E。步驟3:所述節(jié)點B將接收到的Ra IDa IDb存儲起來,查詢節(jié)點ID表得 到所述節(jié)點 A 的認(rèn)證碼 IDa,并計算(Ra IDa) ‘ = (Ra IDa IDb) IDb, MACa'= h((RA IDa)'),判斷MACa與MACa'是否相等,若相等,則所述節(jié)點B認(rèn)證所述節(jié)點A成 功;否則,認(rèn)證失敗,握手失敗。在本例中(Ra IDa) ‘ = 0xF0EC635E 0xl5240FEl = 0xE5C86CBF,MACa' = h ( (Ra IDa) ‘ ) = hm5 (0xE5C86CBF) = 0x2765C4636844622CCD6D8 F4039E67295, MACa' = MACa,認(rèn)證成功。步驟4:若步驟3中認(rèn)證成功,所述節(jié)點B生成隨機數(shù)Rb,并計算出MACb = h(RB IDb),MACB為所述節(jié)點B的消息認(rèn)證碼。在本例中,生成& = 0XC57D01B6,計算MACb =h(RB IDb) = hm5 (0xC57D01B6 0xl5240FEl) = hB5 (0xD0590E57) = 0xAF9AlD41714 lBDD742C77AdlEA57C00E。步驟5 所述節(jié)點B,將Rb,IDb, IDa 一起做XOR運算,將MACB,Rb IDb IDa發(fā)送 給所述節(jié)點 A,在本例中 Rb IDb IDa = 0xC57D01B6 0xl5240FEl 0xE48269AC = 0x34DB67FB。步驟6 所述節(jié)點A將接收到的Rb IDb IDa存儲起來,計算(Rb IDb)‘= (Rb IDb IDa) IDajMACb' = h ( (Rb IDb)‘),判斷 MACb 與 MACb'是否相等,若相等, 則所述節(jié)點A認(rèn)證所述節(jié)點B成功,雙方彼此認(rèn)證成功;否則,認(rèn)證失敗,握手失敗。本例 中(Rb IDb) ‘ = (Rb IDb IDa) IDa = 0x34DB67FB 0xE48269AC = 0xD0590E57, MACb' = h ( (Rb IDb) ‘ ) = hB5 (0xD0590E57) = 0xAF9AlD417141BDD742C77AdlEA57C00E, 認(rèn)證成功,至此認(rèn)證階段完成。3.密鑰協(xié)商階段在本階段使用ECDH密鑰協(xié)商算法進(jìn)行密鑰協(xié)商,在ECDH密鑰協(xié)商算法中有兩個 公共參數(shù)P和g,參數(shù)P是一個大的質(zhì)數(shù),參數(shù)g是一個小于P的整數(shù),這兩個參數(shù)可以明文 進(jìn)行交換,在本例中取P = 233,g = 150,本發(fā)明密鑰協(xié)商階段的具體步驟如下
步驟7 所述節(jié)點A生成整數(shù)a作為自己的私鑰,本例中取a = 200。步驟8:所述節(jié)點A計算Ra ((g"a)mod ρ),并將其發(fā)送給所述節(jié)點B,本例 中 Ra ((g"a)mod ρ) = 0χ014Α0513 ((150"200)mod 233) = 0x014A0513 184 = 0x014A0513 0x000000B8 = 0x014A05AB。步驟9 所述節(jié)點B生成整數(shù)b作為自己的私鑰,本例中取b = 14。步驟10 :所述節(jié)點B使用步驟3中存儲的Ra IDa IDb,計算出Ra =(Ra IDa IDb) (IDb IDa),進(jìn)而計算 K = ((Ra (Ra ((g"a)mod p)))"b)mod ρ = (((g"a)mod p)"b)mod p,K 為協(xié)商后的共享密鑰。本例中 Ra = (Ra IDa IDb) (IDb IDa) = 0xF0EC635E (0xl5240FEl 0xE48269AC)= 0xF0EC635E 0xFlA6664D = 0x014A0513,K = ((Ra (Ra ((g"a)mod p)))"b)mod ρ = ((0x014A0513 0x014A05AB)"14)mod 233 = (184"14)mod 233 = 46。步驟11:所述節(jié)點B計算Rb ((g"b)mod ρ),并將其發(fā)送給所述節(jié)點Α。本 例中 Rb ((g"b)mod ρ) = 0XC57D01B6 ((150"14)mod 233) = 0XC57D01B6 18 = 0xC57D01A4。 步驟12 :所述節(jié)點A使用步驟6中存儲的Rb IDb IDa,計算Rb = (Rb IDb IDa) (IDb IDa),進(jìn)而計算 K = ((Rb (Rb ((g"b)mod p)))"a) mod ρ = (((g"b)mod ρ)"a)mod p,K為協(xié)商后的共享密鑰。本例中Rb = (Rb IDb IDa) (IDb IDa) = 0x34DB67FB (0xl5240FEl 0xE48269AC)= 0x34DB67FB 0xFlA6664D = 0xC57D01B6,K = ((Rb (Rb ((g"b)mod p)))"a)mod ρ = (((g"b)mod p) "a)mod p= (0xC57D01B6 0xC57D01A4) "200)mod 233 = (18"150)mod 233 =46,至此A,B兩節(jié)點完成密鑰協(xié)商,協(xié)商密鑰K = 46,密鑰協(xié)商階段完成。4.加密過程在完成認(rèn)證、密鑰協(xié)商后,所述兩個節(jié)點可使用共享密鑰K作為AES加密算法的 密鑰材料,對在它們之間交換的消息進(jìn)行加密,保證通信安全。AES加密算法目前已成為對 稱密鑰加密中最流行的算法之一,有非常成熟和豐富的實現(xiàn)方法,包括軟件實現(xiàn)(如JAVA, C#中的相關(guān)類)和硬件實現(xiàn)(如AES加密算法芯片),在本例中使用JAVA的Cipher類進(jìn) 行AES加密和解密,在密鑰協(xié)商過程中產(chǎn)生的協(xié)商密鑰K = 46,節(jié)點A要給節(jié)點B發(fā)送信 息“Hello ! This is Α. ”,使用 K = 46 作為密鑰材料,取 Ra K = 0χ014Α0513 46 = 0x014A053D作為密鑰,Ra為步驟1中節(jié)點A生成的隨機數(shù),用Ra K作為密鑰而不直接使 用K作為密鑰的原因是K是一個小于g的整數(shù),如果直接使用K作為對稱加密密鑰,當(dāng)g不 夠大時,攻擊者很容易采用窮舉攻擊,破壞AES加密;而如果取g非常大時,會帶來較大計算 開銷;采用Ra K做密鑰可以提高攻擊者破解密鑰的難度。在節(jié)點A中由明文“Hello ! This is Α. ”得到密文“35160E3DAC6B7A6B04D27DC02F5B59F336C09569062D48E811F15DE48 ΕΒ1Ε017”,并將其發(fā)送個節(jié)點B,節(jié)點B接收到密文后,用步驟10中計算得到的Ra與協(xié)商密 鑰K做XOR運算,得到的結(jié)果作為密鑰對密文進(jìn)行解密,得到明文“Hello ! This is A:,。5.密鑰更新流程在通信進(jìn)行一段時間后所述節(jié)點還可以發(fā)起密鑰更新流程,密鑰更新可以進(jìn)一步 減小密鑰被破譯的可能,為數(shù)據(jù)通信帶來更大的安全強度。本例中假設(shè)所述密鑰更新流程 由所述節(jié)點A發(fā)起,其密鑰更新流程的步驟如下
步驟13 所述節(jié)點A生成整數(shù)a'作為新的私鑰,要求a'不等于a,本例中取a' =91。步驟14:所述節(jié)點A計算Ra ((g"a' )mod ρ),并將其發(fā)送給所述節(jié)點B,本例 中 Ra ((g"a' )mod ρ) = 0χ014Α0513 ((150"91)mod 233) = 0χ014Α0513 146 = 0χ014Α05Β7ο步驟15:所述節(jié)點B生成整數(shù)b'作為新的私鑰,要求b'不等于b,本例取b = 156。步驟16:所述節(jié)點 B 計算K ‘ = ((Ra (Ra ((g"a ‘ )mod p)))"b ‘) mod ρ = (((g"a ' )mod p) "b ' )mod p, K ‘為更新后的共享密鑰,本例中K '= ((Ra (Ra ((g"a' )mod p)))"b' )mod ρ = ((0x014A0513 0x014A05B7) "156)mod 233 = (146"156)mod 233 = 225。步驟17:所述節(jié)點B計算Rb ((g"b' )mod ρ),并將其發(fā)送給所述節(jié)點A,本例 中 Rb ((g"b' )mod ρ) = 0XC57D01B6 ((150" 156)mod 233) = 0XC57D01B6 210 = 0xC57D0164。步驟18 所述節(jié)點 A 計算 K ‘ = ((RB (RB ((g"b ‘ )mod p)))"a ‘) mod ρ = (((g"b ‘ )mod ρ) "a ' )mod ρ, K ‘為更新后的共享密鑰,本例中K ‘= ((RB (RB ((g"b ‘ )mod ρ))) "a' )mod ρ = ((0XC57D01B6 0xC57D0164)"91)mod 233 = (210"91)mod 233 = 225,新的協(xié)商密鑰K' = 225,至此密鑰更新流程完成。至此,上述實施實現(xiàn)了相互通信的兩個節(jié)點間的身份認(rèn)證、對密鑰協(xié)商、數(shù)據(jù)加 密、密鑰更新的功能。
權(quán)利要求
一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密認(rèn)證方法,其特征在于,該方法包括五個部分配置階段,認(rèn)證階段,密鑰協(xié)商階段,加密過程,密鑰更新流程;一、配置階段的準(zhǔn)備設(shè)Ad hoc網(wǎng)絡(luò)中的每個節(jié)點都有一定的存儲能力和計算能力,節(jié)點的存儲空間保持在千字節(jié)即KB數(shù)量級上,在配置階段,每個節(jié)點在自己的內(nèi)存中存儲一份節(jié)點ID表,表中包含節(jié)點名稱和節(jié)點ID兩列,網(wǎng)絡(luò)中的每個節(jié)點對應(yīng)表中的一條記錄,節(jié)點名稱可為節(jié)點的IP、編號,是明文發(fā)送的信息;每個節(jié)點都有唯一的節(jié)點ID作為該節(jié)點的認(rèn)證碼與之相對應(yīng),用于認(rèn)證彼此的身份,節(jié)點ID必須密文發(fā)送,不能被泄露;二、認(rèn)證階段的實施如在配置階段所述,節(jié)點具備一定的計算能力,涉及的算法為異或運算即XOR,記作⊕、雜湊運算,都可以在節(jié)點計算能力受限的條件下進(jìn)行,本階段具體步驟如下步驟1所述節(jié)點A生成隨機數(shù)RA,并計算MACA=h(RA⊕IDA),MACA為所述節(jié)點A的消息認(rèn)證碼即message authentication code,h()為一雜湊函數(shù),IDA為所述節(jié)點A的ID;步驟2所述節(jié)點A查詢節(jié)點ID表得到所述節(jié)點B的認(rèn)證碼IDB,將RA,IDA,IDB一起做XOR運算,將MACA,RA⊕IDA⊕IDB發(fā)送給所述節(jié)點B;步驟3所述節(jié)點B將接收到的RA⊕IDA⊕IDB存儲起來,查詢節(jié)點ID表得到所述節(jié)點A的認(rèn)證碼IDA,并計算(RA⊕IDA)′=(RA⊕IDA⊕IDB)⊕IDB,MACA′=h((RA⊕IDA)′),判斷MACA與MACA′是否相等,若相等,則所述節(jié)點B認(rèn)證所述節(jié)點A成功;否則,認(rèn)證失敗,握手失??;步驟4若步驟3中認(rèn)證成功,所述節(jié)點B生成隨機數(shù)RB,并計算出MACB=h(RB⊕IDB),MACB為所述節(jié)點B的消息認(rèn)證碼;步驟5所述節(jié)點B,將RB,IDB,IDA一起做XOR運算,將MACB,RB⊕IDB⊕IDA發(fā)送給所述節(jié)點A;步驟6所述節(jié)點A將接收到的RB⊕IDB⊕IDA存儲起來,計算(RB⊕IDB)′=(RB⊕IDB⊕IDA)⊕IDA,MACB′=h((RB⊕IDB)′),判斷MACB與MACB′是否相等,若相等,則所述節(jié)點A認(rèn)證所述節(jié)點B成功,雙方彼此認(rèn)證成功,認(rèn)證階段完成;否則,認(rèn)證失敗,握手失?。蝗?、密鑰協(xié)商階段的實施步驟7所述節(jié)點A生成整數(shù)a作為自己的私鑰;步驟8所述節(jié)點A計算RA⊕((g^a)mod p),并將其發(fā)送給所述節(jié)點B;步驟9所述節(jié)點B生成整數(shù)b作為自己的私鑰;步驟10所述節(jié)點B使用步驟3中存儲的RA⊕IDA⊕IDB,計算出RA=(RA⊕IDA⊕IDB)⊕(IDB⊕IDA),進(jìn)而計算K=((RA⊕(RA⊕((g^a)mod p)))^b)mod p=(((g^a)mod p)^b)mod p,K為協(xié)商后的共享密鑰;步驟11所述節(jié)點B計算RB⊕((g^b)mod p),并將其發(fā)送給所述節(jié)點A;步驟12所述節(jié)點A使用步驟6中存儲的RB⊕IDB⊕IDA,計算RB=(RB⊕IDB⊕IDA)⊕(IDA⊕IDB),進(jìn)而計算K=((RB⊕(RB⊕((g^b)mod p)))^a)mod p=(((g^b)mod p)^a)mod p,K為協(xié)商后的共享密鑰,密鑰協(xié)商階段完成;四、加密過程的實施在完成認(rèn)證、密鑰協(xié)商后,所述兩個節(jié)點可使用共享密鑰K作為AES加密算法的密鑰材料,對在它們之間交換的消息用AES加密算法進(jìn)行加密,保證通信安全;五、密鑰更新流程的實施在通信進(jìn)行一段時間后所述節(jié)點還可以發(fā)起密鑰更新流程,密鑰更新進(jìn)一步減小密鑰被破譯的可能,為數(shù)據(jù)通信帶來更大的安全強度;設(shè)所述密鑰更新流程由所述節(jié)點A發(fā)起;步驟13所述節(jié)點A生成整數(shù)a′作為新的私鑰,要求a′不等于a;步驟14所述節(jié)點A計算RA⊕((g^a′)mod p),并將其發(fā)送給所述節(jié)點B;步驟15所述節(jié)點B生成整數(shù)b′作為新的私鑰,要求b′不等于b;步驟16所述節(jié)點B計算K′=((RA⊕(RA⊕((g^a′)mod p)))^b′)mod p=(((g^a′)mod p)^b′)mod p,K′為更新后的共享密鑰;步驟17所述節(jié)點B計算RB⊕((g^b′)mod p),并將其發(fā)送給所述節(jié)點A;步驟18所述節(jié)點A計算K′=((RB⊕(RB⊕((g^b′)mod p)))^a′)mod p=(((g^b′)mod p)^a′)mod p,K′為更新后的共享密鑰,密鑰更新流程完成。
全文摘要
一種Ad hoc網(wǎng)絡(luò)傳輸層協(xié)議上的加密認(rèn)證方法,它包括五大部分十八個具體步驟;五大部分是配置階段,認(rèn)證階段,密鑰協(xié)商階段,加密過程,密鑰更新流程;本發(fā)明涉及的加密認(rèn)證方法應(yīng)用在多跳Ad hoc網(wǎng)絡(luò)中的兩個節(jié)點進(jìn)行端到端通信時的握手協(xié)商過程中,所述的兩個節(jié)點先通過驗證消息認(rèn)證碼即MAC進(jìn)行相互認(rèn)證,認(rèn)證成功后采用ECDH算法進(jìn)行密鑰協(xié)商,最后以通過所述的密鑰協(xié)商過程獲得的共享密鑰作為密鑰材料采用AES算法對后續(xù)消息進(jìn)行加密,在通信過程中發(fā)起密鑰更新流程。在認(rèn)證和密鑰協(xié)商過程中,采用XOR運算對認(rèn)證信息和密鑰協(xié)商信息進(jìn)行加密,安全性好,效率也很高,系統(tǒng)開銷小并能保證加密的強度,所以,本發(fā)明在無線網(wǎng)絡(luò)技術(shù)領(lǐng)域里具有廣闊地應(yīng)用前景。
文檔編號H04W12/04GK101980558SQ201010545640
公開日2011年2月23日 申請日期2010年11月16日 優(yōu)先權(quán)日2010年11月16日
發(fā)明者修春娣, 劉建偉, 尚濤, 張其善, 毛劍, 陳杰 申請人:北京航空航天大學(xué)