常相茂,占俊,王志偉
(1.南京航空航天大學計算機科學與技術學院,江蘇 南京 211106;2.南京郵電大學計算機學院、軟件學院、網絡空間安全學院,江蘇 南京 210023)
隨著物聯網應用的普及和發展,許多由通信引起的問題逐漸凸顯出來,例如應用場景分散、行業標準過多以及通信能耗過高等。為解決這些問題,2016 年,全球第三代合作伙伴計劃(3GPP,3rd generation partnership project)委員會克服各種技術困難最終制定了窄帶物聯網(NB-IoT,narrowband Internet of things)的核心標準[1]。同傳統的無線物聯網通信技術相比,NB-IoT 具有大容量、廣覆蓋、低功耗和低成本特點[2],這為部署在長期難以達到的地方且傳輸數據量較少的物聯網設備提供了一種更好的網絡接入方式,已經被廣泛用于智能停車[3]、智能抄表[4]和智能醫院[5]等場景。隨著NB-IoT 技術逐漸融入人們的生活,越來越多的NB-IoT 節點設備連接到網絡,來滿足用戶多樣化的需求。但是由于設備資源受限、位置暴露,這些NB-IoT 節點極易遭受攻擊者的攻擊,尤其是那些用于收集和傳輸用戶敏感數據的設備。一旦這些設備遭受攻擊,就會導致用戶敏感數據遭到泄露,造成不可挽回的損失。因此,在訪問認證過程和數據傳輸過程中,對用戶身份隱私和傳輸數據安全的保障至關重要。
NB-IoT 網絡消耗大約180 kHz 的帶寬,上下行峰值速率理論上不會超過250 kbit/s[2],因此當大規模的NB-IoT 節點激活向核心服務器申請接入認證時,大量的信令請求會增加網絡的通信壓力,甚至引起通信堵塞,從而影響NB-IoT 應用程序的服務質量,降低系統運行效率。隨機時延機制是一種常用的避免數據沖突和網絡擁塞的方法,即當NB-IoT節點被喚醒后,各自隨機延遲一段時間再進行接入以免并發通信造成沖突,然而該機制存在如下2 個方面的弊端:一是該機制并沒有減少所需認證消息的數量,當存在大量NB-IoT 節點需要與服務器進行認證時(每個NB-IoT 小區可達5 萬連接數[1]),需要非常大的時延來避免沖突;二是該機制無法確保避免沖突,依然存在2 個或多個節點延遲相同時間而發生并發沖突的情況。為提高大規模節點接入認證時的效率、降低通信開銷,許多基于群組的聚合認證協議被提出[6]。將同一區域內的節點根據功能或其他相似特性劃分為一組,認證時服務器對群組的身份進行驗證,從而一次性完成對群組中所有成員身份的認證。然而,現有協議中群組認證請求的數據大小會隨群組中成員數量的增加而變大,當規模龐大的NB-IoT 節點群組申請認證時,仍有可能會引起通信堵塞。
本文基于Schnorr聚合簽名技術實現NB-IoT節點群組的聚合簽名,將群組的認證請求大小設置為固定值,不會隨著群組中成員數量的變化而變化,同時,為了保障數據通信的安全,采用基于中國剩余定理的密鑰分發管理機制,服務器能以固定的信息量完成對群組內成員會話密鑰信息的分發,因此服務器回復消息是一個定值。將群組和服務器認證時的通信量固定為確定的大小,從而有效減少帶寬消耗,降低堵塞風險。性能分析結果表明,與現有身份安全認證協議相比,本文所提協議在傳輸開銷和帶寬消耗方面表現優異。本文有以下兩點貢獻。
1) 本文基于Schnorr聚合簽名和中國剩余定理提出了一種新型的群組身份安全認證協議,可以實現服務器和NB-IoT 節點的雙向認證,認證產生的通信量不隨群組規模的增大而增加,解決大規模NB-IoT 節點安全認證時效率低下和占用大量帶寬資源的問題。
2) 本文使用協議形式化分析工具Scyther 對協議的安全性進行仿真分析,驗證了所提協議能夠提供可靠的安全性能,可抵御重放攻擊、中間人攻擊等常見協議攻擊模式。
NB-IoT 是一種蜂窩網絡,在傳統的蜂窩網絡LTE-A(long term evolution-advanced)中,基于群組的身份安全認證協議主要可分為兩類。在第一類身份認證協議中,設備組由屬于同一歸屬網絡中的用戶設備(UE,user equipment)或者機器類型通信設備(MTCD,machine type communication device)組成。當設備組中第一個成員移動進入服務網絡的覆蓋范圍后,該成員在執行認證過程中會將整個群組的相關信息發送給網絡。Chen 等[6]首先提出了該類型的群組身份安全認證協議,用于大規模設備從歸屬網絡漫游到服務網絡的訪問控制,隨后其他研究人員也提出了一些類似的協議[7-10]。在該類方案中,服務網絡對第一個群組設備進行認證后,可以簡化同其他成員的認證過程,從而減少服務網絡和歸屬網絡之間的通信開銷。但是,群組中每個設備仍然需要單獨向服務網絡發起訪問認證請求,這依舊會導致大量的信令開銷,無法避免通信堵塞。
在第二類身份認證協議中,設備群組會選擇一個設備作為群組組長Leader,由Leader 聚合并發送群組成員的認證請求。當設備群組進行訪問身份認證時,Leader 將收集群組中所有成員的身份認證請求并聚合為一條群組身份認證請求,而服務端只需要驗證Leader 發送的聚合身份認證請求就可以驗證設備組中所有成員的身份。Lai 等[11]提出了一種基于聚合消息認證碼的輕量級群組訪問認證協議。之后,Cao 等[12]提出了一種利用雙線性配對聚合簽名技術的群組身份認證協議。Li 等[13]采用(t,m,n)密鑰共享機制和Diffie-Hellman 密鑰交換協議提出了一種具有動態更新策略的群組身份安全認證協議。為了解決公鑰體系中的密鑰托管問題,Lai 等[14]提出了一種基于無證書聚合簽名技術的聚合認證協議,來提高大規模MTCD 訪問3GPP 網絡的效率和安全性。但是,無證書聚合簽名技術中所使用的雙線性配對操作會導致大量的計算負載,并不適用于資源受限的物聯網設備。為了降低計算負載,Lai等[15]提出了一種僅使用哈希函數和異或操作的輕量級聚合身份認證機制。Ren 等[16]提出了一種基于物理不可克隆函數(PUF,physical unclonable function)的雙向認證。PUF 用于生成共享根密鑰,群組Leader 負責聚合和中轉認證信息,通過激活海量設備的附著請求消息達到降低信令和通信開銷的目的。與之不同,本文通過Schnorr 聚合簽名和中國剩余定理減少認證消息來降低通信開銷。
在NB-IoT 網絡中,Cao 等[17]使用不基于雙線性配對的無證書簽密技術提出了一種群組聚合訪問認證協議,以實現大規模NB-IoT 設備的快速認證和數據傳輸。Zhang 等[18]提出了一種基于無證書簽名技術的多方快速認證機制,該機制實現了NB-IoT網絡中多個UE以及認證服務器之間的快速認證。為了抵御量子攻擊的威脅,Yu 等[19-20]提出了一種基于格加密的抗量子攻擊聚合身份認證協議,但是其計算負載較高,并不適于資源受限的NB-IoT設備。盡管這些協議通過聚合認證請求減少了認證期間的通信數據量,但是聚合請求的大小仍然受組中成員數量的影響,當設備組中成員數量很大時,仍然存在通信阻塞的風險。
Schnorr 簽名算法因為可靠的安全性、可聚合的特點,已經被廣泛應用于各種安全認證領域。Maxwell 等[21]基于Schnorr 算法提出了一種多重簽名算法Musig,用于提高比特幣中合法性驗證的效率,增強用戶隱私保護。Ni 等[22]使用Schnorr算法提出了一種支持5G 網絡切片和霧計算的匿名身份安全認證協議,但是協議建立在網絡資源充裕的情況下,并不適于網絡資源有限的NB-IoT網絡。中國剩余定理可以將分發的信息進行聚合,實現輕量化的組密鑰管理機制,Vijayakumar 等[23]基于此提出了一種輕量化的、集中式的群組密鑰管理機制,用于多播安全通信,之后在無線傳感網絡、車聯網等物聯網環境中也得到了進一步的應用[24-26]。但是這些協議只考慮成員節點數量有限的情況,并未考慮大規模數量節點情況對網絡可能造成的巨大壓力。
假設p是一個大素數,E是有限域Fp上的橢圓曲線,G∈E(Fp)是橢圓曲線上的一個q階點。橢圓曲線離散對數難題是給定Q∈E(Fp)和G,求解整數使等式Q=kG成立。可以證明給定G和k求解Q非常容易,但是給定Q和G求解k非常困難,目前還沒有一個有效的方法可以解決該難題[27]。
Schnorr 簽名算法最初由德國的數學家、密碼學家Schnorr[28]提出,在性能、安全、體積、擴展性等諸多方面都優于橢圓曲線數字簽名算法。Schnorr簽名算法的安全性可以通過隨機預言模型進行驗證[29],而且由于算法是線性的,因此可以進行聚合簽名或者對大規模的簽名進行一次性的驗證,有效節省空間、提高效率。
Schnorr 簽名的生成過程為給定大素數p、橢圓曲線E(Fp)和橢圓曲線上的q階點G∈E(Fp),選擇隨機數并計算R=rG。使用私鑰對消息m進行簽名,Schnorr 簽名為(R,s),其中,s如式(1)所示[30]。

