工控物聯(lián)網(wǎng)認(rèn)證協(xié)議與密鑰協(xié)商算法研究
掃描二維碼
隨時隨地手機看文章
引言
工控物聯(lián)網(wǎng)廣泛應(yīng)用于包括水文監(jiān)測、數(shù)字化油田、智能電網(wǎng)、環(huán)境監(jiān)控、礦井監(jiān)測、智能建筑、智能交通等在內(nèi)的眾多領(lǐng)域,使得工業(yè)自動化控制進入了一個嶄新的時代。但是,隨著物聯(lián)網(wǎng)在工業(yè)控制中的深入應(yīng)用,對工控終端設(shè)備的身份假冒、數(shù)據(jù)泄露、越權(quán)操作等信息安全問題也接踵而至。為了保證工控物聯(lián)網(wǎng)環(huán)境的安全運行,對終端設(shè)備的認(rèn)證及信息保護必不可少,這也成為工控物聯(lián)網(wǎng)發(fā)展中最重要的一環(huán)。
物聯(lián)網(wǎng)認(rèn)證是物聯(lián)網(wǎng)安全中的重要環(huán)節(jié),它是安全系統(tǒng)中的第一道屏障,在物聯(lián)網(wǎng)中有著十分重要的作用。物聯(lián)網(wǎng)認(rèn)證協(xié)議提供設(shè)備與設(shè)備、設(shè)備與服務(wù)器之間完善可靠的認(rèn)證方式,只有在認(rèn)證雙方認(rèn)證通過之后才可進行數(shù)據(jù)傳輸?shù)炔僮?。所有的認(rèn)證機制或多或少都要使用密鑰,為了保證認(rèn)證過程中的信道安全,要對報文進行加密,密鑰協(xié)商算法就可以很好地解決這個問題。
低成本工控物聯(lián)網(wǎng)的終端具有資源有限、低能耗等特點,因此本文采用輕量級的物聯(lián)網(wǎng)認(rèn)證協(xié)議?,F(xiàn)有的輕量級認(rèn)證協(xié)議包括Hash-Lock、隨機Hash-Lock和Hash鏈等協(xié)議。這些協(xié)議一方面存在著各種安全性的缺陷,易受多種方式的攻擊;另一方面,大多應(yīng)用于簡單的RFID認(rèn)證,對工控物聯(lián)網(wǎng)復(fù)雜數(shù)據(jù)傳輸,能否滿足認(rèn)證需要也是個巨大挑戰(zhàn)。在現(xiàn)有的密鑰管理算法中,McCullagh-Barreto密鑰協(xié)商算法在算法安全性和運行效率兩方面都符合要求,但該算法不能抵抗密鑰泄露偽裝攻擊,因此,本文在該算法的基礎(chǔ)上進行了改進,使其具有抵抗密鑰泄露偽裝攻擊的能力,稱為改進的McCullagh-Barreto密鑰協(xié)商算法。
1基于工控物聯(lián)網(wǎng)的輕量級雙向認(rèn)證協(xié)議
為了解決現(xiàn)有認(rèn)證協(xié)議存在的安全隱私保護弱點和性能不高等問題,本文提出基于工控物聯(lián)網(wǎng)的輕量級雙向認(rèn)證協(xié)議(Light-weightMutualAuthenticationProtocolBasedonloTofIndustrialControl)o
該協(xié)議所采用的前提如下:
每個終端具有一個獨特的啟動器,產(chǎn)生和維護標(biāo)簽的安全參數(shù);
每個終端和服務(wù)器都具有一個偽隨機數(shù)位發(fā)生器;
節(jié)點能夠運行Hash函數(shù)h和帶密鑰Hash函數(shù)f,且內(nèi)存記錄安全可靠;
服務(wù)器和服務(wù)器之間的信道是安全的;
服務(wù)器和終端之間的信道是不安全的,容易被竊聽或篡改。
下面對協(xié)議中所用到的符號進行定義:
N:系統(tǒng)中終端的數(shù)目;
T:第i個終端(1WiWN);
ID,:第i個終端的標(biāo)識符;
h:Hash函數(shù),力:{0,1}'—{0,1}‘;
Di:終端的秘密信息;
Hi:第i個終端標(biāo)識符的哈希值;
f:帶密鑰Hash函數(shù)』:{0,1}奴{0,1}—{0,1}';
l:終端標(biāo)識符的比特長度;
Xnew:X更新后的值;
X0ld:X更新前的值;
r:l比特的隨機串;
©:異或操作符;
-:替換操作符;
<<:循環(huán)左移操作符;
>>:循環(huán)右移操作符;
eR:隨機選擇操作符。
基于工控物聯(lián)網(wǎng)的輕量級雙向認(rèn)證協(xié)議分為初始化和認(rèn)證兩個階段。
1.1初始化階段
在認(rèn)證過程運行之前,初始化過程執(zhí)行系統(tǒng)初始化的步驟有兩步:第一步是在協(xié)議中為每個終端Ti分配一個長度為l比特的標(biāo)識符ID,,然后將ID,存儲并鎖定在終端內(nèi)存中;第二步是計算Hi=h(ID),在數(shù)據(jù)庫中為每個終端T存儲一條記錄[(IDiHi)new,(IDiHi)old,Di],第1對值是為終端最新分配的id,和Hi,第2對是之前分配的值,Di是終端的詳細秘密信息。最初的(IDiHi)new是初始化分配的ID,和Hi,(IDi,Hi)old設(shè)置為空。
1.2認(rèn)證階段
圖1所示是協(xié)議認(rèn)證階段的流程圖。圖中,網(wǎng)關(guān)用于生成一個隨機比特串r1er{0,1}1,并發(fā)送給終端Ti。終端Ti收到
『1后,會生成一個隨機比特串rer{0,1}1作為會話的臨時私鑰,并計算Hi=Ml=ID,.5n,Ml瓦(r5矽,然后發(fā)送響
應(yīng)消息HMM給網(wǎng)關(guān)服務(wù)器,網(wǎng)關(guān)服務(wù)器傳遞消息H"W2,r\給服務(wù)器。服務(wù)器收到終端的響應(yīng)后,將進行以下步驟:
服務(wù)器使用H檢索數(shù)據(jù)庫,如果在數(shù)據(jù)庫中沒有找到H,就發(fā)送出錯信息給網(wǎng)關(guān),并終止會話;若找到Hi=H,new或Hi=Hiold,則計算r-肱5ID,new或r-肱5IDtola,然后計
?
算并判斷泌習(xí)Mr5矽。
若泌=5矽,則驗證通過,同時計算MlID,(r&Z/2),然后發(fā)送D,和M給網(wǎng)關(guān)。
更新數(shù)據(jù)庫中響應(yīng)終端的記錄,同時令I(lǐng)Diold—ID,,Hiold—H,,ID,*w-(ID》Z/4)5(H,》Z/4)5r,以,岫一力(1%,叫);否則發(fā)送出錯信息給網(wǎng)關(guān)服務(wù)器,終止會話。
網(wǎng)關(guān)服務(wù)器獲取終端的秘密信息D,后,將傳遞認(rèn)證消息M給終端,然后由終端Ti計算并判斷ID,=M,53&Z/2)。如果不相等,終端就保持當(dāng)前存儲的ID,不變;若相等,則驗證通過,同時更新當(dāng)前存儲的ID,令:
ID,--(ID,-&14)5(Hi》1/4)5r5r
本文協(xié)議的安全性取決于ID,、『1和r2這3個參數(shù)的長度規(guī)格。一般來說,通過增加和r2這3個參數(shù)的長度,
,貌聯(lián)網(wǎng)集可靠傳輸ReliableTransmission
可明顯提高本文協(xié)議的安全性能,滿足終端更高的安全要求。2改進的McCullagh-Barreto密鑰協(xié)商算法
McCullagh-Barreto算法是一個高效的認(rèn)證密鑰協(xié)商算法,可以應(yīng)用于工控物聯(lián)網(wǎng)環(huán)境,然而Xie[5]等人指出該算法不能抵抗密鑰泄露偽裝攻擊KCIA(KeyCompromiseImpersonationAttack),因此本文在該算法基礎(chǔ)上進行了改進,使其具有抗密鑰泄露偽裝攻擊的能力,稱為改進的McCullagh-Barreto密鑰協(xié)商算法。
改進的McCullagh-Barreto密鑰協(xié)商算法分為初始化、密鑰提取和密鑰協(xié)商三個階段。
2.1初始化
給定安全參數(shù)k,算法隨機選取s∈Zq*,P,Q∈G1,計算P0=sP。設(shè)置系統(tǒng)公開參數(shù)為<G1,G2,e,q,P,Q,P0,H1,H2,H3>。其中,三個hash函數(shù)為H1:{0,1}*→Zq*,H2:{0,1}*→Zq*,H3:{0,1}*→{0,1}*。s為系統(tǒng)主密鑰,由密鑰生成中心KGC保管。
2.2密鑰提取
采用SakaiR和KasaharaM的密鑰構(gòu)造方法。KGC驗證參與實體Pi在線公開的身份標(biāo)識IDi,計算Pi的私鑰Si=(H1(IDi)+s)-1P。Pi的公鑰為Qi=(H1(IDi)+s)P=H1(IDi)P+P0。
2.3密鑰
協(xié)商兩個實體Alice和Bob通過以下步驟協(xié)商一個共同的會話密鑰。實體Alice的身份信息為IDA,其公私鑰對為(PA,SA);實體Bob的身份信息為IDB,其公私鑰對為(PB,SB)。Alice和Bob執(zhí)行如下的算法:
Step1:用戶Alice選擇一個臨時的密鑰x∈RZq*,計算TA=xQB并將TA發(fā)送給Bob。
Step2:用戶Bob選擇一個臨時的密鑰y∈RZq*,計算TB=xQA并將TB發(fā)送給Alice。
Step3:用戶Alice計算tA=H2(TA,IDA,IDB),tB=H2(TB,IDA,IDB),KAB=e(TB+tBPA,SA)(x+tA),然后計算出共享會話密鑰SKAB=H3(IDA,IDB,TA,TB,KAB)。
Step4:用戶Bob計算tA=H2(TA,IDA,IDB),tB=H2(TB,IDA,IDB),KBA=e(TA+tBPB,SB)(y+tB),然后計算出共享會話密鑰SKBA=H3(IDA,IDB,TA,TB,KBA)。
如果 Alice 和 Bob 誠實地執(zhí)行算法,他們將協(xié)商得到一個共同的會話密鑰 :
原算法認(rèn)證過程中僅使用1個hash函數(shù)完成認(rèn)證雙方的會話密鑰交換,攻擊者很容易截獲一方的私鑰,進行偽裝攻擊。改進的算法則使用了3個hash函數(shù)完成會話密鑰交換,且加入了節(jié)點的身份信息,使得算法更加安全。
3結(jié)語
本文提出的認(rèn)證協(xié)議是輕量級協(xié)議,適用于低成本工控物聯(lián)網(wǎng)環(huán)境,但對于更加復(fù)雜且對安全要求很高的環(huán)境還有待完善。因此,研究的下一步將考慮在認(rèn)證協(xié)議中加入PKI證書,使其適用于認(rèn)證更加嚴(yán)格的工控物聯(lián)網(wǎng)環(huán)境,同時密鑰協(xié)商算法也需要進行相應(yīng)的改進來適應(yīng)復(fù)雜環(huán)境下的工控物聯(lián)網(wǎng)。
20211019_616ec3030105d__工控物聯(lián)網(wǎng)認(rèn)證協(xié)議與密鑰協(xié)商算法研究