李文婷 , 汪 定 , 王 平,3
1(北京大學 軟件與微電子學院,北京 102600)
2(北京大學 信息科學技術學院,北京 100871)
3(軟件工程國家工程研究中心(北京大學),北京 100871)
無線傳感器網絡(wireless sensor network,簡稱WSN)歷經智能傳感器、無線智能傳感器、無線傳感器這3個階段的發展,無線通信和信息交互能力日益增強,逐漸實現物與物的互聯,感知觸角深入世界各個角落[1?3].目前,無線傳感器網絡不僅是學術界關注的熱點,在產業界的應用也遍布各個領域,如智慧城市[4]、環境監測[5]、醫療監測[6]等.這些應用往往要求較高的實時性,允許用戶實時訪問傳感器節點.
此類應用環境通常包含3 類參與者:1 個或多個網關節點(GWN,或稱作基站)、分布式節點及外部用戶.通常,外部用戶要訪問傳感器節點的信息有兩種方式:(1) 用戶向GWN 發送查詢請求,GWN 查詢相應節點,并回傳用戶請求的信息;(2) 用戶直接登錄傳感器節點,與傳感器節點建立實時通信.前者的安全性依賴WSN 的安全策略,但時延長,僅適于信息輪詢或實時性要求不高的應用場景;后者具備較高的實時性,但如何確保用戶的合法性、防止傳感器節點數據泄漏變得至關重要.
用戶身份認證是保證WSN 環境安全和用戶隱私的重要安全機制[7,8].相比于傳統網絡環境,由于無線傳感器網絡通常部署在無人監守的環境,但執行安全攸關的任務(如海洋大氣監測[9]、精準農業溫度監測[10]、健康狀況監測[11]等),設計適于無線傳感器網絡的用戶身份認證協議面臨更嚴峻的挑戰.
2006 年,基于Lamport[12]的口令認證協議和Das 等人[13]提出的“動態ID”技術,Wong 等人[14]首次提出了適于無線傳感器網絡的單因子(因子,亦稱為因素)口令身份認證協議.該協議僅基于輕量級密碼算法,允許合法用戶直接訪問傳感器節點的數據.然而,在該協議提出不久,Tseng 等人[15]和Das 等人[16]分別指出Wong 等人的協議[14]不能抵抗重放攻擊、竊取驗證項攻擊、仿冒攻擊和節點捕獲攻擊,并進一步提出了改進協議[17].其中,Das等人[16]提出的新協議引入“智能卡”因子,開啟了無線傳感器網絡環境下雙因子認證的新篇章.
Das 等人的工作[14]得到了眾多學者的跟蹤(如圖1 所示,圖1 基于文獻[18]中的圖2,下劃線表示協議易遭受內部攻擊),一系列新的適于無線傳感器網絡環境的雙因子認證協議被提出來,如文獻[19,20].
然而不久之后,Khan 等人[21]、Chen 等人[22]和Yeh 等人[23]指出Das 等人的協議[14]存在一系列安全威脅,如易遭受仿冒攻擊、離線口令猜測攻擊、內部攻擊和節點捕獲攻擊,且不能實現用戶匿名性和前向安全性.隨后,Khan 等人[21]、Chen 等人[22]和Yeh 等人[23]分別在Das 等人協議[14]的基礎上提出改進協議.2012 年,鑒于傳感器節點計算能力和存儲容量有限,Kumar 等人[24]提出一個高效的適于遠程醫療服務的無線傳感器網絡認證協議.2013 年,He 等人[25]指出Kumar 等人[24]的協議不能實現用戶匿名性,且對離線口令猜測攻擊和內部攻擊是脆弱的,并進一步提出一個改進協議.
近期,Mir 等人[26]指出He 等人[25]的協議缺乏口令本地驗證,且易遭受離線口令猜測攻擊、用戶仿冒攻擊和違反匿名性攻擊.與此同時,Fang 等人[27]指出,早期的WSN 環境下的安全協議均存在或多或少的問題,以Althobaiti 等人的協議[28]為例,分析協議中常見的節點捕獲攻擊、GWN 仿冒攻擊、中間人攻擊和內部攻擊,并給出改進的適于無線傳感器網絡環境下的遠程用戶認證協議.
盡管用戶認證協議已經過30 多年的發展,設計安全高效的用戶身份認證協議仍面臨巨大挑戰[3,26].眾多安全威脅(如智能卡丟失攻擊、仿冒攻擊等)和設計難題(如安全性-可用性平衡等)被學者們揭示出來,但關注內部人員攻擊的研究卻很少.為實現實時訪問,常見的無線傳感器網絡(WSN)應用(如智慧交通、智慧醫療等)允許用戶一次登錄多次訪問,在此類應用環境中,避免內部人員威脅尤為重要.下文分析中,我們將網關節點GWN 視作傳統C/S 架構下的服務器端.
在早期的單因子口令認證協議中,為實現用戶認證,服務器端勢必要存儲口令相關的驗證表項,則內部攻擊不可避免.1991 年,Chang 等人[29]首次提出了基于智能卡的口令認證協議,用戶的智能卡中需存儲私密認證參數.2004 年以前,協議均基于智能卡抗竄擾假設,即智能卡內秘密參數不能被攻擊者獲取,因此,大多數協議(如文獻[29,30])在智能卡中直接存儲口令驗證項.隨著攻擊技術的進展,智能卡內的參數可以被分析出來.2004 年,Ku等人[31]首次提出了基于非抗竄擾假設的“口令+智能卡”雙因子認證協議.此后,協議設計者逐漸加強智能卡中存儲數據的安全性和認證過程中服務器端存儲數據的安全性,同時避免用戶直接將口令明文發送給服務器,但卻假設注冊階段的通信完全安全.而現實中往往存在內部攻擊威脅,注冊階段,服務器并不完全可信,內部人員可通過竊取注冊階段的消息和用戶智能卡中的數據猜測出用戶口令.但這一類型的內部攻擊被長期忽略,即使有協議設計者意識到此類內部攻擊的威脅,也并未給出合理的解決方案.
本文深入分析了Mir 等人及Fang 等人的協議,發現這兩個無線傳感器網絡環境下的身份認證協議都存在內部攻擊威脅和前向安全性問題,并且對智能卡丟失攻擊是脆弱的.
結合現實安全情況,提出了新的增強攻擊者模型,指出了一種被長期忽略的內部攻擊場景.本文以無線傳感器網絡為例對此類攻擊進行說明,傳統的C/S 網絡、移動互聯網等均存在此類攻擊.需要指出的是:此類攻擊場景要求攻擊者首先在注冊階段監聽用戶和服務器的注冊信息,當用戶注冊后,攻擊者利用竊取的用戶智能卡分析出智能卡內參數信息實施攻擊;以Mir 等人和Fang 等人的協議為例,分析兩種失效的解決方案.
基于我們對300 余個協議的分析經驗,本文對文獻中已有的解決方案進行分類總結,指出現有解決方案的不足,說明在用戶注冊階段采用“加鹽Hash”技術傳輸用戶口令并且在智能卡中以某種方式保存用戶選擇的隨機數的協議,無法抵抗內部攻擊.最后,本文提出合理的解決方案抵抗內部攻擊.
第2 節描述本文采用的攻擊者模型,指出一種被長期忽略的內部攻擊場景.第3 節回顧Mir 等人提出的無線傳感器網絡環境下的高效身份認證協議.第4 節分析Mir 等人協議的安全性.第5 節描述Fang 等人提出的基于生物特征的三因子用戶認證協議.第6 節指出該協議存在的安全問題.第7 節對現有文獻中解決內部攻擊的策略進行總結,并指出現有方案存在的問題,提出新的解決方案.最后,第9 節總結全文.
設計安全高效的遠程用戶口令認證協議離不開所基于的攻擊者模型.1983 年,Dolev-Yao[32]提出了一個經典的敵手威脅模型,即攻擊者可以任意偵聽、截獲、插入、刪除或阻斷流經公開信道中的消息.該模型細致地刻畫了攻擊者的行為能力,被廣泛應用于安全協議的設計和分析中.然而,隨著近幾年邊信道攻擊技術的發展(如時間攻擊、功耗攻擊和軟件漏洞攻擊)[33,34],智能卡內秘密參數信息可以被攻擊者分析出來,攻擊能力顯著增強,早期的模型已不足以刻畫攻擊者的現實能力.
2016 年,Wang 等人[35]提出一個嚴格(但實際)的多因素協議攻擊者模型,如表1 中的C-1~C-4 所示.為評估系統終極失效時的強健性,該模型假設攻擊者可以獲知服務器長期私鑰.該模型充分考慮了攻擊者的現實能力,是迄今最嚴苛的攻擊者模型之一.例如,用戶口令服從Zipf 分布,且身份標識空間和口令空間有限,約為|Did|≤|Dpw|≤106[36];攻擊者可能通過多種途徑獲得未及時擦除的,或協議公開的過期會話密鑰等.Wang 等人[35]的模型全面揭示了敵手的攻擊能力,其中,C-1 用以描述重放攻擊、中間人攻擊、平行會話攻擊、異步攻擊等,并輔助完成其他各類攻擊;C-2 和C-3 刻畫了口令猜測攻擊和智能卡丟失攻擊;C-4 用以分析前向安全性.該模型幾乎涵蓋所有攻擊方式,在文獻[7,17,18,37]中被廣泛應用.

