《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于和欣Domain的可配置安全語(yǔ)義沙箱模型

基于和欣Domain的可配置安全語(yǔ)義沙箱模型

2008-04-10
作者:余明岡1,陳 榕1,張藝瀕2

  摘 要: 為了在互聯(lián)網(wǎng)平臺(tái)上提供可信計(jì)算" title="可信計(jì)算">可信計(jì)算環(huán)境,首先引入了和欣Elastos Domain模型和CAR AOP技術(shù),并在比較了以往傳統(tǒng)平臺(tái)上的一些沙箱模型之后,結(jié)合CAR AOP動(dòng)態(tài)多面聚合技術(shù),在和欣網(wǎng)絡(luò)操作系統(tǒng)上設(shè)計(jì)并提出了可配置" title="可配置">可配置安全語(yǔ)義模塊級(jí)沙箱模型,使用戶(hù)可以靈活控制代碼的運(yùn)行,同時(shí)使可疑代碼的隔離環(huán)境透明化。
  關(guān)鍵詞: 面向方面編程 和欣Domain 動(dòng)態(tài)聚合 沙箱隔離


  自Unix發(fā)布以來(lái),操作系統(tǒng)一直延用著面向單機(jī)的設(shè)計(jì)模型。隨著網(wǎng)絡(luò)時(shí)代的來(lái)臨,信息技術(shù)正面臨“以機(jī)器為中心”向“以網(wǎng)絡(luò)為中心” 的轉(zhuǎn)變,SOA協(xié)議框架[1]也就應(yīng)運(yùn)而生并得到廣泛應(yīng)用。而實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)和移動(dòng)計(jì)算的關(guān)鍵技術(shù)是面向構(gòu)件、中間件的編程技術(shù),以及一整套的運(yùn)行環(huán)境、開(kāi)發(fā)環(huán)境等平臺(tái)技術(shù)。
  此外,移動(dòng)代碼[2]已成為構(gòu)成Internet運(yùn)行環(huán)境的常用構(gòu)件,這使Internet受到越來(lái)越大的威脅。這些惡意移動(dòng)代碼的攻擊特征歸納起來(lái)主要有五種:讀文件;寫(xiě)文件;主動(dòng)執(zhí)行程序;訪(fǎng)問(wèn)禁用端口;讀寫(xiě)系統(tǒng)設(shè)備?,F(xiàn)在針對(duì)一些惡意移動(dòng)代碼的保護(hù)措施(如防火墻和實(shí)時(shí)病毒監(jiān)控技術(shù))從一定程度上緩解了移動(dòng)代碼的威脅,可一旦出現(xiàn)一種能繞過(guò)這些技術(shù)的識(shí)別和監(jiān)控的新特征的病毒、木馬或者蠕蟲(chóng),偽裝成授權(quán)用戶(hù)對(duì)數(shù)據(jù)進(jìn)行感染和破壞,傳統(tǒng)操作系統(tǒng)仍將束手無(wú)策。
  所以無(wú)論從應(yīng)用需求還是安全運(yùn)行的角度,傳統(tǒng)操作系統(tǒng)模型已經(jīng)難以應(yīng)付目前新運(yùn)行環(huán)境的諸多問(wèn)題。為了在SOA框架下實(shí)現(xiàn)以服務(wù)的安全性、可用性和服務(wù)質(zhì)量保證(QoS)為核心的高可信計(jì)算,本文根據(jù)和欣Domain模型[3]和惡意代碼的一般特征,在和欣新一代網(wǎng)絡(luò)操作系統(tǒng)上引入了面向方面的沙箱模型,提出了動(dòng)態(tài)可配置的安全語(yǔ)義控制方法,隔離運(yùn)行移動(dòng)構(gòu)件。
