国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Intel SGX的Kerberos安全增強方案

2021-04-06 00:39:38苗藝雪
信息安全研究 2021年4期
關(guān)鍵詞:解密票據(jù)內(nèi)存

王 冠 苗藝雪

(北京工業(yè)大學信息學部 北京 100124)

(可信計算北京重點實驗室 北京 100124)

(wangguan@bjut.edu.cn)

Kerberos協(xié)議[1]是由麻省理工學院在20世紀80年代末開發(fā)的公開源代碼的分布式網(wǎng)絡(luò)身份認證協(xié)議.Kerberos廣泛應(yīng)用于各主流操作系統(tǒng)以及云計算[2]、物聯(lián)網(wǎng)[3]等場景.

Kerberos提供客戶端和服務(wù)器端間的身份認證,身份認證機制是網(wǎng)絡(luò)通信安全的重要保障機制,而身份認證信息一旦被竊取并篡改,將嚴重影響通信安全,進而損害各方利益.現(xiàn)有的研究表明Kerberos主要有以下安全問題:

1) 口令猜測問題.口令猜測會造成密鑰泄露隱患.現(xiàn)有方案主要有將Diffie-Hellman密鑰協(xié)商方法[4]和公鑰密碼體制[5-6]、虛擬密碼機制[7]引入Kerberos協(xié)議認證的初始階段來代替對稱密鑰.但這需要更多的計算資源和更大的通信負擔,公鑰密碼本身也有安全性問題[8],且需要PKI(public key infrastructure)的支持,部署起來更困難,增加了Kerberos系統(tǒng)的復(fù)雜性.

2) 針對時間戳機制易受重放攻擊問題.現(xiàn)有主要解決方法為通過引入隨機值[9]等唯一標識來代替時間戳,防止重放攻擊.取消時間戳機制,降低了Kerberos機制本身所具有的靈活性.

3) 密鑰分發(fā)中心(key distribution center, KDC)本身的安全性[10].Kerberos認證系統(tǒng)基于可信第三方KDC,KDC負責核心的認證服務(wù),其安全和性能直接決定了整個系統(tǒng)的安全和性能.

而KDC認證服務(wù)的安全性和機密性的核心是僅由KDC持有的票據(jù)授權(quán)服務(wù)器(ticket granting server, TGS)密鑰,該密鑰負責參加認證服務(wù),用于在認證服務(wù)中加密和驗證票據(jù)授權(quán)票據(jù)(ticket granting ticket, TGT),TGT包含會話密鑰和票據(jù)信息等重要信息,用于防止票據(jù)信息被篡改.一旦TGS密鑰被獲取,那么網(wǎng)絡(luò)通信過程中票據(jù)中的用戶信息、時間戳以及會話密鑰都可以隨意獲取和修改,進而破壞系統(tǒng)的安全性.涉及TGS密鑰主要有以下2個安全問題:

1) 存儲安全問題.相比短期的會話密鑰,TGS密鑰屬于長期密鑰,KDC提供認證服務(wù)時會涉及針對TGS密鑰的讀寫,而該密鑰明文存儲在數(shù)據(jù)庫中,因此更需要保障存儲機密性.

2) 運行安全問題.KDC在認證服務(wù)過程中,會涉及到使用TGS密鑰在內(nèi)存中進行加密與解密,此時針對于內(nèi)存的物理攻擊與軟件層面攻擊都將威脅到密鑰的安全.

針對TGS密鑰的安全問題,Kerberos提供可選的軟件層面安全策略:KDC可以設(shè)置數(shù)據(jù)庫密鑰,可用于將數(shù)據(jù)庫加密,在加密后再進行持久化存儲.但是這需要用戶每次使用數(shù)據(jù)庫時都提供密鑰來解密,這將極大地降低Kerberos本身的便捷性.并且單純依賴軟件來保護密鑰有以下缺陷:1)可信計算基礎(chǔ)大,可信計算基礎(chǔ)均為可攻擊面,進而降低整個系統(tǒng)的安全性;2)無法抵御物理攻擊,攻擊者可能通過內(nèi)存嗅探、磁盤讀寫等手段來竊取信息,除此之外,目前沒有其他方法來保護TGS密鑰信息.

