謝金濤,王玲芳,李 楊
(1.中國科學院大學,北京 100049;2.中國科學院聲學研究所國家網絡新媒體工程技術研究中心,北京 100190)
根據思科預測,到2030 年,物聯網(Internet of Things,IoT)設備將達到5 000億臺,其中包括大量的智能家居、車聯網等移動設備[1]。但是目前的網絡架構難以滿足這些移動場景的低時延、高吞吐等要求[2-4]。5G 和信息中心網絡(Information-Centric Networking,ICN)的融合為解決該問題提供了新的思路[5-7]。ICN以信息為中心,將內容和位置分離,通過名字訪問內容實體,可以為5G 網絡提供移動性、安全性等支持[8-9]。名字解析系統(Name Resolution System,NRS)作為ICN 的重要組成部分,負責建立、維護和發布信息名字和地址之間的映射關系,提供快速的名字解析功能等[10-11]。
移動節點(Mobile Node,MN)請求NRS 服務需要先通過NRS 代理(NRS Proxy,NP)認證,獲取解析節點列表。由于NP 的服務范圍有限,MN 存在不同NP 間切換認證的場景。考慮到MN 的計算能力可能有限,并且要確保其服務的連續性,切換認證協議必須滿足簡單性、高效性和安全性要求[12-14]。根據調研結果,目前針對NRS 中切換認證的研究較少。不過,無線網絡和NRS 的切換場景有高度的相似性,可以從中借鑒一二。文獻[15-16]通過對稱加密的票據減少無線網切換過程中的認證延遲。MN 持有原接入點(Access Point,AP)分發的票據就可以向目標AP 認證。文獻[17-18]將多個接入點AP 構成組,MN 使用原AP 私有組密鑰加密的票據認證。該方案對AP 要求高。文獻[19]采用廣播的方式認證。MN 通過認證服務器(Authentication Server,AS)將票據發送給AP。AS 和AP 之間可能有很多跳,這種方式有時延過高的問題。文獻[20]提出基于票據廣播的切換機制來改進多跳問題。原AP 提前生成票據,通過一跳將票據發送給鄰居。文獻[21-22]指出文獻[20]存在一些漏洞,比如有效期明文存儲導致的篡改問題、AP 間密鑰相同帶來的安全風險等。然而文獻[22]改進后同樣存在類似的安全問題。文獻[21]雖然解決了上述問題,但是認證過程中冗余開銷和計算代價都比較大。
文中提出了一種基于票據的名字解析系統切換認證方案,實現安全高效的切換認證。MN 首次接入NRS 時利用AS 預簽名的票據與NP 完成認證。在MN 移動過程中,MN 使用從NP 提前獲取的票據完成切換認證。分析表明該方案不僅能提供多種安全保障,而且分別通過四次通信和兩次通信完成接入認證和切換認證過程,降低了認證交互過程中的冗余開銷和計算代價。
NRS 模型如圖1 所示,包括解析節點、代理NP以及移動節點MN。其中解析節點在滿足時延要求的前提下提供解析服務。NP 負責維護解析節點列表,輔助MN 接入服務。MN 是NRS 的移動用戶,可能是手持設備、車輛、工業移動設備等。MN 首先要通過NP 認證獲得解析節點列表,才能進一步請求解析節點的服務。由于每個NP 的服務范圍有限,當MN 移動后,需要重新向新NP 認證才能獲得新解析節點列表。

圖1 NRS模型
在移動過程中,MN的服務需要保持連續性,因此切換認證方案必須高效。MN在移動過程中容易被竊聽、劫持或破壞,切換認證方案也必須具備一定的安全性:1)雙向認證。MN 和NP 要驗證對方的合法性。2)隱私保護。MN 的身份標識在移動時不能被攻擊者獲取,后續通信不能被竊聽。3)前向和后向安全性。攻擊者即使得到密鑰也無法獲取之前和之后的通訊內容。4)抵抗重放攻擊。攻擊者重新發送竊聽到的信息,不能通過MN和AP的認證。5)抵抗偽造攻擊。攻擊者無法以偽造認證信息的方式通過認證。
在開始認證前,認證服務器AS對NP和MN的身份票據進行簽名。該文方案主要涉及三種票據:移動節點MN 的票據、代理NP 的票據和切換認證的票據。
1)移動節點MN 票據
TMN={IMN,IA,τexp_MN,PMN,SigA_MN},其中IMN是設備MN 的標識。IA是對IMN簽名的認證服務器AS 的標識。τexp_MN為票據TMN的有效期,如果票據失效了,MN 需要重新向AS 申請。PMN是MN 的公鑰,用于加密消息,防止認證過程中攻擊者的竊聽行為。SigA_MN是AS 對該票據的數字簽名,用于證明MN 是合法擁有該票據,而且使攻擊者無法修改票據,保證票據的真實完整。
2)代理NP 票據
TNP={INP,IA,τexp_NP,PNP,SigA_NP},其 中INP為代理NP 的標識。IA是對INP簽名的AS 的標識。τexp_NP為票據TNP的有效期。同樣地,如果票據失效,NP 需要再次向AS 申請。NP 的公鑰PNP用來加密信息,信息內容只能被NP 解密。SigA_NP是AS 對該票據的數字簽名,用于證明編號INP的代理擁有該票據的合法性和確保票據安全。
3)切換認證票據
θMN={IMN,INP,IA,τexp_θMN,H(IMN||INP||IA||τexp_θMN)} 其 中IMN、INP、IA分別是對應角色的標識,τexp_θMN是該票據的有效期。H(IMN||INP||IA||τexp_θMN)是這些內容經過單向散列函數運算的結果,以保證θMN的完整性。θMN一旦被篡改或者出錯,就會被發現。與上述兩個票據不同,θMN是由當前NP 為MN 生成的,用作MN 移動后,向下一個NP 認證的憑證。
文中涉及到的操作符號含義如表1 所示。