Table 1 Capabilites of the adversary表1 攻擊者擁有的能力
然而現實生活中,服務器不應被視作可信實體.近年來,因配置錯誤、內存泄漏、惡意程序等問題,服務器數據泄漏事件及未授權端口被監聽事件層出不窮.2018 年,安全研究人員Giovanni Collazo 通過Shodan 搜索引擎發現了2 284 個暴露在互聯網上的etcd 服務器[38].2016 年,韓國著名購物網站Interpark 的服務器遭黑客攻擊,1 000 萬以上客戶的個人信息被泄漏[39].文獻[40?42]也明確假設服務器中存儲的關鍵數據已經泄漏.在上述安全事件中,攻擊者已經腐化服務器,該能力被Wang 等人[35]提出的攻擊者模型所忽略.因此,為刻畫此類威脅,我們增加C-5 攻擊者能力:假設A可以腐化服務器S,偵聽、竊取S在任意操作(注冊、登錄、認證階段)中接收的消息是現實的.
為防止服務器獲取口令明文,多數用戶認證協議采用“加鹽Hash”技術[43]輔助完成用戶注冊過程,即在注冊階段,用戶向服務器提交使用隨機數加鹽的隨機口令.隨后,用戶將該隨機數寫入智能卡中.在Dolev-Yao 模型和Wang 等人模型的假設下,由于服務器在注冊階段完全可信,此種注冊方式是安全的.但在C-5 假設下,可能引起潛在的內部人員攻擊.我們以2017 年Farash 等人[44]在Adhoc Networks 上提出的協議為例進行說明.該協議方便高效、簡單易用,能抵御各種潛在攻擊,如重放攻擊、平行會話攻擊、仿冒攻擊等.我們選用Farash 等人的協議主要因為該協議的用戶請求注冊過程具備典型性和代表性.
在用戶注冊階段,用戶Ui選取身份標識IDi,口令PWi和隨機數b,并計算RPWi=h(PWi⊕b).用戶將{IDi,RPWi}發送給服務器,服務器完成基本的安全檢查,比如IDi是否是已經注冊過的用戶等.然后,服務器計算特定安全參數,將包含安全參數的智能卡發送給用戶.最終,Ui將b寫入智能卡.根據攻擊者能力C-5,A偵聽通信信道,并獲得用戶隨機口令RPWi,同時根據C-3,攻擊者A可能無意中(拾取/竊取)獲得用戶Ui的智能卡,則A可以借助邊信道攻擊技術[33,34]提取智能卡內存儲的隨機數b.攻擊者A可實施離線口令猜測,具體流程如下:
1) A從用戶口令空間Dpw猜測可能的口令
由于用戶口令空間|Dpw|十分有限(|Dpw|≤106[36]),上述攻擊可以在多項式時間內完成.近期,Github[45]和Twitter[46]發現:由于口令重置功能中的系統漏洞,導致用戶口令以明文格式記錄在公司的內部日志中,少量特權內部員工有權訪問記錄用戶口令的日志文件.Github 和Twitter 公司均采用“加鹽Hash”技術存儲和傳輸用戶口令.這說明:即使在資本雄厚、以技術見長的組織中,針對認證系統的內部人員攻擊也有潛在可能,需要縱深防御.但本文提到的內部攻擊并未引起重視,鮮有文獻明確描述此類攻擊過程.需要指出的是,此類攻擊場景需要攻擊者首先在注冊階段監聽到用戶和服務器的交互信息;當用戶注冊后,竊取并分析出用戶智能卡內參數信息.因此,這一攻擊場景具有一定的局限性.不過,本攻擊場景具有普適性,除無線傳感器網絡,也適于傳統的C/S 架構、多服務器架構、移動互聯網等.接下來,我們以Mir 等人的方案[26]和Fang 等人的方案[27]為例,分析被長期忽略的內部攻擊問題以及協議設計中的常見安全問題.
Mir 等人的方案[26]分為5 個階段:用戶注冊、傳感器節點注冊、登錄、認證和口令修改.系統初始化階段,網關節點GWN 生成并安全存儲主密鑰d.方案中所使用的符號縮寫及其含義見表2.

