王欣 柳亞男 張正 李戈 邱碩



關鍵詞:Kerberos;物理不可克隆函數;雙向認證;密鑰協商
1 概述
隨著互聯網的快速發展,針對個人或設備的網絡攻擊行為層出不窮,個人信息的安全防護愈發重要。安全可靠的身份認證機制,為個人或設備免遭惡意的偽造、篡改、竊聽等攻擊提供必要保障。
Kerberos 協議是一種基于可信第三方的安全認證協議。RFC 6113 定義了Kerberos 預認證通用框架[1],在開放式網絡環境下,通過密鑰系統為客戶機和服務器應用程序之間提供認證服務和密鑰協商。該框架基于口令認證機制和對稱加密體制,因此存在口令猜測攻擊、重放攻擊、密鑰存儲等局限性。2001年,Tung等人提出PKINIT協議對標準框架進行了擴展[2],利用公鑰證書在Kerberos 協議中實現初始身份驗證[3],但是計算量和存儲開銷大大增加。2018 年,Sutradhar等人[4]提出基于門限密碼和ECC的Kerberos 新版本用于解決云安全中的認證問題,相比PKINIT 降低了計算量,但仍然存在計算復雜度高、中間人攻擊等威脅。
傳統Kerberos協議利用的口令認證機制的安全性較弱,存在存儲安全問題,攻擊者可能通過入侵、半入侵及側信道攻擊等物理攻擊導致密鑰泄漏,最終造成整個系統崩潰。為解決目前研究中存在的問題,本文提出一種基于物理不可克隆函數(PUF,PhysicalUnclonable Function)的Kerberos擴展系統。基于PUF 的激勵響應機制,利用PUF的激勵響應對(CRP)代替口令或數字證書以實現認證服務器與設備的雙向認證和密鑰協商,解決口令猜測攻擊和假冒攻擊。設備端也無須預存儲密鑰,降低了存儲開銷和密鑰泄漏的風險。進一步地,針對車聯網中移動車輛安全接入應用服務器的場景,給出了該擴展系統的具體實現。
2 基于物理不可克隆函數的認證機制
物理不可克隆函數(Physical Unclonable Func?tion)[5]的出現與發展,為解決傳統Kerberos口令認證問題提供全新的低成本和高安全性的解決方案。
在安全協議設計中,可以將PUF結構看作是單向函數的硬件等價物,并具有易于制造、不可克隆和不可預測的屬性。將PUF結構看作一個黑盒的激勵響應系統,針對任意激勵值可產生唯一對應的響應值,而根據響應值卻無法推導出激勵值。利用函數P 來標識PUF的單向性:
其中,C 和R 分別是激勵集合和響應集合,函數P是PUF結構的數學模型,激勵值c 與對應的響應值r 稱為該PUF結構P 的一個激勵響應對(CRP ):(c,r )。
通過使用物理不可克隆函數產生的激勵響應對來代替傳統密鑰,實現了不需要再以數字形式存儲密鑰,而是從設備電路中提取,解決了密鑰的計算和存儲問題[6]且消耗的硬件資源成本較低,適用于輕量級網絡。
3 基于PUF 的Kerberos 擴展系統
3.1 系統流程
基于PUF提出一種Kerberos擴展系統,包括三個通信實體:客戶端、服務端、密鑰分配中心(KDC)。其中KDC中包括:認證服務器AS、票據授權服務器TGS 和數據庫DB,流程圖如圖1所示。
Step1:客戶端和服務器端本地生成若干隨機數作為激勵集合,并將每個激勵輸入PUF結構生成對應的響應值。將激勵響應對提交給KDC注冊,保存在數據庫中。保存在KDC中的注冊信息可以通過KDC上的接口進行查看。
Step2:需要向服務器進行身份認證的客戶端通過接口向AS請求票據授權票據(TGT),AS生成客戶端與TGS的會話密鑰并在本地數據庫隨機選擇一個客戶端的CRP的響應作為密鑰加密會話密鑰,將使用TGS 主密鑰通過加密算法加密的TGT,挑戰值Challenge 和加密的會話密鑰返回。客戶端接收到TGT,并通過本地的PUF模塊獲取對應的響應值Re?sponse來通過解密算法解密得到會話密鑰并用其加密身份信息。
Step3:客戶端對TGS通過接口發送會話密鑰加密的身份信息、TGT、服務器端ID來請求服務授權票據(SGT),TGS使用自身主密鑰解密TGT比對用會話密鑰解密的身份信息,驗證TGT有效性后,從本地數據庫中任選一個服務器端的Challenge,并生成客戶端和服務器端的會話密鑰并用TGS與客戶端的會話密鑰加密,將服務器端的Challenge和加密后的服務器端和客戶端的會話密鑰以及用Response加密的服務授權票據SGT返回給客戶端。
Step4:客戶端在本地通過與TGS的會話密鑰解密得到與服務器端的會話密鑰,用其作為密鑰通過加密算法加密身份信息。將加密的身份信息以及服務器端的Challenge和SGT經過接口發送給服務器端來請求服務。服務器端接收到SGT后經過本地的PUF 模塊得到Response進而解密SGT并得到與服務器端的會話密鑰解密客戶端的身份信息,將解密的SGT對比解密得到的身份信息,核驗完成后允許客戶端訪問。
3.2 系統架構
基于PUF的Kerberos擴展系統在實現過程中采用Python+Django的MVC架構,如圖2所示。系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller),實現系統用戶界面和業務邏輯分離,加強代碼的可擴展性、可復用性、可維護性、靈活性。
模型層包括:PUF生成的激勵響應對的保存類、KDC使用的會話密鑰類。
控制器層包括:注冊系統控制器進行注冊設備的信息收集以及處理保存、認證系統控制器用于處理設備服務請求以實現身份的認證及票據的分發。
視圖層包括:設備申請服務時的信息交互展示界面、通信設備查詢展示界面。
3.3 接口設計
根據客戶端、服務端、KDC的主要功能設計不同通信實體模塊的主要接口。
客戶端、服務端的主要接口如表1所示。
3.4 數據結構設計
系統采用SQLite3數據庫,主要用于存放PUF生成的CRP激勵對。主要的數據結構設計如表3所示。
4 系統的應用實現
在車聯網的應用中,不僅僅是簡單地通過網絡將車與車連接起來,還有車與人、車與路、車與云平臺以及車內等全方位的網絡通信。主要是實現車內網絡,車際網絡以及車輛移動互聯網的三網聯合,除此以外還有像路邊單元這類邊緣或是橋接設備的存在。通過結合多種通信技術,不同的物理硬件和強大的網絡結構來達成車聯網這一概念。
由于現在社會汽車保有量的不斷上升,車聯網中存在著極大量的數據需要被處理,為此需要一個輕量、高效的方案來處理設備間的交互。同時汽車作為聯網設備中屬于存在有較多風險點且易造成高危害性的事故的接入點,使得在汽車接入互聯網時需要考慮到各方面的安全性。所以在移動車輛與應用服務器的安全認證通信中迫切地需要一個安全可靠且高效率的協議來推進車聯網應用的完善和升級。
而基于PUF的Kerberos擴展系統就為解決上述車聯網應用所存在的難題提供了一種解決方案。
將本系統應用到車聯網場景(如圖3所示)中,可以很好地解決移動車輛與應用服務器之間的雙向認證與密鑰協商問題,從而實現車與云之間的安全通信。
在具體系統實現中,利用樹莓派作為載體搭載硬件PUF模塊,實現車路協同過程中的Kerberos擴展系統。通過PUF模塊為小車生成唯一的激勵響應對完成在云端(應用服務器)的注冊,完成注冊后借助路邊單元RSU轉發執行擴展的Kerberos協議實現安全通信,如圖4所示。
在系統中通過計算機設備提供在線的KDC服務,小車的PUF模塊生成激勵響應對后向KDC提供相關信息實現注冊。完成注冊后小車在道路行駛過程中進行服務請求。
首先小車向KDC申請TGT后KDC在數據庫中找到注冊的激勵值向小車發起身份挑戰。小車則利用PUF模塊將激勵輸出為響應值并作處理發送給KDC 以自證身份。完成認證后小車得到TGT進而向KDC 申請相應服務器所對應的SGT。KDC通過TGT驗明小車身份后返回使用響應值加密的SGT。
小車獲取到對應服務的SGT就可以向服務端申請服務,服務端則利用SGT中的身份信息對小車進行身份核實,驗證完小車身份后為其提供服務。整個過程中通過路邊單元進行轉發時,小車會優先選擇較近單位進行轉發從而避免大量數據堆積在部分節點造成的影響。
在Kerberos協議執行過程中SGT的獲取,得到了SGT后就可以申請服務器的相關服務,且保證了服務的可靠性與安全性(圖5)。
5 結束語
本文提出并實現了一種基于物理不可克隆函數的Kerberos擴展系統。使用物理不可克隆函數(PUF)生成的激勵響應對代替傳統Kerberos協議中設備存儲的主密鑰,實現設備與密鑰分配中心KDC之間的雙向認證和密鑰分配。其中利用PUF唯一性和隨機性可防止設備因主密鑰泄漏而引發的偽造攻擊、仿冒攻擊、中間人攻擊等,同時克服公鑰計算復雜度高、速度慢,適合資源受限的網絡應用。