1 和欣網(wǎng)絡(luò)操作系統(tǒng)
  和欣網(wǎng)絡(luò)操作系統(tǒng)Elastos所提供的功能模塊全部基于CAR(Component Assembly Run-Time)構(gòu)件技術(shù)[3],即可拆卸的構(gòu)件。應(yīng)用系統(tǒng)可以按照需要來(lái)剪裁組裝,或在運(yùn)行時(shí)動(dòng)態(tài)加載" title="加載">加載必要的構(gòu)件。和欣網(wǎng)絡(luò)操作系統(tǒng)主要由靈活內(nèi)核[3]、構(gòu)件支持模塊和系統(tǒng)服務(wù)器組成。
  靈活內(nèi)核主要分為4大部分:硬件抽象層、內(nèi)存管理、任務(wù)管理(支持多Domain,多線(xiàn)程)、Domain間通信[3]IDC(Interdomain Communication)等基本功能。構(gòu)件支持模塊通過(guò)內(nèi)核中的IDC部分的協(xié)助對(duì)CAR構(gòu)件提供支持,實(shí)現(xiàn)構(gòu)件運(yùn)行環(huán)境。系統(tǒng)服務(wù)器在體系結(jié)構(gòu)中以動(dòng)態(tài)鏈接庫(kù)的形式存在,主要提供文件系統(tǒng)" title="文件系統(tǒng)">文件系統(tǒng)、設(shè)備驅(qū)動(dòng)等系統(tǒng)服務(wù)。
  靈活內(nèi)核并非傳統(tǒng)意義上的微內(nèi)核或宏內(nèi)核,用戶(hù)可以根據(jù)運(yùn)行時(shí)的需求,自主選擇將操作系統(tǒng)的某些系統(tǒng)服務(wù)構(gòu)件(文件系統(tǒng)、圖形系統(tǒng)等)運(yùn)行于內(nèi)核地址空間或用戶(hù)地址空間。用戶(hù)可以根據(jù)系統(tǒng)的自身需求決定和欣內(nèi)核的版本。
1.1 Domain模型和原理
  Domain模型是沙箱隔離技術(shù)的基礎(chǔ),其概念被和欣Elastos引入操作系統(tǒng)以替代Unix提出的進(jìn)程概念,雖然二者有某些程度上的相似性。最主要的兩個(gè)特點(diǎn)是:
  (1)所有的應(yīng)用不再以可執(zhí)行程序出現(xiàn),而是通過(guò)CAR構(gòu)件程序集(如動(dòng)態(tài)鏈接庫(kù))的形式在Domain提供的環(huán)境中由Domain的客戶(hù)宿主(Client Host)或者服務(wù)宿主(Server Host)運(yùn)行。
  (2)無(wú)論目標(biāo)域Server Domain在本地還是在遠(yuǎn)端,跨域調(diào)用完全對(duì)應(yīng)用透明,由宿主決定是用本地IDC傳輸還是用TCP/IP協(xié)議封裝的遠(yuǎn)程IDC傳輸。
  Domain默認(rèn)維護(hù)著一個(gè)獨(dú)立的地址空間和線(xiàn)程池。Client Host會(huì)主動(dòng)從線(xiàn)程池中分配線(xiàn)程從程序集的入口地址開(kāi)始執(zhí)行,而Server Host則不會(huì)主動(dòng)執(zhí)行,僅對(duì)Client Host發(fā)送的請(qǐng)求進(jìn)行響應(yīng),分配池內(nèi)的線(xiàn)程以提供服務(wù)。一旦線(xiàn)程池中的空余線(xiàn)程分完,Domain宿主會(huì)自動(dòng)創(chuàng)建新線(xiàn)程。
  在實(shí)際應(yīng)用中,構(gòu)件程序集往往既作為Server為其他Client提供服務(wù),又依賴(lài)其他Server提供的服務(wù)。這種角色的區(qū)別沒(méi)有技術(shù)的其他變化,它們?nèi)匀贿\(yùn)行在Server Domain中。