使用公鑰X=xG對消息m簽名有效性的驗證如式(2)所示。

Schnorr 的聚合簽名是使用多個私鑰對消息進行聚合簽名,驗證時使用由多個私鑰派生出的公共公鑰進行驗證。例如使用私鑰對消息m聚合簽名,選擇并分別計算s1,s2,公共公鑰為X=(x1+x2)G,聚合簽名(R,s)為

聚合簽名的驗證使用公共公鑰,驗證過程與單個簽名的驗證相同,如式(2)所示。
中國剩余定理又稱孫子定理,是數論中的一個重要定理,該定理給出了一元線性同余方程組的有解判定條件和有解情況下的解的具體形式。給定兩兩互質的正整數m1,m2,…,mn和任意正整數a1,a2,…,ak,如式(4)所示的同余方程組有解,且在模下有唯一解。

對所有i=1,2,…,n,計算M i=M/mi和模乘逆滿足式(5)。

方程組的唯一解如式(6)所示。

如果將mi看作節點私鑰,a i看作需要分發的信息,那么服務器只需要求解并廣播x就可以完成對n條信息a1,a2,…,an的分發,節點可以使用私鑰mi通過求模運算得到消息ai≡x(modmi)。
本文討論的NB-IoT 網絡系統結構如圖1 所示。同一區域內的NB-IoT 節點根據功能或其他相似特性劃分為一組,同一節點群組中成員屬于同一應用服務器,會根據節點計算能力、電池容量等情況選擇一個節點作為群組Leader。群組中的NB-IoT 節點會在同一時刻喚起,通過NB-IoT 網絡與應用服務器進行通信。節點發送或接收數據前,服務器需要對節點的身份進行安全認證。服務器會生成認證過程中所使用的所有密鑰,同時扮演密鑰生成中心的角色。

