文/劉宇濤 陳海波
基于硬件事務(wù)內(nèi)存的安全增強(qiáng)機(jī)制
文/劉宇濤陳海波
陳海波
上海交通大學(xué)教授,CCF杰出會(huì)員、ACM/IEEE高級(jí)會(huì)員,主要研究方向?yàn)橄到y(tǒng)軟件、系統(tǒng)結(jié)構(gòu)與系統(tǒng)安全。多次擔(dān)任SOSP、ISCA、Oakland、EuroSys、FAST、PPoPP、Usenix ATC等國(guó)際著名學(xué)術(shù)會(huì)議PC members,APSys 2014、2014年全國(guó)體系結(jié)構(gòu)學(xué)術(shù)年會(huì)等PC Co-Chairs,APSys 2011、SOSP 2017的大會(huì)共同主席,以及ACM APSys的Steering Committee Co-Chair,在SOSP、OSDI、EuroSys、Usenix ATC、FAST、PPoPP、ISCA、MICRO、HPCA、Usenix Security、CCS等發(fā)表多篇學(xué)術(shù)論文,獲得EuroSys 2015、APSys 2013與ICPP 2007的最佳論文獎(jiǎng)、HPCA 2014的最佳論文提名獎(jiǎng)與2011年全國(guó)優(yōu)秀博士學(xué)位論文獎(jiǎng),入選國(guó)家萬(wàn)人計(jì)劃“青年拔尖人才”以及2015年CCF青年科學(xué)家獎(jiǎng)。
近些年,在學(xué)術(shù)界和工業(yè)界出現(xiàn)了一些利用非安全相關(guān)的硬件特性來(lái)增強(qiáng)系統(tǒng)安全的機(jī)制。在本文中,我們主要介紹其中的兩個(gè)工作,它們都是基于硬件事務(wù)內(nèi)存特性,其中一個(gè)用于增強(qiáng)虛擬機(jī)自省技術(shù),另外一個(gè)用于防止私鑰泄露。
事務(wù)內(nèi)存(Transactional Memory),是在程序并發(fā)控制領(lǐng)域提出的一套完整的解決方案。傳統(tǒng)的基于“鎖”的程序并發(fā)控制面臨了包括低可擴(kuò)展性、死鎖、活鎖在內(nèi)的一系列問(wèn)題,而事務(wù)內(nèi)存,作為樂(lè)觀并發(fā)控制(Optimistic Concurrency Control,OCC)的一種解決方案,假設(shè)在大多情況下,并發(fā)的事務(wù)不會(huì)相互影響,只有在實(shí)際發(fā)生沖突的情況下才會(huì)發(fā)生事務(wù)的回滾。因此在事務(wù)間數(shù)據(jù)沖突較少的場(chǎng)景中,基于事務(wù)內(nèi)存的程序并發(fā)控制能夠獲得更好的性能。在過(guò)去的近二十年中,事務(wù)內(nèi)存都是通過(guò)軟件來(lái)實(shí)現(xiàn)的。2014年,Intel在其第四代Core處理器(代號(hào)Haswell)上裝配了硬件支持的事務(wù)同步擴(kuò)展(Transactional Synchronization Extensions,TSX)機(jī)制,其中一套軟件接口Restricted Transactiona lMemory(RTM),成為市面上首個(gè)為程序員提供的硬件事務(wù)內(nèi)存指令集。RTM在處理器緩存中為事務(wù)維護(hù)了內(nèi)存地址的讀寫集合,從而在多核之間的緩存一致性協(xié)議中實(shí)現(xiàn)了一套不同事務(wù)訪問(wèn)數(shù)據(jù)的沖突檢測(cè)機(jī)制。和軟件事務(wù)內(nèi)存相比,RTM提供了更好的性能,但是也由于硬件的局限性,造成了其功能上的一些缺陷。比如某些系統(tǒng)事件(如中斷,系統(tǒng)調(diào)用等)會(huì)無(wú)條件中止(abort)執(zhí)行中的事務(wù);另外,RTM維護(hù)的讀寫集合也是有限的,在我們的測(cè)試中,RTM維護(hù)了4M的讀集合和32K的寫集合,當(dāng)事務(wù)中的數(shù)據(jù)超過(guò)了讀寫結(jié)合的大小,事務(wù)同樣會(huì)被中止。
TxIntro是一個(gè)利用RTM來(lái)增強(qiáng)虛擬機(jī)自省技術(shù)的機(jī)制。虛擬機(jī)自省,即在虛擬機(jī)外部對(duì)虛擬機(jī)的狀態(tài)進(jìn)行分析,從而達(dá)到更高的隔離性和安全性。但是當(dāng)前的虛擬機(jī)自省技術(shù)存在三個(gè)問(wèn)題:第一,沒(méi)有一套機(jī)制可以及時(shí)地觸發(fā)虛擬機(jī)自??;第二,在虛擬機(jī)自省過(guò)程中需要暫停虛擬機(jī),造成性能下降;第三,即使暫停了虛擬機(jī),仍然會(huì)發(fā)生數(shù)據(jù)讀取不一致的現(xiàn)象。針對(duì)這些問(wèn)題,TxIntro將一些關(guān)鍵數(shù)據(jù)結(jié)構(gòu)(如系統(tǒng)調(diào)用表)放入RTM的讀集合中,任意對(duì)其的惡意修改都會(huì)及時(shí)觸發(fā)虛擬機(jī)自省。另外,它將自省過(guò)程置于事務(wù)之中,這樣即使不暫停虛擬機(jī),也能防止虛擬機(jī)自省過(guò)程中數(shù)據(jù)讀取的不一致,因?yàn)槿绻摂M機(jī)在該過(guò)程中對(duì)相關(guān)數(shù)據(jù)進(jìn)行了修改,RTM就會(huì)中止這個(gè)事務(wù),使其重新執(zhí)行。除此之外,為了解決RTM的局限性,TxIntro提出了兩個(gè)創(chuàng)新的優(yōu)化技術(shù),從而大幅度減小了虛擬機(jī)自省過(guò)程中事務(wù)內(nèi)存的讀寫集合。TxIntro被用于虛擬機(jī)Rootkit的檢測(cè),它使得虛擬機(jī)自省技術(shù)滿足了及時(shí)性、同步性和一致性,并最小化了對(duì)虛擬機(jī)的性能影響。
Mimosa是一個(gè)利用RTM防止秘鑰泄露的系統(tǒng)。在傳統(tǒng)的加解密過(guò)程中,秘鑰會(huì)被加載到內(nèi)存中,任何系統(tǒng)中存在的內(nèi)存泄露的漏洞,或者其它類似于冷啟動(dòng)(coldboot)的攻擊都可能竊取秘鑰。Mimosa借鑒了含羞草一旦被觸碰就會(huì)合上葉子保護(hù)自己的這一特點(diǎn),提出一套利用事務(wù)內(nèi)存特性保護(hù)秘鑰的方法。具體的做法如下:最初秘鑰被加密存儲(chǔ)在內(nèi)存中,當(dāng)需要利用它加解密數(shù)據(jù)時(shí),先創(chuàng)建一個(gè)事務(wù),在該事務(wù)中解密該秘鑰,獲得秘鑰的明文,之后的加解密操作都在這個(gè)事務(wù)中完成,并在事務(wù)結(jié)束之前清除內(nèi)存中秘鑰的明文。如果在事務(wù)執(zhí)行過(guò)程中有其它進(jìn)程(包括內(nèi)核進(jìn)程)讀取該秘鑰的明文,則會(huì)中止該事務(wù),由于該事務(wù)尚未被提交,因此其它進(jìn)程無(wú)法獲得秘鑰的明文信息,從而防止了秘鑰的泄露。為了克服RTM的限制,Mimosa系統(tǒng)做了大量的性能調(diào)節(jié)的工作,使得整套機(jī)制能夠順利完成??偟膩?lái)說(shuō),Mimosa的原理就是利用事務(wù)內(nèi)存的特性,在秘鑰被無(wú)關(guān)進(jìn)程訪問(wèn)時(shí)清除它,從而防止其泄露。
計(jì)算機(jī)在發(fā)展過(guò)程中會(huì)引入越來(lái)越多的硬件特性,其中的很多并非安全相關(guān),比如RTM,其初衷在于提高程序并發(fā)控制的性能。但是如果能有效地利用這些硬件的特性,就能夠在現(xiàn)有的硬件資源中進(jìn)一步提高系統(tǒng)的安全等級(jí)。