李向鋒 傅大鵬 李 敏
(北京數(shù)字認(rèn)證股份有限公司研究院 北京 100080)
(lixiangfeng@bjca.org.cn)
互聯(lián)網(wǎng)和云計(jì)算的快速發(fā)展推動(dòng)了電子認(rèn)證從1.0時(shí)代邁向2.0時(shí)代[1],而電子認(rèn)證的發(fā)展需要密碼技術(shù)的不斷進(jìn)步來(lái)支撐.在云計(jì)算應(yīng)用迅猛發(fā)展的今天,業(yè)務(wù)應(yīng)用對(duì)密碼技術(shù)提出新的需求和挑戰(zhàn),人們迫切希望密碼支撐能夠提供與地域無(wú)關(guān)、易于水平擴(kuò)展的云密碼服務(wù)[2].陳亞男等人[3]的《一種基于密碼云的政務(wù)云密碼應(yīng)用研究》描述云技術(shù)與密碼技術(shù)融合、優(yōu)化密碼應(yīng)用的方案.而云密碼服務(wù)的一大核心愿景就是提供彈性擴(kuò)展、按需使用、按量計(jì)費(fèi)、即需即用的密碼功能.這就需要服務(wù)提供方能夠構(gòu)建一個(gè)具備高度水平擴(kuò)展能力的密碼計(jì)算能力、海量密碼管理能力、密鑰管理能力的密碼資源池,將密碼資源池通過(guò)各種接入和交付技術(shù)映射給云虛擬化之上的各層使用.文獻(xiàn)[4]介紹了一種云計(jì)算環(huán)境下密碼資源池系統(tǒng)的應(yīng)用.本文在這些研究的基礎(chǔ)上,分析并提出了密碼技術(shù)綜合利用微內(nèi)核操作系統(tǒng)、CPU安全增強(qiáng)、虛擬化等軟硬件技術(shù),構(gòu)建了一個(gè)涵蓋CPU、操作系統(tǒng)、虛擬化的多層次、體系化、安全的、可支持大規(guī)模應(yīng)用的密碼計(jì)算資源池方案,用以作為云密碼服務(wù)的強(qiáng)有力底層支撐架構(gòu).
當(dāng)前有很多種云密碼的解決方案,涵蓋了公有云、混合云、私有云各種云部署模式,其技術(shù)路線主要有以下幾類:
1) 為密碼設(shè)備加一個(gè)“云化”的服務(wù)層.
使用若干傳統(tǒng)密碼機(jī)組成密鑰管理和密碼計(jì)算的集群,用以完成實(shí)際密碼功能,使用“密碼服務(wù)網(wǎng)關(guān)”層,完成密碼功能請(qǐng)求的認(rèn)證、路由轉(zhuǎn)發(fā)、日志、監(jiān)控等處理.網(wǎng)關(guān)層設(shè)計(jì)時(shí)可以采用云技術(shù),使整個(gè)密碼服務(wù)具備若干與云服務(wù)的位置無(wú)關(guān)、便捷易用的特征.典型方案例如Cryptomathics公司的CSG(crypto service gateway)[5].其典型架構(gòu)如圖1所示:
圖1 使用CSG的方案
CSG方案能夠滿足在部分私有云場(chǎng)景中的密碼需求,所設(shè)計(jì)的網(wǎng)關(guān)層降低了應(yīng)用部署、使用和維護(hù)密碼功能的成本.其不足之處是進(jìn)行密碼處理的密碼機(jī)/密碼卡沒有滿足云計(jì)算特征的、可快速水平擴(kuò)展的需求,依然需要部署更多的專用密碼設(shè)備.另外,業(yè)務(wù)系統(tǒng)直接使用CSG提供的服務(wù)接口和管理接口,因?yàn)闆]有明確的業(yè)務(wù)接入端點(diǎn)和管理端點(diǎn),因而不易于進(jìn)行策略管理和服務(wù)管控.
2) 將密碼設(shè)備進(jìn)行虛擬化.
另一種方案是對(duì)密碼設(shè)備進(jìn)行虛擬化.將密碼硬件虛擬成多個(gè)密碼硬件,向外提供的是一個(gè)“虛擬的密碼機(jī)”[6].云服務(wù)廠商使用硬件密碼產(chǎn)品為公有云提供服務(wù),用戶在云服務(wù)商基礎(chǔ)設(shè)施上部署的業(yè)務(wù)系統(tǒng),在需要密碼機(jī)時(shí)直接租用虛擬密碼機(jī),包含在自身業(yè)務(wù)系統(tǒng)的虛擬私有云(virtual private cloud, VPC)內(nèi).
虛擬密碼機(jī)方案借助虛擬化技術(shù)和群組內(nèi)共享密鑰的技術(shù),在一定程度上做到了密碼計(jì)算能力共享.其不足之處是當(dāng)客戶租用虛擬密碼機(jī)之后,在后端仍然需要為該客戶保留較多的密鑰資源和密碼計(jì)算資源,因此在密碼能力快速水平擴(kuò)展時(shí)依然存在很多困難.
上述2種典型密碼資源池的方案都在試圖解決云中業(yè)務(wù)面臨的密碼問(wèn)題,構(gòu)建密碼資源池并交付給使用者.但對(duì)于需要按需服務(wù)、水平擴(kuò)展、便捷安全的密碼資源池,還存在一些不盡人意之處.因此,本文提出了一種新的方案,用以構(gòu)建密碼計(jì)算資源池并映射給使用者的方案來(lái)解決這2個(gè)難題.
密碼資源池由密鑰管理系統(tǒng)(KMS)和多個(gè)軟件或硬件密碼計(jì)算單元CCU(crypto computing unit)組成,封裝為服務(wù)提供給業(yè)務(wù)系統(tǒng).CCU可以為軟件形態(tài)——軟件密碼計(jì)算單元(software crypto computing unit, SCCU)或硬件形態(tài)——硬件密碼計(jì)算單元(hardware crypto computing unit, HCCU).其中,軟件計(jì)算單元能夠提供低廉的硬件成本,易于部署使用,能夠提供更強(qiáng)的水平擴(kuò)展能力,相比硬件密碼計(jì)算單元具備更多的優(yōu)勢(shì).在系統(tǒng)中多個(gè)SCCU與其他系統(tǒng)相互配合,共同完成密碼計(jì)算任務(wù).
由于軟件密碼計(jì)算模塊潛在的安全問(wèn)題,需要進(jìn)行針對(duì)性設(shè)計(jì),可以考慮的技術(shù)包括微內(nèi)核操作系統(tǒng)和基于CPU的密碼保護(hù)技術(shù).
1) 使用微內(nèi)核操作系統(tǒng)減小密碼計(jì)算單元的攻擊面,提升其按需啟動(dòng)和回收的能力.
當(dāng)前計(jì)算機(jī)系統(tǒng)通常需要設(shè)計(jì)非常復(fù)雜和龐大的操作系統(tǒng),以滿足靈活多變的業(yè)務(wù)需要和交互需求,但這也帶來(lái)了諸多安全問(wèn)題.正如Tanenbaum等人[7]在其論文“Can We Make Operating Systems Reliable and Secure”中所指出的,復(fù)雜而靈活的體系結(jié)構(gòu)設(shè)計(jì)也使系統(tǒng)充滿了各種漏洞,導(dǎo)致不得不通過(guò)頻繁的補(bǔ)丁和更新來(lái)加固.而上文所述的密碼計(jì)算單元SCCU,其中所包含的硬件和軟件基本上是固定不變的,所提供的服務(wù)也存在非常清晰的邊界,因此,現(xiàn)代操作系統(tǒng)很大一部分內(nèi)容是SCCU所不需要的,這些內(nèi)容的存在反而給SCCU帶來(lái)各種潛在的漏洞與隱患.
正因?yàn)閭鹘y(tǒng)操作系統(tǒng)漏洞頻繁出現(xiàn),微內(nèi)核操作系統(tǒng)成為操作系統(tǒng)領(lǐng)域近年來(lái)的研究熱點(diǎn),其代表性項(xiàng)目是Unikernel[8].Madhavapeddy等人[9]在ACM 2013發(fā)表的“Unikernels: Library Operating Systems for the Cloud”中提出,Unikernel機(jī)制能夠顯著降低系統(tǒng)復(fù)雜度,減少系統(tǒng)攻擊面:一是所形成的系統(tǒng)鏡像復(fù)雜度低,資源占用少,因而啟動(dòng)和關(guān)閉速度非???Manco等人[10]發(fā)表的“My VM is Lighter (and Safer) than Your Container”中描述了對(duì)Unikernel展開的研究,一個(gè)簡(jiǎn)單的Unikernel虛擬機(jī)能夠在2.3 ms完成啟動(dòng),單個(gè)物理主機(jī)可以支持8 000個(gè)虛擬機(jī),掛起和恢復(fù)時(shí)間僅為60 ms,30/25 ms,每個(gè)虛擬機(jī)運(yùn)行期間內(nèi)容占用僅為3.6 MB,這有助于根據(jù)外部密碼計(jì)算量的需求迅速啟動(dòng)計(jì)算資源.二是使用Unikernel技術(shù)最終形成的SCCU中,沒有傳統(tǒng)意義上的操作系統(tǒng),僅有密碼計(jì)算所需的驅(qū)動(dòng)CPU進(jìn)行密碼計(jì)算的組件、基本文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等等,沒有SSH、沒有多用戶管理、USB驅(qū)動(dòng)程序等可能引發(fā)系統(tǒng)漏洞的組件,因而借助Unikernel能夠很大程度上縮減SCCU的攻擊面,提升系統(tǒng)安全性.
采用Unikernel技術(shù)封裝密碼模塊,如圖2所示.
2) 使用基于CPU的密碼保護(hù)技術(shù)增強(qiáng)密鑰保護(hù).
圖2 基于Unikernel形成的密碼模塊
在圖2所示的密碼模塊中,雖然能夠形成一個(gè)密碼邊界,但依賴內(nèi)存和CPU計(jì)算其密鑰保護(hù)能力還是不夠的.對(duì)此,可借助CPU安全增強(qiáng)機(jī)制來(lái)加強(qiáng)保護(hù).
近年來(lái),CPU等硬件提供了不少安全機(jī)制可以用來(lái)進(jìn)行密碼保護(hù),包括Intel 的TSX[11]和SGX[12]、ARM的TrustZone[13]等等.其具體思路是通過(guò)CPU的特殊指令集,在內(nèi)核中形成一個(gè)封閉的空間進(jìn)行密碼運(yùn)算,在運(yùn)算過(guò)程中,外部的訪問(wèn)者不能對(duì)此封閉空間進(jìn)行讀取和寫入,從而保證密鑰安全和密碼算法功能正確性.
微內(nèi)核操作系統(tǒng)、基于CPU和OS內(nèi)核的密碼保護(hù)技術(shù)可以結(jié)合使用,微內(nèi)核操作系統(tǒng)最大程度上隔離外在的各種入侵和攻擊,基于CPU的密碼保護(hù)技術(shù)形成本機(jī)和操作系統(tǒng)內(nèi)部的邊界與屏障,從而形成高安全性的SCCU單元,并進(jìn)一步通過(guò)大規(guī)模SCCU的集群,形成計(jì)算能力高度可擴(kuò)展的密碼計(jì)算資源池.
密碼資源池建設(shè)完成之后,需要將其映射給虛擬化層之上的業(yè)務(wù)系統(tǒng)或使用者.當(dāng)前映射的機(jī)制主要有Pass-Through模式和SR-IOV模式.Pass-Through模式允許將宿主機(jī)中的物理 PCI 設(shè)備以獨(dú)占方式直接分配給客戶機(jī)使用.SR-IOV模式支持多個(gè)客戶機(jī)共享單個(gè)設(shè)備,支持使用更少的設(shè)備來(lái)支持更多的客戶機(jī),可以提高數(shù)據(jù)中心的空間利用率.
當(dāng)前更適合與大規(guī)模高度可水平擴(kuò)展的密碼資源池配合使用的是Virtio技術(shù).Virtio屬于半虛擬化的一種實(shí)現(xiàn),即Guest OS中需要運(yùn)行Virtio的驅(qū)動(dòng)程序,通過(guò)Virtio設(shè)備和后端(KVM/QEMU)進(jìn)行交互.
使用Virtio技術(shù)時(shí),在虛擬機(jī)中的模塊驅(qū)動(dòng)和實(shí)體系統(tǒng)的功能實(shí)現(xiàn)可以是毫無(wú)關(guān)系的.例如虛擬機(jī)中的密碼卡,其具體實(shí)現(xiàn)可以由密碼資源池提供.甚至可以將密碼資源池呈現(xiàn)為虛擬機(jī)中的加密打印機(jī)、可信計(jì)算模塊、加密磁盤等等.通過(guò)Virtio機(jī)制結(jié)合密碼技術(shù),可以將高度水平擴(kuò)展的密碼能力,映射到虛擬化空間虛擬機(jī)中的虛擬密碼模塊.用戶在云服務(wù)商處租用包含密碼模塊的虛擬機(jī),可以使用實(shí)際密碼模塊同樣接口的虛擬密碼模塊,包括管理界面、密碼API接口等.密碼功能通過(guò)Virtio機(jī)制,透過(guò)虛擬化層(VMM)傳遞給密碼資源池,由密鑰管理單元、密碼計(jì)算單元協(xié)同配合完成該密碼請(qǐng)求.
映射到虛擬層的密碼模塊需要進(jìn)行服務(wù)化封裝,如同將傳統(tǒng)密碼卡封裝成密碼機(jī)一樣,將密碼模塊封裝成虛擬密碼服務(wù)單元(virtual crypto-service unit, VCSU).為了保證VCSU的自身安全,使用上文所述的“微內(nèi)核操作系統(tǒng)”來(lái)封裝虛擬密碼服務(wù)單元,并對(duì)虛擬密碼單元進(jìn)行分組編排,借助微內(nèi)核操作系統(tǒng)強(qiáng)隔離機(jī)制和快速啟動(dòng)、快速回收的特點(diǎn),提升密碼服務(wù)層的安全性和可伸縮性.
Unikernel為每個(gè)虛擬密碼服務(wù)單元之間提供虛擬機(jī)層面的隔離,因而增強(qiáng)了密碼功能訪問(wèn)的安全性;由于2.2節(jié)中所描述虛擬密碼單元的安全特性,使虛擬密碼服務(wù)單元攻擊面大為降低;2.2節(jié)描述的密碼單元輕量級(jí)特性,使SCCU與其底層的OS包含在一個(gè)非常小的鏡像中,使系統(tǒng)的發(fā)布和管理非常容易.也使系統(tǒng)的啟動(dòng)和回收時(shí)間大大縮短,因而,完全可以隨著外部請(qǐng)求的增加即時(shí)啟動(dòng)大量的VSCU為其進(jìn)行服務(wù),隨著外部需求的減少進(jìn)行回收,這也做到了真正的隨需使用資源,能夠大大降低資源池運(yùn)營(yíng)方的成本.
至此,我們?cè)O(shè)計(jì)了支持快速水平擴(kuò)展、支持高度資源共享的密碼資源池,并將其通過(guò)虛擬化技術(shù)映射成虛擬機(jī)上的密碼模塊,供業(yè)務(wù)系統(tǒng)和用戶使用,滿足云密碼服務(wù)的需求.
本文所述的方案一是采用通用計(jì)算機(jī)實(shí)現(xiàn)了構(gòu)建大規(guī)模易擴(kuò)展的密碼計(jì)算單元集群,降低了密碼資源池建設(shè)的成本,提升了密碼計(jì)算水平擴(kuò)展能力;二是通過(guò)微內(nèi)核操作系統(tǒng)實(shí)現(xiàn)了密碼單元按需部署按需啟動(dòng);三是使用虛擬化技術(shù)實(shí)現(xiàn)了密碼資源池到大量虛擬密碼模塊的映射,極大地方便了上層業(yè)務(wù)系統(tǒng)、密碼行業(yè)上游生態(tài)廠商的集成.