圖1 NB-IoT 網絡系統結構
在本文所討論的系統中,NB-IoT 節點與服務器之間的通信是不安全的,外部攻擊者可以控制、截取或者篡改NB-IoT節點與服務器的無線通信消息。除此之外,攻擊者還可以模仿偽裝成應用服務器或者NB-IoT 節點,進行重放攻擊、中間人攻擊等攻擊,實現上傳錯誤數據或者盜取隱私數據。由于NB-IoT 節點數量巨大,同時與服務器進行通信時,大量的信令可能會導致網絡負擔過重或通信堵塞。為了同時滿足NB-IoT 網絡對認證效率、安全性和通信量限制的要求,本文所提協議需要滿足以下幾點要求。
1) 雙向認證。當節點群組與服務器建立連接時,服務器需要完成對節點群組中所有節點的身份認證。除此之外,節點群組中的所有成員也能夠對服務器的身份進行安全認證。
2) 會話密鑰建立。在認證的過程中,能夠對用于后續服務器與節點通信的會話密鑰進行更新,以保護后續傳輸數據的安全性。
3) 對常見協議攻擊的抗性。協議需要能夠抵御常見的一些攻擊,例如重放攻擊、中間人攻擊、偽裝攻擊等。
4) 高效性。服務器能夠一次性完成對這個節點群組成員的身份認證,同時應降低通信和計算負載,來避免通信堵塞。
本節所使用的符號定義如表1 所示。

