朱智強,林韌昊,胡翠云
(1. 解放軍戰(zhàn)略支援部隊信息工程大學(xué)密碼工程學(xué)院,河南 鄭州 450001;2. 鄭州信大先進(jìn)技術(shù)研究院,河南 鄭州 450001)
隨著互聯(lián)網(wǎng)和計算機技術(shù)的不斷發(fā)展,產(chǎn)生了一種新的計算模式——云計算,云計算技術(shù)通過整合分布式資源,構(gòu)建出靈活、可擴展的虛擬計算環(huán)境[1]。隨著云計算的不斷發(fā)展,大量的云用戶將自己的隱私數(shù)據(jù)保存在云端[2],若云用戶的合法身份被冒充,就會造成隱私數(shù)據(jù)的泄露,身份認(rèn)證技術(shù)是解決這一問題的可靠技術(shù)。目前,云計算已經(jīng)廣泛應(yīng)用于政務(wù)、金融、郵政、軍事等對安全性需求較高的領(lǐng)域,與其相關(guān)的云基礎(chǔ)設(shè)施和云平臺均應(yīng)按照信息系統(tǒng)安全要求的最高等級進(jìn)行建設(shè)。應(yīng)用最為廣泛的基于用戶名/口令的認(rèn)證方式存在諸多安全性問題,不能適用于這些應(yīng)用場景。數(shù)字證書是一個經(jīng)證書授權(quán)中心(CA, certificate authority)簽名的用來標(biāo)識通信雙方身份信息的一串?dāng)?shù)字,主要包含了公鑰及公鑰擁有者的信息[3],具有唯一性和不可否認(rèn)性。數(shù)字證書的主要作用是確?;ヂ?lián)網(wǎng)上通信雙方進(jìn)行安全且相互信任的通信。
openstack是一個由美國國家航空航天局和Rackspace合作研制的開源項目,是一種旨在提供基礎(chǔ)設(shè)施即服務(wù)(IaaS,infrastructure as a service)的虛擬化管理平臺,能夠提供可靠的云部署方案[4]。目前,許多國內(nèi)外的云行業(yè)領(lǐng)軍企業(yè)都參與到了 openstack的項目研發(fā)中,并將其作為云計算架構(gòu)的基石,這標(biāo)志著 openstack已經(jīng)是事實上的開源云平臺的行業(yè)標(biāo)準(zhǔn)。
openstack云平臺由多種組件共同組成,各組件分工明確、相互獨立,構(gòu)成云平臺的實質(zhì)就是組合這些組件[5]。openstack采用無共享、基于消息的架構(gòu),既可以將每個組件分別部署在單獨服務(wù)器上,也可以部署在同一臺服務(wù)器上。各組件統(tǒng)一采用 Rest-full API(application programming interface)接口規(guī)范,具有模塊松耦合、組件配置靈活、易于二次開發(fā)等優(yōu)點。
openstack的安全問題一直是國內(nèi)外各大企業(yè)、學(xué)者關(guān)注的焦點。官方成立了 openstack安全項目組并編寫了《openstack安全指南》,致力于解決openstack中存在的安全問題,并通過安全漏洞管理團隊及時對漏洞進(jìn)行修復(fù)。他們于 2015年創(chuàng)建了Security項目,提供安全工具解決openstack中存在的安全問題,并在2018年2月28日發(fā)布的Queens版本中對Security項目進(jìn)行更新,通過Anchor提供輕量級PKI(public key infrastructure)服務(wù),自動驗證和簽發(fā)短期證書。通過該項目中Bandit等工具檢測代碼、API、各組件中存在的安全問題和漏洞。
openstack相較于其他虛擬化管理軟件,采用了靈活的低耦合分布式 SOA(service-oriented architecture)架構(gòu)模式,所以需要一個類似服務(wù)總線的模塊對 openstack中的各組件進(jìn)行統(tǒng)一的授權(quán)認(rèn)證及服務(wù)規(guī)則管理。
openstack在essex版本增加了keystone這一核心組件[6]并使其作為串聯(lián) openstack中各組件的認(rèn)證授權(quán)中心,keystone組件通過其特有的插件化結(jié)構(gòu)為openstack云平臺用戶提供身份管理(account)、訪問控制(authentication)以及統(tǒng)一授權(quán)(authorization)服務(wù)。
keystone組件作為openstack云平臺的身份認(rèn)證核心[7],可以與其他后端授權(quán)系統(tǒng)進(jìn)行集成,其身份認(rèn)證機制的特點主要通過令牌(token)來實現(xiàn),主要包括了 UUID token、PKI token以及 fernet token。云用戶在與openstack其他組件交互之前,需要從 keystone獲得令牌,然后將該令牌用于與openstack云平臺中各組件交互時的身份驗證,其認(rèn)證工作具體流程如圖1所示,其中項目(project)為keystone中的基本概念,表示各個服務(wù)中可以訪問的資源集合。
圖1 keystone組件工作流程
openstack云平臺基于keystone組件的認(rèn)證機制存在以下問題。
1)基于PKI token的認(rèn)證方式可以在一定程度上保證云用戶在訪問其他應(yīng)用組件時的安全,但是用戶在登錄云平臺時目前僅支持基于用戶名/口令認(rèn)證方式。這種認(rèn)證方式存在口令泄露、易遭受口令猜測攻擊、字典攻擊等安全隱患。
2)認(rèn)證過程中,用戶名/口令都是以明文形式發(fā)送,默認(rèn)使用HTTP協(xié)議進(jìn)行認(rèn)證[8],攻擊者可能通過協(xié)議分析器竊聽用戶的認(rèn)證信息或?qū)φJ(rèn)證請求數(shù)據(jù)分組進(jìn)行截取,進(jìn)而發(fā)動重放攻擊。
3)即使將keystone組件配置成支持HTTPS加密訪問環(huán)境,攻擊者仍能夠利用 man-in-the-middle機制截取網(wǎng)絡(luò)通信數(shù)據(jù)并進(jìn)行數(shù)據(jù)篡改進(jìn)而發(fā)動中間人攻擊。
4)沒有提供重復(fù)登錄失敗后限制登錄的方法[9],這可能會遭受暴力攻擊以及DoS(denial of service)攻擊。
5)文獻(xiàn)[10]通過定量安全評價對 openstack安全性進(jìn)行分析,根據(jù)漏洞數(shù)據(jù)庫(NVD,national vulnerability database)的經(jīng)驗數(shù)據(jù)得出keystone是最脆弱的組件,存在大量漏洞。攻擊者可能通過這些漏洞對用戶的隱私數(shù)據(jù)進(jìn)行竊取。
6)keystone組件是部署 openstack云平臺的唯一強制服務(wù)[11],這使得keystone成為攻擊者的首要攻擊目標(biāo)。集成第三方身份驗證和授權(quán)協(xié)議是一種更安全的部署方法。
綜上所述,基于keystone組件的認(rèn)證方式存在諸多安全問題,不能有效抵抗多種網(wǎng)絡(luò)攻擊,不能適用于政務(wù)、軍事等對安全性需求較高的應(yīng)用場景,因此需要一種高安全性的認(rèn)證方式來保護openstack云用戶的隱私數(shù)據(jù)安全。
為了在云中提供強大的數(shù)據(jù)保護,加密技術(shù)通常用于保護傳輸中的數(shù)據(jù)以及rest中的數(shù)據(jù)。密鑰管理是所有使用加密的云組件面臨的巨大挑戰(zhàn)。
Barbican是為openstack云平臺提供key的管理存儲服務(wù)的組件[12],通過rest API來提供和管理機密信息并進(jìn)行安全存儲。Barbican組件通過加密密鑰對用戶機密信息進(jìn)行加密,成為Barbican的秘密(secret):包括密碼、公私鑰、加密密鑰,并存儲到Barbican的后端數(shù)據(jù)庫中。Barbican組件提供了外部密鑰管理設(shè)備的接口,具有良好的擴展性,可以快速存儲和檢索傳遞給openstack組件的密鑰[13],能夠提供靈活、可靠的密鑰周期管理服務(wù)。
Barbican組件的核心是數(shù)據(jù)的加解密以及秘密的存儲,在組件內(nèi)部生成一個密鑰,存儲在用于加密處理的硬件安全模塊中(HSM, hardware security module),在秘密存儲到數(shù)據(jù)庫前對其進(jìn)行加密。讀取數(shù)據(jù)時,先從數(shù)據(jù)庫讀取密文,再通過密鑰解密后獲取明文,這可以有效防止數(shù)據(jù)庫中的數(shù)據(jù)泄露。
針對openstack云平臺基于keystone的認(rèn)證機制在政務(wù)、軍事等領(lǐng)域中安全性不足的問題,本文設(shè)計并實現(xiàn)了基于數(shù)字證書的 openstack身份認(rèn)證系統(tǒng)來保護openstack云平臺用戶隱私數(shù)據(jù)的安全。針對不同云用戶對云平臺身份認(rèn)證安全等級的不同需求,結(jié)合openstack基于keystone組件的認(rèn)證特點并通過對keystone組件進(jìn)行擴展,從而支持云計算環(huán)境下基于數(shù)字證書的認(rèn)證方式。
認(rèn)證系統(tǒng)主要包括云密碼管理子系統(tǒng)和云身份認(rèn)證子系統(tǒng)兩部分。云密碼管理子系統(tǒng)主要為云平臺用戶提供證書的管理、簽發(fā)服務(wù),由云平臺證書分發(fā)服務(wù)器、證書密鑰分發(fā)插件以及用戶證書下載插件組成。云身份認(rèn)證子系統(tǒng)是證書認(rèn)證服務(wù)的提供者,由密碼認(rèn)證服務(wù)器、云認(rèn)證客戶端插件和認(rèn)證令牌處理插件組成。認(rèn)證系統(tǒng)組成如圖2所示。
圖2 認(rèn)證系統(tǒng)組成
本系統(tǒng)將數(shù)字證書藏于UKey(USB Key)中,利用UKey提供的安全機制使其作為用戶私鑰與證書的安全載體[13]。在部署方面增加密碼認(rèn)證服務(wù)器和證書分發(fā)服務(wù)器,并對傳統(tǒng)的證書認(rèn)證及認(rèn)證網(wǎng)關(guān)所采用的 socket通信接口進(jìn)行改造,統(tǒng)一采用Rest-full API進(jìn)行服務(wù)調(diào)用,提高標(biāo)準(zhǔn)化及快速擴展能力。使用Barbican組件作為密鑰容器代替 keystone使用的文件方式密鑰存儲,統(tǒng)一將客戶端與服務(wù)端的公私鑰對作為secret經(jīng)Barbican加密密鑰加密后進(jìn)行統(tǒng)一管理存儲,使用密碼認(rèn)證服務(wù)器內(nèi)置密碼卡代替HSM存儲Barbican加密密鑰??紤]到系統(tǒng)性能要求,將密碼認(rèn)證服務(wù)器部署成認(rèn)證服務(wù)器集群,統(tǒng)一為云平臺中各組件提供證書或數(shù)字簽名的驗證服務(wù)。在數(shù)據(jù)庫模塊中增加新的用戶證書信息表,用來存儲keystone用戶與證書之間的關(guān)系。認(rèn)證系統(tǒng)總體架構(gòu)如圖3所示。
認(rèn)證系統(tǒng)主要完成云平臺用戶的證書管理、簽發(fā)以及身份認(rèn)證工作。
1)云平臺用戶的證書管理、簽發(fā)
在keystone后端部署云平臺證書分發(fā)服務(wù)器并與keystone組件結(jié)合,同時另一端與公鑰密碼基礎(chǔ)設(shè)施連接,提供用戶和設(shè)備證書管理服務(wù)。管理員根據(jù)需要構(gòu)建用戶證書管理請求連接到云平臺證書簽發(fā)服務(wù)器,獲得證書密碼管理服務(wù)權(quán)限,并通過證書密鑰分發(fā)插件向用戶直接頒發(fā)數(shù)字證書,從而實現(xiàn)云平臺用戶證書的在線簽發(fā)、更新與撤銷。
2)云平臺用戶身份認(rèn)證
在keystone后端部署密碼認(rèn)證服務(wù)器,主要處理云用戶基于UKey數(shù)字證書的身份認(rèn)證和令牌簽發(fā)工作,通過內(nèi)置密碼卡來提供密碼技術(shù)支持,與keystone組件協(xié)同完成云平臺證書用戶的身份認(rèn)證。通過認(rèn)證令牌處理插件與keystone組件結(jié)合,使keystone能夠接受新的認(rèn)證令牌,解析協(xié)議數(shù)據(jù),并發(fā)送至密碼認(rèn)證服務(wù)器進(jìn)行驗證,而后從本地身份管理模塊中獲取用戶對應(yīng)的證書信息,查看該用戶的合法性,從而實現(xiàn)基于證書密碼的全局身份認(rèn)證。
本文通過一種基于數(shù)字證書的 openstack認(rèn)證協(xié)議保障云用戶身份認(rèn)證的安全。
表1給出協(xié)議描述相關(guān)的符號記法。協(xié)議涉及五方參與者:客戶端 C、密碼認(rèn)證服務(wù)器 AS(authentication server)、管理員終端 MT(management terminal)、keystone服務(wù)器KS(key stone server)、證書分發(fā)服務(wù)器CS(certificate authorization server),參與者能夠通過密鑰管理組件Barbican獲得對方公鑰UK(public key)。協(xié)議分為云用戶身份標(biāo)識階段與云用戶身份鑒別階段。
由于對稱密鑰加密具有實時性且加密效率高等優(yōu)點,因此統(tǒng)一使用對稱密鑰SK(symmetric key)對數(shù)據(jù)進(jìn)行加密傳輸,同時考慮到密鑰安全性,利用非對稱加密公鑰UK將對稱密鑰封裝到數(shù)字信封中發(fā)送至服務(wù)端,服務(wù)端利用私鑰RK(private key)對其進(jìn)行解密后提取SK。
圖3 認(rèn)證系統(tǒng)總體架構(gòu)
表1 認(rèn)證協(xié)議符號記法
1)管理員通過管理員系統(tǒng)發(fā)出新建用戶指令,調(diào)用 UKey設(shè)備產(chǎn)生一個經(jīng) MD5(message-digest algorithm 5)Hash算法加密后的隨機數(shù),通過云密碼管理子系統(tǒng)向CS提交證書簽發(fā)請求及隨機數(shù),CS端通過對校驗隨機數(shù)有效性,返回 verify request。在握手過程中使用文獻(xiàn)[14]所提出的 cookie的交換和驗證來抵御DoS攻擊。
2)通過本地 UKey設(shè)備產(chǎn)生臨時公私鑰對UKUKey和RKUKey,并將用戶信息提交至keystone端。
3)keystone在完成正常用戶創(chuàng)建過程后,向云密碼管理子系統(tǒng)提交證書申請。云密碼管理子系統(tǒng)收到請求后,向CS提交證書簽發(fā)請求。
4)申請成功后,CS對用戶信息、公鑰進(jìn)行簽名,獲得數(shù)字證書 CerUKey與被加密私鑰RKE,返回至KS。
5)KS向服務(wù)后臺 dashboard返回證書和加密私鑰,并將證書與私鑰寫入用戶UKey。
6)云用戶身份標(biāo)識流程如圖4所示。
圖4 云用戶身份標(biāo)識流程
1)客戶端與認(rèn)證服務(wù)端通過 Rest-full API進(jìn)行握手并發(fā)送HTTP請求進(jìn)行連接。傳入PIN(personal identification number)碼激活認(rèn)證客戶端插件。調(diào)用本地 UKey提取數(shù)字證書Cer,攜帶Cer和一份簽名消息向密碼認(rèn)證服務(wù)器 AS發(fā)送登錄請求,驗證成功后返回認(rèn)證服務(wù)器令牌,其中簽名消息中包含一個時間戳T0和隨機產(chǎn)生的random nonce。采用成熟的對稱加密算法(AES, advanced encryption standard)對傳輸信息進(jìn)行加密/解密。
2)將客戶端與 keystone服務(wù)端擴展為雙向認(rèn)證,C發(fā)送認(rèn)證服務(wù)請求,KS收到請求之后將自己的證書及相關(guān)信息發(fā)送至 C。客戶端驗證keystone服務(wù)端證書的有效性,驗證成功后攜帶ID、Dm、Tauth通過 dashboard提交至KS身份鑒別模塊。
3)KS通過身份鑒別模塊將認(rèn)證令牌提交至認(rèn)證服務(wù)器進(jìn)行認(rèn)證,成功后獲取用戶及證書信息。同時將安全域名、用戶名、轉(zhuǎn)化為本地userID提交至本地身份管理模塊。
4)將獲取的證書信息同身份認(rèn)證子系統(tǒng)返回的用戶證書信息進(jìn)行比較映射;成功后通過KS向客戶端返回keystone令牌。
5)當(dāng)用戶訪問其他組件或應(yīng)用服務(wù)時,攜帶keystone token和一份簽名消息SC向keystone發(fā)送認(rèn)證請求,認(rèn)證成功后處理請求并返回認(rèn)證結(jié)果。
云用戶身份鑒別流程如圖5所示。
圖5 云用戶身份鑒別流程
針對不同云用戶的需求,在保留原有認(rèn)證方式的基礎(chǔ)上,為高安全需求的用戶提供基于數(shù)字證書的認(rèn)證方式。
系統(tǒng)主要功能是為管理員用戶及普通用戶提供身份的標(biāo)識和鑒別服務(wù)。系統(tǒng)工作流程如圖6所示。在系統(tǒng)安裝時至少需要設(shè)置一名管理員用戶并綁定一個UKey。管理員使用UKey及PIN碼通過圖7所示云用戶登錄界面發(fā)送認(rèn)證請求,通過密碼認(rèn)證服務(wù)器及keystone組件按照本文所設(shè)計的系統(tǒng)認(rèn)證流程進(jìn)行認(rèn)證,成功后返回認(rèn)證結(jié)果并跳轉(zhuǎn)至圖8所示openstack管理員系統(tǒng)界面。通過管理員系統(tǒng)中的添加用戶按鈕跳轉(zhuǎn)至圖9所示云用戶創(chuàng)建界面,根據(jù)不同用戶對安全等級的需求來填寫用戶信息和證書序列號,對于安全等級需求較高的用戶需向證書分發(fā)服務(wù)器提交證書簽發(fā)請求,通過證書分發(fā)及下載插件將數(shù)字證書寫入UKey設(shè)備并頒發(fā)給普通云用戶。云用戶使用UKey及PIN碼通過登錄界面發(fā)送認(rèn)證登錄請求,成功后即可使用openstack云平臺中的各項服務(wù)。
圖6 系統(tǒng)工作流程
圖7 云用戶登錄界面
認(rèn)證系統(tǒng)主要分為云用戶的標(biāo)識和鑒別這兩部分。在云用戶身份標(biāo)識部分,通過與云平臺證書密鑰分發(fā)插件進(jìn)行集成,通過Rest-full API與云平臺證書分發(fā)服務(wù)器進(jìn)行握手并建立連接,從而支持證書的簽發(fā)下載。對數(shù)據(jù)庫表結(jié)構(gòu)進(jìn)行修改,增加PKI證書屬性。在openstack_auth組件代碼中對view.py文件中的 login函數(shù)進(jìn)行修改,將不同的 URL請求將轉(zhuǎn)至UKey認(rèn)證的form頁面。界面部分在openstack原有的用戶標(biāo)識頁面的基礎(chǔ)上增加了是否使用 PKI證書的選項以及對應(yīng)的證書序列號輸入框。
圖8 openstack管理員系統(tǒng)界面
圖9 云用戶創(chuàng)建界面
在云用戶身份鑒別部分,通過與云認(rèn)證客戶端插件進(jìn)行集成,負(fù)責(zé)讀取云用戶UKey設(shè)備中的證書。對keystone組件進(jìn)行擴展,增加新的PKI認(rèn)證方式及該認(rèn)證方式所需要解析的數(shù)據(jù)格式和屬性。在 openstack_auth/plugin目錄下新建usbkeytoken.py文件,定義一個新的認(rèn)證插件,支持UKey token的認(rèn)證方式,在identities/v3/目錄下實現(xiàn)封裝這種認(rèn)證方式所需要傳遞的參數(shù)和協(xié)議,并支持對這種協(xié)議的引用。界面部分將云用戶口令輸入框替換為UKey設(shè)備口令輸入框,為云用戶提供基于數(shù)字證書的身份鑒別服務(wù)。
在系統(tǒng)應(yīng)用方面,本文基于 openstack云平臺搭建了密碼云(cryptographic cloud)系統(tǒng)。密碼云系統(tǒng)是對分布式密碼資源進(jìn)行整合,并通過虛擬化技術(shù)生成密碼資源池,構(gòu)建出具有較高動態(tài)擴展性和靈活性的虛擬計算平臺,按需向用戶提供密碼服務(wù),解決了傳統(tǒng)密碼技術(shù)受限于固定的載體和密碼資源不可擴展等問題。密碼云系統(tǒng)對身份認(rèn)證技術(shù)有著極高的安全性需求,若攻擊者成功獲得系統(tǒng)的授權(quán),可能會對密碼信息資源進(jìn)行竊取和篡改。目前本文系統(tǒng)已全面應(yīng)用于基于密碼云服務(wù)系統(tǒng)的應(yīng)用場景,管理員使用UKey設(shè)備通過本文所設(shè)計的認(rèn)證協(xié)議登錄基于 openstack的密碼云系統(tǒng)來對密碼虛機進(jìn)行統(tǒng)一管理,提高了云用戶在登錄云平臺系統(tǒng)時的安全性。
政務(wù)云(government cloud)系統(tǒng)指通過云計算技術(shù)為政府部分行業(yè)提供基礎(chǔ)設(shè)施、應(yīng)用系統(tǒng)及信息安全等綜合服務(wù)的云計算平臺。但是涉及政府機密數(shù)據(jù)信息的泄露是具有破壞性的。在2017年國家電子政務(wù)外網(wǎng)管理中心電子政務(wù)云集成與應(yīng)用國家工程實驗室聯(lián)合發(fā)布的《政務(wù)云安全要求》(GW0013-2017)中明確指出,安全接入平臺是政務(wù)用戶通過互聯(lián)網(wǎng)或移動專線網(wǎng)絡(luò)訪問政務(wù)云的部門業(yè)務(wù)和公共區(qū)業(yè)務(wù)的唯一接入通道,接入平臺應(yīng)具備數(shù)字認(rèn)證、授權(quán)管理等功能。本文通過數(shù)字證書來實現(xiàn)系統(tǒng)的身份認(rèn)證和訪問控制,符合政務(wù)云對安全性方面的要求,可以很好地適用于政務(wù)云系統(tǒng)。
在協(xié)議安全性方面,文獻(xiàn)[10]在openstack原有認(rèn)證協(xié)議的基礎(chǔ)上提出了一種基于安全度量的方法對 openstack認(rèn)證系統(tǒng)進(jìn)行定量化安全評估,對keystone組件中存在的漏洞進(jìn)行分析與修補。文獻(xiàn)[16]提出了一種基于改進(jìn)OpenID框架的openstack認(rèn)證協(xié)議。文獻(xiàn)[16]提出了一種基于keystone的安全認(rèn)證協(xié)議,通過加密技術(shù)來提高云平臺身份認(rèn)證的安全性。本文從加密技術(shù)、密鑰管理、協(xié)議效率以及 openstack現(xiàn)階段易遭受的主要網(wǎng)絡(luò)攻擊抗性等角度將本文協(xié)議與openstack原有的基于keystone令牌的認(rèn)證協(xié)議及文獻(xiàn)[10]、文獻(xiàn)[15-16]協(xié)議進(jìn)行比較。對比分析結(jié)果如表2所示。
表2 協(xié)議對比分析結(jié)果
在加密技術(shù)方面,本文與文獻(xiàn)[16]協(xié)議采用對稱加密和非對稱加密相結(jié)合的加密技術(shù),相較于其他認(rèn)證協(xié)議,具有更高的數(shù)據(jù)機密性?;?PKI token的認(rèn)證方式雖然可以通過非對稱加密技術(shù)拓展為 HTTPS加密認(rèn)證環(huán)境,但是在后續(xù)令牌的交互過程數(shù)據(jù)仍以明文傳輸,不能保證整個認(rèn)證過程的數(shù)據(jù)安全。文獻(xiàn)[15]協(xié)議通過MD5算法對云用戶在登錄時填寫的認(rèn)證碼進(jìn)行加密,但是無法保證數(shù)據(jù)傳輸過程中的安全。在認(rèn)證因素方面,本文所設(shè)計的認(rèn)證協(xié)議是雙因素認(rèn)證協(xié)議,相較于其他單因素認(rèn)證協(xié)議,攻擊者必須獲得全部認(rèn)證因素才能冒充合法用戶。在密鑰管理方面,本文方案相較于其他對比方案采用了Barbican組件提供的密鑰管理和存儲服務(wù),通過密碼認(rèn)證服務(wù)器的內(nèi)置密碼卡充當(dāng)硬件安全模塊來存儲Barbican密鑰,能夠有效防止后端數(shù)據(jù)庫發(fā)生密鑰泄露。另外,本文方案通過密碼認(rèn)證服務(wù)器與keystone組件協(xié)同完成認(rèn)證服務(wù),攻擊者難以僅通過對keystone組件的漏洞進(jìn)行攻擊來竊取用戶數(shù)據(jù)。
本文主要針對 openstack云平臺現(xiàn)階段易遭受的主要網(wǎng)絡(luò)攻擊進(jìn)行分析。在抵抗重放攻擊方面,本文方案通過客戶端向服務(wù)端發(fā)送服務(wù)請求時攜帶的簽名消息中包含一個時間戳T0和一個隨機數(shù)NR,并通過Hash算法簽名保證其完整性。當(dāng)攻擊者重放認(rèn)證請求時,認(rèn)證服務(wù)器端通過驗證隨機數(shù)以及對比時間戳判斷并有效抵抗重放攻擊。文獻(xiàn)[16]方案通過添加時間戳在一定程度上也能夠抵抗重放攻擊,而其他認(rèn)證協(xié)議中沒有抵抗重放攻擊的有效手段。在抵抗中間人攻擊方面,本文協(xié)議與文獻(xiàn)[16]在認(rèn)證協(xié)議中采用了雙向認(rèn)證機制,客戶端需驗證服務(wù)端證書保證其身份的合法性,在一定程度上可以抵御中間人攻擊。本文方案相較于其他對比方案提供了重復(fù)登錄失敗后限制登錄的方法。若攻擊者取得 UKey,但是 PIN碼錯誤次數(shù)超過規(guī)定限制,UKey將自動死鎖。這種機制可以很好地抵抗UKey丟失攻擊、暴力攻擊、字典攻擊及用戶身份鑒別階段的 DoS攻擊,而cookie的交換和驗證機制能夠抵抗用戶標(biāo)識階段可能遭受的DoS攻擊。
對比結(jié)果顯示,本文所提出的認(rèn)證協(xié)議雖然在工作效率方面有所犧牲,且在一定程度上會增加認(rèn)證組件的負(fù)載,但具有更高的安全性,更加完善的密鑰管理方式,并且能夠有效抵抗 openstack云平臺現(xiàn)階段易遭受的網(wǎng)絡(luò)攻擊。在政務(wù)、軍事等應(yīng)用場景中,高安全性往往是第一考慮要素,所以本文方案對于安全等級需求較高的應(yīng)用場景具有重要意義。
本文重點對 openstack云平臺中基于 keystone的身份認(rèn)證機制進(jìn)行了研究,分析了基于keystone組件的認(rèn)證方式在安全性上的不足,提出了一種基于數(shù)字證書的身份認(rèn)證協(xié)議并實現(xiàn)了相應(yīng)的身份認(rèn)證系統(tǒng)。根據(jù)云用戶對安全等級的不同需求,提供一種具有更高安全性的身份認(rèn)證方式。分析表明,基于數(shù)字證書認(rèn)證方式能夠更有效地防范多種可能遭受的攻擊行為,從而更好地保證云平臺用戶隱私數(shù)據(jù)的安全。下一步工作是對系統(tǒng)性能進(jìn)行評估并通過適當(dāng)?shù)呢?fù)載均衡策略使認(rèn)證服務(wù)器集群負(fù)載分布更加均衡,從而降低認(rèn)證服務(wù)器負(fù)載量,提高整個系統(tǒng)的工作效率。