因此,本文引入了Intel SGX(Intel software guard extensions)[11-12]硬件保護機制,相比軟件層面的保護策略,Intel SGX具有較小的可信計算基礎(chǔ)并能實現(xiàn)物理隔離.通過將密鑰使用和存儲的關(guān)鍵代碼運行在Intel SGX提供的安全加密內(nèi)存中,保證程序運行過程中,攻擊者無法窺探內(nèi)存.當需要將密鑰持久化存儲時,使用Intel SGX技術(shù)保護的程序會先在安全內(nèi)存中用基于硬件提供的密鑰將TGS密鑰加密后再寫入到磁盤.因此攻擊者無法竊取到明文的密鑰信息.

1 相關(guān)技術(shù)

1.1 Intel SGX

Intel SGX是通過對Intel體系擴展指令集[13]和維護基于硬件的訪問控制策略來創(chuàng)建內(nèi)存安全區(qū)Enclave[14],是一種可信計算技術(shù)[15],將程序需要保護的核心部分在內(nèi)存安全區(qū)中執(zhí)行,從而保證程序執(zhí)行的安全性[16].

基于硬件的安全措施,Intel SGX的可信計算基礎(chǔ)只有CPU和內(nèi)存安全區(qū)Enclave本身[17],具有較小的可信計算基礎(chǔ).位于Enclave中的程序能夠抵御外部的內(nèi)存攻擊[18].特權(quán)軟件也無法獲取到Enclave內(nèi)部的信息和數(shù)據(jù),也能保證避免來自操作系統(tǒng)[19]和VMM,BIOS,SMM層面的攻擊.SGX創(chuàng)建的Enclave也可以理解為程序的可信執(zhí)行環(huán)境(trusted execution environment, TEE),并能夠提供遠程認證服務(wù)[20].本文使用到的Intel SGX技術(shù)主要有以下2個方面.

1.1.1 內(nèi)存隔離和訪問控制

系統(tǒng)會為SGX技術(shù)分配1塊預(yù)先保留的物理內(nèi)存區(qū)域,這塊區(qū)域被稱為EPC(enclave page cache),EPC是通過訪問控制策略來進行限制對其的訪問,受SGX技術(shù)保護的應(yīng)用程序?qū)谠搮^(qū)域中運行.而Enclave就是為應(yīng)用程序所分配的邏輯地址,Enclave和EPC存在著映射關(guān)系,中央處理器會維護著1個EPCM(enclave page cache map)的硬件結(jié)構(gòu),用來存儲這種映射關(guān)系,即存放了對EPC進行訪問控制的信息.EPC以頁為單位進行管理,EPCM相當于頁表,可以保證1個EPC頁只能與1個Enclave相關(guān)聯(lián),并只能由相關(guān)聯(lián)的Enclave進行訪問.

受SGX保護的應(yīng)用程序會被劃分成2個部分:可信部分和不可信部分.其中可信部分會被運行在安全內(nèi)存中,當被加載至Enclave中時,也會進行完整性度量,從而保證運行時數(shù)據(jù)的完整性和機密性.程序的訪問地址在Enclave中,而物理地址在EPC中,由EPCM來存儲映射關(guān)系并實現(xiàn)訪問控制.由于唯一映射關(guān)系,保證外部程序不能訪問Enclave內(nèi)存.SGX密封機制的根密鑰為固化在CPU中的基于硬件安全的密鑰,根密鑰具有唯一性,只能由CPU通過擴展的指令來讀取根密鑰并派生加密密鑰.數(shù)據(jù)密封機制保障作為磁盤上二進制文件的離線代碼和數(shù)據(jù)的機密性,加密的數(shù)據(jù)只能在創(chuàng)建它的那臺電腦上通過處理器擴展指令解密,從而防止反向工程.

