殷小虹
(江西傳媒職業(yè)學(xué)院,江西 南昌 330224)
遠(yuǎn)程服務(wù)器需要通過公共信道對用戶進(jìn)行認(rèn)證。在以前的大多數(shù)雙因素方案中,用戶的身份證明在公共信道上以明文形式傳輸。因此,它們不能提供用戶隱私保護(hù)。由于用戶的身份信息在所有事務(wù)會話中是靜態(tài)的,攻擊者可以將不同的登錄會話鏈接在一起跟蹤用戶的活動,這導(dǎo)致用戶部分信息的泄漏。為了解決這些問題,Das等[1]提出了一種基于動態(tài)ID的遠(yuǎn)程用戶認(rèn)證方案,這種基于動態(tài)身份的認(rèn)證技術(shù)可以提供用戶匿名性。Kim等[2]的方案容易受到智能卡丟失攻擊、被盜驗證者攻擊和特權(quán)內(nèi)部人攻擊。此外,這種方案也不具備完美的前向保密性和用戶匿名性。
筆者簡要描述Kim等提出的雙因素方案。Kim等的方案由5個階段組成,即注冊階段、登錄階段、認(rèn)證和密鑰交換階段、相互認(rèn)證和密鑰確認(rèn)階段以及離線口令修改階段。Kim等的方案使用的符號和縮寫如表1所示。
表1 NOTATINS
當(dāng)一個用戶Ui想要向服務(wù)器S注冊時,Ui執(zhí)行以下操作:第一步。Ui,→S:{IDi,pwi}。用戶Ui選擇一個身份IDi和密碼pwi,然后Ui通過安全通道將{IDi,pwi}提交給服務(wù)器S。第二步。S→Ui:智能卡。在接收到消息{IDi,pwi},服務(wù)器S計算ni=h(IDi∣∣pwi),mi=ni⊕x,Ni=h(IDi)⊕h(pwi)⊕h(x)⊕h(mi)。參數(shù)ni由服務(wù)器S.S存儲{h(.),Ni,ni},并通過安全通道將智能卡發(fā)送給Ui。
當(dāng)用戶Ui想要訪問服務(wù)器S,Ui將他的智能卡插入讀卡器并輸入他的身份IDi、密碼pwi。將執(zhí)行以下操作。第一步。智能卡計算動態(tài)身份CIDi,Ai=h(IDi)⊕h(pwi),B=Ni⊕h(IDi)⊕h(pwi),CIDi=h(Ai)⊕h(h(ni)⊕Bi⊕h(Ni)⊕T)。第二步。ui→S:{CIDi,T,Ni,ni}。用戶U發(fā)送登錄請求{CIDi,T,Ni,ni}通過公共信道發(fā)送到服務(wù)器S,其中T是時間戳。
第一步。當(dāng)服務(wù)器S在時間T′接收到消息{CIDi,T,Ni,Ni}時,S檢查時間戳T的有效性。如果T′-T≤ΔT,S在注冊列表中搜索nj。第二步。如果ni在注冊列表中,服務(wù)器S計算mi=ni⊕x,Bi=h(x)⊕h(mi),Ai=Bi⊕Ni。然后驗證等式S是否成立:CIDi⊕h(Ai)=h(h(ni)⊕Bi⊕h(Ni)⊕T)。如果等式成立,S繼續(xù)下面的步驟。否則,S終止會話。第三步。S→Ui:{KC′,T′}。S計算會話密鑰SK=h(Ai∣∣Ti∣∣Bi∣∣T′)和密鑰確認(rèn)消息KC′=h(Bi∣∣SK∣∣T′)。然后S發(fā)送響應(yīng)消息{KC′,T′}給Ui。
第一步。當(dāng)在時間T″接收到響應(yīng)消息{KC′,T″)時,用戶首先檢查時間延遲T″-T′≤ΔT。如果它有效,U將計算會話密鑰SK=h(Ai∣∣T∣∣Bi∣∣T′)和密鑰確認(rèn)消息KC=h(Bi∣∣SK∣∣T′)。接下來,用戶U檢查接收到的kc′是否等于KC。如果不相等,則拒絕。否則,Ui繼續(xù)。
第二步。Ui→S:{KC",T"}。用戶計算密鑰確認(rèn)消息KC″=h(Ai∣∣SK∣∣T′)并且將其發(fā)送到服務(wù)器S。第三步。服務(wù)器S計算出KC"=h(Ai∣∣SK∣∣T")。然后S檢查接收到的KC是否等于KC"。如果不成立,則拒絕Ui。否則,S接受Ui的請求。
與其他相關(guān)方案相比,Kim等的方案具有計算效率高、通信成本低等優(yōu)點。假設(shè)身份可以用32位寬度表示,安全單向散列函數(shù)的輸出大小是160位,時間戳的大小是32位。在該方案的登錄階段,用戶Ui需要發(fā)送消息(CIDi,T,Ni,ni)到服務(wù)器。它包含160×3+32=512位。在認(rèn)證和密鑰交換階段,服務(wù)器將(KC′,T′)發(fā)送回Ui。它的長度是160+32=192位。最后,在相互認(rèn)證和密鑰確認(rèn)階段,Ui向服務(wù)器發(fā)送密鑰確認(rèn)消息。它的長度為192位。因此,此方案通信成本低。此外,Kim等的方案中的登錄階段在智能卡端只需要6次散列運算和6次異或運算。在身份驗證和密鑰交換階段,服務(wù)器需要8次哈希運算和6次異或運算。在相互認(rèn)證和密鑰確認(rèn)階段,該方案需要在智能卡端進(jìn)行3次哈希運算。該方案保持了智能卡的低計算量特性[3,4]。
Kim的方案支持用戶免密碼更新。在密碼更改階段,用戶僅使用智能卡更改其密碼和設(shè)置任何新密碼,不需要與服務(wù)器通信。因此,Kim等的方案實現(xiàn)了用戶友好性。但是,由于在更新新密碼之前沒有驗證舊密碼的真實性,所以這是一種固有的安全威脅。在真正的雙因素應(yīng)用中,用戶確實傾向于讓他們的智能卡無人看管。例如,用戶將他們的智能卡遺忘在讀卡器中幾分鐘或幾天。如果攻擊者設(shè)法獲得合法用戶ui′的智能卡的臨時訪問權(quán),可以很容易地使用以下步驟更改用戶ui′的密碼:
第一步。對手首先將智能卡插入終端設(shè)備,并選擇兩個不同的密碼pw′和pw″分別作為舊密碼和新密碼。然后,對手用pw′和pw″鍵入ID,并向智能卡發(fā)出更改密碼的請求。
第二步。智能卡將計算Ni*=Ni⊕h(pw′)⊕h(pw″),然后用Ni*替換Ni。當(dāng)用戶Ui在隨后的認(rèn)證中使用智能卡訪問服務(wù)器時,登錄請求永遠(yuǎn)不能通過服務(wù)器S的驗證。因此,合法用戶Ui即使在取回他的智能卡之后也不能成功登錄。可以將攻擊描述如下。
因為Ui不知道存儲在卡中的信息的變化,Ui仍然使用pwi作為IDi的密碼。
智能卡計算A=h(IDi)+h(pwi),Bi*=Ni⊕h(IDi)i⊕h(pwi),CIDi=h(Ai)⊕h(h(ni)⊕Bi*⊕h(Ni*)⊕T)。
第三步。在接收到登錄請求{CIDi,T,Ni*,ni},S計算m=ni+x,Bi=h(x)⊕h(mi)。由于Bi*=Ni*⊕Ai和Bi=Ni+A,驗證方程CIDi⊕h(Ai)=h(h(mi)⊕Bi⊕h(Ni⊕T)不成立。S將拒絕登錄請求。上面的描述證實了,一旦智能卡丟失,很容易發(fā)起Dos攻擊。
如果驗證表存儲在服務(wù)器中,認(rèn)證方案將遭受驗證信息的泄漏,這可能導(dǎo)致嚴(yán)重的安全缺陷。在Kim等的方案中,n是由服務(wù)器S保密。服務(wù)器維護(hù)所有唯一消息ni的驗證者表,其使得協(xié)議容易受到竊取驗證者攻擊[5]。
如果用戶的密碼可以在注冊階段由服務(wù)器導(dǎo)出,這樣的方案會遭受內(nèi)部攻擊。在Kim等的方案的注冊階段,用戶以明文的形式向服務(wù)器發(fā)送密碼pw。S直接獲取用戶的密碼pw。在實際應(yīng)用環(huán)境中,用戶可能使用同一個密碼登錄不同的服務(wù)器。惡意的特權(quán)內(nèi)部人員會使用該用戶的密碼登錄到其他服務(wù)器。因此,Kim等的方案不能抵抗內(nèi)部攻擊。
完美的前向保密意味著即使服務(wù)器的主密鑰x或用戶的密碼和身份被泄露,從協(xié)議的先前執(zhí)行中產(chǎn)生的任何會話密鑰也不會被泄露。Kim等的方案不能提供完美的前向保密性。假設(shè)對手截獲了某個登錄消息{CIDi,T,Ni,Ni}。利用泄露的密鑰x,計算出m=ni⊕xiB=h(x)⊕h(mi),A=Ni⊕B,因此,通過使用來自登錄請求和登錄響應(yīng)的兩個時間戳(T,T′),對手計算出會話密鑰SK=h(Ai∣∣T∣∣Bi∣∣T′)。
假設(shè)一個敵手已經(jīng)獲得了U的長期秘鑰A=h(IDi)⊕h(pwi)。密碼和身份都不會受到影響,但會出現(xiàn)兩種情況。
(1)會話密鑰將被泄露。進(jìn)一步假設(shè)對手已經(jīng)記錄了在服務(wù)器和用戶之間傳輸?shù)南ⅰκ种恍枰谝淮斡涗浾麄€登錄消息{CIDi,Ti,Ni,ni}和整個響應(yīng)消息{KC′,T′}。對于其他會話,對手只需要記錄兩個時間戳{T,T′}。知道了長期秘鑰A和先前會話的截獲消息,對手計算會話密鑰如下。對手計算Bi=Ai⊕Ni。對手檢索會話密鑰SK=h(Ai∣∣T∣∣Bi∣∣T′)通過使用截取的兩個時間戳{T,T′}。
(2)會導(dǎo)致冒充攻擊。有了秘鑰的Ai,對手可以冒充U來訪問S。第一步:對手計算出Bi=Ai⊕Ni,CIDi=h(Ai)⊕h(h(ni)⊕Bi⊕h(Ni)⊕T)。第二步:對手發(fā)送登錄請求消息{CIDi,T,Ni,ni}到服務(wù)器S。由于Bi=A⊕Ni=h(x)⊕h(mi),服務(wù)器S認(rèn)為消息是合法用戶發(fā)送的。同樣,有了長期秘鑰Ai,對手也可以冒充S來欺騙Ui[6]。
在開放的網(wǎng)絡(luò)環(huán)境中,假設(shè)用戶Ui將登錄請求消息{CIDi,T,Ni,ni}發(fā)送到服務(wù)器S。消息{Ni,ni}供用戶Ui專用,如果密碼沒有被更新,那么對服務(wù)器S的任何訪問都不會改變。此外,即使在密碼被改變之后,n對于用戶和服務(wù)器來說是相同的。也就是說n將注冊用戶與服務(wù)器綁定。因此,任何對手都可以通過檢查不同協(xié)議的{Ni,ni}或{ni}執(zhí)行是否相同來容易地跟蹤用戶。因此,即使用戶的身份沒有暴露,用戶的匿名性也沒有得到很好的保護(hù)。
先構(gòu)造整個屬性集自下而上的中心屬性樹,再構(gòu)造針對屬性子集的屬性子樹。后者由用戶和驗證權(quán)威執(zhí)行,通過簡化中心屬性樹生成得到,然后再由屬性權(quán)威和數(shù)據(jù)擁有者控制用戶屬性集的變化,在屬性權(quán)威設(shè)置新的屬性密鑰后,通過代理重加密技術(shù)讓云服務(wù)提供方升級屬性密鑰,并使用代理重加密技術(shù)處理密文,減輕云用戶計算負(fù)擔(dān)。使用代理重加密方法完成了云端取消用戶屬性的任務(wù)[7]。
本文提出的密鑰交換模式形式化定義屬性基認(rèn)證密鑰交換中用戶隱私性,將敵手模型化為具有適應(yīng)性選擇安全設(shè)定能力的圖靈機(jī),構(gòu)造了屬性基認(rèn)證密鑰交換適應(yīng)性選擇安全設(shè)置eCK模型(Attribute-Based eCK,ABeCK)。使用屬性基加密CP-ABE建立認(rèn)證密鑰交換的一般性構(gòu)造框架,根據(jù)具體CP-ABE方案的安全性,給出框架在ABeCK模型中的嚴(yán)格安全性證明。分別設(shè)計了無雙線性映射的如RSA、離散對數(shù)和高效雙線映射的輕量級屬性基認(rèn)證密鑰交換協(xié)議,建立保持隱私性的屬性基認(rèn)證密鑰交換可證安全理論。
本文首先分析了多位研究者提出的認(rèn)證協(xié)議存在一些關(guān)鍵信息泄漏給對手和中間人攻擊的問題,為研究屬性基認(rèn)證密鑰交換機(jī)制提供了安全性方面的有效依據(jù),基于此提出了構(gòu)建云環(huán)境下的屬性基認(rèn)證密鑰交換機(jī)制的整體框架,給出了動態(tài)屬性樹的構(gòu)造思路,并對屬性基認(rèn)證密鑰交換可證安全理論進(jìn)行研究和分析,最后給出了一種構(gòu)建分布式環(huán)境下屬性基認(rèn)證形式化安全模型的思路。