Table 2 Notations and abbreviations表2 符號及縮寫
外部用戶若要登錄系統,則首先執行如下過程.
1) 用戶Ui選取身份標識IDi、口令PWi,生成隨機數ri,計算RPWi=h(PWi||ri).
2)Ui?GWN:{PWi,IDi}.
3) GWN 隨機生成安全參數b,計算Xi=h(IDi||d),TCi=Xi⊕RPWi,Qi=h(RPWi||Xi||IDi).GWN 在數據庫中存儲{IDi⊕h(d||b)},同時,將{TCi,h(?),h(Qi)}寫入智能卡.其中,d為系統主密鑰.
4) GWN?Ui:智能卡.
5)Ui接收到智能卡,計算F=ri⊕h(IDi||PWi),將F寫入智能卡.則此時,智能卡中包含參數{TCi,h(?),h(Qi),F}.
首先,任意傳感器節點Sj選擇SIDj和隨機數y,計算Vj=h(SIDj||y),將{Vj,SIDj}通過安全信道發送給GWN,完成以下注冊過程.
1) GWN 計算TCj=h(d||SIDj)⊕Vj,將{SIDj,Vj⊕h(SIDj||b)}存入數據庫.
2) GWN?Sj:{TCj}.
3)Sj接收到GWN 的返回信息后,計算G=TCj⊕Vj=h(d||SIDj),J=h(h(d||SIDj)||Vj),將J安全地寫入內存中.
若用戶Ui要直接訪問傳感器節點的資源,需進行如下操作.
1) 用戶Ui在讀卡器中插入智能卡,輸入IDi和PWi.智能卡計算ri=F⊕h(IDi||PWi),RPWi=h(IDi||PWi||ri),Xi=TCi⊕RPWi=h(IDi||d),,并驗證與存儲的h(Qi)是否相等:如果不相等,則說明用戶輸入的IDi和PWi不正確,智能卡終止執行.
2) 智能卡生成隨機數Ki,計算.其中,T1為當前時間戳.
3)Ui→GWN:{M}.
此階段實現用戶、網關節點、傳感器節點的相互認證,并建立會話密鑰.
1) GWN 收到來自用戶的登錄請求后,計算Xi=h(IDi||d),,驗證(T2?T1)>ΔT是否成立(其中,T2表示當前時間戳).
? 如果成立,則表明收到的消息{M}超出最大時間間隔,GWN 終止用戶的登錄請求;
2) GWN 計算J=h(h(d||SIDj)||Vj),Hj=h(Ki||SIDj||IDi||T3||T1),Aj=EJ(IDi||SIDj||Ki||T1||Hj).其中,T3表示當前時間戳.
3) GWN→Sj:{Aj,T3}.
4)Sj接收到GWN 的信息后,首先驗證(T4?T3)>ΔT是否在合理的時間間隔內:
? 如果成立,則終止協議;
? 反之,Sj用存儲的主密鑰J解密Aj=DJ(IDi||SIDj||Ki||T1||Hj),計算,驗證是否相等:如果不相等,Sj終止協議;反之,Sj生成隨機數Kj,計算SK=h(Ki||Kj||IDi||SIDj||T1),
6)Ui收到Sj的返回消息后,首先檢查(T6?T5)>ΔT是否成立:
? 如果成立,則終止連接;
? 反之,Ui計算,并驗證是否相等:如果不相等,Ui終止會話;反之,Ui認證Sj和GWN,且Ui和Sj之間建立新的通信,協商會話密鑰SK=h(Ki||Kj||IDi||SIDj||T1).
Mir 等人[26]發現:文獻[25]中提出的無線傳感器網絡環境下的匿名用戶認證方案不能實現前向安全性,且不能抵抗離線口令猜測攻擊和仿冒攻擊.因此,Mir 等人[26]給出了一個高效的適于WSN 環境的匿名雙因子協議,聲稱該方案彌補了文獻[25]的安全缺陷,且使用BAN 邏輯證明了改進協議的正確性.但經仔細分析,我們發現Mir 等人的方案[26]仍無法實現前向安全性這一理想屬性,且對內部攻擊和智能卡丟失攻擊是脆弱的.
分析發現,文獻[25]的方案無法抵抗內部攻擊,但Mir 等人沒有意識到該安全缺陷.盡管用戶注冊階段略有改進,Mir 等人所提出的方案[26]仍繼承了這一缺陷.根據第2 節的攻擊者能力C-5,假設惡意的內部特權用戶A偵聽并截獲用戶注冊階段發送給GWN 的消息{RPWi,IDi}.同時,A可能以某種方式長期占有(竊取/拾取)用戶Ui的智能卡,并(借助專業機構)通過邊信道攻擊[33,34]分析出智能卡內秘密參數信息{TCi,h(?),h(Qi),F},然后,A可通過以下方式離線猜測出用戶口令.
1) A從用戶口令空間Dpw猜測可能的口令
由于系統缺陷、代碼漏洞等,用戶提交的注冊請求可能泄漏給有權訪問系統日志的少數內部員工,故上述假設是合理的.當然,有些學者可能會建議采用更安全的信道執行注冊階段,例如面對面注冊.這對安全性要求較高的服務是合理的,例如政府機關、軍事機要組織等.但隨著云計算、物聯網、移動互聯網的快速發展,普通大眾成為網絡服務的主要參與方,用戶要訪問的資源量明顯增多,實時性要求進一步增強.為實現多用戶遠程實時訪問,大多數系統允許用戶遠程注冊,則上述內部攻擊過程就不可避免.
此外,文獻[25]中構造隨機口令的方式與第2 節描述的經典方案相同,即RPWi=h(PWi||ri),且在智能卡中明文存儲隨機數ri.攻擊者對此方法發起攻擊的時間復雜度為O((Th+Txor)×|Dpw|),其中,Th為Hash 操作時間,Txor為異或操作時間,|Dpw|表示用戶口令空間.文獻[35,36]指出,實際用戶口令服從Zipf 分布,空間大小十分有限,約|Dpw|≤106,故此攻擊過程可在多項式時間內完成.Mir 等人[26]似乎意識到文獻[25]的注冊過程并不安全,但未明確指出.新提出的方案略有改進,其中,隨機口令包含用戶身份ID,在智能卡中以IDi和PWi的Hash 值保護隨機數,即存儲F=ri⊕h(IDi||PWi).但實際僅增加了一次Hash 操作的難度,攻擊的時間復雜度為O((2Th+Txor)×|Dpw|),并沒有實質性地增加攻擊難度.除此之外,攻擊者利用截獲的RPWi和智能卡中提取的TCi,可直接計算出Xi,以此仿冒用戶登錄系統.故Mir 等人的方案仍易遭受內部攻擊.
在Mir 等人的方案[26]中,存在另一種獲取用戶口令的方法,即利用用戶智能卡內存儲的安全參數進行離線口令猜測.統計數據顯示:近年來,智能卡丟失是帶動智能卡銷售的關鍵因素之一[47].在日常生活中,用戶極易將智能卡遺落在讀卡器上.一旦攻擊者獲得用戶智能卡,就能通過(自行或求助專業機構)實施邊信道攻擊分析出智能卡內秘密參數信息{TCi,h(?),h(Qi),F}.值得一提的是:Mir 等人[26]在攻擊文獻[25]的方案及分析新方案的安全性時,明確假設“攻擊者可能竊取或找到用戶丟失的智能卡,并提取卡內秘密參數”.故而,攻擊者A可通過以下方法離線猜測出用戶口令PWi.
1) A從用戶身份空間Did和口令空間Dpw猜測
上述口令猜測攻擊的時間復雜度為O((4Th+2Txor)×|Did|×|Dpw|),其中,Txor為異或操作時間.現實中,異或運算的時間相對較短,可忽略不計.文獻[39,48]皆指出,用戶身份ID 通常遵循特定格式,評估非隱私安全時可視作公開信息.另一方面,第4.1 節提出的內部攻擊中,用戶ID 在注冊階段以明文傳輸,并保存在GWN 的驗證表項里,可能由于管理員的疏忽或系統漏洞泄漏用戶身份ID.則上述攻擊的時間復雜度弱化為O((4Th+Txor)×|Dpw|),故攻擊者可通過丟失的智能卡在多項式時間內猜測出用戶口令.
不難發現,Mir 等人的協議存在內部攻擊的本質原因是在智能卡內存儲安全參數h(Qi),以驗證用戶輸入的口令,實現“口令本地自由更新”,但此參數同時為攻擊者提供了驗證口令的預言機服務.為解決上述安全性和可用性平衡問題,可采用文獻[35]中提出的“模糊驗證因子”+“Honeywords”技術,即將Qi的計算方式修改為Qi=h(RPWi||Xi||IDi) modn,且GWN 維護用戶嘗試登錄的Honeywords 列表.其中,n表示用戶身份和口令(ID,PW)池容量的整數,一般滿足24≤n≤28.若用戶嘗試登錄次數達到閾值,則鎖定該賬號.
通常情況下,無線傳感器網絡均部署在無人監管的環境,且執行高安全性的任務,如戰場環境監測、健康狀況檢測和交通監管等[3,4].一方面,傳感器中存有敏感數據,易引起攻擊者的注意;另一方面,相比于網關節點GWN,傳感器節點的安全保護措施明顯不足.因傳感器節點內存容量和電池容量限制等因素,一般不配備防篡改硬件,這使得敵手更可能在物理上捕獲傳感器節點.一旦攻擊者A捕獲傳感器節點Sj,則A可獲得Sj的長期私鑰J.同時,根據第2 節的攻擊者能力C-1,A可偵聽、截獲任意合法用戶Ui,GWN 和Sj之間的通信消息,則A可利用截獲的通信消息和Sj的長期私鑰推導出先前的會話密鑰,具體過程如下.
1) A截獲GWN 發送給Sj的消息{Aj,T3}.
2) A使用Sj存儲的秘密參數J解密Aj=DJ(IDi||SIDj||Ki||T1||Hj),獲得IDi,SIDj,Ki,T1,Hj.
3) A截獲Sj回送給用戶的消息
5) A推導出會話密鑰SK=h(Ki||Kj||IDi||SIDj||T1).
可以看出:Ki,Kj,IDi,SIDj和T1均為截獲或推導出的正確數值,攻擊者可獲得合法的會話密鑰SK.除此之外,A能夠獲得訪問過該服務器的所有用戶的會話密鑰.事實上,Ma 等人在文獻[49]中證明了:為實現前向安全性,公鑰密碼技術不可或缺.此外,在服務器端至少進行兩次模冪運算或橢圓曲線點乘運算[17].Mir 等人的方案[26]中未采用公鑰密碼技術,本質上無法實現前向安全性.故建議在Mir 等人的方案中引入Diffie-Hellman 密鑰交換技術、橢圓曲線技術[50]、Chaotic Maps 技術[51]等輕量級公鑰密碼技術,以實現前向安全性.
2018 年,Fang 等人[27]提出一個高效、實用的基于生物特征的三因子用戶認證協議.該協議能抵抗各種潛在攻擊,如仿冒攻擊、重放攻擊等,有效實現用戶匿名性、口令和生物特征自由更新.Fang 等人的方案[27]包含4 個階段:注冊、登錄、認證、口令和生物特征更新.
當用戶Ui訪問傳感器網絡時,需向GWN 完成如下注冊過程.
1)Ui選擇身份標識IDi和口令PWi,掃描生物特征Bi,生成隨機數K,利用生物特征模糊提取函數Gen(?)計算Gen(Bi)=(σi,τi),生成Bi對應的密鑰σi和公共參數τi,其中,σi僅為Ui所知.Ui進一步計算RPWi=h(PWi||K),選取keyi作為Ui與GWN 的共享密鑰.
2)Ui?GWN:{RPWi,IDi,keyi}.
3) GWN 在數據庫中存儲keyi,利用主密鑰XGWN計算ri=h(IDi||XGWN),將{ri,h(?)}寫入智能卡.
4) GWN?Ui:智能卡.
5)Ui收到GWN 返回的智能卡后,計算ei=h(IDi||σi)⊕K,fi=h(IDi||RPWi||σi)⊕K,gi=h(IDi||σi)⊕keyi,li=ri⊕h(IDi||K)=h(IDi||XGWN)⊕h(IDi||K),并用li替換ri,同時在智能卡中存儲參數{ei,fi,gi,Gen(?),Rep(?),τi}.
當用戶Ui要登錄傳感器網絡時,將進行以下操作.
1)Ui在讀卡裝置中插入SCi,輸入IDi,PWi和生物特征.SCi計算,并驗證是否相等:如果不相等,則終止操作.
2)SCi進一步計算keyi=gi⊕h(IDi||σi),C1=li⊕h(IDi||K)=h(IDi||XGWN),生成隨機數RNi,選擇將要訪問的節點Sj,計算C2=C1+RNi=h(IDi||XGWN)⊕RNi,C3=h(IDi||SIDj||C1||RNi||T1).其中,T1表示當前時間戳.
GWN 收到來自用戶登陸請求后,利用keyi解密,得到參數(SIDj,C2,C3,T1),繼續執行以下操作.
1) 驗證|T2?T1|≤ΔT是否成立:
? 如果不成立,則終止協議;
? 反之,GWN 計算C4=h(IDi||XGWN),C5=C2⊕h(IDi||XGWN)=h(IDi||XGWN)⊕RNi⊕h(IDi||XGWN)=RNi,C6=h(IDi||SIDj||C4||C5||T1),并驗證C6=C3是否成立:若成立,表明Ui是合法用戶;否則,GWN 終止操作.接下來,GWN 提取Sj的主密鑰MKj,計算.其中,T3表示當前時間戳.
2) GWN?Sj:{SIDj,C7}.
3)Sj接收到來自GWN 的消息后,解密C7得到IDi,和|T4?T3|≤ΔT是否成立.其中,是解密所得,而SIDj是接收到的消息.如果上述兩項均成立,則Sj成功認證Ui;若任意一項不成立,則終止操作.進一步,Sj生成隨機數RNj,計算會話密鑰SK=h(IDi||SIDj||h(C4)||C5||RNi||T1||T5),C8=h(SK),C9=C5⊕RNj⊕IDi=RNi⊕RNj⊕IDi.其中,T5表示當前時間戳.
4)Sj→Ui:{C8,C9,T5}.
5)Ui接收到Sj的返回消息后,首先檢驗|T6?T5|≤ΔT是否成立.
? 如果不成立,則終止連接;
? 反之,SCi計算C10=C9⊕RNi⊕IDi=RNj,SK=h(IDi||SIDj||h(C4)||RNi||C10||T1||T5),C11=h(SK),并驗證C11=C8是否相等:如果相等,則Ui成功認證Sj;否則,Ui終止操作.Ui和Sj實現相互認證,并建立共享會話密鑰SK.
近期,Fang 等人[27]指出,Althobaibi 等人的方案[28]無法抵抗節點捕獲攻擊,GWN 仿冒攻擊和中間人攻擊,并且對內部攻擊是脆弱的,故提出改進方案.Fang 等人提出的改進方案[27]僅采用對稱密碼技術,簡單高效,適于資源受限的無線傳感器網絡.然而經分析,Fang 等人的方案[27]仍無法實現所宣稱的抗內部特權攻擊和智能卡丟失攻擊,且存在前向安全性問題.
分析發現,Fang 等人[27]企圖引入生物因子彌補內部攻擊的安全漏洞并不可取.
· 一方面,生物特征具有唯一性和穩定性,一旦丟失將不可挽回[52,53].近幾年,生物信息泄漏時有發生.2016 年,美國人事管理辦公室(OPM)和國防部發現在最近的OPM 數據泄露事故中,2 150 萬人的敏感信息被盜,其中約560 萬人的指紋記錄被泄漏[54].
· 另一方面,指紋等生物信息易于偽造.現實生活中,簡單使用透明膠帶或指紋膜即可偽造指紋.
因此,假設攻擊者通過某種途徑(系統泄漏、偽造或竊取)獲取用戶生物信息是現實的.
值得一提的是,多因子安全性是多因素認證協議最基本的安全目標,即假設攻擊者獲取多因子中的n?1 個因子,仍不能推測出另一因子或仿冒用戶.在Fang 等人[27]的三因子認證協議中,假設攻擊者A獲得:1) 用戶口令;2) 智能卡內秘密參數;3) 用戶生物特征.其中任意兩因子,仍不能得到最后一個因子,即攻擊者能力C-3.根據以上推斷及第2 節中攻擊者能力C-1,我們假設攻擊者A通過偵聽用戶注冊階段,截獲用戶注冊請求消息{RPWi,IDi,keyi},并以某種方式(如拾到智能卡和用指紋膜提取指紋信息)獲得了用戶智能卡和生物信息,A可離線猜測出用戶口令.具體過程如下.
1) A通過邊信道攻擊技術[33]提取智能卡內敏感信息{li,ei,fi,gi,h(?),Gen(?),Rep(?),τi};
2) A從用戶口令空間Dpw中猜測PWi*;
3) A計算K*=h(IDi||σi)⊕ei,其中,ei從智能卡中提取,IDi從傳輸信道中獲得;
事實上,很多協議(如文獻[48])允許用戶在注冊階段直接將生物因子傳輸給服務器,惡意管理員可在遠程傳輸的過程中截獲或內部提取用戶生物信息.故假設攻擊者獲得用戶生物信息是合理的.在這一假設下,上述攻擊方式與第4.1 節中提出的攻擊方式一致,攻擊者可在多項式時間內離線猜測出用戶口令.
用戶會選擇便于記憶的低熵口令,而且用戶可能利用個人信息構造口令,或重用口令,這些用戶行為都會顯著降低攻擊者猜測口令的難度.近期,Wang 等人在文獻[53]中指出,對安全的三因子認證協議,假設攻擊者獲取了用戶智能卡和生物特征,仍能保證用戶口令的安全性.事實上,由于在線或離線字典攻擊技術的發展,確保三因子安全性并非易事.在Fang 等人的協議[27]中,假設攻擊者通過邊信道攻擊技術(如差分能耗分析[33]、逆向工程技術[34]等)獲得受害者智能卡內敏感信息[17],并通過PC 或支付設備的惡意掃描器獲得用戶生物信息Bi,則可以發起離線口令猜測攻擊.
1) A通過邊信道攻擊技術提取智能卡內敏感信息{li,ei,fi,gi,h(?),Gen(?),Rep(?),τi}.
2) A計算σi=Rep(Bi,τi),其中,Bi通過其他途徑獲得,例如從PC 或者刷臉支付設備中竊取.
3) A從用戶身份空間Did和口令空間Dpw猜測
不難發現,存在上述攻擊的根本原因是用戶智能卡中存儲了口令驗證項fi.為實現用戶口令本地自由更新,同時防止離線口令猜測攻擊,仍建議采用Wang 等人[35]提出的“模糊驗證因子”技術,修改fi的計算方式為fi=h(IDi||RPWi||σi) modn.假設|Did|≤|Dpw|≤106[36],24≤n≤28,則至少存在232個候選(ID,PW)阻礙攻擊者猜測出正確的口令.
Fang 等人在文獻[27]中指出,基于Dolev-Yao 攻擊者拓展模型,Althobaiti 等人的協議[28]不能抵抗節點捕獲攻擊,故Althobaiti 等人的協議未實現前向安全性.Fang 等人[27]明確假設:一旦攻擊者A捕獲傳感器節點Sj,即可獲取Sj的長期私鑰MKj,這與第2 節中攻擊者能力C-5 一致.在此假設下,攻擊者A可通過偵聽、截獲任意用戶Ui和Sj通信的公開信道的消息,獲取Ui和Sj的會話密鑰,具體流程如下.
1) A偵聽并截獲GWN 發往Sj的消息{SIDj,C7}.
2) A利用Sj的主密鑰解密C7得到IDi,SIDj,C5,h(C4),T1和T3.
3) A偵聽并截獲Sj回送給Ui的消息{C8,C9,T5},提取T5,并計算RNj=C9⊕C5⊕IDi.
4) A計算會話密鑰SK=h(IDi||SIDj||h(C4)||C5||RNj||T1||T5).
最終,攻擊者計算C8=h(SK),驗證計算的C8是否與截獲的C8相等:如果相等,則說明攻擊者A獲得了Ui和Sj先前的會話密鑰,則A可利用該會話密鑰和截獲的通信消息,解密Ui和Sj的通信.可見,一旦傳感器節點Sj被攻擊者捕獲,任意用戶與Sj的通信將會完全暴露給攻擊者.值得一提的是,為了實現上述攻擊,A只需偵聽通信信道中的消息,無需與GWN 交互,A實施攻擊后,可在GWN 未察覺的情況下,重啟節點Sj.
在Fang 等人的協議[27]中,會話密鑰的安全性與傳感器節點的主密鑰唯一相關.而在開放的網絡環境中,惡意管理員或外部攻擊者可能腐化或控制傳感器節點,因此應確保會話密鑰與傳感器節點主密鑰之間的獨立性.為此,可采用Diffie-Hellman 密鑰交換技術將Fang 等人協議中的隨機數RNi和RNj修改為,在會話密鑰SK的計算中級聯,且RNi和RNj無需傳輸.由于僅用戶Ui和與之通信的傳感器節點Sj知道隨機數RNi和RNj,攻擊者無法從通信消息中計算出會話密鑰,則可確保會話密鑰的安全性.
綜上,我們根據文獻[18]中提出的標準對Mir 等人的協議[26]和Fang 等人的協議[27]進行了綜合性的評估,見表3.基于本文增強的攻擊者能力假設,目前已有的多因素認證協議均未能實現C3,即服務器管理人員可能通過內部攻擊獲得用戶口令.上文中已分析,Mir 等人的協議和Fang 等人的協議均無法實現標準C4,C5,C12.此外,兩個協議中未提及智能卡撤銷操作,即無法實現C6;且采用時間戳機制,則無法實現C8.