1.2 CAR AOP基本思想
  CAR AOP機(jī)制[4]使用戶(hù)能夠在完全不用修改源代碼的情況下簡(jiǎn)單而方便地動(dòng)態(tài)聚合兩個(gè)CAR構(gòu)件類(lèi),從而生成一個(gè)具有兩個(gè)CAR構(gòu)件類(lèi)的所有接口實(shí)現(xiàn)的新構(gòu)件類(lèi)。CAR AOP技術(shù)由Aspect對(duì)象、動(dòng)態(tài)聚合和對(duì)象環(huán)境等技術(shù)組成。Aspect對(duì)象是實(shí)現(xiàn)動(dòng)態(tài)聚合的必要條件,動(dòng)態(tài)聚合[5](或織入weave)和拆卸是本文沙箱模型實(shí)現(xiàn)安全語(yǔ)義動(dòng)態(tài)可配置的關(guān)鍵技術(shù)。
  Aspect對(duì)象屬于必須實(shí)現(xiàn)特殊基接口IAspect的特殊構(gòu)件類(lèi),其特征是只有Aspect對(duì)象才可被其他構(gòu)件對(duì)象聚合, 同時(shí)它也可以聚合其他Aspect對(duì)象。Aspect構(gòu)件類(lèi)對(duì)一般CAR構(gòu)件對(duì)象基接口IObject的實(shí)現(xiàn)僅做簡(jiǎn)單的轉(zhuǎn)接。如果Aspect對(duì)象被其他構(gòu)件對(duì)象聚合,對(duì)IObject的方法調(diào)用則會(huì)被委托給外部對(duì)象。外部對(duì)象保存Aspect對(duì)象的IAspect的接口指針,用于A(yíng)spect對(duì)象真正的接口查詢(xún),類(lèi)似于MS COM的非委托接口聚合模型。
  動(dòng)態(tài)聚合是通過(guò)接口基類(lèi)IObject的Aggregate方法,幫助外部對(duì)象得到指向Aspect對(duì)象的指針,幫助被聚合的Aspect對(duì)象得到指向外部對(duì)象的指針,從而使CAR構(gòu)件對(duì)象具有聚合其他Aspect對(duì)象的能力。CAR構(gòu)件的聚合和拆卸簡(jiǎn)單而靈活,可隨時(shí)聚合隨時(shí)拆卸。在2.3節(jié)將詳細(xì)介紹用動(dòng)態(tài)聚合技術(shù)實(shí)現(xiàn)安全語(yǔ)義可配置。關(guān)于對(duì)象環(huán)境,詳見(jiàn)參考文獻(xiàn)[5]
