亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

通過進程行為的配伍禁忌提高操作系統(tǒng)安全性的方法

文檔序號:6330442閱讀:731來源:國知局

專利名稱::通過進程行為的配伍禁忌提高操作系統(tǒng)安全性的方法
技術領域
:本發(fā)明涉及一種提高計算機操作系統(tǒng)安全性的方法,主要是一種通過進程行為的配伍禁忌提高操作系統(tǒng)安全性的方法。
背景技術
:操作系統(tǒng)的安全性主要體現(xiàn)為文件系統(tǒng)的安全性。為保證具體的文件和目錄不受到不適當?shù)脑L問,例如惡意或意外的讀、寫、修改、創(chuàng)建、執(zhí)行,在操作系統(tǒng)領域發(fā)展起了一種稱為“訪問控制名單(ACL)”的機制與技術,為每個文件或目錄(或其它資源)都配備一個“訪問控制名單”,名單中詳列對于哪些人或組允許什么樣的訪問權限(讀/寫/執(zhí)行及其它),或者不允許什么樣的訪問;名單上沒有的就不許訪問,或只允許讀。這個名單就是ACL,即“AccessControlList”,也翻譯成“訪問控制列表”或“訪問控制表”。ACL在一定程度上提高了操作系統(tǒng)的安全性,所以早就在例如銀行一類的機構中得到了應用,目前占主導地位的操作系統(tǒng)、即Windows和Unix/Linux、也都支持ACL。但是ACL基本上只是根據(jù)用戶的身份控制其訪問具體文件的權限,而身份在某些條件下是可以偽造、或者鉆空子套取的,例如黑客攻擊時就總是千方百計套取“超級用戶”的身份,一旦有了“超級用戶”的身份就可以通行無阻了。所以,特別是隨著網(wǎng)絡技術和應用的發(fā)展,ACL已經(jīng)愈來愈不能滿足系統(tǒng)安全性的要求了。為此,人們開始研究如何改進ACL、增強其功能,結果是出現(xiàn)了一種基于“安全策略(SecurityPolicy)”的機制和技術。這里所謂的“策略(Policy)”其實是“規(guī)則”的意思。在這方面特別值得一提的是美國“國家安全局(NationalSecurityAgency)”、即NSA、以及美國猶它大學Flask項目組所做的工作。在他們所做工作的基礎上,上世記90年代末和本世記初,形成了對Linux操作系統(tǒng)的擴充和改進,稱為SELinux,意為“增強了安全性的Linux”。從Linux的2.6版開始,SELinux已經(jīng)成為Linux內核版本的一部分。而Windows,實際上也在其企業(yè)版中實現(xiàn)了類似的機制。有了安全策略機制,對文件系統(tǒng)的訪問控制就在一定程度上擴展到了進程的行為控制,例如執(zhí)行某個程序的進程只能為哪一些可執(zhí)行文件(即程序)創(chuàng)建子進程,等等。但是,盡管如此,這種安全策略機制對進程的行為控制仍是靜態(tài)的,而并沒有根據(jù)進程在某一方面的實際行為控制其另一方面的行為。應該說,在操作系統(tǒng)對于文件等對象的保護機制中不考慮、不考察使用者的行為歷史,是現(xiàn)有技術的缺陷,它在一定程度上降低了系統(tǒng)的安全性。在醫(yī)藥上有一種稱為“配伍禁忌”的概念如果病人服了某種藥,就不能再讓其服用另外一種(或幾種)什么藥。實質上這就是根據(jù)行為主體在某一方面已有的行為控制其后續(xù)的另一方面的行為。所以,把“配伍禁忌”的概念引入操作系統(tǒng)的安全策略機制,用于進程的行為控制是很有實際意義的。例如可以把網(wǎng)絡連接和對于敏感文件的訪問定為配伍禁忌。這樣,如果進程P已經(jīng)建立了網(wǎng)絡連接,然后要求讀某個存有敏感信息的文件F,就應該加以拒絕;但是,對于同一個進程,如果沒有建立網(wǎng)絡連接,則允許其讀文件F。反過來,如果進程P先讀了文件F,然后要求建立網(wǎng)絡連接,則同樣應該加以阻攔,反正這二者互斥而不能兼得。所以,配伍禁忌實際上是對于互斥的說明和要求??傊谕贿M程中,如果行為A跟B構成配伍禁忌,那么其中任何一方的執(zhí)行都以對方從未得到執(zhí)行為條件。其實人們在社會生活中也常常在實行配伍禁忌,例如從事機密工作的人不得移民出國,而有“海外關系”的人可能也不適合機密工作,如此等等。配伍禁忌實際上就是“互斥(Mutual-Exclusive)”,例如讓網(wǎng)絡連接與某個目錄下的文件訪問互斥。這樣,即使有個間諜軟件獲得了運行,并且套取了“超級用戶”的身份,但是想要把這個目錄下的文件通過網(wǎng)絡連接發(fā)送出去,卻不能得逞。顯然,操作系統(tǒng)的安全性因此得到了改善。本發(fā)明的內容和特點就是把對于進程行為歷史的考察納入包括ACL在內的安全機制,對進程的行為按預定的配伍禁忌加以控制,從而達到提高系統(tǒng)安全性的目的。在本說明書中,“操作”與“行為”、“配伍禁忌”與“互斥”為同義詞,可以互換使用。
發(fā)明內容針對現(xiàn)有技術的缺陷,本發(fā)明提供了一種在計算機操作系統(tǒng)中對進程的行為實行配伍禁忌,使不同行為按預定的規(guī)則實現(xiàn)互斥,其效果是提高了計算機操作系統(tǒng)的安全性。本發(fā)明所述的這種通過進程行為的配伍禁忌提高操作系統(tǒng)安全性的方法,主要步驟如下1.1)定義一組可能存在配伍禁忌、即可能要求互斥的關鍵行為;1.2)每個進程都有按一定形式記錄的配伍禁忌規(guī)則;1.3)每個進程都按一定的形式記錄下已經(jīng)發(fā)生過的關鍵行為;1.4)關鍵行為在發(fā)生前須經(jīng)過禁忌檢查,根據(jù)當事進程的配伍禁忌規(guī)則和已經(jīng)發(fā)生過的關鍵行為進行判斷,如果已經(jīng)發(fā)生過的關鍵行為中有與其構成配伍禁忌、即互斥的關鍵行為已經(jīng)發(fā)生,該關鍵行為視為禁忌行為就不允許其發(fā)生。其中,上述的一組可能存在配伍禁忌、即可能要求互斥的“關鍵行為”,包括(但不限于)文件操作、網(wǎng)絡操作、進程間通信、創(chuàng)建子進程等等。其中文件操作也可以按具體的操作類型細分成按讀模式打開文件、按寫模式打開文件、按執(zhí)行模式打開文件、映射文件、讀文件、寫文件、執(zhí)行文件、改變文件屬性等數(shù)項。只有必須通過系統(tǒng)調用完成的操作才可以定義為關鍵行為。配伍禁忌只能發(fā)生在關鍵行為之間。關鍵行為的具體選取與具體的操作系統(tǒng)有關,因為不同操作系統(tǒng)提供的機制和有關的系統(tǒng)調用也有所不同;但是關鍵行為應該包括下列操作文件操作類為讀而打開文件(包括目錄)、為寫打開文件(目錄)、為執(zhí)行打開文件,還可以包括實際的讀文件、寫文件、執(zhí)行文件、映射文件。網(wǎng)絡操作類建立/打開插口(Socket)、等待接收對方的連接要求(Listen)、要求連接到對方(Connect)、接受對方的連接要求(Accept)、等等。進程間通信指可以在進程間傳遞大量信息的進程間通信機制,包括創(chuàng)建管道、創(chuàng)建/連接/使用命名管道、創(chuàng)建/連接/使用本地(相當于Unix域)插口、創(chuàng)建/使用報文隊列、創(chuàng)建/使用共享內存,創(chuàng)建/使用Windows中的LPC、Windows中跨進程的內存訪問等。進程管理創(chuàng)建子進褶,執(zhí)行某個可執(zhí)行文件。系統(tǒng)管理關機,重啟,動態(tài)安裝內核模塊,改變配伍禁忌規(guī)則。不過,關鍵行為的具體選取并不改變本發(fā)明對進程的行為實行配伍禁忌、使不同行為按預定的規(guī)則實現(xiàn)互斥的本質。本發(fā)明所述的這種通過進程行為的配伍禁忌提高操作系統(tǒng)安全性的方法,還可以通過下述方法進一步完善和補充。1.對ACL機制加以擴充,使具體的ACE在允許按指定模式打開目標文件的同時提供兩種信息禁忌行為描述塊與按指定模式打開此文件構成配伍禁忌的其它行為。配伍禁忌描述塊對于可執(zhí)行文件,執(zhí)行此文件的進程所遵循的初始配伍禁忌。2.為每個進程配備一個關鍵行為的“配伍禁忌描述塊”、一個記錄著已有關鍵行為的“既有行為記錄塊”、和一個“禁忌行為描述塊”。作用如下配伍禁忌描述塊包括若干配伍禁忌描述項,每一個配伍禁忌描述項給出兩組互斥的關鍵操作(但是同一組內的操作并不互斥,每一組內至少有一種操作),構成一對配伍禁忌。既有行為記錄塊按類型記錄著本進程已經(jīng)發(fā)生過的關鍵操作。禁忌行為描述塊按類型記錄著已知的禁忌、即禁止發(fā)生的關鍵操作。對于除打開文件以外的關鍵操作,根據(jù)配伍禁忌和已經(jīng)發(fā)生的關鍵操作可以推算出禁忌行為。對于打開文件操作,則根據(jù)目標文件ACL提供的禁忌行為描述塊動態(tài)加以擴充。3.每個進程的關鍵行為配伍禁忌描述塊的原始內容可以來自下列來源,并可動態(tài)加以調整a)一個存儲著安全策略的數(shù)據(jù)庫,b)創(chuàng)建進程時給定的參數(shù),c)系統(tǒng)默認的關鍵行為配伍禁忌描述塊,d)所運行軟件(可執(zhí)行文件)的“訪問控制名單(ACL)”中某個“訪問控制項(ACE)”,e)繼承父進程的配伍禁忌描述塊,f)將來自父進程的配伍禁忌描述塊與來自ACL的配伍禁忌描述塊合并。4.對于運行過程中的關鍵行為請求,如果已經(jīng)屬于禁忌行為就不允許發(fā)生。5.對于運行過程中打開文件的要求,如果目標文件ACL中的相應ACE允許其打開,但是ACE中的禁忌行為描述塊所述的禁忌行為(之一)業(yè)已發(fā)生,就不允許打開。6.在運行的過程中,如果獲準打開某個文件,就要根據(jù)目標文件ACL中相應ACE項對禁忌行為的描述調整當事進程的禁忌行為描述塊。例如,假定當事進程的配伍禁忌描述塊中文件操作與網(wǎng)絡操作原來并不互斥,但是卻打開了一個要求與網(wǎng)絡操作互斥的文件,就要將網(wǎng)絡操作補充到當事進程的禁忌行為描述塊中,從此禁止網(wǎng)絡操作。7.對于實際發(fā)生的關鍵行為(除打開文件外),在當事進程的“既有行為記錄塊”中記錄下本種行為的發(fā)生。并根據(jù)配伍禁忌描述塊推算出應予禁止的關鍵操作、相應調整當事進程的禁忌行為描述塊。8.上述各點中,凡是存儲在ACL和ACE中、從而由ACL和ACE提供的信息,都可以改成集中存儲在一個安全策略數(shù)據(jù)庫中、需要使用時由安全策略數(shù)據(jù)庫提供(向該數(shù)據(jù)庫查詢)。進一步,作為入侵檢測的一種輔助手段,在根據(jù)配伍禁忌禁止當事進程的關鍵行為要求的同時,還可以把有違配伍禁忌的行為企圖作為報警信息記錄下來,甚至實時地發(fā)出警報。例如,發(fā)現(xiàn)某個進程企圖訪問載有敏感信息的文件,而此種行為已因配伍禁忌而被禁止,則一方面要拒絕其行為要求,另一方面也要發(fā)出警報,因為這很可能是因為入侵所引起。還應說明,無論是ACL還是安全策略數(shù)據(jù)庫,都是由操作系統(tǒng)提供的文件安全機制,而關系式數(shù)據(jù)庫中的“表”一般都是以文件形式存儲的,所以ACL和安全策略數(shù)據(jù)庫也就自然成為數(shù)據(jù)庫安全機制。本發(fā)明所述的方法雖然也可以獨立于ACL和安全策略數(shù)據(jù)庫,但是與ACL或安全策略數(shù)據(jù)庫相結合顯然是更好、更有效的選擇。而既然與ACL或安全策略數(shù)據(jù)庫相結合,本發(fā)明所述的方法自然就提高了數(shù)據(jù)庫的安全性。本發(fā)明有益的效果是將進程行為的配伍禁忌引入計算機操作系統(tǒng),根據(jù)進程已有的行為控制其后續(xù)的行為,提高計算機操作系統(tǒng)的安全性。具體實施例方式下面結合實施例對本發(fā)明作進一步說明目前主流的操作系統(tǒng)就是Windows和Linux兩種,所以下面以Linux為例說明本發(fā)明的實施,并指出在Windows操作系統(tǒng)中實施時的技術上的特殊之處。但是,只要有需要,本發(fā)明所述方法在別的操作系統(tǒng)中也可以實施,具體的實施細節(jié)(如程序代碼以及數(shù)據(jù)結構的定義等)并不影響本發(fā)明的實質。實施例1、在Linux操作系統(tǒng)中的實施如上所述,配伍禁忌描述塊的原始內容可以來自安全策略數(shù)據(jù)庫,也可以來自可執(zhí)行文件的ACL,而進一步的補充信息則都來自具體文件的ACL。但是,根據(jù)具體實現(xiàn)的不同,所有信息全部來自安全策略數(shù)據(jù)庫、或者全部來自ACL、也并無不可。區(qū)別只是安全策略數(shù)據(jù)庫是集中式的,而ACL則是分布式的。一般而言,將與每個具體文件有關的規(guī)則伴隨該具體文件加以組織和存儲,就是ACL;而若集中組織和存儲,就成了安全策略數(shù)據(jù)庫。對于本發(fā)明所述通過進程行為的配伍禁忌提高操作系統(tǒng)安全性的方法而言,這只是具體實現(xiàn)方式的不同,二者并無實質的不同,在難度上也沒有多大差別(來自安全策略數(shù)據(jù)庫甚至更為簡單)。本實施例采用的是配伍禁忌描述塊的原始內容來自ACL。另一方面,配伍禁忌描述塊、既有行為記錄塊、禁忌行為描述塊的實現(xiàn)也可以有多種不同的方式,其中之一就是位圖方式。在位圖方式中,一種關鍵行為對應著一個標志位;而行為的配伍禁忌、以及是否已經(jīng)發(fā)生和受禁,則都以相應標志位的狀態(tài)為1或0表示。一般而言,一個標志位只能表示一種、或一類的行為,而不是具體的一次行為,也不能表示行為的具體對象。例如“網(wǎng)絡操作”是一類行為,而同類的行為可能反復進行多次,每次的對象(IP地址)也可能不同。在實際應用中,對于同一對象的多次操作是沒有必要加以區(qū)別的而不區(qū)別具體的操作對象則有可能導致“擴大打擊面”,但是對于安全性而言,這比漏過可能的攻擊要好。再說,要在位圖的基礎上進一步對操作對象加以明細也不困難(下文還將有所涉及)。下面描述的是一個基于ACL、采用位圖方式的實施例。Linux操作系統(tǒng)支持許多種不同的文件系統(tǒng),但是就ACL機制的實現(xiàn)而言并無多大區(qū)別,所以下面以ext2文件系統(tǒng)為例說明本方法的實施。1.關鍵行為類型定義首先定義關鍵操作(行為)。本實施例用位圖代表所有可能的關鍵操作的一個集合(例如受禁操作的集合,以及既有操作、即已發(fā)生操作的集合等等),而具體的每種操作就用一個標志位來代表。如果一個位圖中的某個標志位為1,就表示這個操作存在于這個具體的集合中,否則就不在這個集合中。而配伍禁忌,則是兩個集合、即兩組操作之間的互斥。所以,關鍵操作的定義體現(xiàn)為標志位的定義#defineOP_FORK_CREATE_PROC0x00000001/*fork()或創(chuàng)建進程*/#defineOP_CREATE_PIPE0x00000002/*創(chuàng)建普通管道*/#defineOP_NAMED_PIPE0x00000004/*創(chuàng)建/打開命名管道*/#defineOP_MMAP0x00000008/*創(chuàng)建/打開共享內存區(qū)*/#defineOP_MMSG0x00000010/*創(chuàng)建報文隊列*//*保留0x00000020至0x00000080用于Windows特有的操作*/#defineOP_SOCKET0x00000100/*創(chuàng)建/打開Socket*/#defineOP_CONNECT0x00000200/*與對方建立連接*/#defineOP_LISTEN0x00000400/*等待對方的連接要求*/#defineOP_ACCEPT0x00000800/*接受對方的連接要求*/#defineOP_RECV0x00001000/*接收報文*/#defineOP_SEND0x00002000/*發(fā)送報文*//*保留0x00004000和0x00008000用于別的網(wǎng)絡操作*/#defineOP_FILE_OPEN0x00010000/*創(chuàng)建/打開文件(或目錄)*/#defineOP_FILE_READ0x00020000/*讀文件*/#defineOP_FILE_WRITE0x00040000/*寫文件*/#defineOP_FILE_DELETE0x00080000/*刪除文件*/#defineOP_FILE_MOVE0x00100000/*移動文件*/#defineOP_FILE_MAP0x00200000/*映射文件*/#defineOP_FILE_EXEC0x00400000/*執(zhí)行文件(包括腳本)*/#defineOP_FILE_ACL0x00800000/*設置ACL*/#defineOP_REG_QUERY0x01000000/*查詢注冊表*/#defineOP_REG_UPDATE0x02000000/*改變注冊表*//*保留0x04000000用于別的注冊表操作*/#defineOP_RULE_SETUP0x08000000/*設置禁忌規(guī)則*/#defineOP_SHUTDOWN0x10000000/*關機*/#defineOP_REBOOT0x20000000/*重啟*/#defineOP_INSMOD0x40000000/*動態(tài)安裝內核模塊*//*保留0x80000000用于外設操作,例如訪問U盤等等*/這些標志位的定義是基于32位位圖的,所以最多可以定義32種關鍵操作。這里實際定義的還不到32種,還保留了一些標志位用于將來的擴充。如果32位不夠用,也可以采用64位的位圖。這里有關文件操作的標志位用于總體的文件操作,相當于“總開關”,例如要是禁忌行為描述位圖中的標志位OP_FILE_OPEN為1就表示從此以后任何文件都不能打開了,而若是0則需要進一步檢查具體目標文件的ACL。對于關鍵操作標志位可以按要求加以組合,例如#defineOP_NETWORK(OP_SOCKET|OP_CONNECT|OP_LISTEN|OP_ACCEPT|OP_RECV|OP_SEND)這樣,常數(shù)OP_NETWORK、即0x00003f00、就代表了所有的網(wǎng)絡操作。如前所述,具體定義哪些關鍵操作(行為)、怎么定義,那都是具體的實現(xiàn)細節(jié),這里給出的只是一個例子。2.數(shù)據(jù)結構有了關鍵行為的類型定義,還需要定義幾種數(shù)據(jù)結構。第一種是“關鍵行為描述項”,用于ACL中各ACE內部的“禁忌操作描述項”以及各進程的“受禁操作描述塊”和“既有行為記錄塊”。structcritical_op_entry{unsignedintmap;};可見這實際上就是一個操作位圖,而有關的標志位已定義于上。這個數(shù)據(jù)結構用在ACE內部就是“禁忌操作描述項”。本來,所謂互斥或配伍禁忌至少是雙邊的,但禁忌操作描述項所描述的只是其中的一邊,即已經(jīng)被排斥的一邊(可以是多種操作)。而另一邊則是隱含的,這就是對具體目標文件的(按指定模式的)訪問權、或者已經(jīng)實施的文件訪問。除用于ACL以外,關鍵操作描述項還用于具體進程的“受禁操作描述塊”和“既有行為記錄塊”,例如“既有行為記錄塊”中的標志位OP_MMAP為1就表示這個進程曾經(jīng)創(chuàng)建或打開過共享內存區(qū)(因而與別的進程有了此種通信手段)。這樣,如果這個進程想要打開某個文件,而這個文件的ACL恰好又表明與共享內存區(qū)互斥,就會遭到拒絕。另一方面,如果“受禁操作描述塊”中的標志位OP_MMAP為1,就表示創(chuàng)建或打開共享內存區(qū)已被禁止,原因是某種與其構成配伍禁忌的操作業(yè)已發(fā)生。這里要指出對于一般的關鍵行為,只要曾經(jīng)發(fā)生就會被以標志位的形式記錄在“既有行為記錄塊”中,但是對于具體文件的訪問(打開)則并不記錄在“既有行為記錄塊”中,而只是把因此而遭到禁止的操作添加到“受禁操作描述塊”中。這樣做的目的是使“既有行為記錄塊”的數(shù)據(jù)結構和處理得以簡化。第二種數(shù)據(jù)結構是“配伍禁忌描述項”,這就是對互斥雙方的完整描述了structexclusive_entry{unsignedintmap1;unsignedintmap2;};這里的map1和map2都是操作位圖,代表著互斥的雙方。其物理意義是位圖map1中任何一種(標志位為1的)操作都與map2中的任何一種(標志位為1的)操作互斥,即構成配伍禁忌。例如,假定map1為(OP_FILE_WRITE|OP_REG_UPDATE),而map2為(OP_SOCKET|OP_FORK_CREATE_PROC),就表示只要有網(wǎng)絡操作或創(chuàng)建了子進程、就既不允許寫(任何)文件也不允許修改注冊表(在Linux中意味著/etc下面的文件)。也就是說,這兩組操作構成配伍禁忌。但是注意同一個位圖中的各項操作并不構成配伍禁忌,例如map1中的寫文件和修改注冊表并不互斥。另一方面,不論是map1還是map2都不得為空,各自至少要有一個標志位為1。所以,一個“配伍禁忌描述項”就是一條配伍禁忌的規(guī)則?!芭湮榻擅枋鲰棥笔菢嫵伞芭湮榻擅枋鰤K”的元素,后者可以包含多個“配伍禁忌描述項”、即多條配伍禁忌規(guī)則。第三種數(shù)據(jù)結構就是“配伍禁忌描述塊”,一個配伍禁忌描述塊可以由多個配伍禁忌描述項構成,用來記錄一個進程的所有配伍禁忌。structexclusive_desc{int,total_size;intcurrent_size;structexclusiye_entryentries;};這里的total_size說明整個描述塊的大小,而current_size說明目前描述塊中有幾個有效的描述項,數(shù)組entries[]的物理大小則取決于total_size。“配伍禁忌描述塊”有兩個用途·用來描述一個進程的配伍禁忌,此時只是存在于內存中,從屬于具體的進程,成為進程的屬性之一?!び迷诳蓤?zhí)行文件的ACL中,為執(zhí)行這個文件而創(chuàng)建的進程以此作為其原始的配伍禁忌。如前所述,ACL是隨同其宿主文件一起存儲在磁盤上的。這樣,當創(chuàng)建一個子進程來執(zhí)行某個可執(zhí)行文件時,該文件ACL中的相應“配伍禁忌描述塊”就成為子進程的初始配伍禁忌描述塊。而若不創(chuàng)建子進程,直接由一個已經(jīng)存在的進程來執(zhí)行某個可執(zhí)行文件時,則用該文件ACL中的相應“配伍禁忌描述塊”替換其原有的配伍禁忌描述塊。當然,倘若實施者覺得“合并”比“替換”更好,那也是可以的,這只是細節(jié)的變化而已。3.對ACL的擴充每個文件都可以有一個ACL,但也可以沒有,如果沒有就說明對此文件不加特別的訪問控制。如果有的話,ACL總是與其“宿主”文件一起存儲在磁盤上。在2.6.14版Linux的代碼中,ACL的數(shù)據(jù)結構定義為structposix_acl{atomic_ta_refcount;unsignedinta_count;structposix_acl_entrya_entries;};結構數(shù)組a_entries表示其大小是可變的,字段a_ount的數(shù)值說明這個數(shù)組的實際大小。數(shù)組中的每一項都是一個posix_acl_entry數(shù)據(jù)結構,這就是ACE。所以,ACL就是一組ACE。每個ACE都是針對某個具體對象(用戶、用戶組)的對于其宿主文件的訪問權限說明。ACE原來的數(shù)據(jù)結構定義則為structposix_acl_entry{shorte_tag;unsignedshorte_perm;unsignedinte_id;};這里的e_tag就是本項ACE的屬性,也就是e_id的物理意義。例如當e_tag為ACL_USER時e_id就是用戶號,當e_tag為ACL_GROUP時e_id就是用戶組號??傊甧_id就是訪問者在某一方面的ID,即訪問者的身份;e_perm則是允許的訪問權限位圖。在有些采用“安全號”、即SID代表當事進程身份的版本中,e_id也可以是當事進程的SID,為此應該為e_tag增加一種“標簽”ACL_SID。為了將配伍禁忌信息引入到ACE中,可以在這個數(shù)據(jù)結構中增加一個禁忌操作描述項,以及一個指向配伍禁忌描述塊的指針,變成structposix_acl_entry{shorte_tag;unsignedshorte_perm;unsignedinte_id;structexclusive_entrye_exclusive;unsignedinte_desc_offset;/*forexecutableonly*/};其意義和作用為對于e_tag和e_id所指明的訪問者(某個組的成員或某個具體的用戶),賦予e_perm所述的訪問權限,但是與互斥描述項e_exclusive所述的各項操作構成配伍禁忌。這就是說如果對此文件使用了e_perm所述的訪問權限(例如讀、寫),就不再可以實施e_exclusive所述的各項操作;而若是此前已經(jīng)實施了其中的一項或幾項操作,則e_perm所賦予的權限作廢。顯然,這并不是簡單的條件訪問。另一個結構成分e_desc_offset則僅用于可執(zhí)行文件,對于普通文件沒有意義??蓤?zhí)行文件(Executable)的ACE是特殊的,因為要描述兩種不同意義上的禁忌。首先是啟動執(zhí)行目標文件的那個進程、即父進程、因此而受到的禁忌;另一方面是實際執(zhí)行目標文件的子進程的配伍禁忌。對于配伍禁忌的描述是雙邊的,而且可能有不止一組。例如某個可執(zhí)行文件可能有兩組配伍禁忌網(wǎng)絡操作跟創(chuàng)建進程,寫文件跟修改注冊表,這兩組配伍禁忌是不能合并的,因為創(chuàng)建進程跟寫文件和修改注冊表二者都不互斥。所以,對于可執(zhí)行文件的執(zhí)行,需要為之提供一個配伍禁忌描述塊(而不只是一個配伍禁忌描述項),而且描述塊的大小也無法預定。這個描述塊顯然只能放在ACE數(shù)組的外面,此時就用上面的結構成分e_desc_ffset來說明相應配伍禁忌描述塊的位置,即相對于ACL起點的位移。當然,一般的(非可執(zhí)行)文件是沒有配伍禁忌描述塊的,此時e_desc_offset為0。由于配伍禁忌的引入,在一個文件(或目錄)的ACL中對于同一個用戶(或組)可以有不止一個的ACE,每一個ACE說明了對于一種或數(shù)種訪問模式的權限規(guī)定和相應的禁忌。例如,可能有一個ACE是關于允許讀操作的,另一個是關于允許執(zhí)行的,兩種情況下的禁忌不同,所以要分成兩個ACE。如前所述,雖然這些ACE是關于文件的讀、寫、執(zhí)行等等操作的,但是一般都把對ACL的檢查放在打開文件的時候,因為企圖寫一個按讀模式打開的文件本來就已經(jīng)被操作系統(tǒng)禁止,操作系統(tǒng)內核已經(jīng)有了這方面的保證。這里對禁忌行為的描述是位圖形式的,這只能表明某一種行為(操作)是否屬于禁忌,而并不涉及操作的具體對象。例如標志位OP_SOCKET為1表示排斥網(wǎng)絡通信、而并沒有說明具體的通信對象(例如IP地址)。同樣,標志位OP_FILE_OPEN為1表示排斥所有的打開文件、而并沒有說明具體的文件。如果把這里e_exclusive中的位圖map改成帶有指針性質的索引index,讓它指向一個類似于ACL那樣的“禁忌列表”,以表列的方式進一步加以明細說明,那也是可以的,例如可以仿照ACL和ACE的格式來定義這樣的數(shù)據(jù)結構structforbidden_list{unsignedshortl_index;unsignedshortl_length;unsignedintl_offset[32];};這是禁忌列表的頭部。其中的l_index為索引號,與ACE中提供的索引號相一致;而l_length表明整個禁忌列表的長度。數(shù)組l_offset[32]的作用在邏輯上類似于前面的位圖,而實際的作用則類似指針。這個數(shù)組中的一個元素就相當于位圖中的一個標志位,并以標志位在位圖中的位置作為下標,例如原來OP_SOCKET定義為0x00000100,現(xiàn)在就定義為8。這樣,比方說,要是需要排斥網(wǎng)絡操作,下標為OP_SOCKET的表項就是與此有關的明細信息所在的位置、即相對于禁忌列表起點的位移(位移為0就表示不在禁忌之列,相當于標志位為0),而明細信息的數(shù)據(jù)結構則為structforbidden_item{unsignedshorti_op;unsignedshorti_perm;unsignedshorti_num;unsignedinti_id[1];};這里的i_op就是受禁操作的代碼,例如OP_SOCKET。第二個成分i_perm表示后面所列的明細對象是屬于“包含(INCLUDE)”還是“除外(EXCEPT)”。例如,當受禁操作為OP_SOCKET時,后面的數(shù)組i_id[]中是一串IP地址。但是,i_perm為“包含”時的意義是“禁止對這些IP地址的網(wǎng)絡操作,別的(IP地址)都可以”;而i_perm為“除外”時的意義則是“除這些IP地址以外,別的都被禁止”。顯然,數(shù)組i_id[]的內容因具體的關鍵行為而不同,而i_num說明了數(shù)組的實際大小。對文件操作的禁忌描述與此相似,只是數(shù)組i_d[]中都是字符串指針,指向實際的文件名或目錄名。此外,數(shù)組i_id[]中也可以使用文件名或目錄的“i-節(jié)點號”。與此相應,在i_perm中可以用一個標志位來表示數(shù)組i_id[]的內容是字符串指針還是i-節(jié)點號。4.算法由于本實施例采用位圖,前述的三個描述塊就成了位圖。這樣,每個進程都有三個實質上是位圖的數(shù)據(jù)結構配伍禁忌描述塊-其主體是一個配伍禁忌描述項結構數(shù)組,其中的每一個元素、即每一個描述項都包含一對位圖,說明了構成配伍禁忌的兩組操作。數(shù)組的大小可變,最小為0、即不存在配伍禁忌。最初的配伍禁忌、如果有的話、來自可執(zhí)行程序文件的ACL。數(shù)組的大小在運行的過程中可能變化(一般是只擴充不縮小)。既有行為位圖-進程已有行為的記錄,一開始時為空,運行中每當發(fā)生關鍵行為時就將既有行為位圖中的相應標志位置成1。同時,還要根據(jù)配伍禁忌描述找出因此而需要禁止的操作,并把這些需要禁止的操作增添到禁忌行為位圖中、就是將禁忌行為位圖中的有關標志位都置成1。但是對于文件的操作是個例外,對具體文件的操作無需記錄在既有行為位圖中,而只是把ACL所規(guī)定的禁忌增添到禁忌行為位圖中。禁忌行為位圖-表明本進程已經(jīng)受到禁止的操作。其內容來自兩個方面,一部分可以根據(jù)配伍禁忌描述和既有行為位圖推算出來,另一部分則因文件訪問(打開文件)而來自各目標文件的ACL。在運行中,禁忌行為位圖的內容可能逐漸積累。與此相應,在進程控制塊數(shù)據(jù)結構中要增加三個指針,分別指向這三個數(shù)據(jù)結構。由于采用位圖,對于標志位的檢查在操作/運算上是很簡單的,例如要檢查某項關鍵操作是否已被禁止,就只要將代表著相應標志位的常數(shù)(例如OP_MMAP)跟禁忌行為位圖相與,結果為0表示位圖中的相應標志位為0、即未被禁止,結果為非0則表示位圖中的相應標志位為1、即已被禁止。另一方面,兩個位圖的合并也很簡單,例如要把位圖S合并到位圖D中,就只要把兩個位圖相或,并以相或的結果取代D中原有的內容就可以了。對于本發(fā)明的實施,下列幾個函數(shù)/過程是關鍵性的關鍵操作申請-在執(zhí)行關鍵操作之前,要先通過這個函數(shù)提出申請,如果返回“允許”方可進行,并須對當事進程的受禁操作位圖和既有行為位圖作出相應調整。檢查ACL-打開文件之前要檢查目標文件的ACL,如果允許按所要求的模式打開方可進行,并須對當事進程的受禁操作位圖作出相應調整。如果是按“執(zhí)行”模式打開可執(zhí)行文件,則ACL還可能提供初始的配伍禁忌描述塊。創(chuàng)建子進程-創(chuàng)建子進程、讓子進程執(zhí)行指定的可執(zhí)行文件,是比較復雜的關鍵操作。執(zhí)行目標文件-由當事進程自己執(zhí)行指定的可執(zhí)行文件,也是比較復雜的關鍵操作。打開文件-打開文件是最重要的關鍵操作,事實上以往的安全措施基本上都是以打開文件為中心的。另一方面,這也是比較復雜的關鍵操作。其它關鍵操作-相對而言,除創(chuàng)建子進程、執(zhí)行目標文件、和打開文件以外的其它關鍵操作就比較簡單了。這些函數(shù)/過程構成本實施例的主體,其余的細節(jié)和附加操作就無需加以說明了。下面是對于這些過程的算法描述關鍵操作申請(輸入?yún)?shù)進程控制塊,操作類型,目標文件的ACL,要求的打開模式,空白配伍禁忌描述塊;返回“允許”或“拒絕”)/*說明·目標文件的ACL和打開模式僅在操作類型為打開文件時才有意義,·空白配伍禁忌描述塊僅在打開模式包含執(zhí)行時才有意義。*/1.根據(jù)進程控制塊中的三個指針找到當事進程的配伍禁忌描述塊、既有行為描述塊、和禁忌行為描述塊;2.檢查禁忌行為描述塊,看所要求的操作是否已經(jīng)屬于禁忌,如果是就返回“拒絕”;3.如果所要求的操作是打開文件3.1)調用檢查ACL(),以進程控制塊,目標文件的ACL、要求的打開模式、當事進程的禁忌行為描述塊、和空白配伍禁忌描述塊為參數(shù)。目的在于檢查目標文件的ACL,看是否允許按所要求的訪問模式打開,如果不允許就返回“拒絕”,結束;3.2)目標文件ACL的相關ACE中是否規(guī)定了行為禁忌(實質上就是與打開目標文件構成配伍禁忌的行為)?3.3)如果是,就檢查當事進程的既有行為描述塊,看當事進程是否已經(jīng)發(fā)生過與此(按給定的模式打開目標文件)構成配伍禁忌的操作;3.4)如果發(fā)生過,就返回“拒絕”,結束;3.5)如未發(fā)生過,就將ACE中規(guī)定的行為禁忌并入當事進程的禁忌行為描述塊;3.6)返回“允許”,結束;/*說明如果打開文件的模式中包含執(zhí)行,則此時空白配伍禁忌描述塊中已有來自ACL的初始配伍禁忌描述塊的內容*/4.如果所要求的操作不是打開文件4.1)將發(fā)生本類操作的信息寫入既有行為描述塊;4.2)在配伍禁忌描述塊中找到與本次操作有配伍禁忌的所有操作,將這些操作合并到當事進程的禁忌行為描述塊中;4.3)返回“允許”,結束。檢查ACL(輸入?yún)?shù)進程控制塊,目標文件的ACL,要求的打開模式,禁忌行為描述塊,空白配伍禁忌描述塊;返回“允許”或“拒絕”)/*說明空白配伍禁忌描述塊僅當打開模式包含執(zhí)行時才有意義。*/對于ACL中的每一個ACE,循環(huán)執(zhí)行下列過程,直至前進到下一個ACE或返回1.檢查ACE的適用對象(如用戶號、組號、SID等)與進程控制塊中所述是否相符;2.如果不相符則前進到下一個ACE,如果所有ACE都不相符就返回默認的結果(一般為“拒絕”,但是也可以是“允許”,具體取決于系統(tǒng)的設置),結束;3.如果相符3.1)將所要求的打開模式跟ACE中的規(guī)定進行比較;3.2)如果按ACE中的規(guī)定不被允許就返回“拒絕”,結束;3.3)檢查是否有禁忌描述,如果有就合并到作為參數(shù)的禁忌行為描述塊中;3.4)打開模式是否為“執(zhí)行”?如果不是就返回“允許”,結束;4.如果打開模式中包含“執(zhí)行”,檢查ACE中是否為子進程提供了配伍禁忌描述塊;4.1)如果沒有配伍禁忌描述塊就返回“允許”(作為參數(shù)的空白配伍禁忌描述塊仍為空白),結束;4.2)如果有配伍禁忌描述塊,就在ACE所指示的位置上找到配伍禁忌描述塊,并將其復制到作為參數(shù)的空白配伍禁忌描述塊中(創(chuàng)建子進程以后將子進程的進程控制塊中的配伍禁忌描述塊指針設置成指向這個描述塊);4.3)返回“允許”,結束。創(chuàng)建子進程(輸入?yún)?shù)目標文件的路徑和文件名)/*由子進程執(zhí)行目標文件*/1.根據(jù)目標文件的路徑和文件名獲取其ACL;2.為子進程分配一個空白的配伍禁忌描述塊;3.調用關鍵性操作申請(),以當事進程的進程控制塊、操作類型為打開文件、目標文件的ACL、打開模式為讀、映射和執(zhí)行、以及子進程的配伍禁忌描述塊為參數(shù);4.如果返回結果為“拒絕”就出錯返回,結束;5.否則調用常規(guī)的創(chuàng)建子進程操作;6.使子進程的進程控制塊中的配伍禁忌描述塊指針指向第2步所分配的配伍禁忌描述塊,這是由ACL為子進程提供的初始配伍禁忌描述塊(第3步已將ACL提供的初始配伍禁忌描述塊復制到這個描述塊中);6a.根據(jù)系統(tǒng)的設置,可以選擇把父進程的配伍禁忌描述塊復制到子進程的配伍禁忌描述塊中,讓子進程繼承父進程的配伍禁忌描述塊(丟棄由ACL提供的初始配伍禁忌描述塊);6b.根據(jù)系統(tǒng)的設置,可以選擇將父進程的配伍禁忌描述塊合并到由ACL為子進程提供的初始配伍禁忌描述塊中;7.為子進程分配一個空白的既有行為記錄塊和一個空白的禁忌行為描述塊,并使子進程的進程控制塊中的既有行為記錄塊指針和禁忌行為描述塊指針分別指向這兩個數(shù)據(jù)結構;8.返回第5步的結果,結束。執(zhí)行目標文件(輸入?yún)?shù)目標文件的路徑和文件名)/*由本進程執(zhí)行目標文件*/1.根據(jù)目標文件的路徑和文件名獲取其ACL;2.分配一個空白的配伍禁忌描述塊;3.調用關鍵性操作申請(),以當事進程的進程控制塊、操作類型為打開文件、目標文件的ACL、打開模式為讀、映射和執(zhí)行、以及空白配伍禁忌描述塊為參數(shù);4.如果返回結果為“拒絕”就出錯返回,結束;5.否則調用常規(guī)的執(zhí)行目標文件操作;6.將進程控制塊中的配伍禁忌描述塊指針改成指向第2步所分配的配伍禁忌描述塊,這是由ACL為子進程提供的初始配伍禁忌描述塊;6a.根據(jù)系統(tǒng)的設置,可以選擇將原有的配伍禁忌描述塊合并到由ACL提供的初始配伍禁忌描述塊中;7.將當事進程的禁忌行為描述塊和既有行為記錄塊清成空白;8.返回第5步的結果,結束。打開文件(輸入?yún)?shù)目標文件的路徑和文件名,打開模式)/*打開模式不含執(zhí)行*/1.根據(jù)目標文件的路徑和文件名獲取其ACL;2.調用關鍵性操作申請(),以當事進程的進程控制塊、操作類型為打開文件、目標文件的ACL、打開模式、以及NULL(表示沒有空白配伍禁忌描述塊)為參數(shù);3.如果返回結果為“拒絕”就出錯返回,結束;4.否則調用常規(guī)的打開文件操作;5.返回第4步的結果,結束。其他關鍵操作(輸入?yún)?shù)操作類型)1.調用關鍵性操作申請(),以當事進程的進程控制塊、操作類型、NULL(表示沒有ACL)、0(打開模式無意義)、以及NULL(沒有空白配伍禁忌描述塊)為參數(shù);2.如果返回結果為“拒絕”就出錯返回,結束;3.否則調用常規(guī)關鍵操作;4.返回第3步的結果,結束。/*說明如果本操作涉及配伍禁忌,則與本次操作互斥的所有操作類型已合并到當事進程的禁忌行為描述塊中*/為幫助理解,這里通過幾個假設的情景來說明本發(fā)明的實施。假定有個進程,其進程號為1001,所執(zhí)行的可執(zhí)行文件為some-work。文件some-work及其所在目錄的ACL都沒有規(guī)定任何配伍禁忌,所以這個進程初始的配伍禁忌描述塊和禁忌行為描述塊均為空白。在運行中,這個進程先要求按讀模式打開一個文件file1。文件file1的ACL表明1001號進程(根據(jù)其所屬用戶的權限)可以按讀模式打開這個文件,但是有配伍禁忌,具體排斥的是網(wǎng)絡操作。由于此時1001號進程尚未打開或建立任何網(wǎng)絡插口(Socket),所以允許其打開文件,但是把禁忌行為描述塊中的網(wǎng)絡插口標志位設置成1,表示此種操作現(xiàn)在已經(jīng)因涉及配伍禁忌而不在允許發(fā)生。然后,過了一會兒以后,1001號進程要求打開一個網(wǎng)絡插口。由于禁忌行為描述塊中的網(wǎng)絡插口標志位為1,說明已經(jīng)排斥網(wǎng)絡插口操作,所以就拒絕打開網(wǎng)絡插口。這樣,就防止了文件file1的內容通過網(wǎng)絡操作外泄。那么,為什么不是允許其打開網(wǎng)絡插口,然后限制具體的文件讀/寫操作呢?那樣當然也是可以的,同樣也是本發(fā)明所述配伍禁忌方法的一種實現(xiàn),但是每次讀寫文件都進行配伍禁忌的檢查未免影響效率,而把配伍禁忌的檢查放在打開文件的時候則影響不至于太大。另一方面,一旦打開一個文件以后,對此文件的訪問也不一定非得通過讀、寫等系統(tǒng)調用才能進行,例如通過mmap()把文件映射到一個內存區(qū)以后就可以像讀/寫內存一樣地訪問這個文件了。當然,也可以通過規(guī)定文件映射與網(wǎng)絡操作互斥(配伍禁忌)來加以杜絕,但是把配伍禁忌的檢查放在打開文件的時候顯然更簡單、更自然,何況在打開文件的時候檢查其ACL也更為方便。不過這種細節(jié)的不同并不影響本方法的實質?,F(xiàn)在掉過頭來,假定1001號進程在打開文件file1之前就先要求打開網(wǎng)絡插口。此時禁忌行為描述塊尚是空白,網(wǎng)絡插口標志位為0,所以允許其打開網(wǎng)絡插口。但是對網(wǎng)絡插口的操作屬于關鍵行為,所以把既有行為記錄塊中的相應標志位設置成1。然后,過了一會兒以后,1001號進程要求打開文件file1。根據(jù)file1的ACL,1001號進程允許打開這個文件、但是有配伍禁忌,禁忌之一就是網(wǎng)絡操作。而既有行為記錄塊中的網(wǎng)絡插口標志位為1,說明已經(jīng)打開過網(wǎng)絡插口,于是就拒絕打開文件file1。這樣,同樣也防止了文件file1的內容通過網(wǎng)絡操作外泄。再假定在可執(zhí)行文件some-work的ACL中規(guī)定了對于所創(chuàng)建子進程的行為配伍禁忌,具體是網(wǎng)絡操作與子進程創(chuàng)建之間的互斥。這樣,在進程some-work的初始配伍禁忌描述塊中,一邊的網(wǎng)絡插口標志位為1、而另一邊的子進程創(chuàng)建標志位為1。假定子進程在運行中先要求打開網(wǎng)絡插口,因為此時禁忌行為描述塊中的網(wǎng)絡插口標志位為0,所以獲得允許。但是把既有行為記錄塊中的網(wǎng)絡插口標志位設置為1,同時根據(jù)配伍禁忌描述塊推算出子進程創(chuàng)建應該受禁(因為與網(wǎng)絡操作互斥),所以把禁忌行為描述塊中的子進程創(chuàng)建標志位也設置成1。然后,當要求創(chuàng)建子進程的時候,由于禁忌行為描述塊中的子進程創(chuàng)建標志位為1,就拒絕創(chuàng)建。反過來,假定操作的次序變成先要求創(chuàng)建子進程,后要求打開網(wǎng)絡插口,則允許創(chuàng)建子進程而拒絕打開網(wǎng)絡插口,具體的過程相同,只是所處理的標志位變了一下。5.規(guī)則的設置Linux為ACL的設置和處理提供了若干系統(tǒng)調用,用于從用戶空間讀取/寫入某個目標文件的ACL。對于ACL中配伍禁忌描述塊和禁忌行為位圖的設置可以利用這些系統(tǒng)調用。此外,可以通過系統(tǒng)調用ioctl()或者對/proc目錄下有關節(jié)點的操作獲取和修改具體進程的配伍禁忌描述塊等數(shù)據(jù)結構,具體可參考防火墻軟件iptables中過濾策略的設置。稍有設備驅動程序開發(fā)經(jīng)驗的程序員對此不會感到困難。至于用戶空間的處理,即通過人機交互形成一個ACL(數(shù)據(jù)結構),那就簡單了,任何一個略有經(jīng)驗的程序員都可以毫不費力地加以實現(xiàn)。具體的人機交互方式可以是菜單式的、表格式的,也可以是命令行方式的,還可以使用Web網(wǎng)頁。形成了一個文件的ACL以后,就可以通過系統(tǒng)調用setxattr()或ioctl()把它設置到內核中去。6.算法的實現(xiàn)和運用2.6.14版Linux代碼中有個函數(shù)permission(),每當需要打開一個文件或目錄時都要先調用這個函數(shù),檢測是否允許當前進程按所要求的模式(讀/寫/執(zhí)行等等)打開目標文件。而permission(),則根據(jù)目標文件所在文件系統(tǒng)的種類調用該文件系統(tǒng)為此而提供的檢測函數(shù),對于ext2文件系統(tǒng),這個檢測函數(shù)是ext2_permission()。它又輾轉調用一個函數(shù)ext2_check_acl(),這就是具體察看ACL的函數(shù)了。此外,Linux代碼中對于每個系統(tǒng)調用都有與之對應的專用函數(shù),例如對于系統(tǒng)調用connect(),內核中就有個對應的專用函數(shù)sys_connect()。對上述“關鍵操作申請”等過程的調用就可以結合進這些函數(shù)中。對此,有內核開發(fā)能力的程序員應該不會有困難。除內核中對每個系統(tǒng)調用都有個對應的函數(shù)之外,在用戶空間的C程序庫中也有相應的程序入口,所以也可以在用戶空間實施本發(fā)明,只是需要在每個進程的用戶空間為其設立一個數(shù)據(jù)結構(類似于Windows系統(tǒng)中的PEB)、作為進程控制塊在用戶空間的擴充。上面所述的實施例是基于ACL的。如果要采用安全策略數(shù)據(jù)庫,那么實際上就是把所有文件的ACL集中存儲在一個數(shù)據(jù)庫里。作為另一個實施例,可以建立一個只有兩個表的關系數(shù)據(jù)庫,一個是“用戶權限表”,另一個是“分組權限表”。前者的結構為文件名(完全路徑+文件名),用戶名,訪問權限,禁忌操作描述,子進程的初始配伍禁忌描述塊。另一個表的結構與此基本相同,只是把用戶名改成組名。需要訪問文件時(一般只是在打開文件時),先根據(jù)目標文件名和用戶名查詢“用戶權限表”,以得到相應的訪問權限、禁忌操作描述、以及子進程的初始配伍禁忌描述塊。如果在“用戶權限表”中查不到就進一步查詢“分組權限表”。要是兩個表中都查不到,那就是未作規(guī)定了,此時可根據(jù)系統(tǒng)配置按默認的方式處理(例如拒絕訪問)。當然,對于一般的非可執(zhí)行文件,數(shù)據(jù)庫中的子進程初始配伍禁忌描述塊為空白。如果操作系統(tǒng)采用“安全號”、即SID機制,則也可以把兩個表合并成一個,而改成根據(jù)目標文件名和SID進行查詢。其余的就跟前述基于ACL的實施例一樣了。顯然,對于有操作系統(tǒng)開發(fā)能力的程序員而言,要實現(xiàn)這樣一個簡單的數(shù)據(jù)庫是毫無困難的,更何況還存在如MySQL一類的開源代碼可以利用。實施例2、在Windows操作系統(tǒng)中的實施本發(fā)明所述方法也適用于Windows,在實施中可以參考上述的Linux實施例。在Windows系統(tǒng)中,每個用戶都有一個“證件(Token)”,凡是屬于這個用戶的進程都使用這個證件。而每一個受保護的“對象”,則都有一個“安全描述項(SecurityDescriptor)”,ACL就是其中的一部分。讓每個用戶都有個證件實際上并不是特別有新意的概念,因為證件中的信息也只是與身份有關的信息,例如用戶名、所屬的組等等,而沒有與行為和歷史有關的信息。其好處只是在于例如用戶名可以用字符串、而不必像在Linux中那樣只能使用數(shù)值形式的用戶號。Linux雖然沒有“證件”的概念,但是有關的信息記錄在每個進程的控制塊中,實質上還是一樣。Windows的ACL稱為DACL(還有個SACL,用于不同目的),DACL的數(shù)據(jù)結構等等定義當然與Linux中的不同,但是基本的原理和過程都是一樣的,在“方法”的層次上并沒有什么不同。由于微軟不公開其Windows操作系統(tǒng)的源代碼,實際上只有微軟自己才有可能來實施本發(fā)明所述的方法,但是這并不影響本發(fā)明作為一種方法、即根據(jù)配伍禁忌控制進程行為的實質。同樣,對于別的操作系統(tǒng),其(文件)訪問控制名單機制以及進程管理機制的實現(xiàn)多少有些不同,但是它們的邏輯和實質是相同的,所以這并不影響本發(fā)明根據(jù)配伍禁忌控制進程行為的實質。附注本發(fā)明的效果只是在一定程度上提高了操作系統(tǒng)的安全性。在系統(tǒng)安全領域,沒有一種方法可以一勞永逸地解決問題,也沒有一種方法單獨就可以保證安全。所以,每一種能夠使系統(tǒng)安全性有所提高的方法和措施都是有意義、有價值的,實際使用中則應該綜合使用各種有益的方法和措施。權利要求1.一種通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是1.1)定義一組可能存在配伍禁忌、即可能要求互斥的關鍵行為;1.2)每個進程都有按一定形式記錄的配伍禁忌規(guī)則;1.3)每個進程都按一定的形式記錄下已經(jīng)發(fā)生過的關鍵行為;1.4)關鍵行為在發(fā)生前須經(jīng)過禁忌檢查,根據(jù)當事進程的配伍禁忌規(guī)則和已經(jīng)發(fā)生過的關鍵行為進行判斷,如果已經(jīng)發(fā)生過的關鍵行為中有與其構成配伍禁忌、即互斥的關鍵行為已經(jīng)發(fā)生,該關鍵行為即視為禁忌行為而不允許其發(fā)生。2.根據(jù)權利要求1所述的通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是2.1)與文件訪問控制名單、即ACL機制相結合;2.2)文件的訪問控制名單ACL中含有關于因按給定模式打開該文件而受禁的關鍵行為的說明;2.3)關鍵行為在發(fā)生前須經(jīng)過禁忌檢查,如屬2.2所述禁忌行為就不允許其發(fā)生。3.根據(jù)權利要求1或2所述的通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是子進程從父進程繼承其配伍禁忌規(guī)則,作為子進程的初始配伍禁忌規(guī)則。4.據(jù)權利要求2所述的通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是由可執(zhí)行文件的訪問控制名單ACL為子進程提供在執(zhí)行該文件時的初始配伍禁忌規(guī)則。5.據(jù)權利要求2所述的通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是子進程將可執(zhí)行文件的訪問控制名單ACL所提供的初始配伍禁忌規(guī)則與從父進程繼承的配伍禁忌規(guī)則合并,作為子進程的初始配伍禁忌規(guī)則。6.根據(jù)權利要求1或2所述的通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是用位圖的形式實現(xiàn)配伍禁忌規(guī)則描述、已發(fā)生關鍵行為紀錄、和受禁行為描述。7.根據(jù)權利要求1或2所述的通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是用表列的形式對關鍵行為的具體操作對象加以明細說明。8.根據(jù)權利要求1或2所述的通過進程行為的配伍禁忌提高計算機操作系統(tǒng)安全性的方法,其特征是在拒絕禁忌行為的同時將此關鍵行為企圖作為入侵報警信息按預定方式記錄下來。全文摘要本發(fā)明涉及一種通過進程行為的配伍禁忌提高操作系統(tǒng)安全性的方法,主要步驟如下1.1)定義一組可能存在配伍禁忌、即可能要求互斥的關鍵行為;1.2)每個進程都有按一定形式記錄的配伍禁忌規(guī)則;1.3)每個進程都按一定的形式記錄下已經(jīng)發(fā)生過的關鍵行為;1.4)關鍵行為在發(fā)生前須經(jīng)過禁忌檢查,根據(jù)當事進程的配伍禁忌規(guī)則和已經(jīng)發(fā)生過的關鍵行為進行判斷,如果已經(jīng)發(fā)生過的關鍵行為中有與其構成配伍禁忌、即互斥的關鍵行為已經(jīng)發(fā)生,該關鍵行為視為禁忌行為就不允許其發(fā)生。本發(fā)明有益的效果是將進程行為的配伍禁忌引入計算機操作系統(tǒng),根據(jù)進程已有的行為控制其后續(xù)的行為,提高計算機操作系統(tǒng)的安全性。文檔編號G06F9/46GK1945590SQ20061015446公開日2007年4月11日申請日期2006年10月30日優(yōu)先權日2006年10月30日發(fā)明者毛德操申請人:毛德操
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1