Table 3 A systematic evaluation of Mir,et al.’s protocol and Fang,et al.’s protocol表3 Mir 等人的協議和Fang 等人的協議綜合性評估
自1981 年Lamport[12]首次提出口令認證密鑰交換協議(PAKE)以來,基于口令的認證協議獲得長足發展.然而早期的僅口令認證的協議,由于服務器負責驗證用戶輸入口令的正確性,服務器不可避免地要存儲口令相關的驗證表項,勢必存在內部攻擊問題.1991 年,Chang 等人[29]首次將智能卡引入用戶身份認證協議,智能卡的出現,極大地緩解了內部攻擊問題.智能卡代替服務器驗證用戶口令,盡管并未從根本上解決離線口令猜測攻擊,但卻有效緩解了服務器端口令泄漏風險.本節將分析現有研究中針對內部攻擊的增強策略的不足之處,并提出合理的解決方案.
文獻[55?57]中提出了一種常見的內部攻擊場景,即用戶在注冊階段將明文口令PW發送給服務器(如文獻[58?60],服務器內部人員可能嘗試利用竊取的用戶口令訪問其他網站的服務.文獻[35]中指出,由于用戶需要管理大量帳號信息,而用戶記憶力有限,口令重用現象十分明顯,因此上述內部攻擊是現實的.近幾年,協議設計者意識到存在內部人員威脅,協議設計中已基本避免此種類型的攻擊發生.然而,本文第2 節中提到的攻擊場景并未引起廣泛重視.
Amin 等人在文獻[61]中指出,Xue 等人的協議[62]存在第2 節指出的內部攻擊,即用戶將隨機數加鹽的口令發送給服務器,內部人員可能通過竊聽服務器的通信、竊取用戶智能卡的方式離線猜測出用戶口令.但在隨后提出的新協議中,Amin 等人并未給出合理的解決方法.同樣的攻擊在文獻[63]中也明確提及,但仍未給出解決策略.文獻[64?69]中雖未明確說明,但作者考慮到可能存在這一攻擊,故在設計新協議時采取了適當的修正措施.分析發現:存在此類型內部攻擊的關鍵在于隨機數的保存,由于攻擊者能夠通過邊信道攻擊等技術[33,34]從竊取的智能卡中獲得隨機數,才使得上述內部攻擊得以實現.
基于300 余個用戶身份認證協議的分析經驗,本文將現有協議中抵抗第2 節提出的內部攻擊的改進策略分為7 類,見表4.其中,方案I 應用最為廣泛,如文獻[61,64?66].其注冊過程不變,即用戶向服務器發送用隨機數加鹽的隨機口令,但在智能卡中不存儲隨機數明文ri,而保存ri⊕h(IDi||PWi).從第4.1 節的分析中可以看出,此種方案僅給攻擊者增加了一次Hash 的難度,并未阻止攻擊者離線猜測用戶口令.第6.1 節中給出了方案II 的實例分析.現實生活中,用戶生物特征信息泄漏現象時有發生,且生物信息一旦泄漏將無法挽回.遺憾的是,就我們所知,大量文獻(如[67?69])均基于生物信息安全可靠的假設,生物信息安全性缺乏應有的關注.根據第6.1 節的攻擊實例可得,方案II 的攻擊與方案I 的攻擊難度相當,但涉及用戶隱私泄漏,方案II 存在更大的安全威脅.
文獻[70]中,Namasudra 等人提出一個基于Chebyshev 多項式的簡單、高效的用戶口令認證協議.該協議注冊階段允許任意用戶Ui將身份標識IDi和隨機口令RPWi=h(PWi||IDi)⊕ri發送給服務器.服務器計算Ai=h(IDi||x),Ci=Ai⊕RPWi,將Ci寫入智能卡并傳送給用戶.其中,ri為用戶選擇的隨機數,x為服務器主密鑰.用戶接收到智能卡后,計算d1=Ci⊕ri,d2=h(PWi||IDi),以d1,d2替換智能卡中的Ci.可以看出:隨機數ri包含在d1中,而計算出d1的關鍵在于服務器的主密鑰x,我們稱這種保護隨機數的方法為方案III.事實上,方案III 易遭受智能卡丟失攻擊.假設攻擊者A已獲得智能卡內秘密參數信息,則A可以直接猜測合理的,計算,并驗證計算的是否等于提取的d2:如果相等,則表明A猜測的是正確的.攻擊過程無需偵聽通信信道,針對方案III 的離線口令猜測攻擊更易實施.

Table 4 A taxonomy of improvement strategies表4 改進策略分類
為防止智能卡丟失攻擊和內部人員攻擊,Wu 等人[74]給出另一種以服務器主密鑰保護隨機數的方案III.在注冊階段,用戶向服務器發送{IDi,RPWi}.服務器選擇隨機數ei,計算,服務器將寫入智能卡并發送給用戶.用戶收到智能卡后計算并用T1,T2替換.然而在Wu 等人的[74]方案中,由于智能卡無法獲知服務器主密鑰x,因此不能驗證用戶輸入的口令是否正確.口令驗證過程由服務器實現,則不能實現“口令本地自由更新”.
方案IV 也存在兩種實現方法.
· 文獻[71]中,Wang 等人提出一個高效的基于動態ID 的遠程用戶口令認證協議.該協議注冊階段僅將用戶身份標識IDi發送給服務器,由服務器選擇用戶口令,并將口令PWi以明文發送給用戶.可見,Wang 等人的協議[71]不支持用戶自由選擇口令,仍然存在內部攻擊威脅.
· 文獻[72]中,Amin 等人對方案IV 的實現方法略有改進.用戶在注冊階段發送身份標識IDi,服務器返回智能卡后,用戶再輸入選擇的PWi.經分析,Amin 等人的方案[72]緩解了上述內部攻擊,但存在兩種類型的智能卡丟失攻擊:一是直接利用智能卡內存儲的秘密參數進行口令猜測;另一種是借助智能卡內信息和公開信道中的消息進行口令猜測.因此,方案IV 也不可取.
與上述方案不同,文獻[73]在注冊階段未選擇隨機數,用戶計算HPWi=h(PWi||IDi),將IDi和HPWi發送給服務器.我們稱此類方法為方案V.不難看出,內部攻擊者可直接通過截獲的通信消息猜測出用戶口令,故方案V 未解決內部攻擊問題.方案VI 與方案V 如出一轍,以用戶生物特征替換IDi來計算HPWi.依據第6.1 節的實例分析,方案VI 仍存在內部攻擊威脅.此外,由于用戶將生物特征發送給服務器,還可能存在隱私泄露風險.
文獻[55]中,Sood 等人提出一種基于公鑰密碼技術的口令認證協議.在系統初始化階段,服務器選擇公私鑰對,并公開公鑰PK.用戶注冊過程先選擇會話密鑰SS,以會話密鑰加密用戶自主選擇的身份標識和口令,再以服務器公鑰PK加密會話密鑰SS,即用戶將{(SS)PK,(IDi)SS,(PWi)SS}發送給服務器.
此類方案有效解決了傳輸消息的安全性,但假設惡意內部管理員有權解密用戶注冊請求或監聽到服務器解密及計算過程,則依然能獲得用戶口令.
總之,第2 節中提到的內部攻擊威脅并未引起廣泛關注,文獻[17,35,75]仍建議將隨機數以明文保存在智能卡中.上述7 類解決方案對內部攻擊威脅有適當的緩解作用,但可能引入新的安全問題,并未從根本上解決內部攻擊問題.本文將彌補這一缺陷,提出合理的解決方案抵抗內部攻擊.
為避免服務器獲得口令明文和用戶隱私泄漏,采用“加鹽Hash”技術傳輸口令相比其他幾種方式更簡單、安全、高效[35].基于對300 余個用戶認證協議的分析經驗,我們發現大多數采用“加鹽Hash”技術實現用戶注冊的協議均無法抵抗內部攻擊,這是因為這些協議均有以下兩條性質.
1.RPWi由IDi,PWi和ri確定;
2.ri可由用戶IDi,PWi或SC計算出來.
其中,ri表示用戶在注冊過程中選擇的隨機數,SC表示用戶智能卡.以下我們將會說明,具有這兩條性質的協議無法抵抗內部攻擊.因此,我們稱其為內部攻擊的簡易判斷標準.
說明1.常見的口令存儲形式有3 種:明文、加密、哈希值.明文不可取,而加密和直接Hash 均易被服務器還原,因此,增加一個隨機鹽可以有效增加口令的安全性.近年來,“加鹽Hash”技術廣泛應用于現有的身份認證協議(如文獻17,19,20,35,71,75]),用戶在注冊階段選擇隨機數ri,計算RPWi=h(PWi||ri),將{IDi,RPWi}發送給服務器,此類方法有助于確保服務器不能獲得口令明文,且不能直接猜測用戶口令.
說明2.假設用戶登錄階段使用RPWi進行驗證,即智能卡無需計算出隨機數ri,則可能存在內部攻擊者仿冒用戶攻擊.否則,智能卡需計算出ri,以驗證用戶口令PWi的正確性.此外,假設隨機口令RPWi與用戶IDi,PWi無關,則只能與服務器主密鑰相關,而服務器的目標是驗證用戶的合法性,若以服務器主密鑰推算隨機數ri,則服務器相當于一個預言機,將為攻擊者提供仿冒用戶或驗證猜測口令正確性的預言機服務.
綜上所述,任意協議在用戶注冊階段采用了“加鹽Hash”技術傳輸用戶口令,并且在智能卡中以某種方式保存了用戶選擇的隨機數,該協議將無法抵抗內部攻擊.針對此問題,本文提出一種新的解決方案,在此只簡述用戶注冊過程的基本思路,協議登錄、認證過程可兼容現有的用戶身份認證協議.
1) 用戶Ui選取身份標識IDi,口令PWi,生成隨機數ri,計算RPWi=h(PWi||ri).
2)Ui?S:{IDi,RPWi}.
3) 服務器S隨機生成安全參數ai,計算Xi=h(h(IDi||x)⊕ai),Fi=h((h(IDi)⊕RPWi) modn),Di=Xi⊕RPWi.在數據庫中存儲{IDi,ai};同時,將{Di,Fi,n}寫入智能卡.其中,x為系統主密鑰,n表示(ID,PW)池容量的整數,24≤n≤28.
4)S?Ui:智能卡.
5)Ui接收到智能卡,計算Xi=Di⊕RPWi,重新生成隨機數,計算替換智能卡中的Di,Fi,并將寫入智能卡.
需要指出的是:服務器接收到的RPWi與智能卡中參與計算的并不相同,即使攻擊者截獲了注冊過程中的RPWi,提取用戶智能卡中的安全參數,也無法借助隨機數猜測出用戶口令.此外,通過引入“模糊驗證因子”技術[35],如第4.2 節和第6.2 節所示,增加了攻擊者猜測出正確口令的難度.因此,本文提出的方案可以有效解決第2 節的內部攻擊,同時允許用戶自主選擇口令,保護用戶隱私,實現口令本地自由更新.
無線傳感器網絡的身份認證面臨嚴峻挑戰:一方面由于傳感器節點計算能力和存儲容量有限,無法支撐復雜密碼協議;另一方面,攻擊者的攻擊能力不斷增強,先前安全的協議在新的攻擊場景下將不再安全.本文以無線傳感器網絡環境下的兩個代表性認證協議為例,分析一種實際存在的、但未引起廣泛關注的內部攻擊威脅,并且給出攻擊者的具體攻擊過程.
具體來說,本文首先回顧Mir 等人的協議,指出其不能抵抗內部攻擊和智能卡丟失攻擊,且不能實現前向安全性;然后分析Fang 等人的協議,指出其同樣不能抵抗內部攻擊和智能卡丟失攻擊,且未實現所宣稱的前向安全性屬性.針對Mir 等人的協議和Fang 等人的協議的具體失誤之處,提出相應解決方案.本文指出一種被長期忽略的內部攻擊,基于300 余個協議分析經驗,對現有嘗試抵抗內部攻擊的方案進行分類,指出現有解決方案的不足之處,進一步提出合理的解決方案.根據本文提出的抗內部攻擊方法,設計更安全高效的用戶身份認證協議,是下一步值得研究的方向.