1.1.2 密封機制

SGX提供2種密封策略:安全區(qū)標識(mrenclave)和密封標識(mrsigner),策略影響密鑰的生成.安全區(qū)標識策略將生成1個安全區(qū)獨有的密鑰,這意味著只有同一臺電腦的同一個安全區(qū)可以解封數(shù)據(jù),而其他的安全區(qū)Enclave也無法獲取該密鑰,基于此策略,Enclave可以獲取其專有密鑰,將數(shù)據(jù)加密后再持久化存儲,當需要使用數(shù)據(jù)時,可以通過專屬密鑰來解密數(shù)據(jù).而密封標識策略下,密鑰是基于平臺的簽名密鑰產(chǎn)生的,這樣一個安全區(qū)中的內(nèi)容可以被同一臺電腦的另一個安全區(qū)打開,只要同屬于一個平臺.

總結(jié)以上Intel SGX技術(shù),其提供了以下保護措施:

1) 安全區(qū)內(nèi)存不可從安全區(qū)外讀寫,無論當前的權(quán)限是何種級別,CPU處于何種模式.

2) 安全區(qū)不能通過軟件或硬件調(diào)試器來調(diào)試.

3) 安全區(qū)環(huán)境不能通過傳統(tǒng)函數(shù)調(diào)用、轉(zhuǎn)移、注冊操作或堆棧操作進入.調(diào)用安全區(qū)函數(shù)的唯一途徑是完成可執(zhí)行多道保護驗證程序的新指令.

4) 安全區(qū)內(nèi)存采用具有回放保護功能的行業(yè)標準加密算法進行加密,訪問內(nèi)存或?qū)RAM模塊連接至另一系統(tǒng)只會產(chǎn)生加密數(shù)據(jù).

5) 內(nèi)存加密密鑰會隨著電源周期(例如,啟動時或者從睡眠和休眠狀態(tài)進行恢復(fù)時)隨機更改,該密鑰存儲在CPU中且不可訪問.

1.2 Kerberos

Kerberos身份認證系統(tǒng)由以下3個部分組成:KDC、客戶端(client)和服務(wù)器(server).

Kerberos身份認證系統(tǒng)的核心是KDC.KDC有2個部件:認證服務(wù)器(authentication server,AS)和票據(jù)授權(quán)服務(wù)器TGS.AS負責進行密鑰管理和控制,它維護1個保存所有主體密鑰的密鑰數(shù)據(jù)庫,對應(yīng)密鑰只有對應(yīng)的主體和KDC可知,對于Client和Service之間的通信,KDC會生成臨時的會話密鑰,供兩者將交互信息加密.

Kerberos協(xié)議的特點是客戶只需輸入1次身份驗證信息就可以憑借此驗證信息來向KDC請求訪問不同服務(wù)的票據(jù),從而可以訪問多個服務(wù).由于在每個Client和Service之間建立了共享密鑰,使得該協(xié)議具有相當?shù)陌踩?

Kerberos身份認證流程如圖1所示:

圖1 Kerberos身份認證流程

Kerberos協(xié)議共分為3個部分,對應(yīng)6個步驟:

1) 客戶端認證

步驟1. Client向AS發(fā)送明文消息,即自己的身份信息.

步驟2. AS檢查該用戶是否在本地數(shù)據(jù)庫中,如果用戶存在,AS會產(chǎn)生1個AS與Client之間的會話密鑰.AS會返回2條消息給Client:消息A. Client/TGS會話密鑰,通過存儲在數(shù)據(jù)庫的用戶密鑰進行加密.消息B.票據(jù)授權(quán)票據(jù)TGT,該票據(jù)使用TGS密鑰進行加密,TGT用于和TGS服務(wù)器通信,Client收到消息后,正確匹配的用戶能夠通過自己的密鑰解密得到.