表1 操作符號含義
該文的認證方案包括接入認證和切換認證兩部分。前者是MN 首次請求NRS 服務時和代理NP1 之間的認證。后者是MN 移動后與下一個代理NP2 之間的認證。
假設MN和AP1的身份票據獲得了AS的簽名。MN要接入名字解析系統的服務,首先要和NP1 互相驗證票據,進行雙向認證。具體認證流程如圖2 所示。

圖2 接入認證流程
1)當MN 首次請求NRS 服務時,它需要先向周圍的NP 廣播包含它的標識IMN的消息。
2)代理NP1 收到請求后,向MN 回復消息通知它的存在。回復內容包括NP1 的票據TNP1和NP1 生成的隨機數NNP1。MN 收到消息后,首先通過τexp_NP1驗證票據是否過期。如果沒有過期,MN 驗證SigA_NP1是否合法。如果非法,MN 忽略NP1。當SigA_NP1合法,MN 完成對代理NP1 的認證,然后生成隨機數NMN0,并計算共享密鑰KPMK0=NMN0||NNP1。
3)通過上述步驟,MN 從票據TNP1中獲得NP1 的公鑰PNP1,并用其加密自己的票據TMN,隨機數NMN0以及H(KPMK0)。MN 將加密消息發送給NP1。NP1 收到后使用私鑰解密,得到TMN、NMN0和H(KPMK0)。然后NP1 通過τexp_MN驗證票據是否過期。如果沒有過期,NP1 驗證SigA_MN是否合法。當SigA_MN合法,NP1計算共享密鑰KPMK0=NMN0||NNP1,并通過單向散列函數運算,與H(KPMK0)進行比較,保證NP1 和MN 持有一致的共享密鑰。此時NP1 完成對MN 的認證。最后NP1 為MN 創建用于切換認證的票據θMN。
4)NP1使用共享密鑰KPMK0加密θMN和H(NMN0||θMN)后發送給MN。MN 解密得到切換認證票據θMN,并驗證H(NMN0||θMN),保證θMN的正確性。
為了實現快速切換,NP1 將一些信息通過路由共享給鄰居代理。以鄰居代理NP2 為例,NP1 根據NP2 的標識INP2生成臨時密鑰KPMK1=H(KPMK0||INP2)。同時生成MN 新標識IMN1=H(IMN0||INP2)以保護用戶的匿名性。之后NP1 通過NP 間共享密鑰加密θMN、KPMK1和IMN1后發送給NP2,用于切換認證。這些計算全部發生在代理,不會給MN 帶來計算負擔。當MN移動到NP2 時,會進行切換認證。具體流程如圖3所示。

