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