2 基于Domain的AOP沙箱模型
2.1 沙箱分類(lèi)及相關(guān)概念

  沙箱模型根據(jù)監(jiān)控粒度可以分為程序級(jí)沙箱和模塊級(jí)沙箱。
  程序級(jí)沙箱監(jiān)控整個(gè)程序的系統(tǒng)調(diào)用,以對(duì)系統(tǒng)實(shí)施保護(hù),這就要求對(duì)各種不同的傳統(tǒng)操作系統(tǒng)平臺(tái)進(jìn)行擴(kuò)展。Jain K.和Sekar R.[6]提出了一種在Unix操作系統(tǒng)上系統(tǒng)調(diào)用、隔離的通用框架。他們的框架針對(duì)不同系統(tǒng)模塊要進(jìn)行替換,這對(duì)于Windows、Unix和Solaris等固定內(nèi)核的操作系統(tǒng)及其不同版本來(lái)說(shuō),修改費(fèi)用會(huì)非常高。和欣操作系統(tǒng)的靈活內(nèi)核則可以利用構(gòu)件固定的接口自描述信息自動(dòng)加載替換更新之后的系統(tǒng)構(gòu)件庫(kù)。盡管和欣具有這種靈活性,但這種對(duì)程序模塊不加區(qū)分的監(jiān)控方法會(huì)降低系統(tǒng)服務(wù)對(duì)可信代碼的運(yùn)行性能。
  模塊級(jí)沙箱的主要優(yōu)點(diǎn)是可以針對(duì)代碼的可信度有區(qū)別地動(dòng)態(tài)綁定監(jiān)控策略。所以下面主要討論模塊級(jí)沙箱,根據(jù)主程序和加載代碼的域空間的異同它又可以分為同域沙箱和異域沙箱。
  同域沙箱模型的提出主要是出于性能優(yōu)化的考慮,因?yàn)橥坏刂房臻g的接口調(diào)用要明顯快于跨域調(diào)用。為了隔離運(yùn)行,該模型仍然需要在同域地址空間將主程序和被加載代碼的空間隔離。Robert W.和Steven L.等提出利用分段機(jī)制將不安全代碼加載到同一線(xiàn)性地址空間的獨(dú)立段中,通過(guò)自定義編譯器聲明規(guī)定的五個(gè)對(duì)外禁用的寄存器來(lái)檢查可疑代碼的段標(biāo)識(shí)符的段匹配,采用這種技術(shù)[7](Segment Matching)可以限制跨段非法讀寫(xiě),只允許不安全代碼通過(guò)安全RPC對(duì)外通信。
  這種技術(shù)最明顯的特征就是平臺(tái)相關(guān),對(duì)于一些不提供分段機(jī)制的平臺(tái)(例如ARM體系結(jié)構(gòu)以及寄存器數(shù)目有限的平臺(tái)),實(shí)現(xiàn)起來(lái)就非常困難,因此不適于異構(gòu)的網(wǎng)絡(luò)系統(tǒng)平臺(tái)。而且安全策略比較簡(jiǎn)單、固定、不能實(shí)現(xiàn)靈活的保護(hù)。
