專利名稱:用戶空間虛擬化系統(tǒng)的制作方法
用戶空間虛擬化系統(tǒng)
相關(guān)申請的交叉引用
本申請是美國非臨時申請,其要求于2006年11月17日提交的編號為 60/859,673的美國臨時專利申請的優(yōu)先權(quán),并且還要求對于2006年7月24 日提交的編號為2006-201037的日本專利申請的優(yōu)先權(quán),這兩者通過引用 整體結(jié)合于此。
背景技術(shù):
本發(fā)明涉及用于創(chuàng)建用戶空間虛擬化程序的仿真和動態(tài)編譯技術(shù)。
用于嵌入式系統(tǒng)的最新平臺要求資源管理系統(tǒng)來仲裁和保護系統(tǒng)資 源。這些資源管理系統(tǒng)通常提供應(yīng)用編程接口 (API),用于仲裁或保護 系統(tǒng)資源。然而,為了最大化嵌入系統(tǒng)的功能性,有時候期望執(zhí)行非置信 (imtrusted)應(yīng)用,或遺產(chǎn)(legacy)應(yīng)用,其不使用平臺的資源管理系 統(tǒng)。因此,在嵌入式系統(tǒng)中也需要為前述應(yīng)用控制平臺的系統(tǒng)資源并且擴 展它的安全策略的方法。
傳統(tǒng)上,訪問控制機制已合并到除了嵌入式產(chǎn)品之外的許多現(xiàn)有操作 系統(tǒng)中。眾所周知的示例包括LinuxTM中的用戶權(quán)限檢查。在該情況下, 每個文件相關(guān)于所有者用戶的ID和權(quán)限模式,所述權(quán)限模式用作為某些 用戶是否可訪問文件的指示。另外地,可能限制某些系統(tǒng)調(diào)用,使得它們 僅可從超級用戶ID來調(diào)用。此外,Linux "chroot"系統(tǒng)調(diào)用可限制一部 分文件系統(tǒng)被某些進程看見。
現(xiàn)有Linux中利用用戶ID和權(quán)限的方法中的問題在于它不能充分地控 制限制粒度。例如,不管安全策略,擁有文件的任何人可訪問他/她自己的 文件并且任意地改變訪問限制。SELinux子系統(tǒng)通過實現(xiàn)強制訪問控制來 克服該問題。使用強制訪問控制,用戶不能隨意地改變訪問限制,即使對 于他們自己的文件。而且,即使對于特權(quán)用戶(例如根權(quán)限)也可限制訪問。然而,使用SELinux,必須調(diào)整和重編譯Linux內(nèi)核,這要求復(fù)雜的 安裝和處理。
相反,存在許多未合并訪問控制機制的嵌入式操作系統(tǒng)。例如, Symbian (版本9.1和更低的)或者WinCE不包括用戶ID的思想。它們文 件系統(tǒng)中的大部分(除了僅僅可從內(nèi)核訪問的系統(tǒng)文件)在用戶模式的進 程中是可訪問的。在SymbianOS版本9.1中,修改內(nèi)核以加強OS安全 性。
然而,對于OS內(nèi)核需要重大的修改以實現(xiàn)這種OS安全性。因此, 難于避免由修改而出現(xiàn)程序缺陷的風(fēng)險。此外,在內(nèi)核中訪問控制特征的 每次修改時,出現(xiàn)程序缺陷的風(fēng)險是不可避免的,這將因此需要高成本并 且可導(dǎo)致設(shè)計訪問控制特征中靈活性的損失。然而,不管SELinux或最新 的SymbianOS,訪問控制系統(tǒng)和資源管理系統(tǒng)是依賴于OS實現(xiàn)的,并且 這些訪問控制系統(tǒng)通常不是無關(guān)于OS類型而可應(yīng)用的。
最近,已提出了虛擬化技術(shù),例如VMWare和Xen,用于在桌面和服 務(wù)器系統(tǒng)上劃分資源。這些技術(shù)可實現(xiàn)訪問控制特征。然而,因為這些方 法要求幾乎整個操作系統(tǒng)映像的副本,它們對于具有有限計算資源(例如 存儲器等)的嵌入式平臺來說不是理想的。
因此,期望方法和裝置來允許遺產(chǎn)應(yīng)用共享資源,而不必在嵌入式系 統(tǒng)中進行修改。
這里提及的所有專利、申請、公開的申請和其它出版物全部合并在此
作為參考,包括以下參考
SELinux, Kerry Thompson, System Admin Magazine, March 2003, http:〃www.samag.com/documents/s=7835/sam0303a/0303a.htm
Platform Security _ a Technical Overview, Version 1.2, Mark Shackman, Symbian Ltd, http:〃www.symbian.com/developer/techlib/papers/plat—sec—tech—overview/platf orm—security—a—technical—overview.pdf
QEMU Internals, Fabrice Bellard, http:〃fabrice.bellard.free.fr/qemu/qemu-tech.html
6The Xen Virtual Machine Monitor,
http:〃www.c1.cam.ac.uk/Research/SRG/netos/xen/
VMWare, http:〃vmware.com/User-Mode Li叫 http:〃user-mode-linux.sourceforge.net/
發(fā)明內(nèi)容
本發(fā)明的實施例共享資源,而不必在如用戶空間虛擬化(usv)的嵌
入式系統(tǒng)中進行修改,例如用于移動電話和個人數(shù)字助理。本發(fā)明的實施 例也允許可包含非置信的和惡意的代碼的應(yīng)用執(zhí)行而不會影響系統(tǒng)安全性 或保密性。此外,發(fā)明實施例使用仿真和動態(tài)編譯技術(shù)來嚴格地控制應(yīng)用
對資源的使用并且實現(xiàn)執(zhí)行速度接近于執(zhí)行原始本地(native)代碼的速 度的高性能。用戶空間虛擬化是用于嵌入式平臺上的資源仲裁和保護的新 穎方法。它在用戶空間中實現(xiàn)并且可靈活地根據(jù)操作者/OEM資源管理策 略來定制。它需要很少的操作系統(tǒng)支持,所以它可運行在許多流行的智能 手機平臺上。同時,它使用動態(tài)編譯技術(shù)來獲得與候選技術(shù)(例如修改 QS內(nèi)核)相同的性能水平。
本發(fā)明的實施例提供了用戶空間虛擬化(USV)程序以允許遺產(chǎn)應(yīng)用 共享資源,而不必在嵌入式系統(tǒng)中進行修改。計算機實現(xiàn)的USV程序可 以用戶空間中的方法為特征,所述方法包括取回應(yīng)用的本地代碼,并且識 別指令序列。識別指令序列包括首先確定執(zhí)行指令序列以執(zhí)行處理是否可 能為安全風(fēng)險。如果它是安全風(fēng)險,那么用安全管理器或處理器確認存在 用于活動應(yīng)用的執(zhí)行權(quán)限。如果確認活動應(yīng)用具有用于處理的執(zhí)行權(quán)限, 那么用處理器執(zhí)行指令序列。如果活動應(yīng)用沒有用于處理的執(zhí)行權(quán)限,那 么不執(zhí)行指令序列。另一方面,如果執(zhí)行指令序列以執(zhí)行處理不是可能的 安全風(fēng)險,那么用處理器執(zhí)行指令序列。
此外,在如果活動應(yīng)用不具有用于處理的執(zhí)行權(quán)限那么不執(zhí)行指令序 列之后,方法可包括在活動應(yīng)用不具有用于處理的執(zhí)行權(quán)限的情況下執(zhí)行 錯誤。另外,在如果活動應(yīng)用不具有用于處理的執(zhí)行權(quán)限那么不執(zhí)行指令 序列之后,方法可還包括執(zhí)行用執(zhí)行處理的指令序列來代替指令序列。執(zhí)行權(quán)限關(guān)聯(lián)于活動應(yīng)用,并且用處理器執(zhí)行所代替的指令序列。還可能允 許這樣的配置,其中如果安全管理器確認活動應(yīng)用具有用于處理的執(zhí)行權(quán) 限,己為應(yīng)用的執(zhí)行權(quán)限確認了本地代碼,那么上面用處理器執(zhí)行指令序 列下一次直接用處理器執(zhí)行,不必用安全管理器確認。在該情況下,可能 減少用安全管理器為相同命令確認權(quán)限多次而引起的開銷。
此外,在其它實施例中,可能允許檢測執(zhí)行可影響應(yīng)用的本地代碼安 全性的處理的指令序列。另外,可能生成指令序列的本地代碼,以在根據(jù) 所檢測指令序列的本地代碼確認應(yīng)用的執(zhí)行權(quán)限之后,執(zhí)行可影響安全性 的處理,并且用CPU執(zhí)行所生成代碼。
圖1示出了示出根據(jù)本發(fā)明實施例的嵌入式系統(tǒng)的配置的示意圖; 圖2示出了根據(jù)本發(fā)明實施例的每個軟件模塊的交互的框圖; 圖3示出了根據(jù)本發(fā)明實施例的每個模塊的行為的流程圖; 圖4示出了安全檢查指令的生成的實施例;
圖5示出了根據(jù)本發(fā)明實施例的在先前已生成安全檢查指令之后執(zhí)行 指令序列;
圖6示出了根據(jù)本發(fā)明實施例的調(diào)用系統(tǒng)調(diào)用的指令序列;
圖7示出了根據(jù)本發(fā)明實施例的open ()系統(tǒng)調(diào)用的處理;
圖8示出了在編譯前的本地指令序列的示例;
圖9示出了根據(jù)本發(fā)明實施例的在圖4中編譯代碼之后生成的安全本 地指令;
圖IOA示出了用于多個資源仲裁的實施例; 圖IOB示出了用于設(shè)備診斷的實施例;
圖IOC示出了用于家庭網(wǎng)關(guān)的安全控制的實施例;并且
圖ll示出了可用于實現(xiàn)本發(fā)明實施例的計算機系統(tǒng)。
具體實施例方式
如上簡要所述,本發(fā)明的實施例允許遺產(chǎn)應(yīng)用共享資源,而不必修
8改,并且允許可包含非置信的和惡意的代碼的應(yīng)用執(zhí)行,而不會影響系統(tǒng) 安全性或保密性。
另外,可實現(xiàn)用戶空間虛擬化程序的實施例,而不必修改OS內(nèi)核。 尤其是,這可避免可造成系統(tǒng)維護困難的對內(nèi)核的復(fù)雜修改。此外,以本 地代碼形式執(zhí)行應(yīng)用。因此,在用戶空間虛擬化程序中可將開銷減小到最 低水平。另外,因為由于本地代碼是相同的,可不管操作系統(tǒng)的類型而使 用本發(fā)明的用戶空間虛擬化程序,所以它可在具有相同CPU的平臺中利 用,而不管操作系統(tǒng)的類型??尚枰薷模撬鼘⑹亲钚〉牧?。如下參 考附圖描述示例實施例。
圖1是兼為硬件和軟件的嵌入式系統(tǒng)100的配置的示意圖。操作系統(tǒng)
(OS) 102在CPU 101和安全管理器105上實現(xiàn)。本地指令處理器106和 動態(tài)編譯器107由操作系統(tǒng)102利用。應(yīng)用111存儲在非置信區(qū)域110中 并且在由安全管理器105、本地指令處理器106和動態(tài)編譯器107虛擬的 用戶空間中執(zhí)行。
參考圖1,功能塊OS 102、安全管理器105、本地指令處理器106、 動態(tài)編譯器107和應(yīng)用111實現(xiàn)為軟件。結(jié)果,這些功能塊通過由CPU 101執(zhí)行它的相應(yīng)軟件程序來實現(xiàn)。
本發(fā)明的實施例(尤其是CPU 101)根據(jù)ARM處理器體系結(jié)構(gòu)和 ARM指令集來描述。然而,根據(jù)本發(fā)明實施例的CPU 101不限于ARM。 所有軟件程序存儲在連接到CPU 101的存儲器103 (ROM/RAM)中。存 儲器113按需由CPU101訪問。
OS 102嵌入在諸如Linux、 WinCE或Symbian之類的操作系統(tǒng)中。本 發(fā)明的實施例基于OS 102具有以下或基本上等同的下述功能的前提。換 言之,具有以下或基本上等同的功能的OS可根據(jù)本發(fā)明的實施例來使 用,即使OS是除了本文檔中描述的之外的OS。 OS的功能,根據(jù)本發(fā)明 的實施例,描述為如下
用戶模式OS 102可在用戶模式運行安全管理器105、本地指令處理 器106、動態(tài)編譯器107和應(yīng)用111的相應(yīng)程序,以便阻止這些程序直接 執(zhí)行特權(quán)指令,例如MMU寄存器修改指令。存儲器保護應(yīng)用111的存儲器空間與例如在內(nèi)核中的其它應(yīng)用分離。
1/0保護I/O操作必須在監(jiān)控模式中執(zhí)行,并且不能直接由應(yīng)用111 執(zhí)行(除了用戶模式的存儲器映射I/0外)。
良好定義的系統(tǒng)調(diào)用接口 OS 102必須使用良好定義的接口以供應(yīng)用
發(fā)出系統(tǒng)調(diào)用。在ARM體系結(jié)構(gòu)中,系統(tǒng)調(diào)用通常由SWI指令調(diào)用或者 由到未具體映射的地址的分支指令調(diào)用。
頁保護修改API: OS 102必須提供API,以供用戶模式的應(yīng)用修改其 被允許訪問的存儲器頁面的保護模式。
OS 102的上述功能允許用戶模式中的應(yīng)用僅經(jīng)由系統(tǒng)調(diào)用在用戶空間 外交互。
通過檢測和管理系統(tǒng)調(diào)用,可能精確地監(jiān)視和控制應(yīng)用對系統(tǒng)資源的 使用。這幫助防止系統(tǒng)安全和秘密暴露于可能的風(fēng)險。
檢測系統(tǒng)調(diào)用以管理所檢測系統(tǒng)調(diào)用的一個方法是通過修改OS內(nèi)核 的源代碼"鉤住(hook)"并且控制系統(tǒng)調(diào)用,以便在執(zhí)行前認定系統(tǒng)調(diào) 用的資格并且檢查系統(tǒng)調(diào)用的安全性。然而,在嵌入式系統(tǒng)中"鉤住"系 統(tǒng)調(diào)用可顯著地降低應(yīng)用的性能,例如執(zhí)行速度或響應(yīng)速度。另外,修改 內(nèi)核以引入掛鉤機制增加了將程序缺陷引入系統(tǒng)的風(fēng)險。
因此,與如上所述利用系統(tǒng)調(diào)用掛鉤相反,本發(fā)明的實施例通過用戶 空間虛擬化(USV)確保系統(tǒng)安全性。構(gòu)成USV核心的思想是"本地仿 真"。當(dāng)涉及執(zhí)行用本地指令編譯的應(yīng)用程序時,USV的應(yīng)用與現(xiàn)有系 統(tǒng)相同。然而,在該情況下,參考圖1,應(yīng)用111的本地指令由在USV虛 擬的系統(tǒng)中執(zhí)行,而不是直接由CPU 101執(zhí)行,這顯著地不同于現(xiàn)有系 統(tǒng)。
除了嵌入式系統(tǒng)的虛擬化,USV具有以下兩個重要功能捕獲系統(tǒng)調(diào) 用以驗證安全性和資源共享,以及動態(tài)地編譯要直接由CPU執(zhí)行的熱點。 下面說明了作為usv發(fā)明的實施例的每個軟件功能。在某些實施例
中,在用戶空間中執(zhí)行所有軟件。
參考圖2,當(dāng)在用戶空間中執(zhí)行應(yīng)用111時,使用本地指令處理器
10106。本地指令處理器106取回或讀取應(yīng)用111中的本地指令序列。如果
檢測到指令序列當(dāng)執(zhí)行時能夠影響安全性,動態(tài)編譯器107編譯指令序列 并且CPU 101執(zhí)行所編譯代碼。
另一方面,未被檢測到能夠影響安全性的其它本地指令序列將直接由
CPU 101執(zhí)行。例如,用于執(zhí)行可影響安全性的處理的指令序列可以是包 括用于執(zhí)行系統(tǒng)調(diào)用的SWI命令的指令序列,或執(zhí)行系統(tǒng)調(diào)用的代碼,如 圖6中示出的代碼中。
參考圖2和4,在402中動態(tài)編譯器107將由本地指令處理器106檢 測的指令序列編譯為安全本地指令。盡管我們稱為"編譯",實際的處理 是生成相同本地指令的另一序列,其中從CPU 101的本地指令序列添加了 安全檢査處理408。
參考圖2、圖8和圖9,示出了根據(jù)本發(fā)明實施例的由動態(tài)編譯器107 進行編譯的效果。圖8示出了編譯前的代碼。圖9示出了分別在記憶碼 (即因為代碼類似原始詞所以容易記得的編程碼)中編譯后的安全本地指 令。圖9中的"intercept—open()"指令是保存"系統(tǒng)調(diào)用open()"的虛擬 記憶碼,并且調(diào)用例程以執(zhí)行安全檢查。如果安全檢查產(chǎn)生滿意的結(jié)果, 那么調(diào)用"系統(tǒng)調(diào)用open()"。
如該實施例示出,從預(yù)編譯碼重寫安全本地指令,以在檢查安全性之 后執(zhí)行等同于預(yù)編譯碼的處理。通過比較圖8和圖9中的代碼,示出了動 態(tài)編譯器107把將調(diào)用系統(tǒng)調(diào)用的指令序列編譯為在調(diào)用系統(tǒng)調(diào)用之前檢 査安全性的指令序列。因此,可影響安全性的指令序列決不總是在執(zhí)行前 經(jīng)歷安全檢查。通過這種編譯生成的"安全本地指令"在與存儲應(yīng)用111 的原始代碼的存儲器分離的指定存儲區(qū)域中存儲。
與根據(jù)高級語言的源代碼生成本地代碼的傳統(tǒng)編譯器相比,動態(tài)編譯 器107進行簡單的處理并且不執(zhí)行復(fù)雜的優(yōu)化處理。
因此,動態(tài)編譯器107的復(fù)雜性小于通常的編譯器,這可減少由于編 譯而影響系統(tǒng)的開銷。因此,它適用于資源受限的嵌入式系統(tǒng)。
如果本地指令處理器106在執(zhí)行應(yīng)用111期間檢測到不安全的指令序 列,應(yīng)用111被掛起并且動態(tài)編譯器107編譯指令序列以生成安全本地指令序列。所生成的安全指令序列存儲在指定的存儲器地址中,隨后,CPU 101執(zhí)行所生成的安全本地指令序列并且應(yīng)用111的執(zhí)行再繼續(xù)。因此,
當(dāng)所生成的安全本地指令序列的執(zhí)行完成時502,在506用CPU 101執(zhí)行 應(yīng)用111的本地指令序列,同時由本地指令處理器106檢査隨后的指令序 列。
安全管理器105具有安全配置文件,該安全配置文件包括非置信區(qū)域 110中存儲的應(yīng)用111的指令序列的信息,該信息用于確定由于應(yīng)用111 指令序列的執(zhí)行將影響安全性的可能性,如上所述。安全配置文件中包含 的信息可幫助確定是否授權(quán)或許可指令序列的執(zhí)行。安全配置文件的格式 例如可以是XML格式。然而,可使用其它格式。此外,安全配置文件可 配置為包含涉及用于每個應(yīng)用的可訪問地址范圍、文件類型或硬件資源的 信息。而且,安全配置文件可用于確定根據(jù)指定的地址范圍、文件類型或 硬件資源是否可許可訪問。
下面描述根據(jù)本發(fā)明實施例的由用戶空間虛擬化執(zhí)行的用戶模式中本 地指令處理器106和動態(tài)編譯器107的操作。特定地,當(dāng)本地指令處理器 106和動態(tài)編譯器107執(zhí)行時的操作,根據(jù)本發(fā)明實施例通過經(jīng)由用戶空 間虛擬化與安全管理器105交互,執(zhí)行應(yīng)用111。圖2示出了圖1中示出 的軟件模塊的交互。圖3示出了示出各個軟件模塊執(zhí)行的那些操作的流程 圖。
首先,本地指令處理器106從加載到用戶空間的應(yīng)用111的程序代碼 中取回要執(zhí)行的本地指令(ST101)。可單獨或共同地取出本地指令。
然后,本地指令處理器106確定所取回的本地指令當(dāng)執(zhí)行時是否執(zhí)行 可影響安全性的處理(ST 102)。參考圖4,編譯器402將檢測可指示本 地指令內(nèi)的可能的安全風(fēng)險的模式404。該判定基于任何本地指令或序列 是否已注冊在安全配置文件中作為當(dāng)執(zhí)行時執(zhí)行可影響安全性的處理并且 包括在所取回的本地指令中的一個。
如果在ST102中判定取出的本地指令不執(zhí)行任何可影響安全性的處 理,那么本地處理器106取回的本地指令直接用CPU 101執(zhí)行(ST 103)。
12相反,如果在ST102中,判定所取回本地指令執(zhí)行可影響安全性的處
理,動態(tài)編譯器107編譯所取回本地指令以生成安全本地指令109并且將 它存儲在指定的地址(ST104),所述安全本地指令109當(dāng)執(zhí)行時完成等 同于編譯前的本地指令的處理。
隨后,在ST104中生成的安全本地指令109用CPU 101來執(zhí)行。結(jié) 果,首先,向安全管理器105生成査詢,以檢査應(yīng)用lll是否具有權(quán)限執(zhí) 行能夠影響安全性的處理(ST105)。響應(yīng)于該查詢,安全管理器105參 考安全配置文件108,其包含指令序列授權(quán),或未授權(quán)應(yīng)用111的信息 (ST106)。
在ST106中,如果安全管理器105確定應(yīng)用111具有執(zhí)行權(quán)限,那么 與在ST101中從應(yīng)用111取回的本地指令相對應(yīng)的代碼用CPU 101來執(zhí)行 (ST107)。另外參考圖2,向OS內(nèi)核103發(fā)出系統(tǒng)調(diào)用,其訪問內(nèi)核空 間中的資源104。另一方面,當(dāng)確定應(yīng)用111不具有權(quán)限時,對應(yīng)于所取 回本地指令的處理不被執(zhí)行(ST108)。圖2還示出了當(dāng)拒絕系統(tǒng)調(diào)用時 的示例。
在如上所述執(zhí)行從應(yīng)用111取回的本地指令之后,通過重復(fù)從ST101 開始的處理來處理接著要執(zhí)行的本地指令。注意,如果在ST108中不執(zhí)行 所取回本地指令,在向應(yīng)用111通知由于違反權(quán)限出現(xiàn)錯誤之后,可取消 應(yīng)用111的執(zhí)行。在其它情況下,如果可能,可用對于其應(yīng)用111具有權(quán) 限的替代處理來繼續(xù)應(yīng)用111的執(zhí)行。
上述的處理允許對由本地指令組成的應(yīng)用111的程序進行順序安全檢 査,這使得遺產(chǎn)應(yīng)用能夠共享資源而不必修改。另外,還可執(zhí)行可包含非 置信的和惡意的代碼的應(yīng)用,而不影響系統(tǒng)安全性或保密性。
此外,順序安全檢查與在執(zhí)行前的批量安全檢查相比允許可能的開銷 被更有效地分散。而且,安全檢查僅針對要實際執(zhí)行的代碼,所以可將由 于安全檢查造成的系統(tǒng)負載減小到最低。
此外,可實現(xiàn)本發(fā)明的實施例而不必修改OS內(nèi)核,這減少了引入程 序缺陷的風(fēng)險。另外,因為程序111以本地代碼形式執(zhí)行,應(yīng)用執(zhí)行的性 能是足夠高的,而不管本地指令處理器106或動態(tài)編譯器107造成的系統(tǒng)負載。此外,因為本發(fā)明的基本體系結(jié)構(gòu)是獨立于操作系統(tǒng)或CPU的,因 此本發(fā)明的實施例可應(yīng)用于多種平臺。
已為示出和描述目的給出了對本發(fā)明的優(yōu)選實施例的前述描述。它不 旨在是窮盡的或?qū)⒈景l(fā)明限于所公開的精確形式。根據(jù)上面的教導(dǎo)許多修 改和變化是可能的。例如,還可能由本地處理器106解釋和執(zhí)行本地指
令,并且省略動態(tài)編譯器。另外,緩存和重用由動態(tài)編譯器107生成的安 全本地指令109是可能的。此外,當(dāng)安全地執(zhí)行安全檢査至少一次時,可 能修改以向指令添加刪除/簡化等,以執(zhí)行安全檢查。可保存修改的安全本 地指令109。作為候選,可由CPU 101原樣執(zhí)行應(yīng)用111的本地指令。
此外,除了確認應(yīng)用權(quán)限的功能之外,通過應(yīng)用控制資源使用的功能 可被提供給安全管理器105。因此,當(dāng)要對由在嵌入式系統(tǒng)中共享資源造 成的問題進行仲裁時(即,當(dāng)多個應(yīng)用同時使用相同的資源時),根據(jù)每 個應(yīng)用的目的和系統(tǒng)的設(shè)置實現(xiàn)分配資源使用的權(quán)限。
而且,如圖IOA中所示,除了檢查應(yīng)用權(quán)限的功能,可能設(shè)置功能以 控制安全管理器105中應(yīng)用的資源使用。這允許當(dāng)多個應(yīng)用同時試圖使用 相同資源時,根據(jù)應(yīng)用屬性或系統(tǒng)設(shè)置來分配資源的用戶權(quán)限。尤其是, 所謂的資源調(diào)節(jié)在嵌入式系統(tǒng)中的資源共享中成為了問題。通過使用多任 務(wù)方法,你能有效地開發(fā)復(fù)雜的嵌入式系統(tǒng)以運行多個應(yīng)用。參考圖 IOB,可能設(shè)置設(shè)備診斷系統(tǒng),其中操作者可分析什么用戶操作實際上造 成了系統(tǒng)崩潰。登錄(logging)將允許用戶發(fā)現(xiàn)遞送了哪個系統(tǒng)調(diào)用命令 造成了對內(nèi)核的損害。另外,參考圖IOC,還可能由可接收設(shè)置的用于家 電的家庭網(wǎng)關(guān)實現(xiàn)安全控制系統(tǒng),例如恒溫器1008、微波1010、智能廚 房系統(tǒng)1012和淋浴裝置1014。
本領(lǐng)域技術(shù)人員將認識到,可視情況使用硬件、軟件、固件或其組合 來實現(xiàn)各種實施例的操作。例如,可使用處理器或其它數(shù)字電路在軟件、 固件或硬布線邏輯的控制下執(zhí)行某些處理。(這里的術(shù)語"邏輯"指固定 硬件、可編程邏輯和/或其適當(dāng)組合,如本領(lǐng)域技術(shù)人員將會認識到以執(zhí)行 所述功能的。)軟件和固件可存儲在計算機可讀媒體上。某些其它處理可 使用模擬電路實現(xiàn),如本領(lǐng)域技術(shù)人員所眾所周知的。另外,存儲器或其它存儲裝置,以及通信組件,可在本發(fā)明的實施例中使用。
圖11示出了可用于執(zhí)行本發(fā)明實施例中的處理功能的通常計算系統(tǒng) 1100。相關(guān)領(lǐng)域技術(shù)人員還將認識到如何使用其它計算機系統(tǒng)或體系結(jié)構(gòu) 實現(xiàn)本發(fā)明。計算系統(tǒng)1100例如可表示桌面、膝上型或筆記本計算機、
手持計算設(shè)備(PDA、移動電話、掌上型電腦等)、主機、超級計算機、
服務(wù)器、客戶端或任何其它類型的嵌入式系統(tǒng)或通用計算設(shè)備,如對于給
定應(yīng)用或環(huán)境是可期望的或適合的。計算系統(tǒng)1100可包括一個或多個處 理器,例如處理器1104,其可以是CPU。處理器1104可使用通用或?qū)S?處理引擎,例如微處理器、控制器或其它控制邏輯來實現(xiàn)。在該示例中, 處理器1104連接到總線1102或其它通信介質(zhì)。
計算系統(tǒng)1100還可包括主存儲器1108,優(yōu)選為隨機訪問存儲器
(RAM)或其它動態(tài)存儲器,用于存儲信息和要由處理器1104執(zhí)行的指 令。主存儲器1108還可用于存儲在執(zhí)行要由處理器1104執(zhí)行的指令期間 的臨時變量或其它中間信息。計算系統(tǒng)1100可同樣包括只讀存儲器
("ROM")或其它連接到總線1102的靜態(tài)存儲設(shè)備,用于存儲用于處 理器1104的靜態(tài)信息和指令。
計算設(shè)備1100還可包括信息存儲機構(gòu)1110,其例如可包括媒體驅(qū)動 器1112和可移除存儲接口 1120。媒體驅(qū)動器1112可包括支持固定或可移 除存儲媒體的驅(qū)動器或其它機構(gòu),例如硬盤驅(qū)動器、軟盤驅(qū)動器、磁帶驅(qū) 動器、光盤驅(qū)動器、CD或DVD驅(qū)動器(R或RW)或其它可移除或固定 媒體驅(qū)動器。存儲媒體1118例如可包括硬盤、軟盤、磁帶、光盤、CD或 DVD或由媒體驅(qū)動器1114讀和寫的其它固定或可移除介質(zhì)。如這些示例 所示,存儲媒體1118可包括其中存儲有特定計算機軟件或數(shù)據(jù)的計算機 可讀存儲介質(zhì)。
在候選實施例中,信息存儲機構(gòu)1110可包括其它類似的工具,用于 允許計算機程序或其它指令或數(shù)據(jù)加載到計算系統(tǒng)1100內(nèi)。這些工具例 如可包括可移除存儲單元1122和接口 1120,例如程序模塊和模塊接口、 可移除存儲器(例如閃存或其他可移除存儲模塊)和存儲器插槽、以及允 許軟件和數(shù)據(jù)從可移除存儲單元1118傳送到計算設(shè)備1100的其它可移除
15存儲單元1122和接口 1120。
計算系統(tǒng)1100還可包括通信接口 1124。通信接口 1124可用于允許軟 件和數(shù)據(jù)在計算系統(tǒng)1100和外部設(shè)備之間傳送。通信接口 1124的示例可 包括調(diào)制解調(diào)器、網(wǎng)絡(luò)接口 (例如以太網(wǎng)或其它NIC卡)、通信端口 (例 如USB端口) 、 PCMCIA插槽和卡等。經(jīng)由通信接口 1124傳送的軟件和 數(shù)據(jù)處于信號的形式,其可以是能夠由通信接口 1124接收的電、電磁、 光或其它信號。這些信號經(jīng)由通道1128提供到通信接口 1124。該通道 1128可運送信號并且可使用無線介質(zhì)、有線或線纜、光纖或其它通信介質(zhì) 來實現(xiàn)。通道的某些示例包括電話線、移動電話連接、RF連接、網(wǎng)絡(luò)接 口、局域或廣域網(wǎng)和其它通信通道。
在本文檔中,術(shù)語"計算機程序產(chǎn)品"和"計算機可讀介質(zhì)"可一般 地使用以指代媒體,例如存儲器1108、存儲設(shè)備1118、存儲單元1122或 通道1128上的信號。這些和其它形式的計算機可讀媒體可涉及將一個或 多個指令的一個或多個序列提供到處理器1104用于執(zhí)行。這些指令,通 常稱為"計算機程序代碼"(其可以計算機程序或其它分組的形式成 組),當(dāng)執(zhí)行時,使得計算系統(tǒng)1100能夠完成本發(fā)明實施例的特征或功 能。這些指令可包括在用于在計算機系統(tǒng)1100中執(zhí)行的應(yīng)用中。
在其中使用軟件實現(xiàn)元素的實施例中,軟件可例如使用可移除存儲驅(qū) 動器1114、驅(qū)動器1112或通信接口 1124存儲在計算機可讀介質(zhì)中并且加 載到計算系統(tǒng)1100內(nèi)??刂七壿?在本示例中,軟件指令或計算機程序 代碼)當(dāng)由處理器1104執(zhí)行時,使得處理器1104執(zhí)行如這里所述的本發(fā) 明的功能。
將會理解,為了清楚的目的,上面的描述已參考不同的功能單元和處 理器描述了本發(fā)明的實施例。然而,明顯的是,可使用不同功能單元、處 理器或區(qū)域之間的任何合適的功能分布,不會從本發(fā)明轉(zhuǎn)移。例如,示出 為由分離的處理器或控制器執(zhí)行的功能可由相同處理器或控制器執(zhí)行。因 此,對特定功能單元的引用僅僅視為對用于提供所述功能的合適裝置的引 用,而不是表示嚴格的邏輯或物理結(jié)構(gòu)或組織。
盡管己結(jié)合某些實施例描述了本發(fā)明,它不旨在限于這里闡述的精確形式。而是,本發(fā)明的范圍僅由權(quán)利要求限制。另外,盡管特征可表現(xiàn)為 結(jié)合特定實施例來描述,本領(lǐng)域技術(shù)人員將會意識到,可根據(jù)本發(fā)明組合 所述實施例的各種特征。
此外,盡管被單獨地列出,多個裝置、元素或方法步驟可例如由單個 單元或處理器實現(xiàn)。另外,盡管單獨的特征可包括在不同權(quán)利要求中,這 些可能是有利于組合的,并且不同權(quán)利要求中的包含不意味著特征的組合 不是可行的和/或有利的。而且,在一類權(quán)利要求中的特征的包含不意味著 對于該種類的限制,而是特征可視情況等同地應(yīng)用于其它權(quán)利要求種類。
權(quán)利要求
1.一種計算機實現(xiàn)的方法,用于利用用戶空間中的用戶空間虛擬化程序來控制系統(tǒng)資源和系統(tǒng)安全性,所述方法包括取回應(yīng)用的本地代碼;根據(jù)所述本地代碼識別指令序列,其中識別所述指令序列包括(1)如果執(zhí)行用于執(zhí)行處理的所述指令序列是可能的安全風(fēng)險,那么確認存在用于所述應(yīng)用的執(zhí)行權(quán)限;(1-1)如果所述應(yīng)用具有用于處理的所述執(zhí)行權(quán)限,那么用處理器執(zhí)行所述指令序列;(1-2)如果所述應(yīng)用沒有用于處理的執(zhí)行權(quán)限,那么不執(zhí)行所述指令序列;和(2)如果執(zhí)行用于執(zhí)行處理的所述指令序列不是可能的安全風(fēng)險,那么用所述處理器執(zhí)行所述指令序列。
2. 根據(jù)權(quán)利要求l所述的方法,其中(1-2)還包括以下(1-3):如果所述應(yīng)用沒有用于處理的執(zhí)行權(quán)限,那么提供錯誤指示。
3. 根據(jù)權(quán)利要求1所述的方法,其中確認存在用于所述應(yīng)用的執(zhí)行 權(quán)限包括將安全檢查指令添加到所述指令序列以生成安全指令序列。
4. 根據(jù)權(quán)利要求3所述的方法,其中所述安全指令序列在用戶空間 中執(zhí)行。
5. 根據(jù)權(quán)利要求3所述的方法,其中所述安全指令序列啟動對所述 應(yīng)用的執(zhí)行權(quán)限的確認。
6. 根據(jù)權(quán)利要求1所述的方法,其中用于所述應(yīng)用的執(zhí)行權(quán)限由所 述安全管理器確認。
7. 根據(jù)權(quán)利要求1所述的方法,其中用于所述應(yīng)用的執(zhí)行權(quán)限由所 述處理器確認。
8. 根據(jù)權(quán)利要求l所述的方法,還包括從應(yīng)用的所述本地代碼中檢測用于執(zhí)行與安全性相關(guān)聯(lián)的處理的指令 序列;在根據(jù)所檢測到的指令序列的本地代碼確認存在所述活動應(yīng)用的執(zhí)行 權(quán)限之后,生成執(zhí)行與安全性相關(guān)聯(lián)的處理的所述指令序列的本地代碼; 禾口用所述處理器執(zhí)行所生成的代碼。
9. 根據(jù)權(quán)利要求8所述的方法,其中檢測所述指令序列包括檢査用 于所述指令序列注冊的安全配置文件。
10. —種用指令編碼的計算機可讀介質(zhì),所述指令通過用計算機執(zhí)行 而用于執(zhí)行用于利用用戶空間中的用戶空間虛擬化程序的方法,所述方法包括取回應(yīng)用的本地代碼;根據(jù)所述本地代碼識別指令序列,其中識別所述指令序列包括(1) :如果執(zhí)行用于執(zhí)行處理的所述指令序列是可能的安全風(fēng)險, 那么確認存在用于所述應(yīng)用的執(zhí)行權(quán)限;(1-1):如果所述應(yīng)用具有用于處理的所述執(zhí)行權(quán)限,那么用處理器 執(zhí)行所述指令序列;(1-2):如果所述應(yīng)用沒有用于處理的執(zhí)行權(quán)限,那么不執(zhí)行所述指 令序列;和(2) :如果執(zhí)行用于執(zhí)行處理的所述指令序列不是可能的安全風(fēng) 險,那么用所述處理器執(zhí)行所述指令序列。
11. 根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì),其中所述(1-2)還包 括以下(1-3):如果所述應(yīng)用沒有用于處理的執(zhí)行權(quán)限,那么提供錯誤指
12. 根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì),其中確認存在用于所 述應(yīng)用的執(zhí)行權(quán)限包括將安全檢查指令添加到所述指令序列以生成安全指 令序列。
13. 根據(jù)權(quán)利要求12所述的計算機可讀介質(zhì),其中所述安全指令序 列在用戶空間中執(zhí)行。
14. 根據(jù)權(quán)利要求12所述的計算機可讀介質(zhì),其中所述安全指令序 列啟動對所述應(yīng)用的執(zhí)行權(quán)限的確認。
15. 根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì),其中用于所述應(yīng)用的 執(zhí)行權(quán)限由所述安全管理器確認。
16. 根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì),其中用于所述應(yīng)用的 執(zhí)行權(quán)限由所述處理器確認。
17. 根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì),其中所述方法還包括從應(yīng)用的所述本地代碼中檢測用于執(zhí)行與安全性相關(guān)聯(lián)的處理的指令序列;在根據(jù)所檢測到的指令序列的本地代碼確認存在所述活動應(yīng)用的執(zhí)行權(quán)限之后,生成執(zhí)行與安全性相關(guān)聯(lián)的處理的所述指令序列的本地代碼;和用所述處理器執(zhí)行所生成的代碼。
18. 根據(jù)權(quán)利要求17所述的計算機可讀介質(zhì),其中檢測所述指令序列包括檢査用于所述指令序列注冊的安全配置文件。
19. 一種用于利用用戶空間中的用戶空間虛擬化程序控制系統(tǒng)資源和系統(tǒng)安全性的裝置,所述裝置包括本地指令處理器,用于取回應(yīng)用的本地代碼并且根據(jù)關(guān)聯(lián)于安全性的所述本地代碼識別指令序列;動態(tài)編譯器,用于確定執(zhí)行用于執(zhí)行處理的所述指令序列是否為可能 的安全風(fēng)險;安全管理器,用于確定所述應(yīng)用是否具有用于執(zhí)行指令序列的權(quán)限;和處理器,用于執(zhí)行所述指令序列。
20. 根據(jù)權(quán)利要求19所述的裝置,其中所述動態(tài)編譯器還可操作用 于生成執(zhí)行所述處理的安全指令序列。
21. 根據(jù)權(quán)利要求19所述的裝置,其中所述動態(tài)編譯器還可操作用 于啟動對具有所述安全指令序列的所述應(yīng)用的執(zhí)行權(quán)限的確認。
22. 根據(jù)權(quán)利要求19所述的裝置,其中識別關(guān)聯(lián)于安全性的指令序 列包括檢查用于所述指令序列注冊的安全配置文件。
全文摘要
提供了用戶空間虛擬化(USV)程序以允許嵌入式系統(tǒng)中的遺產(chǎn)應(yīng)用共享資源而不必修改,不會損害安全性。計算機實現(xiàn)的USV程序可以用戶空間中的方法為特征,所述方法包括取回應(yīng)用的本地代碼(ST101),并且識別指令序列。此外,識別指令序列包括首先確定執(zhí)行用于執(zhí)行處理的指令序列是否可能為安全風(fēng)險(ST102)。如果它是可能的安全風(fēng)險,那么確認存在用于活動應(yīng)用的執(zhí)行權(quán)限。執(zhí)行權(quán)限可由安全管理器或處理器確認(ST104)。如果安全管理器確認活動應(yīng)用具有用于處理的執(zhí)行權(quán)限,那么用處理器執(zhí)行指令序列(ST103)。如果活動應(yīng)用沒有用于處理的執(zhí)行權(quán)限,那么不執(zhí)行指令序列(ST108)。另一方面,如果執(zhí)行用于執(zhí)行處理的指令序列不是可能的安全風(fēng)險,那么用處理器執(zhí)行指令序列(ST107)。
文檔編號G06F15/00GK101578589SQ200780035408
公開日2009年11月11日 申請日期2007年7月24日 優(yōu)先權(quán)日2006年7月24日
發(fā)明者艾奧伊·拉姆, 門真淳一 申請人:阿普里克斯公司