圖3 切換認證流程
1)MN 首先生成用于切換的臨時密鑰KPMK1=H(KPMK0||INP2)、新標識IMN1=H(IMN0||INP2)和隨機數NMN1。然后MN 使用KPMK1加密IMN1、NMN1、H(IMN1||NMN1||θMN),將加密信息發送給NP2。NP2 收到后,使用從NP1 獲取到的臨時密鑰KPMK1解密,驗證H(IMN1||NMN1||θMN)是否正確。如果正確,則NP2 對MN 認證通過。接著NP2 生成隨機數NNP2,并計算與MN 的共享密鑰KPMK2=NMN1||NNP2。
2)NP2使用KPMK1加密NNP2、H(NNP2||θMN)、H(KPMK2)后,將消息發送給MN。MN 收到并解密得到NNP2,然后使用NNP2驗證H(NNP2||θMN)。如果驗證通過,則MN完成對NP2 的認證。之后MN 計算它與NP2 的共享密鑰KPMK2=NMN1||NNP2,驗證H(KPMK2),確保和NP2 擁有一致的共享密鑰。
通過以上兩次通信完成NP2 和MN 的切換認證,并協商出用于之后通信的共享密鑰KPMK2。
該文將從4 個方面分析本文方案的安全性。
1)雙向認證
在接入認證階段,NP1 和MN 互相發送和驗證票據。票據中AS 的簽名能保證NP1 和MN 的合法性。此外,MN 的票據TMN經過NP1 公鑰PNP1的加密,只能NP1 才能解密出消息內容。在切換認證前,切換認證票據θMN和MN 的新標識被NP1 通過NP 間共享密鑰的方式傳送給NP2。NP1 和MN 的共享密鑰KPMK0是雙方各自生成的,沒有在信道上傳遞,不能被攻擊者獲取,保證了KPMK0加密的θMN的安全。NP2 和MN 使用單向散列函數的方式互相認證θMN,一旦θMN偽造就無法通過認證。因此可以確保NP2和MN 之間的安全認證。
2)隱私保護
MN 的標識IMN0只有在首次請求NRS 服務時用到,切換過程中用到的標識都是由MN 提供的隨機數和NP2 的標識生成,而且該標識是NP1 和MN 各自生成的,沒有在信道上傳遞,降低了被獲取到的概率。在每次切換過程中更新標識能對MN 的隱私性提供保護。而且切換時NP2 和MN 迅速協商了新的共享密鑰,就算攻擊者得到了臨時密鑰,也無法用其竊聽后續通信。
3)抵抗重放攻擊
攻擊者可能會在認證階段竊聽消息,之后重放這些消息試圖通過認證。但是該方案不僅在票據上加入有效期防止重放攻擊,而且在接入認證和切換認證的過程中都加入了隨機數確保信息新鮮度,完成認證后這些隨機數就會被丟棄。另外,隨機數不是明文傳輸,通過密鑰和單向散列函數的方式,避免被攻擊者篡改和竊取。
4)抵抗偽造攻擊
在接入認證的過程中,NP1 和MN 的票據由AS的數字簽名保證合法有效。認證的信息都會攜帶相關的單向散列函數的運算結果,確保信息的完整性。如果被偽造就能識別出來。
如果認證方案中設備的負擔過高,會嚴重影響認證時延,降低認證效率。該文主要以通信開銷和計算代價作為性能的衡量指標[20-22]。其中通信開銷和認證雙方完成認證的通信次數有關。每次通信的時間用T(ms)表示。而計算代價主要和認證過程中的加密(TE),解密(TD),簽名(Tsig)、驗證(Tver)、哈希(TH)等運算有關,可以通過這些運算使用的算法的計算時延來衡量。實驗配置為Intel(R) Core(TM) i5-10210U CPU,16G 內存,Ubuntu 20.04.1 LTS 操作系統,內核版本號4.19.104,編程語言版本為Python3.8,加密庫版本為pycryptodome 3.9.9。通過實驗得到相關算法的計算時延如表2 所示。實驗結果表明認證的開銷主要集中在解密和簽名操作。

表2 計算時延
不同方案在接入認證和切換認證中主要操作的使用次數及計算代價見表3 和表4。從中可以看出,該文方案的計算代價和通信開銷都比較小。與文獻[20-22]相比,該文方案在接入認證過程中,通過減少MN 私鑰解密操作,大大降低了運算負擔。同時對認證交互流程去冗余,認證雙方通過四次通信就可以完成安全認證,而其他方案均需要六次通信。認證流程去冗余雖然減少了認證交互的次數,但并不妨礙MN 和NP 協商出一致的共享密鑰。這點在切換認證中也有所體現,切換認證雙方只需要兩次通信就可以完成安全認證并協商出共享密鑰。從表4可以看出該文方案切換認證過程的計算代價相比文獻[20]和文獻[22]增加了0.028 ms 和0.04 ms。考慮到文獻[20]在切換認證過程中的明文傳輸帶來的風險以及文獻[20]和文獻[22]均沒有協商新共享密鑰導致的后續通信安全問題,這種計算代價的增加是值得的。此外切換認證因為減少一次通信時間,該文方案切換認證的總時間開銷對于文獻[20-21]有很大的優勢。從表5 可以看出,該文方案總認證效率非常高,計算代價比文獻[20-22]減少48.8%,通信開銷比文獻[20-21]降低33.3%,比文獻[22]降低25%。

表3 接入認證運算次數比較

表4 切換認證運算次數比較

表5 認證計算總代價
該文結合名字解析系統中移動設備切換代理場景的特點,參考并改進無線網絡中的切換認證方案,提出一種基于票據的快速切換認證方案。分析表明該方案在安全性方面能提供諸如隱私保護、雙向認證、抵抗重放攻擊等保障。在性能方面,該方案的計算代價和通信開銷分別減少48%和25%。因此可以保證移動設備的切換認證安全高效。在未來的工作中,需要進一步研究大量移動設備的批量切換認證方案。