2) 服務(wù)授權(quán)

步驟3. 當Client需要向票據(jù)授權(quán)服務(wù)器TGS申請?zhí)囟ǚ?wù)時,Client發(fā)送的消息包含:加密后的票據(jù)授權(quán)票據(jù)(TGT)和使用Client/TGS會話密鑰進行加密的認證符.

圖2 總體架構(gòu)圖

步驟4. 票據(jù)授權(quán)服務(wù)器TGS接收到消息后,首先檢查KDC數(shù)據(jù)庫中是否存在所需的服務(wù),查找到之后,TGS用TGS密鑰解密出TGT并進行驗證,驗證通過后授予Client服務(wù)票據(jù),該票據(jù)中包括客戶身份、應(yīng)用服務(wù)器名、網(wǎng)絡(luò)地址、時間標記及Client/Server會話密鑰,票據(jù)使用Server的密鑰進行加密.TGS還會返回給用戶1則消息:使用Client/TGS會話密鑰加密的Client/Server會話密鑰.

3) 服務(wù)請求

步驟5. Client使用Client/TGS會話密鑰將加密的Client/Server會話密鑰解密,獲得與服務(wù)器通信的密鑰.然后將加密的服務(wù)票據(jù)Ticket和驗證信息傳送給應(yīng)用服務(wù)器.

步驟6. 應(yīng)用服務(wù)器使用自己的密鑰將服務(wù)票據(jù)解密,從而得到TGS提供的Client/Server會話密鑰,并驗證認證消息,驗證通過后根據(jù)Ticket的授權(quán)允許客戶訪問該服務(wù).

2 方案設(shè)計

2.1 設(shè)計架構(gòu)

通過對Kerberos認證系統(tǒng)的相關(guān)安全研究可以得出,Kerberos存在KDC本身的安全問題,而其安全核心為TGS密鑰,該密鑰為僅由KDC可知的長期密鑰,用于在認證服務(wù)中加密和驗證TGT,TGT包含了會話密鑰和票據(jù)信息等重要信息,用于和票據(jù)授權(quán)服務(wù)器通信,防止票據(jù)信息被篡改.一旦該密鑰被獲取,那么網(wǎng)絡(luò)通信過程中的票據(jù)信息都可被隨意獲取和修改.

該密鑰主要存在2個安全問題:密鑰的存儲安全,以及TGS密鑰參與到KDC的認證服務(wù)中時,密鑰的使用安全.

KDC作為軟件,本身需要考慮軟件安全,針對密鑰可能受到以下攻擊:1)通過分析內(nèi)存數(shù)據(jù)來獲取到機密信息TGS密鑰,進而獲取并篡改通信認證信息;2)通過分析源碼,確定存儲路徑,直接讀取數(shù)據(jù)庫信息從而獲取機密信息;3)通過操作系統(tǒng)、BIOS等的漏洞或特權(quán)軟件,動態(tài)調(diào)試程序執(zhí)行,從而讀取進程實例中的密鑰信息.

上述攻擊主要是由于無法抵御內(nèi)存攻擊和來自操作系統(tǒng)、軟件層面的漏洞攻擊,以及針對存儲文件的讀寫.根據(jù)上述的安全問題,本文提出一種基于Intel SGX的Kerberos的安全增強方案,安全增強方案的總體架構(gòu)如圖2所示.在硬件層面上,中央處理器通過指令擴展和訪問控制策略提供了EPC物理隔離內(nèi)存區(qū)域,邏輯內(nèi)存Enclave存儲程序和數(shù)據(jù),通過內(nèi)存映射存儲在EPC中,實現(xiàn)內(nèi)存隔離.在內(nèi)核層面上,SGX驅(qū)動為應(yīng)用層提供創(chuàng)建Enclave、數(shù)據(jù)密封等功能.在應(yīng)用層上,將KDC中涉及到TGS密鑰的關(guān)鍵模塊(初始化模塊、使用模塊、持久化存儲模塊)運行至安全區(qū)Enclave中.該方案能夠確保:1)盡可能減少性能開銷,減少針對認證協(xié)議流程的修改.2)密封機制保障TGS密鑰的持久化存儲安全性,攻擊者無法直接讀取到明文的機密信息.3)內(nèi)存隔離機制保障TGS密鑰的動態(tài)安全,當KDC提供身份認證服務(wù)時,無法通過操作系統(tǒng)或特權(quán)軟件層面讀取.

