張晴,張庭郡,尹毅峰
(鄭州輕工業(yè)大學(xué)計(jì)算機(jī)與通信工程學(xué)院,鄭州 450000)
物聯(lián)網(wǎng)中遠(yuǎn)程用戶身份認(rèn)證是保證在線服務(wù)安全性的第一步。針對(duì)Kaul 等人提出的遠(yuǎn)程用戶認(rèn)證方案中不能抵抗離線口令猜測攻擊的安全缺陷問題,基于安全hash 函數(shù)和簡單的異或運(yùn)算,提出一種改進(jìn)的輕量級(jí)遠(yuǎn)程用戶認(rèn)證方案。經(jīng)安全性、開銷和時(shí)間復(fù)雜度分析,與原方案相比,所提方案抗離線口令猜測攻擊,未增加存儲(chǔ)開銷和通信開銷,安全性更高,執(zhí)行時(shí)間更少,更適用于資源受限的移動(dòng)設(shè)備。
輕量級(jí);遠(yuǎn)程用戶認(rèn)證;移動(dòng)設(shè)備;雙向認(rèn)證
隨著無線技術(shù)如GPRS、WiMAX、LTE、VLC 等的快速發(fā)展以及各種移動(dòng)設(shè)備的爆炸式增長,物體正逐步實(shí)現(xiàn)互聯(lián)。每當(dāng)用戶通過移動(dòng)設(shè)備與遠(yuǎn)程服務(wù)提供者(云服務(wù)器或傳感器節(jié)點(diǎn)/服務(wù))進(jìn)行通信時(shí),用戶和服務(wù)提供者(簡稱服務(wù)器)的真實(shí)性必須被驗(yàn)證,以消除網(wǎng)絡(luò)安全和惡意用戶的非法登錄[1]。遠(yuǎn)程用戶認(rèn)證方案能在公共信道中準(zhǔn)確鑒別合法用戶和服務(wù)器,防御惡意攻擊。
1981年,Lamport[2]率先在不安全的通信媒介上使用遠(yuǎn)程用戶認(rèn)證機(jī)制,其方案依賴于密碼表,hash 操作開銷大。2004年,Das 等人[3]設(shè)計(jì)了第一個(gè)基于動(dòng)態(tài)ID的認(rèn)證方案,用戶可通過生成偽ID 來隱藏真實(shí)身份,但易遭受各種攻擊,并不實(shí)用。隨后,眾多研究人員分析并改進(jìn)了Das 等人的方案[4]。
2012年,Wen和Li[5]提出了一種新的認(rèn)證方案,但所提方案不能抵御離線口令猜測、偽裝、內(nèi)部等攻擊。2014年,Kumari 等人[6]提出了一種建立會(huì)話密鑰的遠(yuǎn)程用戶認(rèn)證方案,并證明了該方案的魯棒性。2016年,Kaul 等人[7]指出Kumari 等人的方案無法抵御內(nèi)部、智能卡丟失、離線口令猜測、中間人等攻擊,并提出了一種增強(qiáng)安全的認(rèn)證方案,并證明了其安全性。
本文對(duì)Kaul 等人的方案進(jìn)行分析,發(fā)現(xiàn)該方案并不能抵抗離線口令猜測攻擊,進(jìn)而提出了一種改進(jìn)的輕量級(jí)遠(yuǎn)程用戶認(rèn)證方案。由于移動(dòng)設(shè)備的計(jì)算、存儲(chǔ)、能量非常有限,本文采用安全hash 函數(shù)和簡單的異或操作,在實(shí)現(xiàn)用戶移動(dòng)設(shè)備與服務(wù)器的相互認(rèn)證之后,建立安全會(huì)話密鑰,且用戶可自行更改口令。
本文主要對(duì)Kaul 等人的方案進(jìn)行分析,由于篇幅限制,具體實(shí)現(xiàn)步驟詳見文獻(xiàn)[7]。
本文中所用的符號(hào)及含義如表1 所示。
表1 符號(hào)及含義
分析發(fā)現(xiàn)該方案不能抵抗離線口令猜測攻擊,分析如下:
假設(shè)敵手A通過竊取等手段獲得合法用戶Ui的智能卡,并通過某些技術(shù)獲取智能卡中存儲(chǔ)的{βi,γi,χi,ηi,h(.)} 。 在 認(rèn) 證 階 段 ,由 于Ui在公共信道中向服務(wù)器S發(fā)送明文形式的IDi,IDi可被敵手A通過非法手段獲取。之后,A選擇一個(gè)作為PWi的猜測值(為口令空間),計(jì)算直 到為止,滿足此條件的即為PWi的真正值,離線口令攻擊猜測成功。整個(gè)過程猜測攻擊的時(shí)間復(fù)雜度為O(|DPW|*(5Th+5TX)),其中Th為hash函數(shù)的執(zhí)行時(shí)間,TX為異或操作的執(zhí)行時(shí)間,|DPW|為DPW中全部PWi的數(shù)量。在實(shí)際操作中,通常|DPW|≤106[8],因此,Kaul 等人的方案不能抵御離線口令猜測攻擊。
針對(duì)Kaul 等人方案存在的缺陷,本文提出了一種改進(jìn)的輕量級(jí)遠(yuǎn)程用戶認(rèn)證方案。提出的方案使用單向散列函數(shù)和按位異或運(yùn)算實(shí)現(xiàn)用戶與服務(wù)器的雙向認(rèn)證,并保持了原方案的安全優(yōu)勢。該方案包括注冊、登錄、認(rèn)證和口令更新階段如圖1 所示。
(1)Ui自由選擇IDi,PWi和隨機(jī)數(shù)b,計(jì)算RPWi=h(b||PWi),并通過安全信道將{IDi,RPWi}發(fā)送給S進(jìn)行注冊;
(2)S隨機(jī)選擇唯一隨機(jī)數(shù)yi,由分別計(jì)算αi,βi,γi,χi的值,并將{βi,γi,χi,h(.)} 存儲(chǔ)在智能卡中,發(fā)送給Ui;
(3)Ui計(jì)算ηi=b⊕h(IDi⊕PWi),并將ηi存儲(chǔ)在智能卡中。
注冊階段只在新用戶加入網(wǎng)絡(luò)時(shí)執(zhí)行,在此階段,智能卡共存儲(chǔ)了五個(gè)安全參數(shù):βi,γi,χi,ηi,h(.)。
當(dāng)持有移動(dòng)設(shè)備的注冊用戶Ui從服務(wù)器S獲得服務(wù)時(shí),Ui將智能卡插入讀卡器,執(zhí)行以下操作向S發(fā)送登錄請求:
(1)Ui輸入判斷是否相等,若相等,繼續(xù)執(zhí)行操作;若不相等,讀卡器拒絕Ui登錄請求。此外,為了防止在線口令猜測攻擊,預(yù)先設(shè)定一閾值,在規(guī)定時(shí)間內(nèi),當(dāng)錯(cuò)誤口令輸入次數(shù)超過該值時(shí),智能卡被鎖定;
(2)讀卡器計(jì)算:λi=IDi⊕yi,ωi=yi⊕h(λi⊕αi⊕T),?i=h(IDi||yi||αi||T),并將登錄請求信息{λi,ωi,?i,T}發(fā)送給S。
圖1 改進(jìn)的方案注冊、登錄、認(rèn)證、口令更新階段
在此階段,用戶Ui和服務(wù)器S完成雙向認(rèn)證,并建立安全會(huì)話密鑰,操作如下:
(1)S計(jì)算T'-T≤δT是否成立,以此判斷消息的新鮮性,若滿足,則繼續(xù)執(zhí)行操作;否則,拒絕Ui登錄請求;
(2)S計(jì)算:通過判斷驗(yàn)證的正確性,若相等,則證明Ui是合法用戶;若不相等,則退出認(rèn)證;
(3)S計(jì) 算μi=h(IDi||yi||αi||Ts) ,并 將 認(rèn) 證 請 求{μi,Ts}發(fā)送給Ui;
(4)Ui判斷Ts'-Ts≤δT驗(yàn)證消息是否有效,若不滿足,拒絕認(rèn)證請求。之后計(jì)算通過驗(yàn)證的正確性,若相等,則證明S身份合法;若不等,則退出;
(5)當(dāng)該階段完成時(shí),Ui和S各自獨(dú)立生成安全會(huì)話密鑰SK=h(IDi⊕yi⊕αi⊕T⊕Ts) ,用于保護(hù)其通信安全。
此階段,用戶Ui無需遠(yuǎn)程服務(wù)器的任何幫助,可在智能卡中直接進(jìn)行口令更新。當(dāng)用戶Ui想要將PWi更新為時(shí),Ui將智能卡插入讀卡器,并執(zhí)行以下操作:
(1)Ui輸入,向智能卡發(fā)送口令更新請求;
(2)智能卡執(zhí)行2.2 節(jié)中步驟(1)的操作;
將改進(jìn)的方案與文獻(xiàn)[5-7]中方案進(jìn)行安全性對(duì)比分析,表2 為其對(duì)比結(jié)果,“是”表示能抵抗該攻擊或具有該性能,“否”表示不能抵抗該攻擊或不具有該性能。分析表明,所提方案安全性更高。
表2 安全性對(duì)比
所提方案在彌補(bǔ)Kaul 等人方案不能抵抗離線口令猜測攻擊安全缺陷的基礎(chǔ)上,保留了原方案的其他安全特性。因此,本節(jié)只對(duì)能抵抗離線口令猜測攻擊這一安全特性進(jìn)行分析。分析如下:
本文所提方案不以明文方式在公共信道中發(fā)送用戶IDi和PWi,只發(fā)送{λi,ωi,?i,T,μi,Ts},假設(shè)敵手A通過非法途徑獲得Ui的智能卡和在公共信道中傳輸?shù)膮?shù),并提取出智能卡中存儲(chǔ)的五個(gè)安全參數(shù)。由于未知,A每次至少需要正確猜測出兩個(gè)未知數(shù)的值,才能計(jì)算出而這在多項(xiàng)式時(shí)間內(nèi)不可能實(shí)現(xiàn)[9],因此,A不能從獲取的所有信息中猜測出正確的IDi和PWi,因此,所提方案能抵抗離線口令猜測攻擊。
本節(jié)對(duì)所提方案在注冊、登錄、認(rèn)證三個(gè)階段中的存儲(chǔ)開銷和通信開銷進(jìn)行分析,并與文獻(xiàn)[5-7]中的方案作對(duì)比,其存儲(chǔ)開銷和通信開銷對(duì)比結(jié)果如圖2 所示,其中,L 表示hash 函數(shù)的輸出字節(jié)長度和方案中所有參數(shù)的字節(jié)長度。
圖2 存儲(chǔ)開銷和通信開銷對(duì)比
所提方案只在注冊階段將{βi,γi,χi,ηi,h(.)}存儲(chǔ)在智能卡中,因此,存儲(chǔ)開銷為5L;只在登錄和認(rèn)證階段在公共信道中傳輸消息{λi,ωi,?i,T,μi,Ts},因此,通信開銷為6L。從圖2 可以看出,對(duì)于存儲(chǔ)開銷,文獻(xiàn)[5]的最小,為3L;文獻(xiàn)[6]的最大,為6L;所提方案與文獻(xiàn)[7]相等,為5L。對(duì)于通信開銷,所提方案與文獻(xiàn)[7]相等,為6L,最?。晃墨I(xiàn)[5]的為9L,最大。因此,所提方案未增加Kaul 等人方案的存儲(chǔ)開銷與通信開銷,與文獻(xiàn)[5]相比,只增加較小存儲(chǔ)開銷來增強(qiáng)系統(tǒng)的安全性,并降低了通信開銷。
本節(jié)對(duì)所提方案在注冊、登錄、認(rèn)證三個(gè)階段中的時(shí)間復(fù)雜度進(jìn)行分析,并與文獻(xiàn)[5-7]中的方案進(jìn)行比較,結(jié)果如表3 所示,Th表示hash 函數(shù)操作的運(yùn)行時(shí)間,TX表示異或操作的運(yùn)行時(shí)間。為確定總執(zhí)行時(shí)間,采用Kilinc 和Yanik 報(bào)告[10]中的實(shí)驗(yàn)結(jié)果:一個(gè)哈希運(yùn)算的平均執(zhí)行時(shí)間為0.0023ms,異或運(yùn)算的執(zhí)行時(shí)間忽略不計(jì)。
表3 時(shí)間復(fù)雜度對(duì)比
從表3 可知,文獻(xiàn)[5]、[7]總執(zhí)行時(shí)間最大,為46μs;文獻(xiàn)[6]總執(zhí)行時(shí)間最小,為36.8μs;所提方案的時(shí)間復(fù)雜度為18Th+21TX,總執(zhí)行時(shí)間中等,為41.6μs。結(jié)合表2、圖2 可看出,本文方案在未增加系統(tǒng)開銷的基礎(chǔ)上,為系統(tǒng)提供了更高的安全性。
本文分析Kaul 等人方案發(fā)現(xiàn)其不能抵御離線口令猜測攻擊,進(jìn)而提出了一種改進(jìn)的輕量級(jí)遠(yuǎn)程用戶認(rèn)證方案。該方案在保留原方案的安全特性基礎(chǔ)上,可有效避免離線口令猜測、偽裝、重放、DoS 等常見攻擊,建立安全會(huì)話密鑰,自由更改口令。安全性、開銷、時(shí)間復(fù)雜度分析表明,所提方案系統(tǒng)開銷小,運(yùn)行速度快,安全性更高。