表1 符號定義
在初始化階段,服務器根據所選擇的安全等級參數,生成認證所需的各種參數以及服務器自身的密鑰。服務器首先決定安全等級參數k,并選擇一個大素數p> 2k。然后在有限域Fp上選擇橢圓曲線E(Fp),E(Fp)上的q階點G∈E(Fp)和哈希函數最后選擇隨機數作為自身的私鑰,計算公鑰Pc=xc G,將{q,E(Fp),G,hash(),Pc}作為系統參數公布并保密xc。
在注冊階段,節點UEi向服務器進行注冊獲得密鑰以及所在群組的相關參數。
假設群組由n個節點組成,UEi向服務器發送自身IDi進行注冊,服務器進行以下步驟。


在雙向認證階段,群組中節點完成同服務器的雙向認證以及會話密鑰分發。當群組喚醒準備同服務器發送或接收數據時,所有節點對當前時間戳進行簽名并由群組Leader 聚合發送給服務器進行認證,服務器根據聚合簽名的有效性可以對整個群組進行一次性認證。由于群組內節點數量有限,在群組Leader 聚合每個節點的簽名時,Leader 可以給每個節點分配不同的子載波避免沖突和信道阻塞。
為了保證后續通信的安全,服務器為每個節點選擇隨機數用于生成會話密鑰。服務器利用中國剩余定理加密保護隨機數,簽名后發送給群組Leader,群組Leader 再分發給節點。在驗證了服務器簽名的有效性后,節點使用私鑰解密得到隨機數,生成會話密鑰。

5) 服務器接收到群組的認證請求后,執行以下步驟。
①根據自己的當前時刻與Tu的差異檢查時間戳Tu的時效性。