使用Intel SGX技術(shù)需要將程序劃分為2個部分:可信部分和不可信部分.其中可信部分將會受內(nèi)存隔離機制保護,用于完成機密性操作.可信部分與不可信部分需要定義專有的接口函數(shù)ECall,OCall.ECall是非可信應(yīng)用程序進入安全區(qū)的入口點,OCall使得安全函數(shù)可以調(diào)用外部的非可信應(yīng)用程序,然后再返回安全區(qū).SGX驅(qū)動提供的Edger8r工具自動生成函數(shù)ECall,OCall在可信部分和不可信部分對應(yīng)代理函數(shù)以供調(diào)用.本安全增強方案重點關(guān)注以下3個方面:TGS密鑰的安全初始化、身份認證服務(wù)中TGS密鑰的內(nèi)存隔離保護、密鑰的安全持久化存儲.

2.2 TGS密鑰的安全初始化

KDC程序進行密鑰初始化配置時,需要鍵入密碼字段,并由算法派生出密鑰.TGS密鑰是由Kerberos數(shù)據(jù)庫中主體為krbtgt對應(yīng)的密碼字段派生而來,并作為krbtgt主體信息的一部分存儲在數(shù)據(jù)庫中.故進行安全保護時需要將由密碼字段派生密鑰的算法執(zhí)行封裝至內(nèi)存安全區(qū)內(nèi),密鑰生成后進行加密再存儲至數(shù)據(jù)庫.

由方案設(shè)計可知將初始化模塊作為可信部分.密鑰初始化流程如圖3所示.當KDC執(zhí)行密鑰初始化功能時,創(chuàng)建內(nèi)存安全區(qū)Enclave并調(diào)用可信函數(shù)ECall,鍵入的密碼字段作為函數(shù)輸入?yún)?shù)傳入,流程會進入到安全區(qū)域Enclave中,并執(zhí)行被封裝至函數(shù)ECall派生TGS密鑰算法.生成的TGS密鑰將調(diào)用密鑰持久化存儲模塊提供的接口函數(shù)進行加密,并存儲至Kerberos數(shù)據(jù)庫中,然后通過函數(shù)OCall將執(zhí)行結(jié)果返回給KDC,并在不可信區(qū)域執(zhí)行后續(xù)操作.設(shè)計接口函數(shù)ECall和OCall確保密鑰信息不會泄露,并且可信部分與不可信部分的交互是安全的.

圖3 密鑰初始化流程圖

2.3 TGS密鑰的內(nèi)存隔離

KDC提供身份認證服務(wù)功能:驗證用戶身份,并為用戶提供訪問特定服務(wù)器的訪問票據(jù).進行安全增強后的認證服務(wù),TGS密鑰的使用模塊被隔離至Enclave中執(zhí)行,對應(yīng)的物理內(nèi)存EPC區(qū)域經(jīng)過內(nèi)存加密引擎加密處理,內(nèi)存泄露攻擊也只能獲取密文數(shù)據(jù).安全增強后的認證流程如圖4所示,基于Enclave的身份認證服務(wù)共有3個階段:

圖4 安全增強的身份認證流程圖