2.2 建立模塊級(jí)異域沙箱模型
  本文提出的模塊級(jí)異域沙箱模型的基本原理是:將移動(dòng)構(gòu)件與授權(quán)客戶(hù)程序的運(yùn)行空間Domain隔離,加載構(gòu)件前檢查代碼的危險(xiǎn)操作,加載時(shí)根據(jù)構(gòu)件的數(shù)字簽名制定安全策略,生成獨(dú)立的AOP沙箱宿主來(lái)動(dòng)態(tài)監(jiān)控和限制可信或可疑移動(dòng)構(gòu)件的運(yùn)行。
  模塊級(jí)異域沙箱模型主要由4部分組成:模塊加載器(Module Loader)、代碼檢查器(Code Verifier)、信任管理器" title="管理器">管理器(Trust Control Manager)和沙箱宿主(Sandbox Host)。它們分別在加載時(shí)和運(yùn)行時(shí)檢查和監(jiān)控移動(dòng)構(gòu)件對(duì)文件系統(tǒng)和網(wǎng)絡(luò)端口等系統(tǒng)資源的訪(fǎng)問(wèn)。
  (1)模塊加載器:是整個(gè)沙箱模型的驅(qū)動(dòng)引擎。當(dāng)客戶(hù)程序或者系統(tǒng)需要請(qǐng)求加載某個(gè)移動(dòng)構(gòu)件時(shí),可根據(jù)請(qǐng)求元數(shù)據(jù)中的URL定位構(gòu)件的網(wǎng)絡(luò)位置,由緩沖管理器下載到磁盤(pán)或者Flash,并調(diào)用信任管理器檢查該構(gòu)件的數(shù)字簽名的可信度來(lái)制定安全策略(如果高度可信,將直接加載運(yùn)行),然后在加載時(shí)通過(guò)代碼檢查器掃描代碼的危險(xiǎn)操作。如果代碼通過(guò)檢查,加載器根據(jù)安全策略利用AOP技術(shù),將信任管理器中監(jiān)控方面類(lèi)或組合動(dòng)態(tài)聚合或多面聚合到Domain宿主生成沙箱宿主,完成加載任務(wù)。
  (2)代碼檢查器:根據(jù)不同的安全語(yǔ)義,檢查構(gòu)件代碼是否通過(guò)立即尋址模式或PC相關(guān)(Pc-Related)控制轉(zhuǎn)換指令非法讀寫(xiě)禁用地址空間,是否對(duì)數(shù)組越界訪(fǎng)問(wèn)。由于沙箱宿主會(huì)根據(jù)元數(shù)據(jù)在運(yùn)行時(shí)校驗(yàn)參數(shù)和結(jié)果類(lèi)型,所以代碼檢查器不必做這方面的檢查。
  (3)信任管理器:首先檢查被加載代碼加密的數(shù)字簽名判斷是由哪個(gè)機(jī)構(gòu)或個(gè)人開(kāi)發(fā)或簽發(fā)的,然后在用戶(hù)預(yù)設(shè)或者系統(tǒng)默認(rèn)的信用列表中找出信任級(jí)別和對(duì)應(yīng)的安全策略,供加載器和檢查器參考。安全策略代表代碼檢查的預(yù)設(shè)級(jí)別和預(yù)先定制的各種監(jiān)控方面(Monitoring Aspect)及其各種組合。信用管理器維護(hù)一個(gè)監(jiān)控方面庫(kù),用戶(hù)可以擴(kuò)展或者更新這個(gè)方面庫(kù)。圖1中將其放在內(nèi)核以外是為了減少對(duì)內(nèi)核的改動(dòng),同時(shí)減少許可的內(nèi)核調(diào)用以盡量降低系統(tǒng)風(fēng)險(xiǎn)。如果需要考慮性能優(yōu)先,則在系統(tǒng)布署期可以將其部分或全部定制到內(nèi)核空間。


  (4)沙箱宿主:由于危險(xiǎn)操作仍然可能躲過(guò)靜態(tài)代碼的檢查,所以沙箱宿主的動(dòng)態(tài)監(jiān)控成為用戶(hù)態(tài)沙箱隔離的最后一道關(guān)鍵屏障。沙箱宿主為可疑代碼虛擬外部運(yùn)行環(huán)境,在本域生成所有被請(qǐng)求外部對(duì)象(包括系統(tǒng)對(duì)象,程序?qū)ο螅┑膭?dòng)態(tài)代理,針對(duì)利用列集/散集包裝的所有跨域調(diào)用特別是系統(tǒng)調(diào)用(如讀取或修改文件、加載其他惡意代碼)以及寄存器跳轉(zhuǎn)執(zhí)行流進(jìn)行動(dòng)態(tài)監(jiān)控和限制,并根據(jù)接口自描述元數(shù)據(jù)檢查外傳參數(shù)或結(jié)果的類(lèi)型和大小以防止目標(biāo)堆或目標(biāo)棧的溢出。圖1中的所有點(diǎn)劃線(xiàn)箭頭即為代碼的受控調(diào)用,代表沙箱宿主可以根據(jù)安全策略有選擇性地對(duì)這些調(diào)用直接返回異常。由模塊加載器動(dòng)態(tài)生成的Domain宿主原型,根據(jù)加載請(qǐng)求的不同,既可以是Client Host也可以是Server Host。