群組中的節點可能因為應用需求改變或發生故障等原因退出群組,附近節點也可能因為應用需求變化使喚醒時間變動,從而需要加入群組。在本文協議中,組密鑰可用于生成群組公共公鑰、會話密鑰以及認證服務器,還可用于在組內建立安全通信和加密服務器發送給群組的分發消息。因此,當組成員發生變動時,應及時更新組密鑰,以避免可能存在的安全隱患,保證群組認證和通信的安全。
5.4.1 組成員離開
3) UEi計算得到更新后的組密鑰。
5.4.2 新成員加入
3) UEi計算得到更新后的組密鑰。
1) 雙向認證和會話密鑰建立。服務器能夠使用群組的公共公鑰對群組的聚合認證請求進行驗證,從而完成對整個群組節點的身份認證。因為公共公鑰是由組密鑰和群組成員的公鑰以非線性方式生成的,所以只有群組內的所有成員一起才能夠生成有效的群組聚合請求。群組成員能夠使用服務器的公鑰對服務器的簽名進行驗證,從而驗證服務器的身份,實現雙向認證。群組成員使用私鑰只能解密分發給自己的隨機數,并不能獲得其他分發信息的有關內容,使用解密得到的隨機數生成會話密鑰,實現了會話密鑰的建立并保證了會話密鑰的機密性。
2) 重放攻擊抗性。在協議認證過程中,使用了時間戳Tu和Tc,并用簽名保護了消息的完整性,因此攻擊者即使執行重放攻擊,也會因為時間戳的時效性失效而攻擊失敗。
3) 中間人攻擊抗性。因為橢圓曲線離散對數難題的求解困難性,認證過程中的隨機數ri,rc的安全性可以得到保證。攻擊者并不了解群組成員的私鑰,所以也不能夠偽造群組認證消息。又因為攻擊者不知道群組密鑰,所以也不能夠偽造服務器的回復消息。中國剩余定理保護了分發隨機數的安全性,并建立了群組成員和服務器之間的會話密鑰,防止后續通信被竊聽和篡改的可能。
4) 認證信令堵塞避免。在所提協議中,大規模NB-IoT 節點的認證請求會由群組Leader 收集聚合為群組聚合認證請求,再發送給服務器進行身份認證,大大減少了信令數量并簡化了認證流程。同時,使用基于中國剩余定理的方式分發密鑰信息,有效減少了服務器回復的數據量和帶寬消耗。
5) 內部人攻擊抗性。①服務器側:服務器在注冊階段結束以后,會刪除UEi的私鑰xi,僅保存vari用于后續會話密鑰信息的分發。因此,服務器側的內部攻擊者也不能從數據庫中盜取到節點的私鑰從而偽裝成節點進行惡意攻擊。②設備群組內部:由于聚合簽名和群組公共公鑰的生成都使用了非線性的方式,因此群組內的攻擊者在不了解其他成員私鑰的情況下不能夠獨自或排除某些成員生成合法的聚合簽名。會話密鑰信息必須使用對應節點的私鑰才能解密得到,而群組內部攻擊者在沒有得到其他成員私鑰的情況下,只使用自身的私鑰和群組組密鑰,不能夠生成其他節點的會話密鑰從而偽裝成組內其他節點或竊取到其他節點發送的數據。
本節使用協議形式化分析工具Scyther[25]對本文所提協議進行安全性仿真分析。Scyther 工具可以對協議進行形式化的描述,仿真驗證協議的機密性和可認證性是否存在安全風險,支持無限會話輪數的分析,除了支持Dolev-Yao 模型和強安全模型外,還支持自定義安全模型,在搜索攻擊、安全證明方面非常有用。Scyther 工具采用多種形式的身份驗證聲明,例如Nisynch、Niagree、Alive 和Weakagree 等來檢測重放攻擊、中間人攻擊等安全攻擊,使用SKR 聲明來驗證協議執行過程中生成密鑰的機密性。
本文主要分析以下3 個角色:群組節點UEi、群組Leader 和服務器,在工具中分別表示為UEi、Leader 和Server。在本文所提協議中,初始化階段、注冊階段和組密鑰更新階段可以認為是安全的,因此,僅考慮雙向認證階段。采用Dolev-Yao 攻擊者模型對協議進行安全分析。在該模型中,攻擊者被認為可以完全控制整個網絡中的通信并執行一系列的攻擊,包括竊聽、攔截、偽造消息等。將本文所提協議在Scyther 工具中建模,并指定聲明協議的安全屬性,如圖2 所示。從圖2 中可以看出,經過Scyther 工具的仿真分析,并未發現可行的安全攻擊,說明協議具有可靠的安全性。