第1階段.客戶端認證.客戶端Client從KDC的認證服務(wù)器AS獲取TGT.Client發(fā)送1條請求包含Client的基本身份信息,申請基于指定服務(wù),并使用客戶端密鑰KC對其進行加密,然后AS驗證認證請求信息,檢查該用戶信息是否在本地數(shù)據(jù)庫中,如果用戶存在,AS需要向Client返回2條消息:消息A.KC{SKC,TGS‖IDTGS}.消息B.TGT,其中TGT:KTGS{SKC,TGS‖IDC‖IPC‖ETTGT}.

票據(jù)授權(quán)票據(jù)(TGT)的加密過程在SGX內(nèi)存安全區(qū)中執(zhí)行.KDC進程空間中的不可信部分讀取存儲至數(shù)據(jù)庫中密封的TGS密鑰,并通過調(diào)用函數(shù)ECall進入Enclave,TGT的組成部分以及密封密鑰作為輸入?yún)?shù)傳入Enclave.函數(shù)ECall調(diào)用密鑰持久化存儲模塊提供的接口函數(shù)解密出TGS密鑰,并用其完成對TGT的加密操作,加密后的TGT返回至不可信部分并繼續(xù)流程.Client收到消息后,首先嘗試用自己的用戶密鑰解密消息,如果用戶輸入的密碼與AS數(shù)據(jù)庫中的不符,則不能成功解密消息A.生成正確的用戶密鑰才能解密消息A,從而得到Client/TGS會話密鑰.

第2階段.服務(wù)授權(quán).Client從KDC的票據(jù)授權(quán)服務(wù)器TGS獲取票據(jù)Ticket.客戶C發(fā)送給TGS以下信息:{TGT‖Authenticator_1}.其中Authenticator_1:SKC,TGS{IDC‖TS‖IDS},用以證明TGT的擁有者的身份,使用SKC,TGS加密,其中包括Client的ID信息和時間戳TS,時間戳的作用是防止黑客截獲數(shù)據(jù)包,偽造合法用戶,超過時間閾值的數(shù)據(jù)包無效.TGT的驗證過程在SGX內(nèi)存安全區(qū)中執(zhí)行,調(diào)用函數(shù)ECall,將TGT作為輸入?yún)?shù)傳遞至Enclave,在飛地內(nèi)使用TGS密鑰對TGT進行解密,獲取到SKC,TGS來解密Authenticator_1,驗證包括Client的ID信息和時間戳TS.驗證通過后,TGS服務(wù)器向客戶C授予票據(jù),傳送如下消息:SKC,TGS{SKC,S},Ticket,其中Ticket為針對特定應(yīng)用服務(wù)器的票據(jù),參數(shù)為KS{SKC,S‖IDC‖IPC‖ETTicket}.

第3階段.服務(wù)請求.Client從Server獲取服務(wù).客戶C通過Ticket與應(yīng)用服務(wù)器進行通信,二者會使用TCS提供的SKC,S加密通信數(shù)據(jù),保障數(shù)據(jù)安全性.

2.4 密鑰持久化存儲

TGS密鑰需要持久化存儲至數(shù)據(jù)庫,為了保證密鑰的機密性,需要在Enclave內(nèi)部使用Intel SGX密封技術(shù)將其進行加密,在需要使用時在Enclave中解密.SGX支持2種密封策略:安全區(qū)標識(mrenclave)和密封標識(mrsigner),策略影響密鑰的生成.2種密封策略的區(qū)別是:mrenclave策略會為Enclave生成獨有密鑰,只有同一個Enclave可以解封數(shù)據(jù);而密封標識策略,密鑰是基于開發(fā)者的簽名密鑰產(chǎn)生的,因此只要Enclave的簽名結(jié)構(gòu)相同,不同的Enclave便可以解封相同的密封數(shù)據(jù).為確保TGS密鑰的唯一訪問性,使用mrsigner策略來產(chǎn)生密鑰.因此加入Intel SGX技術(shù)后的密鑰持久化存儲模塊的流程如圖5所示.使用mrenclave策略來產(chǎn)生Enclave密鑰,Enclave使用密鑰將機密數(shù)據(jù)在Enclave內(nèi)部進行加密,并存儲在磁盤的數(shù)據(jù)庫中,當內(nèi)存安全區(qū)需要使用密鑰時,同一Enclave內(nèi)能夠?qū)崿F(xiàn)解密.

