專利名稱:防御不友好代碼而對(duì)計(jì)算機(jī)程序和數(shù)據(jù)進(jìn)行保護(hù)的方法
技本領(lǐng)域本發(fā)明涉及一種保護(hù)計(jì)算機(jī)數(shù)據(jù)和程序的方法,更為概要地說,涉及計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)的安全性。本發(fā)明有助于防止由惡意代碼攻擊引起的數(shù)據(jù)破壞和丟失的發(fā)生。
我們將經(jīng)過設(shè)計(jì)或改動(dòng)、用于有意識(shí)地從計(jì)算機(jī)系統(tǒng)或者網(wǎng)絡(luò)上破壞或偷竊其上運(yùn)行的數(shù)據(jù)或程序的任何代碼稱為“惡意”或“不友好”代碼。由于除了可知曉代碼對(duì)于用戶最終是否有益之外,沒有辦法在程序上識(shí)別正面和負(fù)面的程序作用,因此防止不友好代碼是一個(gè)具有挑戰(zhàn)性的問題。例如一個(gè)程序可以刪除一個(gè)文件,因?yàn)橛脩裘鞔_地要求該程序如此運(yùn)行,但是一個(gè)惡意程序也可以違反用戶的意志而刪除一個(gè)文件。換句話講對(duì)“惡意”代碼或“不友好”代碼沒有恰當(dāng)?shù)募夹g(shù)規(guī)定——上述“惡意”代碼是根據(jù)其在計(jì)算機(jī)上的預(yù)期行為而由其合法用戶確定的。
雖然有可能利用密碼來確認(rèn)被授權(quán)的用戶,但置信用戶自己也可能無意中運(yùn)行了包含惡意指令如“病毒”的程序而危及系統(tǒng)和網(wǎng)絡(luò)的安全性能,上述病毒如為“特洛伊木馬程序”、“惡意宏病毒”、“惡意腳本病毒”、“蠕蟲病毒”、“偵探程序”和“后門”。一個(gè)計(jì)算機(jī)病毒是一個(gè)通過將其自身附加在其它程序上而進(jìn)行復(fù)制的程序。一個(gè)特洛伊木馬程序是一個(gè)通常不執(zhí)行用戶期望要進(jìn)行的程序,而是執(zhí)行惡意的操作如數(shù)據(jù)破壞或者系統(tǒng)惡化。宏和腳本是用高級(jí)語言編寫成的程序,它們可由應(yīng)用程序如字處理程序進(jìn)行解釋并加以執(zhí)行,以便能使頻繁的任務(wù)自動(dòng)執(zhí)行。因?yàn)樵S多宏和腳本語言極少需要或者完全不需要用戶的交互作用,惡意宏病毒和腳本病毒經(jīng)常被用來在沒有得到用戶許可的情況下將病毒或者特洛伊木馬程序引入到系統(tǒng)中。蠕蟲是一個(gè)程序,它像一個(gè)病毒一樣可以自己擴(kuò)散。但與病毒不同,蠕蟲不會(huì)感染其它寄主程序而是通過網(wǎng)絡(luò)手段如電子郵件將其自己傳送給其它用戶。偵探程序是特洛伊木馬程序的一個(gè)子類型,其可被秘密地安裝在一個(gè)受害的計(jì)算機(jī)上從而將機(jī)密數(shù)據(jù)和密碼由該計(jì)算機(jī)傳送給放置該病毒的人。后門是一個(gè)秘密功能,附加到程序上從而允許該程序的作者闖入或?qū)ζ錇E用,或者一般來說為其自身利益而利用該功能。
所有上面的程序都無視用戶的意志,可通過破壞數(shù)據(jù)、從一個(gè)文件傳播到另一個(gè)文件或者將秘密數(shù)據(jù)傳送給非授權(quán)人而危及計(jì)算機(jī)系統(tǒng)和公司的機(jī)密性。
多年來,產(chǎn)生了不同的技術(shù)來防止惡意程序從而對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行保護(hù)特征掃描程序通過使用一個(gè)預(yù)規(guī)定的“公知病毒”清單來檢測(cè)病毒。他們對(duì)每一個(gè)文件進(jìn)行掃描來尋找列在其公知病毒數(shù)據(jù)庫之內(nèi)的每一個(gè)病毒特征。每當(dāng)在世界上任何地方發(fā)現(xiàn)一個(gè)新病毒時(shí),都將該病毒添加到數(shù)據(jù)庫中。然而目前每一天都要產(chǎn)生越來越多的新病毒,為了使公知病毒清單有效要不斷地對(duì)其進(jìn)行更新。定期升級(jí)反病毒軟件對(duì)于單用戶和網(wǎng)絡(luò)管理員都是一個(gè)沉重的負(fù)擔(dān),并且在軟件升級(jí)之間留下了重要的安全空缺。
另一種通常被稱為試探式掃描的檢測(cè)方法包括對(duì)程序進(jìn)行掃描來找出可疑指令,上述可疑指令為惡意程序和特定的病毒的典型,而無須為了在文件中檢測(cè)到病毒而擁有每一個(gè)病毒的精確的特征。然而惡意程序的作者可以通過不同方式書寫代碼和/或?qū)ζ溥M(jìn)行加密而避免或隱藏這些典型指令,這樣很快即可避免惡意代碼和病毒為試探式掃描程序所檢測(cè)到。
Mann的美國(guó)專利US5408642和美國(guó)專利US5349655以及Kephart等人的美國(guó)專利US5613002中都公開了用于恢復(fù)受病毒感染的計(jì)算機(jī)程序的方法。所公開的這些方法包括在受到病毒感染之前生成一個(gè)數(shù)據(jù)指紋并將該指紋進(jìn)行存儲(chǔ)。然后生成第二個(gè)數(shù)據(jù)指紋并將其與在前數(shù)據(jù)串進(jìn)行比較,從而確定出該數(shù)據(jù)是否被病毒破壞并將數(shù)據(jù)恢復(fù)到其初始狀態(tài)。這些技術(shù)不能防止病毒感染,而且它們不能防御其它類型的惡意程序。
本人的美國(guó)專利US6073239公開了一種方法,其中對(duì)文件的I/O活動(dòng)進(jìn)行過濾。每當(dāng)一個(gè)程序試圖感染或者將代碼引入到另一個(gè)程序文件中時(shí),都將對(duì)其加以拒絕。然而該方法僅被設(shè)計(jì)成適合于防御可執(zhí)行文件型的病毒。它不對(duì)其它類型的病毒如宏病毒以及其它類型的惡意程序如蠕蟲程序、特洛伊木馬程序、后門或偵探軟件起作用,因?yàn)檫@些惡意程序既不引入代碼也不修改其它程序,而是直接進(jìn)行惡意動(dòng)作如破壞數(shù)據(jù)。
Jablon等人的美國(guó)專利US5421006公開了一種在系統(tǒng)初始化階段評(píng)定計(jì)算機(jī)系統(tǒng)軟件完整性的方法。在允許其執(zhí)行之前對(duì)啟動(dòng)進(jìn)程加以校驗(yàn)。然而該方法既不能防止受保護(hù)的進(jìn)程在最初即被破壞,它也不能處理數(shù)據(jù)和程序——除非它們與系統(tǒng)啟動(dòng)相關(guān)。
其它安全性方法要點(diǎn)在于確保得到授權(quán)的程序運(yùn)行而阻止所有其它未經(jīng)授權(quán)的程序。然而遺憾的是這些技術(shù)并非總是適合于開放系統(tǒng),在這種開放系統(tǒng)中用戶會(huì)接收和交換許多文件。
一種通用的安全系統(tǒng)要點(diǎn)在于建立訪問控制清單(即ACL、DACL),上述訪問控制清單規(guī)定了限制和權(quán)限,從而根據(jù)這些用戶的權(quán)限而允許用戶訪問或者不允許訪問某些特定資源。例如通常允許系統(tǒng)管理員修改任何文件而同時(shí)一般用戶既不能閱讀也不能修改某些機(jī)密或關(guān)鍵性文件。上述安全系統(tǒng)通常被集成到現(xiàn)代的操作系統(tǒng)中從而可確保單用戶基礎(chǔ)(per-user basis)上的數(shù)據(jù)的安全性和機(jī)密性。然而重要的是區(qū)分并理解,該安全配置是被設(shè)計(jì)來處理用戶信用的問題,而不是代碼信用的問題。在其系統(tǒng)之內(nèi)運(yùn)行惡意程序的用戶會(huì)在無意中損害各資源和文件的完整性,而他們被允許訪問這些資源和文件并無進(jìn)一步保護(hù)措施。例如我們說用戶X被賦予了訪問共享文件A、B和C的全權(quán)。如果該用戶運(yùn)行了一個(gè)受病毒感染的程序,病毒將可以閱讀、感染甚至破壞文件A、B和C。這是由于事實(shí)上訪問控制清單即如此設(shè)計(jì),使得程序和任務(wù)運(yùn)行于啟動(dòng)它們的用戶的安全環(huán)境(securitycontext)中。這樣即使用戶實(shí)際不想危害文件A、B、C,然而根據(jù)用戶的權(quán)限,他所運(yùn)行的程序確實(shí)對(duì)這些文件造成了危害——無論該用戶意愿如何。這就是惡意代碼問題的核心。如果一個(gè)用戶運(yùn)行了不友好代碼,該代碼將可以破壞和偷竊其用戶訪問的系統(tǒng)或網(wǎng)絡(luò)之內(nèi)的任何數(shù)據(jù)。如果系統(tǒng)管理員運(yùn)行了一個(gè)不友好代碼,整個(gè)系統(tǒng)和網(wǎng)絡(luò)將會(huì)立即遇到危險(xiǎn)。除了這些安全性問題外,訪問控制清單是為每一個(gè)文件和資源靜態(tài)確定的。在文件每天都被共享和交換的環(huán)境中,由于用戶通常不會(huì)花時(shí)間為每一個(gè)產(chǎn)生或接收的新文件分配權(quán)限安全屬性,這樣就不會(huì)具有防御惡意代碼的足夠的安全性能。這樣的系統(tǒng)公開于以下文獻(xiàn)中歐洲專利EP-A-0 472 487或者《計(jì)算機(jī)通訊》雜志第13卷第9期第571-580頁(Computer Communication vol.13 no.9 pp.571-580)J.Moffett等人所著論文《確認(rèn)分布式系統(tǒng)的任意訪問控制的策略》(Specifying Discretionary Access Control Policy for DistributedSystem)。
“沙箱”技術(shù)能對(duì)可疑程序進(jìn)行測(cè)試,它是使這些可疑程序安全地運(yùn)行在一個(gè)安全的“沙箱”環(huán)境中而不會(huì)使被測(cè)試的程序?qū)ο到y(tǒng)或其文件造成危害。然而因?yàn)槔邕@些程序偵測(cè)到他們正在被測(cè)試或者它們被設(shè)計(jì)成隨機(jī)的或在某些日期執(zhí)行攻擊性活動(dòng),所以在測(cè)試期間這些惡意程序可能不會(huì)立即執(zhí)行攻擊性或者期望的活動(dòng)。因此在測(cè)試期間一個(gè)程序看起來運(yùn)行正常,但是一旦它通過測(cè)試并允許進(jìn)行實(shí)際的運(yùn)行,該程序可能會(huì)對(duì)系統(tǒng)造成危害。而且由于正面程序(positiveprogram)也許基于正當(dāng)?shù)脑蚨枰L問系統(tǒng)內(nèi)的文件和資源,因此正面程序可能在沙箱中表現(xiàn)不正常或完全不能運(yùn)行。
Chambers的美國(guó)專利US5398196公開了一種在虛擬處理器中模仿程序運(yùn)行的方法,并同時(shí)搜索病毒的行為特征。該方法的缺點(diǎn)與上述的各種方法的缺點(diǎn)是一樣的。
根據(jù)一個(gè)進(jìn)程對(duì)一個(gè)客體或第二個(gè)進(jìn)程的操作,將該進(jìn)程的一個(gè)置信組與該客體的一個(gè)置信組或者與該第二進(jìn)程的置信組相比較;根據(jù)所述比較步驟的結(jié)果確定是否允許進(jìn)行該項(xiàng)操作。
在一個(gè)實(shí)施例中,一旦產(chǎn)生了一個(gè)進(jìn)程,該進(jìn)程即被分配到置信組,而上述置信組是被分配到產(chǎn)生上述進(jìn)程的被動(dòng)代碼(passive code)中去的。在所述運(yùn)行之后也提供了一個(gè)改變進(jìn)程和/或客體的置信組的步驟。因此一個(gè)解決方案是當(dāng)允許進(jìn)行操作時(shí),將進(jìn)程分配到客體或第二進(jìn)程的置信組中。
該進(jìn)程可進(jìn)一步包括當(dāng)一個(gè)進(jìn)程產(chǎn)生了一個(gè)客體時(shí),即將所述產(chǎn)生的客體分配到所述進(jìn)程的置信組中的步驟。
在一個(gè)優(yōu)選實(shí)施例中,置信組是分層有序的并且允許步驟包括當(dāng)所述進(jìn)程的置信組在所述分層結(jié)構(gòu)中高于或等于所述客體或所述第二進(jìn)程的置信組時(shí),允許進(jìn)行所述操作,當(dāng)所述進(jìn)程的置信組在所述分層結(jié)構(gòu)中低于所述客體或第二進(jìn)程的置信組時(shí),拒絕所述操作。
在操作得到允許之后,還可以提供將進(jìn)程分配到一個(gè)客體的置信組或第二進(jìn)程的置信組中的步驟。
也可以規(guī)定至少兩種類型的客體,客體被分配到所述類型中的一個(gè)中;然后根據(jù)所述進(jìn)程的類型,允許實(shí)施在一個(gè)客體上進(jìn)行的操作的步驟。也可以規(guī)定至少兩種類型的操作;根據(jù)所述進(jìn)程的類型,允許實(shí)施在一個(gè)進(jìn)程上進(jìn)行的操作的步驟。也可以規(guī)定至少兩種類型的操作;然后根據(jù)所述操作的類型,允許實(shí)施在一個(gè)客體上進(jìn)行的操作的步驟。進(jìn)一步而言也可以規(guī)定至少兩種類型的存儲(chǔ)方法并將一個(gè)置信組分配到一種類型的存儲(chǔ)方法中;然后根據(jù)被分配到所述進(jìn)程的置信組的存儲(chǔ)方法,實(shí)施一個(gè)置信組的進(jìn)程的存儲(chǔ)操作。
本發(fā)明進(jìn)一步提供了一個(gè)計(jì)算機(jī),包括客體和進(jìn)程;至少兩個(gè)置信組的一個(gè)表,該計(jì)算機(jī)內(nèi)的客體和進(jìn)程被分配到所述置信組中的一個(gè)中而不考慮所述計(jì)算機(jī)用戶的權(quán)限;一個(gè)控制器,根據(jù)所述進(jìn)程的置信組與所述客體或所述第二進(jìn)程的置信組的結(jié)果,該控制器可訪問所述表并允許進(jìn)程在一個(gè)客體或一個(gè)第二進(jìn)程上進(jìn)行一個(gè)操作。
該計(jì)算機(jī)進(jìn)一步包括具有至少兩種類型客體的一個(gè)類型表,該計(jì)算機(jī)中的客體被指定為一種類型;在這一實(shí)例中,該控制器訪問所述表格從而確定是否允許進(jìn)行一個(gè)操作。該置信組的表優(yōu)選地被存儲(chǔ)在一個(gè)非易失的存儲(chǔ)器中,該類型表也被存儲(chǔ)在一個(gè)非易失存儲(chǔ)器中。
該計(jì)算機(jī)還可包括一個(gè)規(guī)則表;于是該控制器訪問該規(guī)則表格來確定是否允許進(jìn)行所述操作。非常便利的是該規(guī)則表被存儲(chǔ)在一個(gè)非易失存儲(chǔ)器中。
最后本發(fā)明提供了一種計(jì)算機(jī)網(wǎng)絡(luò),該計(jì)算機(jī)網(wǎng)絡(luò)包括一個(gè)服務(wù)器和至少一個(gè)這樣的計(jì)算機(jī);然后將置信組表存儲(chǔ)在所述服務(wù)器之內(nèi)。本發(fā)明還提供了一種計(jì)算機(jī)網(wǎng)絡(luò),該計(jì)算機(jī)網(wǎng)絡(luò)包括一個(gè)服務(wù)器和至少一個(gè)這樣的計(jì)算機(jī),然后將類型表存儲(chǔ)在所述服務(wù)器之內(nèi)。本發(fā)明還提供了一種計(jì)算機(jī)網(wǎng)絡(luò),該計(jì)算機(jī)網(wǎng)絡(luò)包括一個(gè)服務(wù)器和至少一個(gè)這樣的計(jì)算機(jī);然后將規(guī)則表存儲(chǔ)在服務(wù)器之內(nèi)。
具體實(shí)施例方式
本發(fā)明是基于這樣的認(rèn)識(shí)不友好程序違反用戶意志的作用是由于程序是利用了與執(zhí)行該程序的用戶相同的訪問特權(quán)來運(yùn)行的。這樣用戶可訪問的任何客體對(duì)于該用戶運(yùn)行的程序而言也是可訪問的一因此在用戶有意或無意中運(yùn)行了這樣的程序,該不友好程序即可對(duì)上述客體進(jìn)行訪問。
因此本發(fā)明建議規(guī)定置信組并將計(jì)算機(jī)中的客體分配到置信組中的一個(gè)內(nèi)。然后根據(jù)進(jìn)程的置信組與該進(jìn)程在其上進(jìn)行操作的客體的置信組的比較結(jié)果,允許或者不允許一個(gè)進(jìn)程在一個(gè)客體上進(jìn)行的任何操作。
本發(fā)明的方法不同于上面討論的所有的現(xiàn)有技術(shù)。本發(fā)明不需要對(duì)文件或程序進(jìn)行掃描來檢測(cè)公知的特征;進(jìn)程的操作與用戶無關(guān)本發(fā)明將置信值分配給計(jì)算機(jī)中的程序和客體,而不是將權(quán)限分配給用戶并使該用戶進(jìn)行任何操作。
在一個(gè)計(jì)算機(jī)中,我們將計(jì)算機(jī)處理器可以解釋或執(zhí)行的任何指令集稱為“代碼”或“程序”。當(dāng)將代碼被動(dòng)地存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中而沒有被執(zhí)行時(shí),我們將其稱之“被動(dòng)代碼”。當(dāng)代碼在存儲(chǔ)器中運(yùn)行時(shí),這是一個(gè)“進(jìn)程”。將一個(gè)程序從存儲(chǔ)介質(zhì)調(diào)入到存儲(chǔ)器(如RAM)中的過程被稱為“執(zhí)行”,其中上述程序作為被動(dòng)代碼而被存儲(chǔ)在上述存儲(chǔ)介質(zhì)內(nèi),上述程序作為一個(gè)主動(dòng)進(jìn)程(active process)而在上述存儲(chǔ)器中運(yùn)行。
圖1展示了代碼執(zhí)行機(jī)制的一個(gè)例子此處被稱為“WORD.EXE”的一個(gè)文件2代表了被動(dòng)代碼;該文件被存儲(chǔ)在計(jì)算機(jī)地存儲(chǔ)設(shè)備如一個(gè)硬盤中。當(dāng)計(jì)算機(jī)指示對(duì)其進(jìn)行執(zhí)行時(shí),操作系統(tǒng)(OS)將該文件的一個(gè)映象拷貝到存儲(chǔ)器(RAM)中并由此處對(duì)其進(jìn)行運(yùn)行。在此階段,由于“WORD”正在運(yùn)行,所以它是一個(gè)進(jìn)程4。注意雖然文件“WORD.EXE”和在存儲(chǔ)器中的進(jìn)程“WORD”可具有相似的內(nèi)容(因?yàn)橐粋€(gè)是最初由另一個(gè)復(fù)制而來的),然而它們也是兩個(gè)不同的實(shí)體可對(duì)一個(gè)進(jìn)行修改而對(duì)另一個(gè)無影響。另外,計(jì)算機(jī)用戶可以多次執(zhí)行“WORD.EXE”并具有同時(shí)運(yùn)行但相互獨(dú)立的多個(gè)不同的“WORD”進(jìn)程。此外進(jìn)程可以執(zhí)行被動(dòng)代碼并由此產(chǎn)生其它進(jìn)程。如果一個(gè)進(jìn)程A產(chǎn)生了一個(gè)進(jìn)程B,進(jìn)程A被稱為“父進(jìn)程”,進(jìn)程B被稱為“子進(jìn)程”。
我們將需要由本發(fā)明進(jìn)行保護(hù)或包含了可由操作系統(tǒng)或任何進(jìn)程解釋的代碼的任何文件、被動(dòng)代碼、文檔、腳本、宏、進(jìn)程、注冊(cè)碼或其它系統(tǒng)客體稱為“客體”。因?yàn)榘a的客體可以被執(zhí)行并被用于不友好目的,所以優(yōu)選地對(duì)其進(jìn)行保護(hù)。
如此規(guī)定進(jìn)程和客體情況下,進(jìn)程建議規(guī)定置信組并將客體和進(jìn)程分配到置信組中的一個(gè)之內(nèi);因此一個(gè)置信組就是進(jìn)程和客體的一個(gè)集合;下面討論將客體和進(jìn)程分配給置信組的方式;需注意的是置信組是獨(dú)立于計(jì)算機(jī)用戶的權(quán)限的。換句話講,置信組與現(xiàn)有技術(shù)中規(guī)定的權(quán)限是不同的。
為了便利起見,置信組可以簡(jiǎn)單地由一個(gè)為置信組的所有元素所共有的置信值所代表。該置信值可表示為一個(gè)數(shù)值或者以任何其它表現(xiàn)方式來表示。在最簡(jiǎn)單的實(shí)例中規(guī)定了兩個(gè)置信組;然后置信組可由0和1來表示——這些值中的一個(gè)表示“置信”,另一個(gè)表示“不置信”。如下面舉例所示,置信值也可以為0到10之間的一個(gè)數(shù)值;這樣可以規(guī)定11個(gè)置信組之多。為了將客體和進(jìn)程確定到置信組中的一個(gè)之內(nèi),可以使用一個(gè)置信表,它代表了分配到置信組中的一個(gè)之內(nèi)的每一個(gè)進(jìn)程或客體的置信組??商峁﹥蓚€(gè)置信表,分別用于存儲(chǔ)客體和進(jìn)程的置信組。實(shí)際上可以很便利地將客體的置信表記錄在一個(gè)非易失存儲(chǔ)設(shè)備如硬盤或者一個(gè)遠(yuǎn)程服務(wù)器之上;另一方面,因?yàn)檫M(jìn)程基本上僅在RAM內(nèi)是激活的(active),所以進(jìn)程的一個(gè)置信表可被存儲(chǔ)在RAM之內(nèi)。
這樣客體和進(jìn)程被分配給置信組,一個(gè)進(jìn)程在一個(gè)客體上的任何操作—例如修改或者刪除一個(gè)現(xiàn)有客體—可導(dǎo)致進(jìn)程的置信組與客體的置信組進(jìn)行比較。然后根據(jù)比較步驟的結(jié)果允許或不允許進(jìn)行操作。
上面公開的進(jìn)程防御了不友好代碼而對(duì)計(jì)算機(jī)內(nèi)的客體進(jìn)行了保護(hù)。假定規(guī)定了兩個(gè)置信組,一個(gè)包含“置信“客體和進(jìn)程,另一個(gè)包含“不置信”客體和進(jìn)程。如下所釋,置信客體和進(jìn)程可以被認(rèn)為是友好的例如商業(yè)代碼或者其它代碼??梢愿鶕?jù)置信組而允許或不允許一個(gè)進(jìn)程在一個(gè)客體上的操作。例如在最簡(jiǎn)單的實(shí)施例中,唯一被禁止的操作即是一個(gè)“不置信”進(jìn)程在一個(gè)“置信”客體上的操作。該實(shí)施例是較為粗淺的;仍有可能對(duì)計(jì)算機(jī)的操作進(jìn)行限制,這樣就不會(huì)有不友好代碼對(duì)計(jì)算機(jī)進(jìn)行作用的危險(xiǎn)。實(shí)際上這種代碼應(yīng)被分配到“不置信”組一因?yàn)槠淦鹗荚纯赡軟]有被確認(rèn)。與現(xiàn)有技術(shù)的權(quán)限系統(tǒng)相比,該進(jìn)程還可以防御用戶的操作而對(duì)計(jì)算機(jī)進(jìn)行保護(hù);因?yàn)檫M(jìn)程和客體獨(dú)立于用戶被分配到置信組中,即使用戶擁有權(quán)限,他也不會(huì)危及計(jì)算機(jī)的安全。
如上簡(jiǎn)述,可通過將客體分配到各種置信組中而開始操作。根據(jù)賦予這些客體的置信度將客體分配到之心中。例如從計(jì)算機(jī)銷售商處購(gòu)買的軟件通常比從不知名的互聯(lián)網(wǎng)Web和FTP站點(diǎn)處下載的軟件要具有較高的置信度。在安裝計(jì)算機(jī)時(shí)復(fù)制的軟件也可以被認(rèn)為是可置信的并可相應(yīng)地被分配到置信組中;后來安裝的客體應(yīng)被分配到表示較低置信度的置信組中??捎梢粋€(gè)計(jì)算機(jī)管理員來實(shí)施將客體分配到置信組的工作;該管理員負(fù)責(zé)計(jì)算機(jī)的安全。在網(wǎng)絡(luò)環(huán)境下,他通常是網(wǎng)絡(luò)管理員。在單用戶環(huán)境下,他可以是機(jī)器用戶。
也可以采用相同的方法將進(jìn)程分配到置信組中;然而很明顯這樣很耗時(shí)間并且不是非常有效。因此圖2展示了一個(gè)將進(jìn)程分配到一個(gè)置信組的流程。如上所述,進(jìn)程由被動(dòng)代碼產(chǎn)生;因此將一個(gè)進(jìn)程分配到一個(gè)置信組的一個(gè)解決方法是將該進(jìn)程分配到置信組,而上述置信組是被分配到由此產(chǎn)生進(jìn)程的被動(dòng)代碼中的。如圖2所示的實(shí)施例,在一個(gè)客體置信表和一個(gè)進(jìn)程置信表中規(guī)定了置信組。在步驟8中執(zhí)行被動(dòng)代碼,這樣在RAM中產(chǎn)生一個(gè)進(jìn)程。在步驟10中,對(duì)客體置信表進(jìn)行查詢從而確認(rèn)出將被動(dòng)代碼分配到的置信組。在步驟12中,該進(jìn)程被分配到相同的置信組中;在進(jìn)程置信表中對(duì)此做出標(biāo)記。圖2中的進(jìn)程可使得將進(jìn)程簡(jiǎn)單且快速地分配給一個(gè)給定置信組。
圖3示出了將新客體分配給一個(gè)置信組的流程圖簡(jiǎn)單而言,一個(gè)新客體被分配給產(chǎn)生該新客體的進(jìn)程的置信組中。在步驟20中,一個(gè)被分配給一個(gè)給定置信組的現(xiàn)有進(jìn)程產(chǎn)生了一個(gè)新客體。在步驟22中,對(duì)進(jìn)程置信表進(jìn)行查詢從而確認(rèn)出將該進(jìn)程分配到的置信組。在步驟24中,新客體被分配給相同的置信組;在客體置信表中對(duì)此做出標(biāo)記。圖3中的方法可使得將新客體簡(jiǎn)單且快速地分配給一個(gè)給定置信組。也可能不在每一個(gè)實(shí)例中都進(jìn)行上述進(jìn)程這樣將在正常使用計(jì)算機(jī)的條件下對(duì)該方法進(jìn)行實(shí)施;當(dāng)將新客體安裝在計(jì)算機(jī)上時(shí)實(shí)施另一個(gè)方法。也可僅允許管理程序使用不同于圖3中的方法來將客體分配給置信組。而且這不同于現(xiàn)有技術(shù)中的方法,因?yàn)闊o論計(jì)算機(jī)的用戶是誰,客體都將被分配給一個(gè)置信組。換句話講,一旦將一個(gè)客體分配給一個(gè)置信組,該客體的分配將應(yīng)用于任何將來的用戶,可以是程序管理員或其它用戶。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,可以改進(jìn)允許進(jìn)行操作的規(guī)則;如上所述,將置信組的比較結(jié)果作為唯一的根據(jù)允許一個(gè)進(jìn)程在一個(gè)客體上進(jìn)行操作。也可以規(guī)定不同類型的客體、操作或進(jìn)程;考慮到客體、擦作、進(jìn)程或存儲(chǔ)方法的類型而允許或?qū)嵤┮粋€(gè)操作。對(duì)于客體而言例如可以區(qū)分被動(dòng)代碼和其它客體,并根據(jù)客體的類型允許進(jìn)行不同的操作。這樣將會(huì)對(duì)某種類型的客體提供進(jìn)一步的保護(hù)。對(duì)于進(jìn)程而言根據(jù)用戶規(guī)定的進(jìn)程類型可以對(duì)進(jìn)程進(jìn)行區(qū)分。對(duì)于操作而言可以區(qū)分打開、讀、產(chǎn)生、修改或刪除。而且這樣可使得一些操作——例如那些被認(rèn)為更具有冒險(xiǎn)性的操作——與其它操作相比更難以實(shí)施。還可以規(guī)定不同的存儲(chǔ)方法——例如使用加密和/或壓縮,并將一個(gè)置信組分配給一個(gè)給定的存儲(chǔ)方法;在此情況下,置信組中的進(jìn)程將使用該置信組被分配到的存儲(chǔ)方法。這樣有可能根據(jù)授予進(jìn)程的置信度等級(jí)使用各種存儲(chǔ)方法。這樣通過加密即可對(duì)置信信息進(jìn)行保護(hù)——該信息由一個(gè)置信進(jìn)程產(chǎn)生。
至此上面描述了防御不友好代碼保護(hù)計(jì)算機(jī)的方法。然而它對(duì)計(jì)算機(jī)的操作干預(yù)太多——可以理解的是任何防御不友好代碼的保護(hù)措施都會(huì)干預(yù)計(jì)算機(jī)的操作,并且將會(huì)限制被允許進(jìn)行的操作的范圍。現(xiàn)在討論一個(gè)更為靈活的例子。在該例子中,如果允許進(jìn)行一個(gè)操作,則進(jìn)程和/或客體的置信組是可以改變的。這樣有可能擴(kuò)展操作的范圍,并且同時(shí)仍能對(duì)計(jì)算機(jī)進(jìn)行保護(hù);換句話講,它可以改善對(duì)計(jì)算機(jī)的保護(hù)。在該例子中也具有兩個(gè)置信組。允許進(jìn)行操作的規(guī)則可包括如下規(guī)則允許一個(gè)被分配到“置信”組的進(jìn)程在該“置信”組的一個(gè)客體上進(jìn)行操作;允許一個(gè)被分配到“置信”組的進(jìn)程在“不置信”組的一個(gè)客體上進(jìn)行操作,然后將該進(jìn)程分配給“不置信”組。
也規(guī)定了用于其它例子下的其它規(guī)則。例如假定進(jìn)程是上面討論的WORD進(jìn)程;還假定該進(jìn)程位于“置信”組內(nèi)。WORD進(jìn)程可以訪問一個(gè)置信客體例如一個(gè)置信文件。當(dāng)WORD進(jìn)程訪問一些不置信客體如從互聯(lián)網(wǎng)服務(wù)器上下載的新文件時(shí),允許進(jìn)行操作。然而該進(jìn)程由置信組轉(zhuǎn)到了不置信組。這樣可以確保可能已經(jīng)被不置信客體破壞的進(jìn)程不會(huì)對(duì)置信組內(nèi)的客體造成損害。這樣增加了可能進(jìn)行操作的數(shù)量同時(shí)仍對(duì)計(jì)算機(jī)進(jìn)行了保護(hù);保護(hù)措施也得到了改善。
為了清楚起見,上面討論的所有特性是分別進(jìn)行論述的;人們應(yīng)該理解的是這些特性或者它們中的一些是可以進(jìn)行組合的。
圖4為實(shí)施本發(fā)明的一個(gè)計(jì)算機(jī)的示意圖。計(jì)算機(jī)30包括非易失存儲(chǔ)器32如一個(gè)硬盤、一個(gè)軟盤或其它。該計(jì)算機(jī)具有一個(gè)與RAM 35相聯(lián)系的處理器34;處理器34與非易失存儲(chǔ)器32和RAM 35相連接并可對(duì)其進(jìn)行訪問。在存儲(chǔ)器32之內(nèi)還具有一個(gè)客體類型的表40以及規(guī)則表42。RAM 35包含多個(gè)激活的進(jìn)程44、一個(gè)進(jìn)程置信組表4以及一個(gè)進(jìn)程類型表47。另外在RAM 35之內(nèi)具有當(dāng)一個(gè)進(jìn)程在一個(gè)客體上進(jìn)行操作時(shí)可訪問置信組表的一個(gè)控制器48??刂破鞲鶕?jù)進(jìn)程的置信組和客體的置信組的比較結(jié)果來允許進(jìn)行操作。該控制器可獨(dú)立于操作系統(tǒng)的類型被設(shè)計(jì)成在操作系統(tǒng)級(jí)進(jìn)行工作且以一個(gè)驅(qū)動(dòng)程序(Driver)、VxD或TSR方式加以實(shí)施。
現(xiàn)在我們對(duì)本發(fā)明的另一個(gè)實(shí)施例進(jìn)行描述,其中置信組是分層有序的。這樣的次序使得根據(jù)置信組的比較結(jié)果,可更為簡(jiǎn)單地設(shè)計(jì)出允許或拒絕進(jìn)行操作的規(guī)則;然后置信組可簡(jiǎn)單地被稱為與該置信組相聯(lián)系的置信值。在本說明書的剩余部分中術(shù)語“置信組”和“置信值”是相當(dāng)?shù)?。例如置信組的秩序可如下進(jìn)行選定客體的置信值越高,可訪問性越低并且受保護(hù)程度越高,反之亦然。在該例子中,置信值是0到10中的一個(gè)數(shù)值。一個(gè)新機(jī)器的客體具有高的置信值;一個(gè)計(jì)算機(jī)的置信值隨著時(shí)間會(huì)降低,因?yàn)橐獔?zhí)行新的軟件和文件并且要在其上進(jìn)行打開。這樣在安裝新機(jī)器時(shí)計(jì)算機(jī)程序管理員典型地將所有客體設(shè)定為具有高的置信值。任何后來安裝或引入計(jì)算機(jī)的客體將被默認(rèn)為具有一個(gè)低的置信值,除非程序管理員明確的指定為其它值(例如當(dāng)安裝一個(gè)新的商業(yè)軟件時(shí))??腕w置信表這樣每一個(gè)系統(tǒng)客體最初具有一個(gè)程序管理員規(guī)定的置信值。所有的客體置信值被記錄在一個(gè)“客體置信表”中,該客體置信表被存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)如一個(gè)硬盤或者數(shù)據(jù)庫服務(wù)器上。任何被添加到系統(tǒng)內(nèi)的客體將明顯的沒有列在最初設(shè)定的客體置信表之內(nèi),這樣所有沒有存儲(chǔ)在客體置信表內(nèi)的客體將自動(dòng)被默認(rèn)為具有一個(gè)低的置信值。例如當(dāng)機(jī)器處于其原始清潔狀態(tài)(original clean state)時(shí),程序管理員將置信客體標(biāo)記為一個(gè)高的置信值;在該時(shí)刻之后從外部接收的任何客體將自動(dòng)被分配一個(gè)低的置信值,除非程序管理員明確指定為其它值。進(jìn)程置信表與客體相似,進(jìn)程也被分配有置信值。如上所述,進(jìn)程置信值也隨著時(shí)間而降低。實(shí)際上調(diào)入或解釋代碼的被置信的進(jìn)程本身可以被操縱來執(zhí)行惡意操作。例如若一個(gè)最初為置信狀態(tài)的進(jìn)程打開了一個(gè)帶有宏的文件而該宏指示上述文件進(jìn)行偵探或破壞數(shù)據(jù),該進(jìn)程會(huì)變得不友好。進(jìn)程置信值將被存儲(chǔ)在稱為“進(jìn)程置信表”的一個(gè)第二個(gè)表中。該表被存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)如RAM(隨機(jī)存取存儲(chǔ)器)中,并且可以在每次加載或重起操作系統(tǒng)時(shí)對(duì)該表進(jìn)行清空,因?yàn)樵谠擖c(diǎn)處沒有運(yùn)行進(jìn)程。當(dāng)在執(zhí)行階段期間產(chǎn)生一個(gè)進(jìn)程時(shí),該進(jìn)程得到與加載該進(jìn)程的被動(dòng)代碼相同的置信值。例如當(dāng)被動(dòng)代碼“WORD.EXE”被標(biāo)記為一個(gè)置信值10,然而無論何時(shí)執(zhí)行WORD.EXE,由此得到的新進(jìn)程WORD也將被初始化為具有置信值10。圖2展示了一個(gè)進(jìn)程如何根據(jù)加載該進(jìn)程的客體而得到一個(gè)置信值??腕w的生成/修改如上參考圖3所述,當(dāng)一個(gè)進(jìn)程生成一個(gè)新客體時(shí),該客體得到與該進(jìn)程相同的置信屬性。當(dāng)一個(gè)進(jìn)程對(duì)一個(gè)現(xiàn)有的客體的內(nèi)容進(jìn)行修改時(shí)——允許該進(jìn)程在該現(xiàn)有客體上進(jìn)行操作——客體的置信組被修改為進(jìn)程的置信組;這樣就能將一個(gè)進(jìn)程對(duì)一個(gè)客體可能造成的損害納入考慮范圍。進(jìn)程和客體之間的相互作用進(jìn)程和客體之間的相互作用圖5為本發(fā)明的例子的進(jìn)程的流程圖。進(jìn)程可以訪問具有與其本身相同的置信值的客體。換句話講,置信值為5的一個(gè)進(jìn)程可以訪問一個(gè)置信值為5的客體。然而進(jìn)程不能訪問比其自身的置信值高的客體。例如一個(gè)置信值為5的進(jìn)程不能訪問置信值為10的客體。
當(dāng)一個(gè)置信進(jìn)程訪問一個(gè)具有較低置信值的客體時(shí),在進(jìn)程置信表中的該進(jìn)程本身的置信值會(huì)立即改變并變?yōu)榕c被訪問的客體的置信值一樣低,這樣一直保持下去直到該進(jìn)程被中止。這樣在下一次當(dāng)進(jìn)程試圖訪問一個(gè)客體時(shí),該進(jìn)程與其訪問不置信客體之前相比具有了較低的權(quán)限。例如一個(gè)置信值為10的進(jìn)程被允許訪問置信值為10的客體。但是如果該進(jìn)程打開了一個(gè)置信值為9的客體,該進(jìn)程的置信紙漿降低為9并且從那時(shí)起將不允許該進(jìn)程訪問置信值大于9的客體,直到該進(jìn)程被中止或者重新啟動(dòng)。這樣就考慮了如下事實(shí)一個(gè)訪問客體的進(jìn)程可能被該客體所損害;降低進(jìn)程的置信值將會(huì)避免置信客體遭到損害。
圖5展示了進(jìn)程和客體之間的相互作用的方式。在步驟50中,一個(gè)進(jìn)程(P)試圖去訪問一個(gè)客體(R)。在步驟52中,我們對(duì)進(jìn)程置信表進(jìn)行查閱,尋找匹配進(jìn)程P的表項(xiàng)。我們將結(jié)果存儲(chǔ)在PT之內(nèi)。在步驟54中,我們對(duì)客體置信表進(jìn)行查閱,尋找匹配客體R的表項(xiàng)。我們將結(jié)果存儲(chǔ)在RT之內(nèi)。在步驟56中,對(duì)PT和RT進(jìn)行比較。如果這兩個(gè)置信值相等,則在步驟58中允許進(jìn)行訪問。返回到步驟56中,如果PT和RT不相等,我們?cè)诓襟E60中進(jìn)行測(cè)試看進(jìn)程的置信值是否高于客體的置信值。如果在步驟62中是這樣,進(jìn)程置信表中的進(jìn)程的表項(xiàng)被設(shè)為RT,然后我們繼續(xù)進(jìn)行步驟64,在步驟64中可以對(duì)客體進(jìn)行訪問。注意在下一次進(jìn)程P試圖訪問一個(gè)客體時(shí),除了該進(jìn)程的置信值不同外,也將經(jīng)歷相同的決策進(jìn)程,因?yàn)樵诓襟E62中該進(jìn)程的置信值已經(jīng)被改變。返回到步驟60中,如果進(jìn)程的置信值低于客體的置信值,則我們繼續(xù)步驟66,在步驟66中不允許訪問客體。本發(fā)明的具體示例下面的表提供了在不同情況下進(jìn)程的具體示例。
表1
如參考圖5所述,表1中的例子展示了允許進(jìn)程在客體上進(jìn)行操作的規(guī)則。
表2
這樣利用該方法我們可以確保計(jì)算機(jī)的安全,同時(shí)仍允許進(jìn)行許多操作。現(xiàn)在我們描述該方法的更為靈活和快捷的另一個(gè)實(shí)施例。置信組除了如通過規(guī)定置信組為每一個(gè)客體提供一個(gè)置信值之外,也為置信組內(nèi)的客體和進(jìn)程規(guī)定了額外的信息和性能。利用一個(gè)置信組標(biāo)識(shí)符將每一個(gè)客體和進(jìn)程與一個(gè)“置信組”聯(lián)系在一起。下面的表是進(jìn)程置信表的一個(gè)例子,其中利用一個(gè)置信組標(biāo)識(shí)符將由操作系統(tǒng)提供的進(jìn)程ID(PID)標(biāo)識(shí)的每一個(gè)進(jìn)程與一個(gè)置信組聯(lián)系在一起。
表3
置信組規(guī)定可被記錄在一個(gè)被稱為“置信組表”的中心表中,該置信組表被存儲(chǔ)在一個(gè)中心存儲(chǔ)介質(zhì)中(例如文件服務(wù)器、硬盤或者非易失存儲(chǔ)器中)。每一個(gè)置信組可具有如下表所示的數(shù)據(jù)結(jié)構(gòu)。
表4
ID是一個(gè)被記錄在客體置信表和進(jìn)程置信表內(nèi)的索引值,它標(biāo)識(shí)出了客體和進(jìn)程所屬的置信組。TV是組的置信值。FromLower是一個(gè)規(guī)則清單,當(dāng)其置信組的置信值低于TV的進(jìn)程做出指向?qū)儆赥G的客體的請(qǐng)求時(shí),應(yīng)用上述規(guī)則。ToLower是一個(gè)規(guī)則清單,當(dāng)屬于組TG的一個(gè)進(jìn)程對(duì)其置信值低于TV的客體做出請(qǐng)求時(shí),應(yīng)用上述規(guī)則。下面的表是具有三個(gè)不同置信組的置信組規(guī)定的一個(gè)例子。
表5
表6
表7
一個(gè)“規(guī)則清單”將多個(gè)規(guī)則節(jié)點(diǎn)連接在一起。每一個(gè)規(guī)則節(jié)點(diǎn)如表8所示。
表8
OP指示出該規(guī)則應(yīng)用于何種類型的I/O操作。例如OP可以為打開、讀、寫。OT為要對(duì)其應(yīng)用該規(guī)則的客體的類型。例如OT可以為執(zhí)行文件、文檔文件和注冊(cè)碼??腕w也可以被應(yīng)用于對(duì)某些特定置信組需要被限制到進(jìn)程中的操作,例如指示“聯(lián)網(wǎng)API”為一種客體類型就使得禁止對(duì)不置信進(jìn)程使用聯(lián)網(wǎng)操作。當(dāng)OP和OT請(qǐng)求相匹配時(shí),A是要執(zhí)行的操作。例如A可以為“拒絕”、“允許”、“將請(qǐng)求進(jìn)程的置信值設(shè)為目標(biāo)客體的置信值”和/或“將目標(biāo)客體的置信值設(shè)為進(jìn)程的置信值”。根據(jù)它與其它進(jìn)程和客體的相互作用,這些最后兩個(gè)作用可以動(dòng)態(tài)的改變一個(gè)進(jìn)程或一個(gè)客體的置信組。表9示出了多個(gè)規(guī)則清單的一個(gè)例子。
表9
現(xiàn)在我們來看這個(gè)新的實(shí)施方案是如何工作的。圖6展示出了一個(gè)流程圖,其中如步驟70所示一個(gè)進(jìn)程(P)試圖訪問一個(gè)客體(O)。在步驟72中我們對(duì)進(jìn)程置信表進(jìn)行查閱,尋找匹配進(jìn)程P的表項(xiàng)。在大多數(shù)操作系統(tǒng)中,通過其自己的進(jìn)程ID(PID)可對(duì)進(jìn)程進(jìn)行識(shí)別。與進(jìn)程相聯(lián)系的置信組ID被存儲(chǔ)在PTID中。在步驟74中我們對(duì)置信表進(jìn)行查閱,尋找其ID與PTID相匹配的置信組。在步驟76和78中,我們重復(fù)進(jìn)程正試圖訪問客體的相同的操作。在步驟76中,我們查詢客體置信表內(nèi)的客體置信組并將其存儲(chǔ)在OTID之內(nèi)。在步驟78中,我們查詢其ID與OTID相匹配的置信組的置信組表,我們將進(jìn)程的置信組的置信值字段與客體的置信組的置信值字段相比較。如果進(jìn)程的置信組具有較高的置信值,我們繼續(xù)進(jìn)行步驟82,在步驟82中我們應(yīng)用了來自進(jìn)程的置信組ToLower字段的規(guī)則。返回步驟80,如果進(jìn)程的置信組不具有比客體較高的置信值,我們繼續(xù)步驟84,在步驟84中我們檢查進(jìn)程置信組是否具有一個(gè)較低的置信值。如果是這樣,我們繼續(xù)步驟86,在步驟86中我們應(yīng)用了來自目標(biāo)客體的FromLower字段的規(guī)則。返回步驟84,如果進(jìn)程的置信組和客體的置信組具有相等的置信值字段,則在步驟88中允許對(duì)客體進(jìn)行訪問。
圖7展示了如何應(yīng)用置信組的規(guī)則清單字段內(nèi)的一個(gè)規(guī)則。在步驟90中,我們參考需要被應(yīng)用的規(guī)則清單。在IOOP中,我們有請(qǐng)求施加于目標(biāo)客體(O)上的操作。對(duì)每一個(gè)規(guī)則清單內(nèi)的規(guī)則節(jié)點(diǎn),執(zhí)行循環(huán)中的步驟92到步驟98。在步驟96中,我們檢查當(dāng)前規(guī)則的OP字段是否包含被請(qǐng)求的操作IOOP。例如可以利用一個(gè)位組合來完成這樣一個(gè)檢查,其中每一個(gè)可能的操作由一個(gè)位表示,整個(gè)數(shù)字表示整個(gè)操作組。如果檢查結(jié)果不是肯定的,我們繼續(xù)步驟92中的下一個(gè)規(guī)則。相類似,在步驟98中,我們檢查當(dāng)前規(guī)則的OT字段是否包含客體O的類型??腕w的類型例如可以為可執(zhí)行文件、文檔文件、注冊(cè)碼等。如果不包含,我們繼續(xù)步驟92中的下一個(gè)規(guī)則。如果兩個(gè)條件都滿足,在步驟100中該進(jìn)程結(jié)束,在步驟100中被應(yīng)用的進(jìn)程得自規(guī)則節(jié)點(diǎn)的Action字段。如果沒有發(fā)現(xiàn)與所需的條件相匹配的規(guī)則,在步驟102中結(jié)束該進(jìn)程,其中默認(rèn)允許進(jìn)行該操作。
為了進(jìn)一步提高靈活性,規(guī)則節(jié)點(diǎn)也可具有一個(gè)“優(yōu)先規(guī)則權(quán)”字段。它允許在兩個(gè)具有相同置信值的不同置信組之間進(jìn)行分解檢查(resolving test)服從于具有較高規(guī)則優(yōu)先權(quán)的組。如圖7所示,這樣也有利于特定的實(shí)例需要應(yīng)用具有最低置信值的置信組的規(guī)則,而不是需要應(yīng)用具有最高置信值的置信組的規(guī)則。
因此現(xiàn)在有可能建立起來一個(gè)安全的環(huán)境,其中多個(gè)置信組對(duì)具有不同安全屬性的不同的客體進(jìn)行保護(hù)。本發(fā)明用于在操作系統(tǒng)級(jí)工作,過濾I/O操作。它通常獨(dú)立于操作系統(tǒng)的類型且以一個(gè)驅(qū)動(dòng)程序、VxD或TSR方式來實(shí)現(xiàn)。
可以改變上面給定的例子置信組可以被預(yù)規(guī)定和/或是可配置的。該進(jìn)程可應(yīng)用到危及系統(tǒng)安全的I/O操作以及API函數(shù)調(diào)用或者任何觸發(fā)程序的作用中。
權(quán)利要求
1.一種防止不友好代碼保護(hù)計(jì)算機(jī)的方法,包括如下步驟規(guī)定至少兩個(gè)置信組;將計(jì)算機(jī)內(nèi)的客體和進(jìn)程分配到所述置信組中的一個(gè)內(nèi),而不考慮所述計(jì)算機(jī)的用戶的權(quán)限;根據(jù)一個(gè)進(jìn)程對(duì)一個(gè)客體或第二個(gè)進(jìn)程的操作,將進(jìn)程的一個(gè)置信組與客體的一個(gè)置信組或者與第二進(jìn)程的置信組相比較;根據(jù)所述比較步驟的結(jié)果確定是否允許進(jìn)行該操作。
2.如權(quán)利要求1所述的方法,其中一旦產(chǎn)生了一個(gè)進(jìn)程,該進(jìn)程即被分配到置信組中,而上述置信組是被分配到產(chǎn)生上述進(jìn)程的被動(dòng)代碼(passive code)中去的。
3.如權(quán)利要求1或2所述的方法,進(jìn)一步包括在所述操作之后改變所述進(jìn)程的置信組的步驟。
4.如權(quán)利要求1、2或3所述的方法,進(jìn)一步包括在所述操作之后改變所述客體或者所述第二進(jìn)程的置信組的步驟。
5.如權(quán)利要求1到4中任一項(xiàng)所述的方法,進(jìn)一步包括一旦一個(gè)進(jìn)程產(chǎn)生了一個(gè)客體,即將所述產(chǎn)生的客體分配到所述進(jìn)程的置信組中的步驟。
6.如權(quán)利要求1到5中任一項(xiàng)所述的方法,進(jìn)一步包括當(dāng)允許進(jìn)行所述操作時(shí)將所述進(jìn)程分配到所述客體或所述第二進(jìn)程的置信組中的步驟。
7.如權(quán)利要求1到6中任一項(xiàng)所述的方法,其中置信組是分層有序的并且其中的允許步驟包括當(dāng)所述分層結(jié)構(gòu)中的所述進(jìn)程的置信組高于所述客體或所述第二進(jìn)程的置信組,或是等于所述客體或所述第二進(jìn)程的置信組時(shí),允許進(jìn)行所述操作;當(dāng)所述分層結(jié)構(gòu)中的所述進(jìn)程的置信組低于所述客體或第二進(jìn)程的置信組時(shí),拒絕進(jìn)行所述操作。
8.如權(quán)利要求7所述的方法,進(jìn)一步包括在允許進(jìn)行所述操作之后,將所述進(jìn)程分配到所述客體或者所述第二進(jìn)程的置信組中的步驟。
9.如權(quán)利要求1到7中任一項(xiàng)所述的方法,進(jìn)一步包括規(guī)定至少兩種類型的客體;將客體分配給所述類型之中的一種;以及其中根據(jù)一個(gè)客體的類型,允許進(jìn)一步實(shí)施對(duì)所述客體的操作的步驟。
10.如權(quán)利要求1到9中任一項(xiàng)所述的方法,進(jìn)一步包括規(guī)定至少兩種類型的進(jìn)程;將進(jìn)程分配給所述類型之中的一種;以及其中根據(jù)一個(gè)進(jìn)程的類型,允許進(jìn)一步實(shí)施所述進(jìn)程的操作的步驟。
11.如權(quán)利要求1到10中任一項(xiàng)所述的方法,進(jìn)一步包括規(guī)定至少兩種類型的操作;以及其中根據(jù)操作的類型,允許一個(gè)進(jìn)程進(jìn)一步地對(duì)一個(gè)客體或第二個(gè)進(jìn)程實(shí)施所述操作的步驟。
12.如權(quán)利要求1到11中任一項(xiàng)所述的方法,進(jìn)一步包括規(guī)定至少兩種類型的存儲(chǔ)方法;將一個(gè)置信組分配給一種存儲(chǔ)方法類型;根據(jù)被分配到一個(gè)進(jìn)程置信組的存儲(chǔ)方法,對(duì)于該置信組的所述進(jìn)程實(shí)施存儲(chǔ)操作。
13.一種計(jì)算機(jī)(30),包括客體(36)和進(jìn)程(46);至少兩個(gè)置信組的一個(gè)表(38),計(jì)算機(jī)內(nèi)的客體和進(jìn)程被分配到所述置信組中的一個(gè)中而不考慮所述計(jì)算機(jī)用戶的權(quán)限;一個(gè)控制器(48),根據(jù)所述進(jìn)程的置信組與所述客體或所述第二進(jìn)程的置信組的比較結(jié)果,該控制器可訪問所述表并允許進(jìn)程在一個(gè)客體或第二個(gè)進(jìn)程上進(jìn)行一個(gè)操作。
14.如權(quán)利要求13所述的計(jì)算機(jī),進(jìn)一步包括具有至少兩種客體類型的一個(gè)類型表,計(jì)算機(jī)中的客體被指定為一種類型;其中控制器訪問所述類型表來確定是否允許進(jìn)行一個(gè)操作。
15.如權(quán)利要求13或14所述的計(jì)算機(jī),其中置信組的所述表被存儲(chǔ)在一個(gè)非易失的存儲(chǔ)器(32)中。
16.如權(quán)利要求13、14或15所述的計(jì)算機(jī),其中所述類型表被存儲(chǔ)在一個(gè)非易失存儲(chǔ)器(32)中。
17.如權(quán)利要求13到16中任一項(xiàng)所述的計(jì)算機(jī),進(jìn)一步包括一個(gè)規(guī)則表,并且其中所述控制器訪問所述規(guī)則表。
18.如權(quán)利要求13或14所述的計(jì)算機(jī),其中所述規(guī)則表被存儲(chǔ)在一個(gè)非易失存儲(chǔ)器中。
19.一種計(jì)算機(jī)網(wǎng)絡(luò),包括一個(gè)服務(wù)器和如權(quán)利要求13到18中任一項(xiàng)所述的至少一個(gè)計(jì)算機(jī),其中置信組的所述表被存儲(chǔ)在所述服務(wù)器之內(nèi)。
20.一種計(jì)算機(jī)網(wǎng)絡(luò),包括一個(gè)服務(wù)器和如權(quán)利要求13到18中任一項(xiàng)所述的至少一個(gè)計(jì)算機(jī),其中所述類型表被存儲(chǔ)在所述服務(wù)器之內(nèi)。
21.一種計(jì)算機(jī)網(wǎng)絡(luò),包括一個(gè)服務(wù)器和至少一個(gè)如 13到18中任一項(xiàng)所述的計(jì)算機(jī),其中所述規(guī)則表被存儲(chǔ)在所述服務(wù)器之內(nèi)。
全文摘要
本發(fā)明涉及一種防止不置信程序而對(duì)計(jì)算機(jī)進(jìn)行保護(hù)的方法。每一個(gè)計(jì)算機(jī)的客體和進(jìn)程都被分配有置信屬性,該置信屬性規(guī)定了其與系統(tǒng)內(nèi)的其它客體相互作用的方式。置信屬性是被分層規(guī)定的,這樣進(jìn)程即不能訪問比其自身具有更高置信水平的客體。當(dāng)進(jìn)程訪問具有較低置信水平的客體時(shí),該進(jìn)程的置信水平將被降低到被訪問的客體的置信水平。具有不同置信水平的進(jìn)程和客體之間的相互作用是完全可編程控制的。
文檔編號(hào)G06F21/52GK1366239SQ0210206
公開日2002年8月28日 申請(qǐng)日期2002年1月21日 優(yōu)先權(quán)日2001年1月19日
發(fā)明者E·多坦 申請(qǐng)人:E·多坦