圖2 Scyther 工具的正式安全分析結果
本節從傳輸開銷、帶寬消耗和計算負載等方面分析本文所提協議的性能表現,并同其他現有的群組認證協議進行比較,包括GAKA[6]、DGBAKA[7]、MTCAKA[8]、SEAKA[9]、EGAKA[10]、GBAAM[12]、GRAKA[13]、LGTH[11]和FADTS[17]。本節所使用的符號定義如表2 所示。

表2 符號定義
由于傳輸一次的功耗開銷與距離、數據量等多種因素相關,為了便于分析對比本文所提協議和其他現有協議的傳輸開銷,假設NB-IoT 節點UEi與服務器進行一次傳輸的開銷為一個單位,UEi與群組內節點、Leader 進行一次傳輸的開銷為a個單位,UEi與NB-IoT 網絡的中eNB 進行一次傳輸的開銷為b個單位。由于群組中UEi之間的距離一般不超過100 m,因此群組間的傳輸開銷遠小于一個單位。通常,UEi與eNB 之間的傳輸開銷會因為UEi的部署情況而不同,但是eNB 與服務器之間的通信因為主要通過有線信道進行傳輸,因此傳輸開銷可以認為是固定的。根據文獻[17],對傳輸開銷進行簡化分析,令a=0.01,b=0.8。不同協議之間的傳輸開銷對比如表3 和圖3所示。從表3 和圖3 中可以發現,本文所提協議的傳輸開銷與FADTS 協議相當,遠小于其他現有協議。

表3 不同協議的傳輸開銷對比

圖3 傳輸開銷對比
通過對比傳輸的數據量大小,來分析對比本文所提協議和其他現有協議的帶寬消耗,不失一般性,不同參數的帶寬消耗如表4 所示。

表4 不同參數的帶寬消耗
根據所有消息的大小,現有協議的帶寬消耗對比如表5 所示。圖4 顯示了在不同分組數量下,不同協議之間總的帶寬消耗對比。從圖4中可以發現,本文所提協議的帶寬消耗遠小于其他協議。

表5 不同協議的帶寬消耗對比

圖4 總帶寬消耗對比
協議認證過程中的計算負載主要考慮以下3 種加密操作,哈希運算th、點乘運算tm和雙線性配對操作tp。這3 種加密操作的計算負載時間如表6 所示,其中數據使用芯片為NuvoTon N32905U1DN(ARM926EJ-S@200 MHz)的ARM9節點測試得到,服務器數據由配置為 Intel i3-4160@3.60 GHz 的Dell 個人電腦測試得到。圖5顯示了節點數量和完成認證過程中所需的總計算負載之間的關系。表7 顯示了不同協議計算負載對比。從圖5 中可以發現,本文所提方案計算負載小于FADTS、SEAKA 和GRAKA,高于EGAKA,由于使用了公鑰機制來提高安全性,因此遠高于其他僅使用哈希函數的方案。

表6 加密操作所需時間

表7 不同協議計算負載對比

圖5 計算負載對比
針對NB-IoT 網絡中節點大規模接入認證時的通信堵塞問題,本文提出了一種基于Schnorr 聚合簽名和中國剩余定理的新型群組身份安全認證協議。該協議能夠一次性對群組中的節點進行身份認證,還有效減少了認證過程中的帶寬消耗。協議使用基于Schnorr 聚合簽名的方式生成群組聚合身份認證請求,將聚合請求的大小固定為確定值。協議又采用了基于中國剩余定理的密鑰分發方式,使服務器能夠以固定大小的回復信息完成對群組中所有節點密鑰的分發,將群組與服務器之間的認證通信數據量確定為一固定值,不會隨群組中節點的數量而變化,有效減少了認證過程中的帶寬消耗。性能分析表明,與其他現有協議相比,所提協議在傳輸開銷和帶寬消耗方面性能優異。Scyther 工具對所提協議進行了形式化的安全分析,仿真結果表明,所提協議具有可靠的安全性能。