圖5 持久化存儲流程圖

支持指令擴展的處理器內(nèi)部硬件固化了1個SGX主派生密鑰,在Enclave內(nèi)部CPU使用擴展的指令EGETKEY自動讀取出SGX主派生密鑰參與到AES-CMAC算法中進行密鑰派生,主派生密鑰只能通過這一方式使用,無法直接獲得其值,確保根密鑰的機密性.AES-CMAC算法的另一參數(shù)為Enclave創(chuàng)建時產(chǎn)生的度量信息,安全區(qū)標識策略采用Enclave的度量信息作為唯一標識,從而生成Enclave的加密密鑰.然后程序在飛地內(nèi)部調(diào)用SGX SDK封裝提供的密封函數(shù)sgx_seal_data來封裝密鑰,函數(shù)檢索通過策略生成的Enclave密鑰,并使用該密鑰對輸入數(shù)據(jù)進行AES-GCM算法加密,密封的數(shù)據(jù)可以在Enclave中解除密封.由于被加密會在認證服務(wù)中解密使用,故需要在Enclave中分配內(nèi)存緩存區(qū),調(diào)用函數(shù)sgx_calc_sealed_data_size來確定加密后數(shù)據(jù)所需的緩沖區(qū)大小,該值將會作為密封函數(shù)的參數(shù)之一.當Enclave重新示例化時,會調(diào)用sgx_unseal_data函數(shù)來進行解封.

3 實驗與分析

3.1 安全性分析

本方案通過使用SGX技術(shù)實現(xiàn)針對KDC本身安全性增強,主密鑰TGS密鑰的明文狀態(tài)只會在內(nèi)存安全區(qū)中存在,而因為嚴格的訪問控制策略,攻擊者無法從內(nèi)存中嗅探,也無法通過磁盤讀取到明文的TGS密鑰.通過BIOS、VMM、操作系統(tǒng),特權(quán)軟件層面也無法獲取到密鑰.而用于加密TGS密鑰的根密鑰固化在CPU中,只能在加密時通過擴展指令自動參與運算,無法直接獲取.

本方案的TCB僅包含CPU和Enclave自身,而Enclave程序部分僅包含TGS密鑰初始化和使用TGS密鑰進行加解密的核心接口函數(shù),代碼量少,有較小的可信計算基礎(chǔ),因此TGS密鑰的安全性能夠得到保證.

首先在沒有安全增強機制的情況下,驗證密鑰信息是否存在泄露風險.在KDC上執(zhí)行命令后,如圖6所示,能夠顯示出密鑰版本號、密鑰策略等信息.查看由數(shù)據(jù)庫導(dǎo)出的密鑰表信息,如圖7所示,密鑰配置信息以及密鑰都可以直接獲取.圖8為直接讀取密鑰表文件的結(jié)果,可以獲取到對應(yīng)密鑰.圖9為使用gdb命令讀取的KDC進程內(nèi)存數(shù)據(jù),在地址段002b50部分得到了和密鑰表中一致的信息.

圖6 查看主體密鑰信息

圖7 查看密鑰信息

圖8 讀取文件結(jié)果

圖9 提取KDC內(nèi)存數(shù)據(jù)結(jié)果

圖10 加密后的讀取結(jié)果