2.3 動(dòng)態(tài)聚合實(shí)現(xiàn)沙箱宿主可配置
  首先,沙箱宿主通過(guò)EzAggregate方法聚合某個(gè)監(jiān)控策略,即Aspect構(gòu)件,獲得并保存Aspect構(gòu)件的IAspect接口指針,用于A(yíng)spect對(duì)象的真正接口查詢(xún)。其中,受控接口、Aspect監(jiān)控類(lèi)和沙箱宿主的CAR文件聲明如圖2。


  然后,通過(guò)和欣CAR編譯器生成CPP文件和頭文件,再將Aspect構(gòu)件的方法實(shí)現(xiàn)添加到CPP文件的代碼框架中。
  接著,Aspect構(gòu)件的IObject接口成員指針指向沙箱宿主。因此,對(duì)宿主未監(jiān)控的接口調(diào)用在QueryInterface方法中被轉(zhuǎn)接到Aspect構(gòu)件的相應(yīng)接口,經(jīng)過(guò)有選擇性地檢查后,再調(diào)回至原宿主接口。該過(guò)程對(duì)受控程序集透明,如圖3所示。另外Aspect構(gòu)件沒(méi)有IID,所以也對(duì)上層程序集透明。
  沙箱宿主對(duì)象往往需要?jiǎng)討B(tài)聚合多個(gè)監(jiān)控策略,這種技術(shù)稱(chēng)為多面聚合[4](Multi-Aspect Aggregating)。實(shí)現(xiàn)中,宿主對(duì)象只要?jiǎng)?chuàng)建多個(gè)不同策略的Aspect對(duì)象并多次調(diào)用EzAggregate方法使宿主對(duì)象以?huà)旖拥骄酆湘湵淼姆绞骄酆隙鄠€(gè)Aspect對(duì)象,并重新計(jì)算聚合后的引用計(jì)數(shù)。動(dòng)態(tài)拆卸監(jiān)控策略則是聚合轉(zhuǎn)接的還原逆過(guò)程,匹配的Aspect對(duì)象,從聚合鏈表上斷開(kāi)自己并維持剩余聚合鏈,還原聚合時(shí),Aspect對(duì)象完全轉(zhuǎn)嫁給外部沙箱宿主的引用計(jì)數(shù)。


  綜上所述,本文創(chuàng)造性地提出了一種基于和欣Domain模型和動(dòng)態(tài)代理機(jī)制的沙箱模型,并利用CAR AOP的動(dòng)態(tài)聚合技術(shù)實(shí)現(xiàn)沙箱模型的安全語(yǔ)義動(dòng)態(tài)靈活配置。針對(duì)通常的移動(dòng)代碼都是以ActiveX控件等的形式出現(xiàn),特別是應(yīng)用程序逐漸由可執(zhí)行模塊形式轉(zhuǎn)變?yōu)闃?gòu)件程序集形式,這種可動(dòng)態(tài)配置的沙箱模型所提供的虛擬運(yùn)行環(huán)境比傳統(tǒng)的可執(zhí)行程序運(yùn)行環(huán)境能夠更透明、更靈活地監(jiān)控來(lái)自網(wǎng)絡(luò)的可疑程序集安全運(yùn)行,在和欣構(gòu)件化網(wǎng)絡(luò)操作系統(tǒng)上提供了一種新的可信計(jì)算方案。
參考文獻(xiàn)
1 THOMAS ERL.Service-oriented architecture(SOA):concepts,technology and eesign.Upper Saddle River:Prentice Hall PTR,August 2005:167~378
2 Roger Grimes.Malicious mobile code:virus protection for Windows.Sebastopol:O′Reilly & Associates Inc.,August 2001:24~253
3 科泰世紀(jì)科技有限公司.和欣2.0 資料大全.上海:科泰世紀(jì)科技有限公司,2005:6~24
4 黃凱峰.CAR 2.0技術(shù)指南.上海:科泰世紀(jì)科技有限公司,2005:1~21
5 Robert E Filman,Tzilla Elrad,Siobhan Clarkl.Aspect-oriented software development.Massachusetts:Addison-Wesley,2004:58~171
6 R.Sekar.User-level infrastructure for system call Interposition: a platform for intrusion detection and confinement.The Network and Distributed System Security Symposium,2000;(2):4~10
7 R Wahbe,S Lucco,T E Anderson.Efficient software-based fault isolation.In:Proceedings of the 14th ACM Symposium on Operating Systems Principles,December 1993:203~206

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀(guān)點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。