于 淼 王 雄 池亞平
北京電子科技學(xué)院,北京市 100070
隨著云計(jì)算的發(fā)展,基于網(wǎng)絡(luò)虛擬技術(shù)、集群技術(shù)、分布式技術(shù)等實(shí)現(xiàn)跨多架構(gòu)的云存儲(chǔ)系統(tǒng),以其完全數(shù)據(jù)托管模式不再受容量限制、擴(kuò)展性差等約束,同時(shí),享受數(shù)據(jù)備份、遷移等優(yōu)勢(shì)。 但是,托管模式下數(shù)據(jù)的所有權(quán)、可控性、機(jī)密性等問(wèn)題成為阻礙云存儲(chǔ)快速發(fā)展的阻力。當(dāng)前在政務(wù)云環(huán)境下支持?jǐn)?shù)據(jù)存儲(chǔ)的各類(lèi)組件都或多或少存在著安全問(wèn)題,特別是在政務(wù)辦公系統(tǒng)中,后端云存儲(chǔ)平臺(tái)中的數(shù)據(jù)具有敏感性強(qiáng)的特點(diǎn),一旦在數(shù)據(jù)訪問(wèn)過(guò)程中或云存儲(chǔ)平臺(tái)中遭受非法竊取或篡改,可能引起比較嚴(yán)重的敏感事件。 保障云平臺(tái)內(nèi)部存儲(chǔ)數(shù)據(jù)的絕對(duì)安全更是重中之重。 本文在研究國(guó)內(nèi)外加密產(chǎn)品和加密模塊應(yīng)用的基礎(chǔ)上,應(yīng)用Ceph 存儲(chǔ)組件,結(jié)合云密碼服務(wù),設(shè)計(jì)完成一套基于Ceph 的政務(wù)云加密存儲(chǔ)方案,可以有效地解決政務(wù)云中數(shù)據(jù)的安全問(wèn)題。
國(guó)外對(duì)云存儲(chǔ)的研究和開(kāi)發(fā)起步都非常早,自從Google 公司開(kāi)始提出云計(jì)算[1]的概念以后,大部分的廠家都推出了相關(guān)的服務(wù),包括亞馬遜簡(jiǎn)單存儲(chǔ)服務(wù)、谷歌云存儲(chǔ)服務(wù)、蘋(píng)果公司的iCloud 服務(wù)[2]。
從上面的幾款云存儲(chǔ)產(chǎn)品來(lái)看,國(guó)外對(duì)云存儲(chǔ)功能的開(kāi)發(fā)以及與實(shí)際應(yīng)用場(chǎng)景的結(jié)合己經(jīng)非常成熟,主要單獨(dú)的對(duì)外提供存儲(chǔ)服務(wù),相關(guān)的安全性研究局限于數(shù)據(jù)備份,防止數(shù)據(jù)因硬件故障或其他客觀原因?qū)е碌臄?shù)據(jù)丟失,針對(duì)黑客攻擊等主觀因素造成的數(shù)據(jù)丟失或損壞并不具備足夠的安全防護(hù)能力。 同時(shí),由于其發(fā)展非常迅速,一些新興的存儲(chǔ)后端雖具有一些更加優(yōu)秀的特性,但缺乏相關(guān)研究和實(shí)踐的支撐。 在眾多私有云存儲(chǔ)后端中,Ceph 相較于當(dāng)下使用較多的Swift 來(lái)說(shuō),具有存儲(chǔ)速度快、存儲(chǔ)模式多、數(shù)據(jù)讀取效率高的特點(diǎn)。 Ceph 可以提供統(tǒng)一的存儲(chǔ)[3]:既可以為Openstack 服務(wù),也可以對(duì)外提供對(duì)象存儲(chǔ)服務(wù)[4]。 但是,應(yīng)用Ceph 作為私有云平臺(tái)的存儲(chǔ)后端且同時(shí)提供安全云存儲(chǔ)服務(wù)的研究成果目前還較少。 現(xiàn)存利用Ceph 進(jìn)行密文存儲(chǔ)的方式主要有,客戶(hù)端加密:如Linux 內(nèi)核的Dmcrypt。 加密都在客戶(hù)端進(jìn)行,意味著在網(wǎng)絡(luò)上用戶(hù)直接上傳密文數(shù)據(jù)。 Ceph 網(wǎng)關(guān)加密:在這種模式下,客戶(hù)端將在每次I/O 操作時(shí)將密鑰一起傳遞給Ceph。 客戶(hù)端需要自己負(fù)責(zé)管理這些密鑰,并且需要記錄對(duì)象加密時(shí)所使用的對(duì)應(yīng)密鑰。 上述兩種模式下,都需要用戶(hù)自行管理密鑰,存在較大安全隱患。
國(guó)內(nèi)云存儲(chǔ)最早出現(xiàn)在阿里云,且發(fā)展迅猛。 各企事業(yè)單位都積極投入云計(jì)算發(fā)展,各大IT 企業(yè)也在提供多種多樣的云存儲(chǔ)服務(wù)。 比較知名的有:阿里云存儲(chǔ)、騰訊云存儲(chǔ)、京東云存儲(chǔ)。 安全是私有云存儲(chǔ)服務(wù)發(fā)展必須重視的一項(xiàng)指標(biāo),也是云存儲(chǔ)得以發(fā)展的基礎(chǔ)。 為保證對(duì)象存儲(chǔ)中用戶(hù)數(shù)據(jù)的安全,針對(duì)私有云環(huán)境中的各種安全威脅和防護(hù)缺陷[5],研究者提出多種數(shù)據(jù)保護(hù)的方案[6]。 這些方案的研究思路主要集中在用戶(hù)身份認(rèn)證[7]和數(shù)據(jù)的加密以及數(shù)據(jù)的完整性上[8]。 常見(jiàn)的身份認(rèn)證主要有兩種:口令認(rèn)證和多重身份認(rèn)證。 口令認(rèn)證通過(guò)用戶(hù)名和口令實(shí)現(xiàn),簡(jiǎn)單且快速,但存在口令泄露等缺點(diǎn)[9]。 數(shù)據(jù)的加密是對(duì)數(shù)據(jù)進(jìn)行加密處理,在存儲(chǔ)端進(jìn)行密文存儲(chǔ)。 數(shù)據(jù)的完整性指數(shù)據(jù)存儲(chǔ)中的正確性、有效性和一致性[10]。
在已有數(shù)據(jù)加密方案中,密鑰的安全存儲(chǔ)是保證數(shù)據(jù)機(jī)密性的關(guān)鍵問(wèn)題[11],針對(duì)云存儲(chǔ)環(huán)境下的密鑰管理,專(zhuān)家和學(xué)者提出了多種安全存儲(chǔ)方式,如硬件存儲(chǔ),將密鑰生成器產(chǎn)生的密鑰使用根密鑰進(jìn)行加密,再將根密鑰寫(xiě)入硬件設(shè)備如Ukey 和密碼卡中[12],這需要在機(jī)房中部署大量的密碼設(shè)備,會(huì)嚴(yán)重的降低云存儲(chǔ)功能的效率,并極大的提高了存儲(chǔ)服務(wù)的使用成本[13]。另外,一些專(zhuān)家學(xué)者提出了多種基于身份認(rèn)證的安全存儲(chǔ)方案,研究者致力于通過(guò)有效的身份校驗(yàn)來(lái)實(shí)現(xiàn)數(shù)據(jù)的隔離,如Dropbox 公司提出了一種基于哈希加密的密鑰存儲(chǔ)方法[14],將被驗(yàn)證方的身份信息摘要值進(jìn)行存儲(chǔ),防止脫庫(kù)造成的信息泄露[15]。 但針對(duì)將攻擊目標(biāo)放在后端數(shù)據(jù)庫(kù)的攻擊者來(lái)說(shuō),這種方案依然存在著數(shù)據(jù)丟失或泄露的風(fēng)險(xiǎn)。 同時(shí),存儲(chǔ)時(shí)的加密操作勢(shì)必會(huì)降低數(shù)據(jù)存儲(chǔ)的效率,因此需要針對(duì)數(shù)據(jù)存儲(chǔ)的性能問(wèn)題,要進(jìn)行相關(guān)的優(yōu)化改進(jìn)。 周林[16]在文獻(xiàn)中指出Ceph 組件與傳統(tǒng)的私有云存儲(chǔ)組件Swift 相比,具有速度性能和存儲(chǔ)模式多樣的顯著優(yōu)勢(shì)。 Swift 的架構(gòu)設(shè)計(jì)導(dǎo)致在傳輸速度和延遲時(shí)間上都存在不足,主要因?yàn)镾wift 集群中所有進(jìn)出的流量都要通過(guò)代理服務(wù)器,而Ceph 使用更好的算法來(lái)處理數(shù)據(jù)備份,從這點(diǎn)上來(lái)說(shuō),Ceph 系統(tǒng)允許用戶(hù)更加靈活地處理大規(guī)模所帶來(lái)的問(wèn)題[17]。 張曉等[18]指出了Ceph 在存儲(chǔ)方面存在的一些不足,如其核心算法CRUSH 的不穩(wěn)定性,以及結(jié)構(gòu)復(fù)雜抽象層次多等問(wèn)題,并給出了優(yōu)化數(shù)據(jù)放置方法、優(yōu)化IO 邏輯等存儲(chǔ)引擎等改進(jìn)策略。 侯晉成[19]針對(duì)云計(jì)算特點(diǎn),提出了多種云環(huán)境下的信息安全管理策略,其中針對(duì)用戶(hù)數(shù)據(jù)安全性,提出了提高云計(jì)算數(shù)據(jù)破解復(fù)雜度的信息管理方案。 欒忠祥[20]對(duì)已有的云環(huán)境下的安全保護(hù)技術(shù)進(jìn)行了對(duì)比分析,對(duì)應(yīng)用密碼學(xué)技術(shù)的防護(hù)方案進(jìn)行了加密算法分析。針對(duì)用戶(hù)數(shù)據(jù)加密問(wèn)題,陳元等[21]人提出了一種基于云存儲(chǔ)技術(shù)的安全密文區(qū)間檢索方案,用于提高加密復(fù)雜度保障安全性并優(yōu)化加密性能。李建鵬等[22]人在文獻(xiàn)中提出了一種節(jié)點(diǎn)優(yōu)先級(jí)算法用于在高并發(fā)場(chǎng)景下提高密碼服務(wù)系統(tǒng)的調(diào)度成功率,在云計(jì)算海量數(shù)據(jù)的背景下提升密鑰分發(fā)效率。 本文借鑒這些優(yōu)化方案提出并設(shè)計(jì)了數(shù)據(jù)存儲(chǔ)模塊,為高效的加密存儲(chǔ)方案提供數(shù)據(jù)存儲(chǔ)支撐。
針對(duì)政務(wù)云環(huán)境中,對(duì)海量小文件讀寫(xiě)能力要求較高的特點(diǎn),本文模擬了政務(wù)云的使用場(chǎng)景,對(duì)Ceph 和Swift 存儲(chǔ)組件進(jìn)行壓力測(cè)試,對(duì)比了二者在該使用場(chǎng)景下的存儲(chǔ)能力。
Ceph 是一個(gè)分布式存儲(chǔ)系統(tǒng), 具有高擴(kuò)展性, 高可靠性, 高性能的存儲(chǔ)集群, 它目前提供對(duì)象存儲(chǔ), 塊設(shè)備存儲(chǔ), 文件系統(tǒng)存儲(chǔ)三種存儲(chǔ)應(yīng)用。 具有高性能、高可用性、高可擴(kuò)展性。Ceph 摒棄了傳統(tǒng)的集中式存儲(chǔ)元數(shù)據(jù)尋址的方案,采用CRUSH 算法,強(qiáng)化數(shù)據(jù)分布均衡性,提高并行度。 同時(shí)考慮了容災(zāi)域的隔離,實(shí)現(xiàn)了各類(lèi)負(fù)載的副本放置規(guī)則,例如跨機(jī)房、機(jī)架感知等。 支持上千個(gè)存儲(chǔ)節(jié)點(diǎn)的規(guī)模以及TB 到PB級(jí)的數(shù)據(jù)。 通過(guò)去中心化提高了擴(kuò)展靈活性,使得擴(kuò)展能力隨節(jié)點(diǎn)增加而線性增長(zhǎng)。
Swift 是OpenStack 開(kāi)源云計(jì)算項(xiàng)目的子項(xiàng)目之一。 Swift 使用普通的服務(wù)器來(lái)構(gòu)建冗余的、可擴(kuò)展的分布式對(duì)象存儲(chǔ)集群,存儲(chǔ)容量可達(dá)PB 級(jí)。 提供高可用分布式對(duì)象存儲(chǔ)服務(wù),提供了強(qiáng)大的擴(kuò)展性和持久性,用于永久類(lèi)型的靜態(tài)數(shù)據(jù)的長(zhǎng)期存儲(chǔ),應(yīng)用完全對(duì)稱(chēng)的系統(tǒng)架構(gòu)降低系統(tǒng)運(yùn)維成本。 具有高可擴(kuò)展性,數(shù)據(jù)存儲(chǔ)容量與存儲(chǔ)性能隨存儲(chǔ)設(shè)備增加線性提升。 Swift的元數(shù)據(jù)存儲(chǔ)是完全均勻隨機(jī)分布的,沒(méi)有單點(diǎn)角色,并且在架構(gòu)和設(shè)計(jì)上保證無(wú)單點(diǎn)業(yè)務(wù)有效,從而保障了無(wú)單點(diǎn)故障的特性。 Swift 被廣泛的應(yīng)用于各類(lèi)云計(jì)算環(huán)境中。 表1 對(duì)比了兩種存儲(chǔ)組件的不同點(diǎn)。
表1 Swift 與Ceph 對(duì)比
Ceph 通過(guò)C++語(yǔ)言進(jìn)行開(kāi)發(fā),在運(yùn)行速度上要明顯優(yōu)于Swift;Ceph 同時(shí)還提供了多種數(shù)據(jù)存儲(chǔ)模式,相較于Swift 專(zhuān)注于對(duì)象存儲(chǔ),Ceph還提供了塊存儲(chǔ)和文件存儲(chǔ)功能,在進(jìn)行政務(wù)云環(huán)境部署時(shí)可以替代其他存儲(chǔ)組件,降低部署環(huán)境的復(fù)雜度;在數(shù)據(jù)訪問(wèn)方面,Swift 是為云而開(kāi)發(fā)的,云原生的,所以主要的訪問(wèn)方法是通過(guò)RESTful API(Application Programming Interface,應(yīng)用程序接口)。 應(yīng)用程序可以直接對(duì)Swift 尋址(繞過(guò)操作系統(tǒng))并將數(shù)據(jù)提交給Swift 存儲(chǔ),但也使訪問(wèn)云外的快速存儲(chǔ)變得更加復(fù)雜。 圖1 中給出了Ceph 進(jìn)行數(shù)據(jù)訪問(wèn)的體系結(jié)構(gòu)。 相比于Swift,Ceph 更加開(kāi)放,提供了多種數(shù)據(jù)訪問(wèn)方式。
圖1 Ceph 數(shù)據(jù)訪問(wèn)體系結(jié)構(gòu)
圖1 展示了Ceph 在RADOS(Reliable Autonomic Distributed Objects Store,可靠自主的分布式對(duì)象存儲(chǔ))集群的基礎(chǔ)上提供了數(shù)據(jù)抽象和管理層,原生兼容S3 和SwiftAPI 的對(duì)象存儲(chǔ)服務(wù)。 RADOS 網(wǎng)關(guān)提供一種使客戶(hù)端能夠利用標(biāo)準(zhǔn)對(duì)象存儲(chǔ)API 來(lái)訪問(wèn)Ceph 集群的服務(wù),Ceph與Swift 在客戶(hù)端訪問(wèn)對(duì)象存儲(chǔ)系統(tǒng)方式上存在不同。 在Swift 中,客戶(hù)端需與Swift 網(wǎng)關(guān)通信,這會(huì)帶來(lái)一些潛在的單點(diǎn)故障。 為解決該問(wèn)題,Swift 環(huán)境為Swift 網(wǎng)關(guān)實(shí)現(xiàn)了高可用性。 而Ceph 使用對(duì)象存儲(chǔ)設(shè)備(OSD),在每個(gè)存儲(chǔ)節(jié)點(diǎn)上運(yùn)行。 通過(guò)OSD 獲取存儲(chǔ)拓?fù)涞男畔?,收集二進(jìn)制對(duì)象以訪問(wèn)原始數(shù)據(jù)。 訪問(wèn)對(duì)象存儲(chǔ)所需的另一個(gè)組件在客戶(hù)機(jī)上運(yùn)行,因此Ceph對(duì)存儲(chǔ)的訪問(wèn)沒(méi)有一個(gè)單獨(dú)的入口點(diǎn)。 這使得它比Swift 更靈活。 但Ceph 在安全性方面存在隱患,云計(jì)算節(jié)點(diǎn)上的RADOS 客戶(hù)端直接與RADOS 服務(wù)器交互所使用的網(wǎng)絡(luò)與Ceph 用于未加密復(fù)制流量的網(wǎng)絡(luò)相同。 如果某個(gè)Ceph 客戶(hù)端節(jié)點(diǎn)被入侵,攻擊者便能得到存儲(chǔ)網(wǎng)絡(luò)的所有流量。
在數(shù)據(jù)一致性方面,Ceph 采用強(qiáng)一致性設(shè)計(jì),即Write-All-Read-One 模式,該模式讀取效率較高,而且工程難度較低。 Swift 是基于一致性散列技術(shù),通過(guò)計(jì)算將對(duì)象均勻分布到虛擬空間的虛擬節(jié)點(diǎn)上,以此減少移動(dòng)數(shù)據(jù)在增加或刪除節(jié)點(diǎn)時(shí)的開(kāi)銷(xiāo)。
因此在使用場(chǎng)景上,由于二者在處理數(shù)據(jù)一致性上算法的不同,Ceph 在需要高度一致性的虛擬機(jī)、數(shù)據(jù)庫(kù)和其他數(shù)據(jù)類(lèi)型交互的單站點(diǎn)環(huán)境中表現(xiàn)良好,比較適合與讀多寫(xiě)少的系統(tǒng)。Swift 針對(duì)的是讀寫(xiě)都比較頻繁的場(chǎng)景,更適合處理大量數(shù)據(jù)的大型環(huán)境。
針對(duì)本文特定的政務(wù)私有云環(huán)境,對(duì)兩種存儲(chǔ)組件進(jìn)行相關(guān)性能測(cè)試。 集群測(cè)試環(huán)境如下圖所示,控制端發(fā)起文件讀寫(xiě)請(qǐng)求,用于模擬用戶(hù)對(duì)集群發(fā)起的讀寫(xiě)請(qǐng)求。
圖2 集群測(cè)試環(huán)境
集群中各結(jié)點(diǎn)的資源配置如下表所示。
表2 資源配置
本文在Centos7 操作系統(tǒng)上搭建了Nautilus版Ceph,配置三個(gè)OSD(Objects Storage Device,對(duì)象存儲(chǔ)設(shè)備)用于數(shù)據(jù)存儲(chǔ)。 應(yīng)用COSBench壓力測(cè)試模塊對(duì)存儲(chǔ)組件進(jìn)行壓力測(cè)試。
本次測(cè)試的目的在于對(duì)比Ceph 和Swift 在相同條件下進(jìn)行小文件讀寫(xiě)的效率。 該測(cè)試設(shè)置單個(gè)客戶(hù)端,單個(gè)客戶(hù)端線程數(shù)為8、設(shè)置32個(gè)桶、單桶50 個(gè)對(duì)象(共1600 個(gè)對(duì)象)、單個(gè)對(duì)象大小為64KB。 測(cè)試中通過(guò)LibRados 接口訪問(wèn)Ceph 組件,通過(guò)S3(Simple Storage Service,簡(jiǎn)單存儲(chǔ)服務(wù))接口訪問(wèn)Swift,對(duì)兩種存儲(chǔ)組件分別發(fā)起小文件存儲(chǔ)請(qǐng)求,Ceph 組件測(cè)試結(jié)果如下表3 所示。 在讀寫(xiě)階段,Ceph 組件讀文件速度可以達(dá)到36M/S,寫(xiě)文件速度達(dá)到9M/S。Swift 測(cè)試結(jié)果如下表4 所示。 在讀寫(xiě)階段,Swift 組件讀文件速度為31.6M/S,寫(xiě)文件速度為7.9M/S。
表3 Ceph 測(cè)試結(jié)果
表4 Swift 測(cè)試結(jié)果
根據(jù)實(shí)驗(yàn)結(jié)果,在進(jìn)行小文件讀寫(xiě)測(cè)試時(shí),Ceph 讀寫(xiě)文件速度明顯優(yōu)于Swift,Ceph 在讀寫(xiě)文件速度上相比Swift 要快接近14%。
吞吐量方面,Ceph 相較于Swift 也有著明顯優(yōu)勢(shì)。
圖3 吞吐率對(duì)比圖
根據(jù)實(shí)驗(yàn)測(cè)試結(jié)果,Ceph 在處理小文件的讀寫(xiě)能力上,明顯優(yōu)于Swift。 本文的應(yīng)用場(chǎng)景主要針對(duì)政務(wù)云等私有云環(huán)境,對(duì)數(shù)據(jù)一致性要求較高,對(duì)小文件讀寫(xiě)能力需求較強(qiáng),所以Ceph對(duì)于此類(lèi)應(yīng)用場(chǎng)景具有較大的優(yōu)勢(shì)。 但Ceph 在安全性方面仍存在上文所述問(wèn)題。 針對(duì)該安全問(wèn)題,設(shè)計(jì)一套安全的數(shù)據(jù)存儲(chǔ)方案。
在傳統(tǒng)的數(shù)據(jù)加密方案中,根據(jù)數(shù)據(jù)在讀寫(xiě)路徑中加密階段不同分為傳輸加密和存儲(chǔ)加密。對(duì)于傳輸加密,為了保證數(shù)據(jù)的安全性,通常會(huì)采用SSL (Secure Sockets Layer,安全套接字協(xié)議)協(xié)議進(jìn)行傳輸。 對(duì)于存儲(chǔ)加密,即落盤(pán)存儲(chǔ)的數(shù)據(jù),為了保證數(shù)據(jù)的安全性,通常會(huì)采用服務(wù)端加密(Server-Side Encryption,SSE)的方法,即在接收到數(shù)據(jù)之后,先對(duì)數(shù)據(jù)進(jìn)行加密,再落盤(pán)進(jìn)行存儲(chǔ)。 當(dāng)前政務(wù)云環(huán)境中,已知方案的密鑰生成效率低,分發(fā)過(guò)程和密鑰存儲(chǔ)的安全性較差。 因此,本文基于密碼機(jī)設(shè)計(jì)密鑰管理模塊,用于解決數(shù)據(jù)加密過(guò)程中密鑰管理的問(wèn)題。 同時(shí),設(shè)計(jì)數(shù)據(jù)加密存儲(chǔ)模塊,與密鑰管理模塊進(jìn)行有效的信息交互實(shí)現(xiàn)數(shù)據(jù)的高效加密存儲(chǔ)。
本文設(shè)計(jì)的數(shù)據(jù)加密存儲(chǔ)方案,可以應(yīng)用于一個(gè)典型的政務(wù)云環(huán)境中,如圖4 所示。 應(yīng)用場(chǎng)景主要由用戶(hù)和政務(wù)云平臺(tái)組成。 用戶(hù)發(fā)起存儲(chǔ)或讀取數(shù)據(jù)的請(qǐng)求后,數(shù)據(jù)加密存儲(chǔ)模塊向密鑰管理模塊進(jìn)行交互,完成密鑰的分發(fā)和存儲(chǔ),并對(duì)數(shù)據(jù)進(jìn)行加密存儲(chǔ)。 在圖4 所示的應(yīng)用場(chǎng)景中,有著如下幾個(gè)安全隱患:
圖4 應(yīng)用場(chǎng)景
(1)用戶(hù)數(shù)據(jù)發(fā)送給服務(wù)器階段可能會(huì)遭受竊聽(tīng)等攻擊竊取明文數(shù)據(jù);
(2)在云平臺(tái)中,數(shù)據(jù)密鑰傳輸過(guò)程可能遭受惡意攻擊竊取數(shù)據(jù)密鑰,從而泄露用戶(hù)數(shù)據(jù);
(3)后端存儲(chǔ)介質(zhì)可能遭受惡意攻擊竊取數(shù)據(jù)。
本文提出的基于Ceph 的加密存儲(chǔ)方案主要由數(shù)據(jù)加密存儲(chǔ)模塊和密鑰管理模塊組成。 其中,密鑰管理模塊主要由云服務(wù)密碼機(jī)和后端數(shù)據(jù)庫(kù)構(gòu)成,提供密鑰管理服務(wù),具體包括密鑰的生成、分發(fā)和存儲(chǔ)。 數(shù)據(jù)加密存儲(chǔ)模塊主要由Ceph 存儲(chǔ)組件及后端數(shù)據(jù)庫(kù)構(gòu)成,提供用戶(hù)數(shù)據(jù)的加密和存儲(chǔ)服務(wù),其中加解密用戶(hù)數(shù)據(jù)使用的數(shù)據(jù)密鑰由密鑰管理模塊負(fù)責(zé)管理。 當(dāng)用戶(hù)發(fā)起數(shù)據(jù)存儲(chǔ)請(qǐng)求后,數(shù)據(jù)加密模塊向密鑰管理模塊發(fā)起獲取密鑰請(qǐng)求,得到密鑰管理模塊返回的數(shù)據(jù)密鑰后,在Ceph 網(wǎng)關(guān)對(duì)用戶(hù)數(shù)據(jù)進(jìn)行加密處理,再將密文進(jìn)行存儲(chǔ)。 各模塊通過(guò)有效的密鑰管理、數(shù)據(jù)加密服務(wù),共同構(gòu)成一套可靠的加密存儲(chǔ)方案,保護(hù)用戶(hù)數(shù)據(jù)安全性,有效解決政務(wù)云平臺(tái)下的安全問(wèn)題。
本文基于云服務(wù)密碼機(jī)依據(jù)國(guó)密標(biāo)準(zhǔn)《GM/T 0018-2012 密碼設(shè)備應(yīng)用接口規(guī)范》而設(shè)計(jì)的SDF 接口(以C 語(yǔ)言實(shí)現(xiàn)提供密碼服務(wù)的應(yīng)用接口名稱(chēng)),通過(guò)自定義插件的方式將密碼機(jī)與私有云平臺(tái)集成起來(lái),作為系統(tǒng)的密鑰發(fā)生器提供國(guó)產(chǎn)密碼算法的密鑰。 在方案中云服務(wù)密碼機(jī)分為兩個(gè)工作階段,分別是初始化階段和密鑰管理階段。
圖5 方案總體設(shè)計(jì)
在如圖6 所示的初始化階段,調(diào)用對(duì)應(yīng)接口函數(shù)為Ceph 用戶(hù)生成SM2 公私鑰對(duì),并將私鑰傳輸給Ceph。 該密鑰對(duì)作為數(shù)據(jù)加密存儲(chǔ)模塊的用戶(hù)公私鑰對(duì),用于后續(xù)的密鑰分發(fā)。
圖6 初始化階段
密鑰管理階段如圖7 所示,加密時(shí),密鑰管理模塊收到數(shù)據(jù)密鑰請(qǐng)求后,調(diào)用對(duì)應(yīng)接口函數(shù),通過(guò)密碼設(shè)備產(chǎn)生SM4 數(shù)據(jù)密鑰,以及密鑰的SM3 摘要值,并使用用戶(hù)的SM2 加密公鑰加密輸出,同時(shí)將數(shù)據(jù)密鑰的密文、摘要值存儲(chǔ)在密鑰管理模塊的數(shù)據(jù)庫(kù)中。 Ceph 端得到用戶(hù)公鑰加密的數(shù)據(jù)密鑰和摘要值,使用用戶(hù)私鑰進(jìn)行解密后得到明文信息。 再使用數(shù)據(jù)密鑰對(duì)用戶(hù)明文數(shù)據(jù)進(jìn)行加密,將密文和上一步中得到的摘要值存儲(chǔ)到后端數(shù)據(jù)庫(kù)中,并銷(xiāo)毀數(shù)據(jù)密鑰。 解密時(shí),Ceph 發(fā)送帶有摘要值的請(qǐng)求,密鑰存儲(chǔ)模塊通過(guò)摘要值比對(duì)在數(shù)據(jù)庫(kù)中找到對(duì)應(yīng)的數(shù)據(jù)密鑰密文,調(diào)用對(duì)應(yīng)接口函數(shù)進(jìn)行解密,得到對(duì)應(yīng)的數(shù)據(jù)密鑰明文,將數(shù)據(jù)密鑰發(fā)送給Ceph 端,發(fā)送方式同加密步驟一致。 每次進(jìn)行數(shù)據(jù)存儲(chǔ)都產(chǎn)生唯一的數(shù)據(jù)密鑰,一次一密有效保障了用戶(hù)數(shù)據(jù)的機(jī)密性。 同時(shí),密鑰管理模塊內(nèi)部設(shè)計(jì)VSM 三層密鑰體系用于保護(hù)用戶(hù)應(yīng)用密鑰的安全。
圖7 密鑰管理階段
圖8 展示了三層密鑰體系架構(gòu),分別為VSM 主密鑰(Device Master Key,DMK)、本地主密鑰(Local Master Key,LMK)和用戶(hù)數(shù)據(jù)密鑰,其中VSM 主密鑰為最上層,用于分散生成本地主密鑰;本地主密鑰為中間層,用于保護(hù)存儲(chǔ)在VSM 中的各類(lèi)密鑰及敏感信息;用戶(hù)數(shù)據(jù)密鑰為最底層,用于加密保護(hù)海量用戶(hù)各類(lèi)應(yīng)用業(yè)務(wù)數(shù)據(jù)。 其中DMK 作為VSM 唯一主密鑰,在初始化時(shí)由多名管理員導(dǎo)入成分Ukey 到VSM,從而合成產(chǎn)生VSM 主密鑰DMK。 將VSM 主密鑰讀取到硬件密碼卡中,密碼卡內(nèi)再分散產(chǎn)生該VSM 的本地主密鑰LMK。 通過(guò)DMK 對(duì)LMK 的分散保護(hù),LMK 對(duì)數(shù)據(jù)密鑰的加密保護(hù),從而形成了一套三級(jí)密鑰保護(hù)方案,保證了私有云平臺(tái)加密存儲(chǔ)方案的密鑰存儲(chǔ)安全。
圖8 三層密鑰體系
本文基于Ceph 設(shè)計(jì)數(shù)據(jù)加密存儲(chǔ)模塊,提供用戶(hù)數(shù)據(jù)加解密功能,提出對(duì)Ceph 組件存儲(chǔ)的優(yōu)化策略,提升系統(tǒng)整體工作效率。
Ceph 存儲(chǔ)邏輯如圖9 所示,Ceph 網(wǎng)關(guān)使用密鑰管理模塊提供的數(shù)據(jù)密鑰對(duì)用戶(hù)數(shù)據(jù)進(jìn)行加密,對(duì)得到的密文進(jìn)行存儲(chǔ)。 存儲(chǔ)的尋址流程共三步,第一步是File 到Objects 的映射,這次映射將完整的密文數(shù)據(jù)File 進(jìn)行切分,映射為多組大小相同的Objects。 每一個(gè)切分后產(chǎn)生的Objects 將獲得唯一的OID(Objects ID)第二步是Objects 到PG 的映射,PG(Placement Group)是Objects 的邏輯集合,通過(guò)計(jì)算OID 的哈希值,將OID 映射為一個(gè)近似均勻分布的偽隨機(jī)值,將偽隨機(jī)值和mask(PG 的總數(shù)減1)按位相與,得到PG 序號(hào)(PGID)。 第三步是PG 到OSD(Objects storage device,對(duì)象存儲(chǔ)設(shè)備) 的映射,使用CRUSH 算法計(jì)算出對(duì)象映射到相應(yīng)的OSDs,這組OSDs 是PG 中的Objects 數(shù)據(jù)的存儲(chǔ)位置。在Ceph 的機(jī)制中,一個(gè)OSD 平時(shí)需要和與其共同承載同一個(gè)PG 的其他OSD 交換信息,以確定各自是否工作正常。 由于一個(gè)OSD 上承載數(shù)百個(gè)PG,每個(gè)PG 內(nèi)通常有3 個(gè)OSD,一段時(shí)間內(nèi),一個(gè)OSD 需要進(jìn)行數(shù)千次OSD 信息交換,因此提升IO 效率就可以有效提高數(shù)據(jù)的存儲(chǔ)效率。 可以通過(guò)設(shè)計(jì)新的IO 引擎來(lái)優(yōu)化讀寫(xiě)速度,比如使用冗余數(shù)據(jù)技術(shù)代替目前使用的三副本技術(shù)。 同時(shí)尋址過(guò)程中使用的CRUSH 算法的結(jié)果是可變的,每個(gè)存儲(chǔ)節(jié)點(diǎn)的剩余容量會(huì)作為影響因子直接影響到CRUSH 算法結(jié)果的分布特性,因此可以對(duì)影響因子的選擇進(jìn)行優(yōu)化和改進(jìn),使得到的地址更加隨機(jī),提高系統(tǒng)的整體性能。
圖9 Ceph 存儲(chǔ)邏輯圖
本文方案中,密鑰管理模塊與Ceph 存儲(chǔ)模塊直接的通信可能成為攻擊或竊聽(tīng)的目標(biāo),所以一種安全的通信機(jī)制必不可少。 上文關(guān)于Ceph存儲(chǔ)結(jié)構(gòu)的位置提到RADOS 提供了一種利用標(biāo)準(zhǔn)對(duì)象存儲(chǔ)API 來(lái)訪問(wèn)Ceph 集群的服務(wù)。它支持 S3 和 Swift API, 可以基于 HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議)或HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,超文本傳輸協(xié)議)協(xié)議完成數(shù)據(jù)交換。 設(shè)計(jì)了如圖10 中所示的數(shù)據(jù)流,以實(shí)現(xiàn)安全可靠的數(shù)據(jù)保護(hù)功能。
圖10 模塊通信數(shù)據(jù)流
Ceph 存儲(chǔ)模塊與密鑰管理模塊的數(shù)據(jù)交互步驟如下:
(1)Ceph 成功部署后,首先向密鑰管理模塊發(fā)起初始化請(qǐng)求。 發(fā)送自己的地址以及用戶(hù)信息;
(2)密鑰管理模塊得到請(qǐng)求后,建立對(duì)應(yīng)用戶(hù)表,同時(shí)生成SM2 密鑰對(duì),將私鑰發(fā)送給Ceph,將公鑰存入用戶(hù)表中,初始化階段完成;
(3)Ceph 對(duì)私鑰進(jìn)行存儲(chǔ),在得到用戶(hù)的數(shù)據(jù)存儲(chǔ)請(qǐng)求后,Ceph 向密鑰管理模塊發(fā)起加密請(qǐng)求。 提供自己的用戶(hù)信息并進(jìn)行簽名;
(4)密鑰管理模塊進(jìn)行驗(yàn)簽后,生成SM4 數(shù)據(jù)密鑰及其對(duì)應(yīng)的SM3 摘要值,用Ceph 的用戶(hù)公鑰加密后發(fā)送給Ceph;
(5)得到數(shù)據(jù)密鑰后對(duì)用戶(hù)數(shù)據(jù)進(jìn)行加密存儲(chǔ),同時(shí)將摘要值存入對(duì)應(yīng)用戶(hù)表中。
Ceph 可以提供SSE 功能,這種方式是指客戶(hù)端將數(shù)據(jù)傳遞到對(duì)象網(wǎng)關(guān),網(wǎng)關(guān)將數(shù)據(jù)加密存儲(chǔ)到Ceph 集群。 本文采用SSE-C(Server-Side Encryption- Client,用戶(hù)提供密鑰的服務(wù)端加密)模式,網(wǎng)關(guān)只負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加解密處理,不會(huì)對(duì)Client 所傳入的密鑰進(jìn)行管理。 客戶(hù)端自己為讀寫(xiě)加密數(shù)據(jù)提供密鑰,這些密鑰都是由客戶(hù)端自己管理,密鑰管理的難度大。 因此,利用密鑰管理模塊管理密鑰,利用SSE 功能對(duì)明文數(shù)據(jù)進(jìn)行加密保護(hù),再將得到的密文發(fā)送給集群進(jìn)行存儲(chǔ),從而實(shí)現(xiàn)了安全可靠的數(shù)據(jù)存儲(chǔ)功能。
在安全性方面,密鑰存儲(chǔ)安全基于三級(jí)密鑰保護(hù)機(jī)制。 云服務(wù)密碼機(jī)擁有唯一的DMK 由多名管理員導(dǎo)入成分Ukey 合成后存儲(chǔ)在密碼機(jī)內(nèi)置的密碼卡中,從密鑰的產(chǎn)生到存儲(chǔ)保證了DMK 的絕對(duì)安全,同時(shí),密碼機(jī)利用DMK 分散產(chǎn)生的LMK 對(duì)用戶(hù)私鑰進(jìn)行保護(hù),保證了數(shù)據(jù)密鑰的絕對(duì)安全,因此,在數(shù)據(jù)密鑰進(jìn)行存儲(chǔ)時(shí),可以基于上述研究實(shí)現(xiàn)多級(jí)的密鑰保護(hù)策略,從而保證了私有云平臺(tái)加密存儲(chǔ)方案的密鑰安全性。 數(shù)據(jù)傳輸方面,Ceph 與密鑰管理模塊通過(guò)在初始化階段產(chǎn)生的公私鑰對(duì)進(jìn)行密文交互,實(shí)現(xiàn)了通信過(guò)程的機(jī)密性,保障了密鑰傳輸過(guò)程的安全性。 數(shù)據(jù)存儲(chǔ)方面,用戶(hù)數(shù)據(jù)采用SM4 算法加密進(jìn)行密文存儲(chǔ),文獻(xiàn)[23]中驗(yàn)證了SM4算法具有強(qiáng)抗線性攻擊能力,即使遭受針對(duì)數(shù)據(jù)庫(kù)的惡意攻擊,攻擊者僅能獲得密文數(shù)據(jù),難以破解得到明文數(shù)據(jù),保證了用戶(hù)數(shù)據(jù)的安全性。因此,本方案在密鑰安全和數(shù)據(jù)安全兩方面都提供了可靠的安全性保護(hù)。 表5 從權(quán)責(zé)管理、彈性擴(kuò)展、數(shù)據(jù)遷移三個(gè)方面將本方案與傳統(tǒng)私有云數(shù)據(jù)存儲(chǔ)方案進(jìn)行了對(duì)比分析,體現(xiàn)了本方案在安全性和效率方面的創(chuàng)新性。
表5 對(duì)比傳統(tǒng)私有云存儲(chǔ)方案
在可行性方面,經(jīng)過(guò)前期的調(diào)查研究,各組件之間可以實(shí)現(xiàn)基于HTTP 協(xié)議的信息交互。基于密碼機(jī)強(qiáng)大的海量密鑰管理能力,可以實(shí)現(xiàn)密鑰的有效管理和高效使用,在不降低文件讀寫(xiě)速度的情況下,顯著提升系統(tǒng)的安全性。 本文通過(guò)設(shè)計(jì)基于云服務(wù)密碼機(jī)的密鑰管理模塊,來(lái)為整個(gè)系統(tǒng)提供數(shù)據(jù)加密的環(huán)境。 云服務(wù)器密碼機(jī)是針對(duì)云計(jì)算環(huán)境的特殊場(chǎng)景,設(shè)計(jì)開(kāi)發(fā)的硬件密碼產(chǎn)品,每臺(tái)虛擬密碼機(jī)均可實(shí)現(xiàn)對(duì)主機(jī)應(yīng)用層數(shù)據(jù)加解密、消息來(lái)源正確性驗(yàn)證、密鑰管理等能力,最大限度的發(fā)揮硬件資源性能,為云環(huán)境下的應(yīng)用系統(tǒng)提供安全的數(shù)據(jù)加密保護(hù)服務(wù)。 擁有超大容量密鑰庫(kù),可安全管理與存儲(chǔ)各類(lèi)應(yīng)用密鑰達(dá)八萬(wàn)級(jí)。 密碼機(jī)作為密鑰管理模塊的核心,提供方案中的密鑰管理服務(wù),因此對(duì)其海量數(shù)據(jù)的處理速度進(jìn)行了相關(guān)壓力測(cè)試。
圖11 中3072 表示密碼機(jī)的并發(fā)線程數(shù);0表示測(cè)試重復(fù)次數(shù);6 表示公私鑰加解密在密碼機(jī)壓力測(cè)試環(huán)境中的功能標(biāo)識(shí)號(hào);4096 表示加解密的分組長(zhǎng)度。 在該測(cè)試環(huán)境下,密碼機(jī)可以實(shí)現(xiàn)每秒處理超過(guò)42 萬(wàn)次的公私鑰加解密操作,平均每秒處理的數(shù)據(jù)量達(dá)到3Gb 以上。
圖11 密碼機(jī)公私鑰加密測(cè)試
針對(duì)海量文件讀寫(xiě)的政務(wù)云環(huán)境,密鑰管理模塊提供的海量密鑰庫(kù)可以在SSE-C 模式下降低對(duì)用戶(hù)密鑰管理的要求,同時(shí)提高密鑰的安全性,進(jìn)而提高數(shù)據(jù)的安全性、保密性。
本文針對(duì)云存儲(chǔ)數(shù)據(jù)的加密存儲(chǔ)問(wèn)題進(jìn)行了研究和分析,通過(guò)實(shí)驗(yàn),對(duì)比了Ceph 與Swift兩種云存儲(chǔ)組件在特定使用場(chǎng)景下的性能差異。在此基礎(chǔ)上,設(shè)計(jì)了一套基于Ceph 的私有云平臺(tái)加密存儲(chǔ)方案,用于改進(jìn)政務(wù)云環(huán)境下數(shù)據(jù)存儲(chǔ)安全性的問(wèn)題。 該方案基于云服務(wù)密碼機(jī)設(shè)計(jì)了密鑰管理和數(shù)據(jù)加密存儲(chǔ)功能模塊,并通過(guò)安全性分析說(shuō)明了本方案可以有效解決數(shù)據(jù)存儲(chǔ)的安全問(wèn)題,同時(shí),壓力測(cè)試驗(yàn)證了面向云環(huán)境本方案具備海量密鑰管理功能。