專利名稱:用于安全系統(tǒng)的框架的制作方法
技術(shù)領(lǐng)域:
本發(fā)明描述的技術(shù)一般涉及操作系統(tǒng),尤其涉及用于安全系統(tǒng)的框架。
背景技術(shù):
應(yīng)用程序或操作系統(tǒng)的用戶有時會無意地安裝具有破壞性或惡意的軟件資源。軟件資源包括,舉例來說,應(yīng)用程序、用戶接口、設(shè)備驅(qū)動程序、網(wǎng)絡(luò)協(xié)議堆棧和其它電子信息。例如,用戶可以安裝一應(yīng)用程序,該應(yīng)用程序可以提供理想的功能,但是可能會被病毒感染以產(chǎn)生不理想的結(jié)果。進(jìn)一步舉例來說,該被安裝的應(yīng)用程序可能是特洛伊木馬程序。特洛伊木馬程序是一提供有用功能性和以其它方式顯示出無害的程序,但是它被設(shè)計成惡意的或提供給用戶不想要的結(jié)果。實際上,任何軟件資源由于程序錯誤、和其它軟件資源的沖突、或各種其它原因,都可能無意地以用戶不想要的方式運轉(zhuǎn)。
當(dāng)一軟件資源運轉(zhuǎn)失?;驁?zhí)行惡意行為時,對于用戶、其它軟件資源和管理協(xié)調(diào)多個軟件資源的操作系統(tǒng)而言可以導(dǎo)致各種問題。如此看來,提供用于安全系統(tǒng)減少類似的問題的框架將是非常理想的。
發(fā)明概述以下描述用于安全系統(tǒng)的框架??蚣芸杀挥糜诟櫮膫€安全引擎可用來實施安全策略。安全引擎是一軟件資源,它實施設(shè)計成幫助確保應(yīng)用或操作系統(tǒng)的漏洞不被利用的安全策略??蚣芸捎脕砭S護(hù)一計算設(shè)備狀態(tài)的整體視圖,該整體視圖和安全系統(tǒng)一起配置實施??蚣芸梢酝ㄟ^提供應(yīng)用程序接口在安全系統(tǒng)組件間統(tǒng)一實施安全策略。安全系統(tǒng)可代理安全實施事件和安全策略。通過提供這些服務(wù),框架為軟件組件和安全系統(tǒng)之間的相互作用帶來統(tǒng)一的模型。
圖1是一方框圖,示出了合適于所描述系統(tǒng)的實施例的一計算系統(tǒng)組件。
圖2是一方框圖,示出了在某些實施例中安全系統(tǒng)的組件。
圖3是一流程圖,示出了在某些實施例中安全系統(tǒng)的啟動程序。
圖4是一流程圖,示出了在某些實施例中安全系統(tǒng)的加載_安全_引擎例行程序。
圖5是一流程圖,示出了在某些實施例中安全系統(tǒng)的準(zhǔn)備_安全_策略例行程序。
圖6是一流程圖,示出了在某些實施例中安全系統(tǒng)的更新_安全_策略例行程序。
發(fā)明內(nèi)容
描述了用于安全系統(tǒng)的框架(“該框架”)。該框架可以以多種方式在有關(guān)安全系統(tǒng)的組件中使用,該組件包括安全引擎和主機(jī)服務(wù)組件。例如,可以使用框架以跟蹤哪個安全引擎可用來實施安全策略。進(jìn)一步舉例而言,框架可用來維護(hù)一計算設(shè)備狀態(tài)的整體視圖,該整體視圖和安全系統(tǒng)一起配置實施。安全引擎是一軟件資源,它實施設(shè)計成幫助確保應(yīng)用或操作系統(tǒng)的漏洞不被利用的安全策略。主機(jī)服務(wù)組件可以和安全引擎一起配置或協(xié)作,并且為實施安全策略的安全系統(tǒng)以執(zhí)行和安全引擎及計算設(shè)備相關(guān)的其它服務(wù)。
在某些實施例中,通過提供應(yīng)用程序接口(“API”),框架統(tǒng)一地在安全系統(tǒng)組件之間實施安全策略。API包括多個諸如方法、事件和性質(zhì)的特點,該特點被用來注冊和注銷安全引擎,并被用來提供其它和安全系統(tǒng)相關(guān)的功能。通過使用框架的API的特性,安全系統(tǒng)可以,舉例來說,被通知關(guān)于安全引擎的增加、安全引擎的移除、和對于安全引擎的更改。然后,當(dāng)安全系統(tǒng)啟動、當(dāng)增加、移除或修改安全策略、或在其它情況下,安全系統(tǒng)的主機(jī)服務(wù)組件確定哪個安全引擎可用或應(yīng)該被通知。通過確定哪個安全引擎是可用的,主機(jī)服務(wù)組件確定哪個安全引擎啟動、各種安全策略應(yīng)該和哪個安全引擎通信、和哪個安全引擎應(yīng)該被重新配置,舉例來說,基于安全策略的更改。如此,安全系統(tǒng)統(tǒng)一地實施在安全系統(tǒng)組件之間的安全策略。
在某些實施例中,框架使安全系統(tǒng)呈現(xiàn)出計算設(shè)備的整體視圖,在該計算設(shè)備上運行安全系統(tǒng)。例如,當(dāng)病毒檢測系統(tǒng)呈現(xiàn)出有關(guān)病毒的信息并且防火墻系統(tǒng)呈現(xiàn)出有關(guān)防火墻的信息時,安全系統(tǒng)可以呈現(xiàn)出有關(guān)病毒、防火墻和其它對于正在計算設(shè)備上運行的安全引擎的特性的信息。
在某些實施例中,通過代理安全實施事件和安全策略,安全系統(tǒng)呈現(xiàn)出該整體視圖。代理包括收集和匯編在信息源上的信息,并且使來自信息源的信息可用。通過安全系統(tǒng)的主機(jī)服務(wù)組件來完成代理。通過代理安全實施事件,主機(jī)服務(wù)組件可以能夠提供給一應(yīng)用匯編好的信息,上述應(yīng)用依次把匯編好的信息提供給用戶。通過代理安全策略,主機(jī)服務(wù)組件可以能夠提供安全策略的適當(dāng)?shù)淖蛹o相關(guān)的安全引擎。
被設(shè)計成通過安全應(yīng)用來防止這些問題的技術(shù)和操作系統(tǒng)在申請共同待批專利提交的序號為10/836,810、題為“安全應(yīng)用和操作系統(tǒng)”的申請中有所描述,該專利申請整體應(yīng)用在此作為參考。以下的討論提供了在此共同待批的專利申請中所描述的技術(shù)的概括。
在某些有關(guān)該共同待批專利申請所公開的技術(shù)的實施例中,安全引擎實施幫助確保操作系統(tǒng)的漏洞不被利用的安全策略。安全策略包括安全實施事件的指示和安全實施操作。安全實施事件是對于所定義的安全策略的事件。例如,安全實施事件可以發(fā)送和接收在網(wǎng)絡(luò)端口上的某一類型的消息、修改可執(zhí)行文件的請求和格式化硬盤的請求。安全實施操作是在安全策略中有關(guān)安全實施事件的指定的操作。例如,安全實施操作可以包括例如允許事件、拒絕事件、通知用戶、或從用戶請求輸入。
安全引擎可以通過執(zhí)行各種安全實施操作以回應(yīng)安全實施事件。由安全引擎執(zhí)行的實施操作的例子包括,但不局限于,防止電子病毒、網(wǎng)絡(luò)訪問的授權(quán)、檢測來自非授權(quán)用戶或軟件資源入侵、舊版軟件的檢測、軟件資源的自動“死鎖”(例如,響應(yīng)來自管理員的信號)、和來自用戶和軟件資源的不理想行為的一般阻塞。
安全引擎可以接收來自主機(jī)服務(wù)組件的安全策略。主機(jī)服務(wù)組件執(zhí)行包括安全引擎之間的協(xié)調(diào)和安全策略信息之間的通信的各種任務(wù)。主機(jī)服務(wù)組件也可以加載、卸除、和配置安全引擎。
主機(jī)服務(wù)組件需要了解可用于或不可用于接收安全策略信息或可以以其它方式配置的安全引擎。安全引擎可以在安全系統(tǒng)配置后添加到安全系統(tǒng)中。安全引擎也可以在諸如安全策略被添加、移除或修改后被移除或重新配置。
現(xiàn)在參考圖,圖1示出了一合適的計算系統(tǒng)環(huán)境100的示例,在該環(huán)境中可實現(xiàn)框架。計算系統(tǒng)環(huán)境100只是一合適的計算環(huán)境的一例,而不是要提出對框架使用或功能的范圍進(jìn)行限制。計算系統(tǒng)環(huán)境100也不應(yīng)解釋成對于在示例計算系統(tǒng)環(huán)境100中所示出的任一組件或其組合有任何依賴或需求。
框架用多個其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置是可運行的??梢赃m用于該框架使用的公知的計算系統(tǒng)、環(huán)境、和/或配置的實例包括,但不局限于,個人電腦、服務(wù)器電腦、手持設(shè)備或膝上型電腦、移動計算機(jī)、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費者電器、網(wǎng)絡(luò)PC、小型機(jī)、大型計算機(jī)、包括任何諸如以上系統(tǒng)或設(shè)備的分布計算環(huán)境等。
框架可以在諸如由計算機(jī)執(zhí)行的程序模塊的可實現(xiàn)計算機(jī)指令的一般上下文中被描述。一般地,程序模塊包括完成特殊任務(wù)或執(zhí)行特殊抽象數(shù)據(jù)類型的例行程序、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等??蚣芤部梢栽诜植嫉挠嬎悱h(huán)境中實踐,在此通過連接到一計算網(wǎng)絡(luò)的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布的計算環(huán)境中,程序模塊可以定位于包括記憶體儲存器設(shè)備的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)。
參見圖1,對于實現(xiàn)框架的示例的系統(tǒng)包括一以計算機(jī)110形式出現(xiàn)的通用計算設(shè)備。計算機(jī)110的組件包括,但不局限于,處理單元120、系統(tǒng)存儲器130、以及將包括系統(tǒng)存儲器130在內(nèi)的各種系統(tǒng)元件耦合至處理單元120的系統(tǒng)總線121。上述系統(tǒng)總線121可以是多種總線體系結(jié)構(gòu)類型中的任何一種,包括存儲總線或存儲控制器、外圍總線和使用各種總線體系結(jié)構(gòu)的任一種的局部總線。舉例來說,而非限制,此類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(EISA)總線、視頻電子標(biāo)準(zhǔn)技術(shù)協(xié)會(VESA)局部總線、和也被稱為Mezzanine總線的外圍部件互連(PCI)總線。
計算機(jī)110通常包括各種計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)可以是任何計算機(jī)110能夠訪問的可用介質(zhì),包括易失性的和非易失性的介質(zhì)、可移動的和不可移動的介質(zhì)。舉例來說,而非限制,計算機(jī)可讀介質(zhì)可以包含計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括能以任何方法或技術(shù)實現(xiàn)的易失性的和非易失性的、可移動的和不可移動的介質(zhì),用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息。計算機(jī)存儲介質(zhì)包括,但不局限于,RAM、ROM、EEPROM、閃存或其它存儲技術(shù),CD-ROM、數(shù)字化多功能光盤(DVD)或其它光盤存儲、盒式磁帶、磁帶、磁盤存儲器或其它磁存儲設(shè)備,或任何其它可以被用來存儲想要的信息并且可以被計算機(jī)110訪問的介質(zhì)。通信介質(zhì)通常體現(xiàn)了諸如載波或其它傳送機(jī)制的已調(diào)數(shù)據(jù)信號中的計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),也包括任何信息傳遞介質(zhì)。注意術(shù)語“已調(diào)制數(shù)據(jù)信號”是指在該信號中以編碼信息的方式來設(shè)置或改變其一個或多個特征的信號。舉例來說,而非限制,通信介質(zhì)包括諸如有線網(wǎng)或直線連接的有線介質(zhì),和諸如聲音、射頻、紅外線和其它無線介質(zhì)的無線介質(zhì)。任何以上所述的組合也可以包括在計算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器130包括以諸如只讀存儲器(ROM)131和隨機(jī)存取存儲器(RAM)132的易失性和/或非易失性存儲器的形式的計算機(jī)存儲介質(zhì)。包含如在啟動期間幫助在計算機(jī)110內(nèi)各元素之間傳送信息的基本例行程序的基本輸入輸出系統(tǒng)(BIOS)133,通常存儲在ROM 131中。RAM 132通常包含可以被處理單元120立即訪問和/或當(dāng)前操作的數(shù)據(jù)和/或程序模塊。舉例來說,而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機(jī)110還可以包括其它可移動/不可移動、易失性/非易失性的計算機(jī)存儲介質(zhì)。僅作為示例,圖1示出了從不可移動、非易失性磁性介質(zhì)讀出或?qū)懭氩豢梢苿?、非易失性磁性介質(zhì)的硬盤驅(qū)動器141、從可移動、非易失性磁性磁盤152讀出或?qū)懭肟梢苿印⒎且资源判源疟P152的磁盤驅(qū)動器151、以及從諸如CD ROM或其它光學(xué)介質(zhì)的可移動、非易失性光盤156讀出或?qū)懭肟梢苿?、非易失性光盤156的光盤驅(qū)動器155。其它可以使用在示例的操作環(huán)境中的可移動/不可移動、易失性/非易失性計算機(jī)存儲介質(zhì)包括,但不局限于,盒式磁帶、閃存卡、數(shù)字多功能光盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM、等。硬盤驅(qū)動141通常通過諸如接口140的不可移動存儲接口連接到系統(tǒng)總線121,磁盤驅(qū)動151和光盤驅(qū)動155通常通過諸如接口150的可移動存儲接口連接到系統(tǒng)總線121。
以上討論并且在圖1中示出的驅(qū)動器及其它們相關(guān)的計算存儲介質(zhì)為計算機(jī)110提供了計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。在圖1,例如,示出硬盤驅(qū)動141存儲操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146、和程序數(shù)據(jù)147。需要注意的是這些組件可以和操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同,也可以和它們不同。在此對操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147給出了不同的標(biāo)號來說明至少它們是不同的拷貝。用戶可以通過諸如寫字板、或電子數(shù)字轉(zhuǎn)換器164、麥克風(fēng)163、鍵盤162和定位設(shè)備161把指令和信息輸入到計算機(jī)110中,定位設(shè)備161通常指如鼠標(biāo)、跟蹤球或觸摸板。其它輸入設(shè)備(圖1中未示)可以包括操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常由用戶輸入接口160連接到處理單元120,上述輸入接口160和系統(tǒng)總線121相耦合。但是上述和其它輸入設(shè)備也可以由其它接口和總線結(jié)構(gòu)連接到處理單元120,諸如,并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191或其它類型顯示設(shè)備也可以通過諸如視頻接口190的接口連接到系統(tǒng)總線121。監(jiān)視器191也可以和觸摸屏等集成在一起。需要注意的是監(jiān)視器和/或觸摸屏可以物理地耦合到包含了計算機(jī)110,諸如寫字板式個人計算機(jī)的一房屋。另外,計算機(jī)110也包括其它外圍輸出設(shè)備,諸如可以通過一輸出外圍設(shè)備接口194等連接的揚聲器195和打印機(jī)196。
計算機(jī)110可以在網(wǎng)絡(luò)化的環(huán)境中運行,該環(huán)境使用邏輯連接連接到一個或多個諸如遠(yuǎn)程計算機(jī)180的遠(yuǎn)程計算機(jī)。遠(yuǎn)程計算機(jī)180可以是個人計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)個人計算機(jī)、對等設(shè)備或其它共用網(wǎng)絡(luò)節(jié)點,通常包括以上描述的和110相關(guān)的多個或全部組件,盡管在圖1中只示出了存儲器儲存裝置181。在圖9中描繪的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但是也可以包括其它網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍的計算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是普遍的。舉例來說,在當(dāng)前的框架中,計算機(jī)110可以包括源機(jī)器,數(shù)據(jù)從該源機(jī)器中被轉(zhuǎn)移,并且遠(yuǎn)程計算機(jī)180可以包括目的計算機(jī)。需要注意的是,盡管那些源機(jī)器和目的機(jī)器不需要通過網(wǎng)絡(luò)或其它方式連結(jié),但是取而代之的是,數(shù)據(jù)可以通過任何能夠由源平臺寫入并且被目的平臺或平臺讀取的介質(zhì)所轉(zhuǎn)移。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接到LAN171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機(jī)110通常包括調(diào)制解調(diào)器972或通過諸如因特網(wǎng)的WAN173建立通信的其他裝置。調(diào)制解調(diào)器172可以是內(nèi)置的或外置的,可以通過用戶輸入接口160或其它適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線121。在一網(wǎng)絡(luò)連接的環(huán)境中,所描述的和計算機(jī)110相關(guān)的程序模塊或其中的一部分可以存儲在遠(yuǎn)程存儲器儲存設(shè)備內(nèi)。舉例說明,但非限制,圖1示出了駐留在存儲設(shè)備181上的遠(yuǎn)程應(yīng)用程序185。可以理解的是所示的網(wǎng)絡(luò)連接是示例的,也可以使用在計算機(jī)間建立通信鏈路的其他裝置。
盡管圖1中所示的各種功能和數(shù)據(jù)駐留在以一種特定方式安排的特定計算機(jī)系統(tǒng)中,本領(lǐng)域技術(shù)人員會理解上述功能和數(shù)據(jù)可以以各種其它方式分布在不同安排的計算機(jī)系統(tǒng)間。盡管計算機(jī)系統(tǒng)按以上述描述的方式配置并且通常用于支持框架運行,本領(lǐng)域的一普通技術(shù)人員會理解該框架可以使用具有各種類型、配置和組件的設(shè)備來實現(xiàn)。
圖2是一方框圖,示出了在某些實施例中安全系統(tǒng)的組件。安全系統(tǒng)包括核心模式組件202、用戶模式組件204、諸如把事件從核心模式組件轉(zhuǎn)移到用戶模式組件的對于WINDOWS事件跟蹤的事件轉(zhuǎn)移組件206、和客戶應(yīng)用程序208。事件轉(zhuǎn)移組件可以異步或同步執(zhí)行。除了對于WINDOWS事件跟蹤,可以被用于在用戶模式和核心模式組件之間的通信的組件包括,舉例來說,應(yīng)用程序接口調(diào)用、套件等。
系統(tǒng)也包括安全引擎210和相關(guān)的策略表212。在某些實施例中,安全引擎210可擁有用戶模式部分和核心模式部分,通過兩者之間的通信來執(zhí)行和安全引擎相關(guān)的各種活動。每個相關(guān)的策略表包括由安全引擎引用的規(guī)則?;蛘撸踩婵梢允褂靡粋€策略表或多個策略表,在這種情況下,表將識別指定的安全引擎策略。
系統(tǒng)進(jìn)一步包括主機(jī)服務(wù)組件214和相關(guān)安全策略表216。安全策略表包括與安全策略相關(guān)的規(guī)則和與上述規(guī)則相關(guān)聯(lián)的數(shù)據(jù)。
系統(tǒng)還包括一個或多個清單218。清單可識別和安全引擎相關(guān)的信息。例如,清單可以識別執(zhí)行和安全引擎相關(guān)的計算步驟的文件名和文件位置(舉例來說,動態(tài)鏈接庫)。清單也可以擁有和安全引擎相關(guān)聯(lián)的全球唯一標(biāo)識(″GUID″)。在某些實施例中,一清單可以和多個安全引擎相關(guān)聯(lián)。或者,一安全系統(tǒng)可以用有多個清單,每個清單和一安全引擎相關(guān)聯(lián)。在某些實施例中,清單可以被數(shù)字化簽名。在某些實施例中,清單可以以文件形式存儲或存儲在一記錄中,或?qū)嶋H上,存儲在任一計算機(jī)可讀介質(zhì)中。
核心模式組件、用戶模式組件和事件轉(zhuǎn)移組件通常包括在操作系統(tǒng)200中。該操作系統(tǒng)結(jié)合計算系統(tǒng)環(huán)境100進(jìn)行操作。
圖3是一流程圖,示出了在某些實施例中安全系統(tǒng)的啟動例行程序。當(dāng)安全系統(tǒng)啟動時,主機(jī)服務(wù)組件執(zhí)行上述程序。該程序開始于框302。
在框306,程序列舉并讀取清單。清單在以上有關(guān)圖2和框218處被描述。一安全系統(tǒng)可以擁有一個或多個清單。在某些實施例中,安全系統(tǒng)對于每個安全引擎有一清單。通過讀取清單,主機(jī)服務(wù)組件可能夠確定和安全引擎相關(guān)的信息。例如,主機(jī)服務(wù)組件可能夠確定文件名、位置、GUID和其它和安全引擎相關(guān)的屬性。
在框308,程序列舉安全引擎。列舉安全引擎可包括遍歷一個或多個清單以確定指定的安全引擎的列表。在某些實施例中,程序可通過檢查存儲在輔助存儲器(例如,硬盤)中的記錄或文件來列舉安全引擎。
在框310和318之間,程序在安全引擎間循環(huán)并對每個安全引擎執(zhí)行若干函數(shù)。在框312,該程序調(diào)用一準(zhǔn)備_安全_策略子程序?qū)γ總€安全引擎準(zhǔn)備安全策略。這個子程序?qū)⒃谝韵陆Y(jié)合圖5進(jìn)行進(jìn)一步詳細(xì)描述。主機(jī)服務(wù)組件可異步調(diào)用準(zhǔn)備_安全_策略子程序,并且如果該子程序沒有以及時的方式返回,主機(jī)服務(wù)組件可確定安全系統(tǒng)不能啟動。在某些實施例中,安全引擎執(zhí)行準(zhǔn)備_安全_策略子程序。在這種情況下,在安全引擎從對子程序的調(diào)用返回之前(例如,當(dāng)另一個安全引擎發(fā)送故障時—參閱以下有關(guān)故障的進(jìn)一步細(xì)節(jié)),主機(jī)服務(wù)組件可發(fā)送一信號至執(zhí)行準(zhǔn)備_安全_策略子程序以返回安全策略的安全引擎。在某些實施例中,對于返回安全策略的調(diào)用可異步執(zhí)行。該調(diào)用可異步執(zhí)行以使主機(jī)服務(wù)組件不需要被當(dāng)返回安全策略時安全引擎會執(zhí)行的處理所阻礙。在框314,程序調(diào)用加載_安全_引擎子程序以加載每個安全引擎。該子程序?qū)⒃谝韵陆Y(jié)合圖4被進(jìn)一步詳細(xì)描述。
在框316,程序把準(zhǔn)備好的安全策略傳遞給每個安全引擎。
在框320,程序確定任何準(zhǔn)備好的安全策略被傳遞到的安全引擎是否報告故障。安全引擎會報告故障當(dāng),例如,它不能啟動、不能接收由主機(jī)服務(wù)組件傳遞來的安全策略、或由于其它各種原因而導(dǎo)致故障。如果安全引擎報告故障,程序繼續(xù)到框322。否則,程序繼續(xù)到框324,在此發(fā)信號通知安全引擎確認(rèn)主機(jī)服務(wù)組件先前傳遞給安全引擎的安全策略。在框322,主機(jī)服務(wù)組件發(fā)信號通知安全引擎返回主機(jī)服務(wù)組件先前傳遞給安全引擎的安全策略。在某些實施例中,程序依次指示每個安全引擎確認(rèn)它的安全策略。在這種情況下,程序發(fā)送信號給安全引擎并同時在發(fā)送信號通知下一安全引擎前等待安全引擎確認(rèn)它的安全策略。當(dāng)災(zāi)難性故障發(fā)生時(舉例來說,當(dāng)在安全引擎的用戶和核心模式部分之間存在通信故障時),主機(jī)服務(wù)組件可嘗試重新加載先前的安全策略。在框322或324之后,程序返回框326。
圖4是一流程圖,示出了在某些實施例中安全系統(tǒng)的加載_安全_引擎例行程序。當(dāng)主機(jī)服務(wù)組件嘗試加載已被確定可用來實施安全策略的安全引擎時,它可執(zhí)行該程序。程序開始于框402,在此它接收安全引擎的指示作為參數(shù)。
在框404,程序加載與指示的安全引擎相關(guān)聯(lián)的動態(tài)連接庫(“DLL”)。當(dāng)安全引擎以不同于DLL的方式實現(xiàn)時,可產(chǎn)生適當(dāng)可供選擇的操作系統(tǒng)調(diào)用以裝載安全引擎。
在框406,程序調(diào)用加載的安全引擎的初始化函數(shù)。安全引擎的初始化函數(shù)把安全引擎初始化成,舉例來說,對于安全引擎的默認(rèn)狀態(tài)。在默認(rèn)狀態(tài)中,安全引擎只是一外殼程序而不實施安全策略?;蛘?,默認(rèn)狀態(tài)可導(dǎo)致安全引擎執(zhí)行基于先前配置的默認(rèn)實施。主機(jī)服務(wù)組件可對于每個安全引擎異步調(diào)用初始化函數(shù)并且在程序繼續(xù)(圖中未示)之前等待所有調(diào)用完成。在框408,程序確定是否在加載安全引擎或初始化安全引擎中存在故障。安全引擎的加載或初始化可以失敗當(dāng),舉例來說,它的DLL不能找到、在被數(shù)字化標(biāo)記后被修改、或若干其它原因時。
如果在加載或初始化安全引擎時存在故障,程序在框410返回故障的指示。否則,程序在框412返回成功的指示。
圖5是一流程圖,示出了在某些實施例中安全系統(tǒng)的準(zhǔn)備_安全_策略程序。準(zhǔn)備_安全_策略程序可由主機(jī)服務(wù)組件或安全引擎執(zhí)行。
程序開始于框502。如果程序由主機(jī)服務(wù)組件執(zhí)行,程序接收安全引擎的指示作為參數(shù)。然后,如果程序由安全引擎執(zhí)行,程序不接收安全引擎的指示作為參數(shù)。
在框504,程序加載安全策略。安全系統(tǒng)可擁有一個或多個安全策略。主機(jī)服務(wù)組件可加載來自直接連結(jié)到與主機(jī)服務(wù)組件相關(guān)聯(lián)的計算系統(tǒng)的存儲器設(shè)備的安全策略,或它可加載來自可通過網(wǎng)絡(luò)相關(guān)聯(lián)的存儲器設(shè)備的安全策略。在某些實施例中,程序接收安全策略的指示?;蛘撸绦蛲ㄟ^評估記錄的一部分來確定安全策略的位置。
在框506,程序合并安全策略。合并安全策略可包括把安全策略組合成一大的安全策略。在某些實施例中,安全策略可用可擴(kuò)展標(biāo)記語言(″XML″)表示。當(dāng)多個安全策略以XML表示,合并安全策略可包括組合所有的安全策略成一大的XML流以使單個策略的效應(yīng)被保存。
在框508,程序確定可應(yīng)用于指示的安全引擎或可執(zhí)行程序的安全引擎(適當(dāng)?shù)?的合并后的安全策略的子集。例如,和網(wǎng)絡(luò)相關(guān)的安全策略可應(yīng)用與可實施網(wǎng)絡(luò)策略的安全引擎。相反,和檢測軟件資源版本號相關(guān)的安全策略可以不能應(yīng)用于實施網(wǎng)絡(luò)策略的安全引擎。
在框510,程序返回到它的調(diào)用者,該調(diào)用者為在框508所確定的作為準(zhǔn)備好的安全策略的安全策略子集。
圖6是一流程圖,示出了在某些實施例中安全系統(tǒng)的更新_安全_策略例行程序。程序可由主機(jī)服務(wù)組件在主機(jī)服務(wù)組件確定更新安全策略時執(zhí)行。主機(jī)服務(wù)組件在,舉例來說,它接收到新的安全策略或?qū)τ诎踩呗缘母聲r確定更新安全策略。
程序開始于框602。在某些實施例中,程序可接收一新的、更新過的、或移除的安全策略的指示。
在框604和610之間,程序在安全引擎之間循環(huán)以更新安全引擎。在框606,程序?qū)γ總€安全引擎準(zhǔn)備安全策略。程序通過調(diào)用準(zhǔn)備_安全_策略子程序來準(zhǔn)備安全策略,有關(guān)信息已在以上結(jié)合圖5所述。
在框608,程序把準(zhǔn)備好的安全策略傳遞給安全引擎。
在框612,程序確定任何安全策略被傳遞到的安全引擎是否報告故障。如果安全引擎報告故障,程序繼續(xù)到框614,在此它返回至安全策略。否則,程序繼續(xù)到框616,在此它發(fā)送信號通知安全引擎確認(rèn)安全策略。
在框314或框616之后,程序在框618返回它的調(diào)用者。
在某些實施例中,框架可擁有關(guān)閉安全引擎的停止方法。
在某些實施例中,框架使和安全策略規(guī)則相關(guān)的數(shù)據(jù)獨立于規(guī)則本身而被更新。為了支持該功能,框架支持多個方法、特性和事件。例如,安全引擎可調(diào)用ReadAndRefisterNotifyData方法來表明當(dāng)在該調(diào)用中針對該方法所指示的數(shù)據(jù)改變時,安全引擎希望被通知。作為進(jìn)一步的例子,當(dāng)數(shù)據(jù)改變時,主機(jī)服務(wù)組件可調(diào)用WriteData方法以通知安全引擎數(shù)據(jù)已被更改的方式更改數(shù)據(jù)。類似地,WriteConfig方法可使能主機(jī)服務(wù)組件以先前調(diào)用ReadAndRegisterNotifyConfig方法的安全引擎被通知數(shù)據(jù)的更改的方法在安全引擎的子集中分配配置數(shù)據(jù)。
安全引擎也可更改與安全策略相關(guān)聯(lián)的數(shù)據(jù)。當(dāng)安全引擎更改數(shù)據(jù),它可使用WriteSecurityEngineData方法來對其它安全系統(tǒng)的組件表明數(shù)據(jù)正在被更改。通過這個方式,安全引擎可以能夠和另一安全引擎通信。
已注冊用以接收數(shù)據(jù)更改通知的組件也能夠調(diào)用相應(yīng)的方法以解除來自接收通知的注冊。
安全引擎可確定通知用戶或詢問用戶。例如,為了響應(yīng)安全策略的規(guī)則,當(dāng)因特網(wǎng)瀏覽應(yīng)用程序試圖通過網(wǎng)絡(luò)端口8080通信時,安全引擎可確定通知用戶。類似地,安全引擎可確定詢問用戶有關(guān)是否個人財務(wù)應(yīng)用程序應(yīng)該被允許由網(wǎng)絡(luò)端口8080發(fā)送信息的指示。當(dāng)安全引擎確定通知用戶或詢問用戶時,安全引擎可調(diào)用一框架的方法以執(zhí)行這些動作。在安全引擎發(fā)送給用戶通知后,安全引擎可繼續(xù)處理。另一方面,在安全引擎詢問用戶后,安全引擎可暫停處理直到用戶提供一響應(yīng)。安全引擎也可能超時,并且在沒有用戶響應(yīng)的情況下通過,舉例來說,使用默認(rèn)值繼續(xù)處理。
在某些實施例中,安全系統(tǒng)可監(jiān)控清單并且添加、修改、或動態(tài)地移除安全引擎。通過動態(tài)地實行這種行為,安全系統(tǒng)可不需要重新啟動。
在某些實施例中,安全系統(tǒng)可能夠通過包括諸如使用數(shù)字簽名以確認(rèn)清單的完整性的各種方式來保護(hù)它本身。
在一實施例中,新的安全引擎可不被允許。
以上所描述的各種方法可通過回調(diào)程序?qū)崿F(xiàn)。例如,當(dāng)方法被調(diào)用,調(diào)用者可提供方法的指示,表明被調(diào)用的方法可使用于返回成功或失敗的指示。通過這種方法,調(diào)用者不必在繼續(xù)它的處理之前同時等待調(diào)用的方法的完成。
通過先前所述,應(yīng)該理解的是在此所描述的本發(fā)明的特定的實施例是為了說明的目的,但是在不偏離本發(fā)明精神和范圍的情況下,可做各種修改。相應(yīng)地,本發(fā)明被附加地權(quán)利要求所界定。
權(quán)利要求
1 一種保護(hù)主機(jī)計算設(shè)備的系統(tǒng),包括第一個組件,上述組件接收流,所述流包含安全策略;和對于在一個或多個安全引擎的組中的每個安全引擎,準(zhǔn)備和所述組中的至少一個安全引擎相關(guān)的一部分安全策略;和把安全策略的準(zhǔn)備好的部分傳遞給所述組中的至少一個安全引擎;和所述組中安全引擎的一個,當(dāng)在接收安全策略的準(zhǔn)備好的一部分后沒有安全引擎表明故障時,實施它所接收到的安全策略的一部分。
2 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于對于組中的每個安全引擎,第一個組件接收來自安全引擎的通知以表明是否被傳遞的策略的一部分被接受,和包括表明被傳遞的安全策略的一部分沒有被接受的故障指示。
3 根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于進(jìn)一步包括第二個組件,只有當(dāng)接收到來自所有安全引擎的傳遞給安全引擎的策略部分被接受的指示時,所述組件把一指令傳遞給安全引擎以確認(rèn)被傳遞的策略部分。
4 根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于第一個和第二個組件是相同的組件。
5 根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于進(jìn)一步包括第二個組件,如果接收到來自任何一個安全引擎的傳遞給安全引擎的策略部分不被接受的指示時,所述組件把一指令傳遞給安全引擎以返回被傳遞的策略部分。
6 根據(jù)權(quán)利要求5所述的方法,其特征在于第一個組件和第二個組件是相同的組件。
7 一種用于保護(hù)主機(jī)計算設(shè)備的方法,包括接收對于主機(jī)計算設(shè)備啟動安全系統(tǒng)的指示;確定加載來自一組安全引擎的安全引擎的子集;和加載來自所確定的安全引擎子集的每個安全引擎。
8 根據(jù)權(quán)利要求7所述的方法,其特征在于所述加載包括讀取安全引擎的已確定子集中的安全引擎的清單。
9 根據(jù)權(quán)利要求8所述的方法,其特征在于所述清單包括與安全引擎相關(guān)聯(lián)的文件名、位置、和全球唯一標(biāo)識。
10 根據(jù)權(quán)利要求9所述的方法,其特征在于所述清單被數(shù)字化簽名。
11 根據(jù)權(quán)利要求7所述的方法,其特征在于所述確定包括通過產(chǎn)生一清單列表以確定一組安全引擎。
12 根據(jù)權(quán)利要求7所述的方法,其特征在于所述確定包括通過讀取清單內(nèi)容以確定一組安全引擎。
13 根據(jù)權(quán)利要求12所述的方法,其特征在于所述清單是一文件。
14 根據(jù)權(quán)利要求12所述的方法,其特征在于所述清單是一記錄的一部分。
15 根據(jù)權(quán)利要求7所述的方法,其特征在于包括一當(dāng)接收到停止安全系統(tǒng)的指示即卸載每個加載的安全引擎。
16 一種含有執(zhí)行以下步驟的計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì),所述步驟包括接收安全策略的指示;確定接收到的安全策略應(yīng)該被傳遞到一組安全引擎的一個子集;和把安全策略傳遞給確定的安全引擎的子集。
17 根據(jù)權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其特征在于包括為所述安全引擎子集的一安全引擎準(zhǔn)備所接收的安全策略。
18 一保護(hù)主機(jī)計算設(shè)備的系統(tǒng),其特征在于包括接收安全實施事件的通知、匯編接收到的通知、和對軟件組件提供通知的主機(jī)服務(wù)組件。
全文摘要
描述了一種對于安全系統(tǒng)的框架。該框架可被使用于跟蹤哪個安全引擎可供用于實施安全策略。安全引擎是一軟件資源,它實施設(shè)計成幫助確保應(yīng)用或操作系統(tǒng)的漏洞不被利用的安全策略??蚣芸捎脕砭S護(hù)一計算設(shè)備狀態(tài)的整體視圖,一安全系統(tǒng)被配置以與該計算設(shè)備一起工作??蚣芸梢酝ㄟ^提供一應(yīng)用程序接口在安全系統(tǒng)組件中統(tǒng)一實施安全策略。安全系統(tǒng)可代理安全實施事件和安全策略。通過提供這些服務(wù),框架為軟件組件和安全系統(tǒng)之間的交互動作帶來一統(tǒng)一模型。
文檔編號G06F1/00GK1725142SQ200510081190
公開日2006年1月25日 申請日期2005年6月23日 優(yōu)先權(quán)日2004年7月23日
發(fā)明者S·W·湯森得, T·F·菲克斯 申請人:微軟公司