使用安全增強方案后,讀取文件信息,如圖10所示,已經(jīng)無法找到密鑰的明文信息.嘗試再次導(dǎo)出KDC內(nèi)存數(shù)據(jù),發(fā)現(xiàn)密鑰信息已無法導(dǎo)出,因為密鑰相關(guān)地址屬于Enclave保護的范圍,除了Enclave結(jié)構(gòu),外界無法獲取其中的信息.

3.2 性能分析

通過引入Intel SGX技術(shù),將Kerberos身份認證服務(wù)器劃分為可信與不可信部分,并且引入Enclave項目來創(chuàng)建管理密鑰初始化和使用模塊、密鑰持久化存儲模塊.進出安全區(qū)的調(diào)用,類似于CPU上下文切換,會產(chǎn)生性能損耗.

本文使用了CPU型號為i5-8265U、內(nèi)存為8 GB,操作系統(tǒng)為Ubuntu 14.04 LTS的支持SGX平臺,部署并安裝了Kerberos服務(wù)器.實驗中測試了KDC程序中的可信部分密鑰初始化和使用模塊中密鑰初始化和認證過程中的密封解密操作的時間開銷,以及可信部分密鑰持久化存儲模塊的時間開銷.通過對比未使用增強方案和使用增強方案后選用的2個操作:1)密鑰初始化;2)身份認證服務(wù)中針對TGS密鑰的使用操作(包含了從數(shù)據(jù)庫讀取密鑰,以及使用密鑰進行數(shù)據(jù)加解密與驗證).分別進行20次測試,然后對比每組的平均時間損耗和性能.

對比實驗由圖11可知,安全增強方案后的密鑰初始化額外增加了密鑰密封操作,比原方案平均多耗時約62 ms,性能損耗為9.81%,在保證安全性的條件下,這個性能損耗是可以接受的.而密鑰使用操作增加針對密鑰的解封和與不可信區(qū)交互的切換消耗,耗時較長,但平均耗時不到1 s,相對認證服務(wù)過程中網(wǎng)絡(luò)通信的開銷,也在可接受范圍內(nèi).

圖11 實驗平均耗時對比

4 結(jié) 語

身份認證機制是網(wǎng)絡(luò)通信中重要的安全保障技術(shù)之一,Kerberos作為廣泛使用的認證機制,針對其密鑰分發(fā)中心KDC的密鑰安全問題,本文提出基于Intel SGX技術(shù)的安全增強方案.利用內(nèi)存隔離、數(shù)據(jù)密封機制為密鑰提供安全可信的執(zhí)行和存儲環(huán)境.本文主要是通過保證TGS密鑰的安全性來實現(xiàn)Kerberos身份認證系統(tǒng)中的KDC部分安全性,針對KDC失敗于單點問題,還需設(shè)計副本KDC,并對主從KDC間數(shù)據(jù)庫的遷移和部署進行安全保障.

猜你喜歡
解密票據(jù)內(nèi)存
解密“熱脹冷縮”
解密“一包三改”
少先隊活動(2020年9期)2020-12-17 06:17:31
炫詞解密
“春夏秋冬”的內(nèi)存
當代陜西(2019年13期)2019-08-20 03:54:22
解密“大調(diào)解”
基于內(nèi)存的地理信息訪問技術(shù)
上網(wǎng)本為什么只有1GB?
激發(fā)大內(nèi)存威力
涟源市| 萝北县| 射洪县| 关岭| 永寿县| 太康县| 奉化市| 镇远县| 仪征市| 华池县| 和林格尔县| 乡宁县| 金山区| 石首市| 瑞丽市| 开化县| 瓮安县| 彝良县| 托克逊县| 中阳县| 汾阳市| 黄骅市| 甘泉县| 申扎县| 南澳县| 绥宁县| 琼结县| 临泉县| 贵南县| 江山市| 江川县| SHOW| 大安市| 商丘市| 屏山县| 高邑县| 怀宁县| 平度市| 镇江市| 兴安盟| 昔阳县|