專利名稱:一種Linux文件保護(hù)系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息系統(tǒng)及文件安全保護(hù)技術(shù),尤其涉及一種Linux文件保護(hù)系統(tǒng)及 方法。
背景技術(shù):
近年來,隨著個人計(jì)算機(jī)、辦公自動化的普及,保護(hù)敏感文件不被泄漏成為人們關(guān) 注的熱點(diǎn)問題。系統(tǒng)入侵者除了直接竊取存儲信息,還可以通過網(wǎng)絡(luò)攻擊來竊奪文件數(shù)據(jù); 而且,由于共享的需求,敏感數(shù)據(jù)會有多人訪問,這也增大了數(shù)據(jù)泄漏的可能性。目前,文件安全保護(hù)大體可分為三個層次(1)身份識別判斷是否是許可用戶, 即對用戶身份做基于密碼的驗(yàn)證;(2)訪問控制基于用戶、組權(quán)限分配的自主訪問控制及 基于使用最小特權(quán)原則的強(qiáng)制訪問控制;前者是Linux系統(tǒng)自帶的;而后者在大多數(shù)情況 下,需要有極其復(fù)雜的配置或者需要修改文件系統(tǒng)才能實(shí)現(xiàn),并且在許多時候會造成與其 他應(yīng)用程序的兼容性問題;(3)數(shù)據(jù)加密對數(shù)據(jù)或文件進(jìn)行加密已經(jīng)成為一種公認(rèn)的比 較成功的保護(hù)方法。事實(shí)上,人們早已開發(fā)了許多優(yōu)秀的加密算法,如,數(shù)據(jù)加密標(biāo)準(zhǔn)(DES, DataEncryption Standard)、AES算法和RSA公鑰加密算法等,并且有一些應(yīng)用程序,如 crypt,即使用該程序的加密算法,用戶通過軟件工具手動完成加密和解密的工作。由于這 些應(yīng)用程序操作麻煩、沒有和整個系統(tǒng)緊密地結(jié)合而且容易受到攻擊,因此一般用戶并不 愿意使用。透明加密文件系統(tǒng)的出現(xiàn)較好地解決了易用性的問題,它或與設(shè)備驅(qū)動緊密結(jié) 合、或與文件系統(tǒng)緊密結(jié)合,為用戶提供透明存取的加密存儲服務(wù)。合法登錄系統(tǒng)的用戶用 密碼將該文件系統(tǒng)掛載到系統(tǒng)上,該文件系統(tǒng)的文件以密文形式存在于磁盤,合法用戶可 以像使用普通文件一樣使用這些文件?,F(xiàn)有的大多數(shù)文件保護(hù)方法,要么使用強(qiáng)制訪問控制來保護(hù)敏感文件的線上安 全,要么使用透明加密文件保護(hù)敏感文件的線下安全,或者二者結(jié)合使用,甚至使用工具以 手工方式去加、解密敏感文件。但這些方法都不能完全阻止用以下幾種方式非法獲取敏感 文件的明文內(nèi)容;如,進(jìn)程仿冒可以穿透強(qiáng)制訪問控制,超級用戶可以很容易的得到透明加 密文件系統(tǒng)中文件的明文,手工解密不能防止在解密后被其它非法入侵的用戶查看到明文 內(nèi)容。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種Linux文件保護(hù)系統(tǒng),以對文件提供 動態(tài)和靜態(tài)安全保護(hù)緊密相結(jié)合的一體化保護(hù),防止其被非法竊取、篡改、刪除或執(zhí)行;同 時保證許可進(jìn)程能夠正常操作這些受保護(hù)的文件。本發(fā)明的另一目的在于提供一種Linux文件保護(hù)方法,通過身份驗(yàn)證、訪問控制 與加密存儲技術(shù)的有機(jī)融合,對文件提供可靠的、使用方便的安全保護(hù)。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種Linux文件保護(hù)系統(tǒng),包括Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口、LinuX虛擬文件系統(tǒng)和Linux的統(tǒng)一密鑰安裝LUKS加密格式磁盤分區(qū),該系統(tǒng)進(jìn)一步包括文件保護(hù)模塊、 文件保護(hù)策略配置和Linux透明加密文件系統(tǒng);其中,LUKS加密格式磁盤分區(qū),用于在Linux系統(tǒng)物理磁盤分區(qū)和文件映象中建立加密 文件系統(tǒng),以對該文件系統(tǒng)進(jìn)行管理;Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口,用于通過該接口調(diào)用Linux文件系統(tǒng);Linux虛擬文件系統(tǒng),為Linux內(nèi)核中的一個軟件抽象層,用于通過一些數(shù)據(jù)結(jié)構(gòu) 及其方法向?qū)嶋H的文件系統(tǒng)提供接口機(jī)制;文件保護(hù)模塊,用以根據(jù)文件保護(hù)策略配置中用于進(jìn)程驗(yàn)證的需要,獲取當(dāng)前進(jìn) 程的能夠用于確認(rèn)其真實(shí)身份及狀態(tài)的信息;文件保護(hù)策略配置,用于針對不同文件屬性設(shè)置的文件保護(hù)機(jī)制,以及通過文件 保護(hù)策略來配置文件保護(hù)規(guī)則;Linux透明加密文件系統(tǒng),用于實(shí)現(xiàn)文件的靜態(tài)保護(hù)功能,使得在關(guān)機(jī)后,及卸載 透明加密文件系統(tǒng)后,不能非法獲得其中的密文并解密。其中,所述文件保護(hù)模塊,位于Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口與Linux虛擬文件 系統(tǒng)應(yīng)用程序編程接口 API界面之間;所述文件保護(hù)模塊所獲取能夠用于確認(rèn)其真實(shí)身份及狀態(tài)的信息,具體包括進(jìn) 程名稱,進(jìn)程的靜態(tài)可執(zhí)行文件的絕對路徑,進(jìn)程的命令行參數(shù)和進(jìn)程的靜態(tài)文件的md5 校驗(yàn)值。一種Linux文件保護(hù)方法,該方法包括A、當(dāng)前進(jìn)程對文件系統(tǒng)的訪問經(jīng)由Linux內(nèi)核文件系統(tǒng)的系統(tǒng)調(diào)用入口,從用戶 空間陷入到內(nèi)核空間后,被文件保護(hù)模塊的HOOK函數(shù),即新的文件系統(tǒng)的系統(tǒng)調(diào)用鉤子 (HOOK)函數(shù)攔截;B、文件保護(hù)函數(shù)從文件保護(hù)模塊全局的文件保護(hù)策略配置中取出自己要用到的 策略;C、文件保護(hù)模塊分析當(dāng)前進(jìn)程訪問的文件或目錄的絕對路徑;D、根據(jù)文件保護(hù)策略配置中用于進(jìn)程驗(yàn)證的需要,獲取當(dāng)前進(jìn)程的可用于確認(rèn)其 真實(shí)身份及狀態(tài)的信息;E、文件保護(hù)模塊根據(jù)保護(hù)策略配置的受保護(hù)文件存儲目錄,判斷當(dāng)前進(jìn)程正要訪 問的文件是否位于受保護(hù)的目錄及其子目錄下,如果是,則執(zhí)行步驟F ;否則,執(zhí)行步驟H ;F、文件保護(hù)模塊調(diào)用進(jìn)程驗(yàn)證模塊,判斷當(dāng)前進(jìn)程是否為授權(quán)進(jìn)程,如果是,則執(zhí) 行步驟H;否則,執(zhí)行步驟G ;G、設(shè)置文件描述符為負(fù)值,fd < 0,然后返回文件描述符fd ;H、調(diào)用原系統(tǒng)打開文件,然后返回文件描述符fd。其中,步驟D所述獲取當(dāng)前進(jìn)程的可用于確認(rèn)其真實(shí)身份及狀態(tài)的信息,包括進(jìn) 程名稱、進(jìn)程的靜態(tài)可執(zhí)行文件的絕對路徑、進(jìn)程的命令行參數(shù)和進(jìn)程的靜態(tài)文件的md5 校驗(yàn)值。步驟F所述的調(diào)用進(jìn)程驗(yàn)證模塊判斷當(dāng)前進(jìn)程是否為授權(quán)進(jìn)程的過程為F1、首先獲得在文件保護(hù)模塊中此前取得的進(jìn)程驗(yàn)證相關(guān)信息;F2、保護(hù)策略配置中進(jìn)行與進(jìn)程授權(quán)相關(guān)的配置;
F3、預(yù)先設(shè)置進(jìn)程驗(yàn)證的結(jié)果變量ret為非零值,預(yù)設(shè)為_1 ;F4、將當(dāng)前進(jìn)程名與保護(hù)策略中配置的授權(quán)進(jìn)程名進(jìn)行比較,如果相同,則執(zhí)行步 驟F5 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F5、將當(dāng)前進(jìn)程的絕對路徑與保護(hù)策略中配置的授權(quán)進(jìn)程的絕對路徑相比較,如 果相同,則執(zhí)行步驟F7 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F6、將當(dāng)前進(jìn)程的命令行參數(shù)與保護(hù)策略中配置的保護(hù)參數(shù)相比較,如果相同,則 執(zhí)行步驟F7 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F7、將當(dāng)前進(jìn)程的靜態(tài)文件的md5值與保護(hù)策略中配置的授權(quán)進(jìn)程的md5值相比 較,如果相同,則執(zhí)行步驟F8 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F8、由于前述驗(yàn)證均通過,所以設(shè)置返回值ret = 0,以供文件保護(hù)模塊判斷進(jìn)程 驗(yàn)證結(jié)果之用,然后返回當(dāng)前判斷結(jié)果0。步驟G或步驟H之后進(jìn)一步包括當(dāng)系統(tǒng)關(guān)機(jī)是,文件保護(hù)內(nèi)核模塊將所述透明加 密文件系統(tǒng)所在的磁盤關(guān)閉。本發(fā)明所提供的Linux文件保護(hù)系統(tǒng)及方法,具有以下優(yōu)點(diǎn)本發(fā)明通過在文件保護(hù)內(nèi)核模塊中完成打開LUKS加密磁盤分區(qū)(可使用密碼)、 掛載透明加密文件系統(tǒng)等方式,根據(jù)文件保護(hù)策略配置,把透明加密文件系統(tǒng)掛載到策略 指定的受保護(hù)目錄下,以便對操作、訪問存放敏感文件的文件系統(tǒng)實(shí)施全面的運(yùn)行時保護(hù); 除本文件保護(hù)內(nèi)核模塊外,不允許任何用戶、進(jìn)程去掛載或卸載該透明加密文件系統(tǒng)。另 外,本發(fā)明基于進(jìn)程驗(yàn)證的強(qiáng)制訪問控制措施,只允許由文件保護(hù)策略配置中指定的進(jìn)程 去訪問受保護(hù)的文件及目錄,在進(jìn)程由文件保護(hù)模塊驗(yàn)證后,該進(jìn)程即擁有了對受保護(hù)文 件的完全訪問權(quán)限。
圖1為本發(fā)明的文件保護(hù)系統(tǒng)加載流程示意圖;圖2為本發(fā)明的文件保護(hù)系統(tǒng)的功能框圖;圖3為本發(fā)明的文件保護(hù)方法處理流程圖;圖4為本發(fā)明的文件保護(hù)方法進(jìn)程驗(yàn)證流程圖。
具體實(shí)施例方式下面結(jié)合附圖及本發(fā)明的實(shí)施例對本發(fā)明的系統(tǒng)和方法作進(jìn)一步詳細(xì)的說明。本發(fā)明的基本思想是將基于進(jìn)程認(rèn)證的強(qiáng)制訪問控制與基于Linux的統(tǒng)一密鑰 安裝(LUKS,LinuX Unify Key Setup)透明加密文件緊密結(jié)合,由一個獨(dú)立的Linux內(nèi)核模 塊全面負(fù)責(zé)進(jìn)程認(rèn)證、訪問控制和透明加密文件系統(tǒng)的掛載與卸載,該內(nèi)核模塊只允許指 定的進(jìn)程去訪問指定的資源(敏感文件),并將不符合上述規(guī)則的文件訪問請求予以拒絕。本發(fā)明是在指定的進(jìn)程下,對存儲在透明加密文件系統(tǒng)中的受保護(hù)的敏感文件進(jìn) 行讀取、修改、移動等操作時,為防止敏感數(shù)據(jù)文件被未經(jīng)授權(quán)的進(jìn)程進(jìn)行非法操作。通過 在Linux內(nèi)核模塊中執(zhí)行透明加密文件系統(tǒng)掛載,在內(nèi)核系統(tǒng)調(diào)用中嵌入鉤子(HOOK)函數(shù) 并在其中置入一個進(jìn)程認(rèn)證及數(shù)據(jù)保護(hù)層,從而實(shí)現(xiàn)對存儲在透明加密文件系統(tǒng)中敏感數(shù) 據(jù)的動態(tài)、靜態(tài)保護(hù)的完整統(tǒng)一。在應(yīng)用程序?qū)ξ募M(jìn)行讀取或修改時,數(shù)據(jù)保護(hù)層對相關(guān)文件系統(tǒng)操作進(jìn)行攔截,根據(jù)預(yù)先配置的保護(hù)策略,首先驗(yàn)證進(jìn)程是否是允許訪問敏感文 件的進(jìn)程,然后再檢查該進(jìn)程要訪問的文件是否是受保護(hù)的文件,只有在二項(xiàng)判斷同時通 過的情況下,才被允許訪問執(zhí)行。這包括二種情況一是授權(quán)進(jìn)程訪問受保護(hù)的文件,二是 非授權(quán)進(jìn)程訪問不受保護(hù)的文件。圖1為本發(fā)明的文件保護(hù)系統(tǒng)加載流程示意圖,如圖1所示,首先啟動Linux系 統(tǒng),然后加載文件保護(hù)模塊,再讀取保護(hù)配置策略,然后再打開磁盤分區(qū),此時還可根據(jù)實(shí) 際需要設(shè)置磁盤加密密碼;最后,掛載Linux透明加密文件系統(tǒng)。本發(fā)明能夠利用Linux文件的靜態(tài)保護(hù)技術(shù),使用基于LUKS的加密磁盤格式及設(shè) 備映射加密技術(shù)(Device Mapper-Based Encryption)的透明加密文件系統(tǒng)。該透明加密 文件系統(tǒng)采用的具體方法是在一個單獨(dú)的磁盤分區(qū)上,創(chuàng)建加密分區(qū)格式,文件經(jīng)Linux 內(nèi)核的設(shè)備映射加密模塊轉(zhuǎn)換成密文后存入該分區(qū);當(dāng)使用該磁盤分區(qū)時,要求輸入密碼 進(jìn)行驗(yàn)證,通過驗(yàn)證后方可打開該分區(qū)進(jìn)行使用,即把加密設(shè)備映射為虛擬邏輯卷設(shè)備,然 后再按使用普通磁盤的掛載方式掛載上述邏輯卷設(shè)備,創(chuàng)建普通文件系統(tǒng),按常規(guī)方式訪 問存儲內(nèi)容,即為透明加密文件系統(tǒng)。圖2為本發(fā)明的文件保護(hù)系統(tǒng)的功能框圖,如圖2所示,該文件保護(hù)系統(tǒng)包括 Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口,文件保護(hù)模塊,文件保護(hù)策略配置,Linux虛擬文件系統(tǒng), Linux透明加密文件系統(tǒng)和LUKS加密格式磁盤分區(qū)。其中,Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口,用于通過該接口調(diào)用Linux文件系統(tǒng)。文件保護(hù)模塊,用以根據(jù)文件保護(hù)策略配置中用于進(jìn)程驗(yàn)證的需要,獲取當(dāng)前進(jìn) 程的可用于確認(rèn)其真實(shí)身份及狀態(tài)的信息,包括進(jìn)程請求文件的絕對路徑的監(jiān)控、訪問文 件當(dāng)前進(jìn)程的監(jiān)控等。 這里,該文件保護(hù)模塊,位于Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口與Linux虛擬文件系 統(tǒng)(即Linux下多種文件統(tǒng)一的文件系統(tǒng))應(yīng)用程序編程接口(API)界面之間,它包括進(jìn) 程請求文件的絕對路徑的監(jiān)控以及訪問文件當(dāng)前進(jìn)程的監(jiān)控。此外,這里還設(shè)計(jì)有一組HOOK函數(shù),以實(shí)現(xiàn)當(dāng)前進(jìn)程驗(yàn)證、文件絕對路徑監(jiān)控功 能,并根據(jù)文件保護(hù)策略的配置,判斷是否允許當(dāng)前進(jìn)程訪問受保護(hù)的文件,以決定予以拒 絕還是放行。這組HOOK函數(shù)被注冊到系統(tǒng)調(diào)用表中,替換了原有的文件系統(tǒng)的系統(tǒng)調(diào)用, 且不改變原來的文件系統(tǒng)系統(tǒng)調(diào)用接口,實(shí)現(xiàn)文件保護(hù)功能后,根據(jù)結(jié)果確定是否繼續(xù)調(diào) 用原來的系統(tǒng)調(diào)用函數(shù),以完成原有的文件系統(tǒng)訪問請求。文件保護(hù)策略配置,用于針對不同文件屬性設(shè)置的文件保護(hù)機(jī)制;如,將系統(tǒng)文件 的保護(hù)方式設(shè)置為不可刪除和不可替換,將普通文件的保護(hù)方式設(shè)置為只讀、隱藏等;以及 通過文件保護(hù)策略來配置文件保護(hù)規(guī)則。Linux虛擬文件系統(tǒng)(VFS,Virtual File System),是Linux內(nèi)核中的一個軟件抽 象層。它能夠通過一些數(shù)據(jù)結(jié)構(gòu)及其方法向?qū)嶋H的文件系統(tǒng),如eXt2,vfat提供接口機(jī)制。Linux透明加密文件系統(tǒng),用于實(shí)現(xiàn)文件保護(hù)功能,其具有彈性的以文件為基礎(chǔ)的 加密鍵管理方式,加密后的文件仍享有個別的文件處理方式,像是仍可以使用個別的新增 備份處理方式,而無需備份整個文件系統(tǒng);LUKS加密格式磁盤分區(qū),用于在Linux系統(tǒng)物理磁盤分區(qū)和文件映象中建立加密 文件系統(tǒng),以對該文件系統(tǒng)進(jìn)行管理。
在這里,一旦對當(dāng)前進(jìn)程的驗(yàn)證通過后,根據(jù)文件保護(hù)策略配置,我們可以選擇賦 予當(dāng)前進(jìn)程對受保護(hù)的敏感文件的完全訪問權(quán)限或部分訪問權(quán)限。在具體實(shí)例中,我們需 要的訪問權(quán)限至少有二種完全權(quán)限或無權(quán)限。圖3為本發(fā)明的文件保護(hù)方法處理流程圖,如圖3所示,該處理過程包括;步驟301、當(dāng)前進(jìn)程對文件系統(tǒng)的訪問經(jīng)由Linux內(nèi)核文件系統(tǒng)的系統(tǒng)調(diào)用入口, 從用戶空間陷入到內(nèi)核空間后,被文件保護(hù)模塊的HOOK函數(shù),即新文件系統(tǒng)的系統(tǒng)調(diào)用函 數(shù)攔截;步驟302、文件保護(hù)函數(shù)從文件保護(hù)模塊全局的文件保護(hù)策略配置中取出自己要 用到的策略;步驟303、文件保護(hù)模塊分析當(dāng)前進(jìn)程訪問的文件或目錄的絕對路徑,即以” Γ為 起點(diǎn)的文件或目錄的全路徑;步驟304、根據(jù)文件保護(hù)策略配置中用于進(jìn)程驗(yàn)證的需要,獲取當(dāng)前進(jìn)程的可用于 確認(rèn)其真實(shí)身份及狀態(tài)的信息,如,包括進(jìn)程名稱,進(jìn)程的靜態(tài)可執(zhí)行文件的絕對路徑,進(jìn) 程的命令行參數(shù),進(jìn)程的靜態(tài)文件的md5校驗(yàn)值;步驟305、文件保護(hù)模塊根據(jù)保護(hù)策略配置的受保護(hù)文件存儲目錄,判斷當(dāng)前進(jìn)程 正要訪問的文件是否位于受保護(hù)的目錄及其子目錄下,如果是,則執(zhí)行步驟306 ;否則,執(zhí) 行步驟308 ;步驟306、文件保護(hù)模塊調(diào)用進(jìn)程驗(yàn)證模塊,判斷當(dāng)前進(jìn)程是否為授權(quán)進(jìn)程,如果 是,則執(zhí)行步驟308 ;否則,執(zhí)行步驟307 ;這里,對當(dāng)前進(jìn)程進(jìn)行驗(yàn)證,要根據(jù)在保護(hù)策略中配置的授權(quán)進(jìn)程來進(jìn)行;步驟307、設(shè)置文件描述符為負(fù)值(fd < 0),然后執(zhí)行步驟309 ;步驟308、調(diào)用原系統(tǒng)打開文件,然后執(zhí)行步驟309 ;步驟309、返回文件描述符(fd)。圖4為本發(fā)明的文件保護(hù)方法進(jìn)程驗(yàn)證流程圖,如圖4所示,進(jìn)程驗(yàn)證是本發(fā)明的 一個重要特色,在此進(jìn)程驗(yàn)證過程中,文件保護(hù)模塊調(diào)用進(jìn)程驗(yàn)證模塊來驗(yàn)證當(dāng)前進(jìn)程,該 驗(yàn)證過程包括步驟401、首先獲得在文件保護(hù)模塊中此前取得的進(jìn)程驗(yàn)證相關(guān)信息;步驟402、保護(hù)策略配置中進(jìn)行與進(jìn)程授權(quán)相關(guān)的配置;步驟403、預(yù)先設(shè)置進(jìn)程驗(yàn)證的結(jié)果變量ret為非零值;如,此處設(shè)為_1 ;步驟404、將當(dāng)前進(jìn)程名與保護(hù)策略中配置的授權(quán)進(jìn)程名進(jìn)行比較,如果相同,則 執(zhí)行步驟405 ;如果不同,則執(zhí)行步驟409,并返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;步驟405、將當(dāng)前進(jìn)程的絕對路徑與保護(hù)策略中配置的授權(quán)進(jìn)程的絕對路徑相比 較,如果相同,則執(zhí)行步驟407 ;如果不同,則執(zhí)行步驟409,并返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前 值;步驟406、將當(dāng)前進(jìn)程的命令行參數(shù)與保護(hù)策略中配置的保護(hù)參數(shù)相比較,如果相 同,則執(zhí)行步驟407 ;如果不同,則執(zhí)行步驟409,并返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;步驟407、將當(dāng)前進(jìn)程的靜態(tài)文件的md5值與保護(hù)策略中配置的授權(quán)進(jìn)程的md5值 相比較,如果相同,則執(zhí)行步驟408 ;如果不同,則執(zhí)行步驟409,并返回進(jìn)程驗(yàn)證結(jié)果ret的 當(dāng)前值;
步驟408、由于前述驗(yàn)證均通過,所以設(shè)置返回值ret = 0,以供文件保護(hù)模塊判斷 進(jìn)程驗(yàn)證結(jié)果之用,然后執(zhí)行步驟409,返回當(dāng)前判斷結(jié)果0。這里,當(dāng)前值為0,表示驗(yàn)證通過,當(dāng)前值為-1,表示未通過。當(dāng)上述進(jìn)程驗(yàn)證過程完成后,再返回圖3所述的步驟306,根據(jù)判斷結(jié)果執(zhí)行后續(xù) 步驟如果進(jìn)程是授權(quán)進(jìn)程,則執(zhí)行步驟308及其后續(xù)步驟,即允許當(dāng)前進(jìn)程對受保護(hù)的文 件進(jìn)程完全權(quán)限的訪問;如果不是授權(quán)進(jìn)程,則執(zhí)行步驟307及其后續(xù)步驟。具體說明如 下如果判斷結(jié)果表明當(dāng)前進(jìn)程是授權(quán)進(jìn)程,執(zhí)行步驟308,文件保護(hù)模塊為了完成進(jìn) 程要求的文件訪問功能,繼續(xù)調(diào)用原有文件系統(tǒng)的系統(tǒng)調(diào)用去完成當(dāng)前進(jìn)程的文件訪問功 能,在步驟309中返回所訪問文件的文件描述符給當(dāng)前進(jìn)程;如果判斷結(jié)果表明當(dāng)前進(jìn)程是非授權(quán)進(jìn)程,則執(zhí)行步驟307,在此步驟中設(shè)置當(dāng)前 進(jìn)程要訪問的文件描述符fd為負(fù)值,然后在步驟309中返回此文件描述符。當(dāng)前進(jìn)程根據(jù) 返回的文件描述符的值的狀況(正、負(fù))來判斷是否能成功訪問文件。如上所述,本發(fā)明中的內(nèi)核模塊即文件保護(hù)模塊,通過替換Linux內(nèi)核文件系統(tǒng) 的系統(tǒng)調(diào)用,在內(nèi)核系統(tǒng)調(diào)用接口與文件系統(tǒng)之間加入HOOK函數(shù)以攔截進(jìn)程對文件系統(tǒng) 的訪問,進(jìn)行進(jìn)程驗(yàn)證及訪問控制;使用基于進(jìn)程驗(yàn)證的訪問控制與透明加密文件系統(tǒng)相 結(jié)合的方式,使得受保護(hù)的文件在系統(tǒng)運(yùn)行時得到動態(tài)保護(hù)。另外,在系統(tǒng)關(guān)機(jī)時,文件保 護(hù)內(nèi)核模塊把透明加密文件系統(tǒng)所在的加密磁盤關(guān)閉,此時,受保護(hù)的文件可得到及時的 靜態(tài)保護(hù),二者的結(jié)合是本發(fā)明的一個重要特點(diǎn)。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種Linux文件保護(hù)系統(tǒng),包括Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口、Linux虛擬文件系統(tǒng)和Linux的統(tǒng)一密鑰安裝LUKS加密格式磁盤分區(qū),其特征在于,該系統(tǒng)進(jìn)一步包括文件保護(hù)模塊、文件保護(hù)策略配置和Linux透明加密文件系統(tǒng);其中,LUKS加密格式磁盤分區(qū),用于在Linux系統(tǒng)物理磁盤分區(qū)和文件映象中建立加密文件系統(tǒng),以對該文件系統(tǒng)進(jìn)行管理;Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口,用于通過該接口調(diào)用Linux文件系統(tǒng);Linux虛擬文件系統(tǒng),為Linux內(nèi)核中的一個軟件抽象層,用于通過一些數(shù)據(jù)結(jié)構(gòu)及其方法向?qū)嶋H的文件系統(tǒng)提供接口機(jī)制;文件保護(hù)模塊,用以根據(jù)文件保護(hù)策略配置中用于進(jìn)程驗(yàn)證的需要,獲取當(dāng)前進(jìn)程的能夠用于確認(rèn)其真實(shí)身份及狀態(tài)的信息;文件保護(hù)策略配置,用于針對不同文件屬性設(shè)置的文件保護(hù)機(jī)制,以及通過文件保護(hù)策略來配置文件保護(hù)規(guī)則;Linux透明加密文件系統(tǒng),用于實(shí)現(xiàn)文件的靜態(tài)保護(hù)功能,使得在關(guān)機(jī)后,及卸載透明加密文件系統(tǒng)后,不能非法獲得其中的密文并解密。
2.根據(jù)權(quán)利要求1所述的Linux文件保護(hù)系統(tǒng),其特征在于,所述文件保護(hù)模塊,位于 Linux文件系統(tǒng)的系統(tǒng)調(diào)用接口與Linux虛擬文件系統(tǒng)應(yīng)用程序編程接口 API界面之間;
3.根據(jù)權(quán)利要求1所述的的Linux文件保護(hù)系統(tǒng),其特征在于,所述文件保護(hù)模塊所獲 取能夠用于確認(rèn)其真實(shí)身份及狀態(tài)的信息,具體包括進(jìn)程名稱,進(jìn)程的靜態(tài)可執(zhí)行文件的 絕對路徑,進(jìn)程的命令行參數(shù)和進(jìn)程的靜態(tài)文件的md5校驗(yàn)值。
4.一種Linux文件保護(hù)方法,其特征在于,該方法包括A、當(dāng)前進(jìn)程對文件系統(tǒng)的訪問經(jīng)由Linux內(nèi)核文件系統(tǒng)的系統(tǒng)調(diào)用入口,從用戶空間 陷入到內(nèi)核空間后,被文件保護(hù)模塊的HOOK函數(shù),即新文件系統(tǒng)的系統(tǒng)調(diào)用函數(shù)攔截;B、文件保護(hù)函數(shù)從文件保護(hù)模塊全局的文件保護(hù)策略配置中取出自己要用到的策略;C、文件保護(hù)模塊分析當(dāng)前進(jìn)程訪問的文件或目錄的絕對路徑;D、根據(jù)文件保護(hù)策略配置中用于進(jìn)程驗(yàn)證的需要,獲取當(dāng)前進(jìn)程的可用于確認(rèn)其真實(shí) 身份及狀態(tài)的信息;E、文件保護(hù)模塊根據(jù)保護(hù)策略配置的受保護(hù)文件存儲目錄,判斷當(dāng)前進(jìn)程正要訪問的 文件是否位于受保護(hù)的目錄及其子目錄下,如果是,則執(zhí)行步驟F ;否則,執(zhí)行步驟H ;F、文件保護(hù)模塊調(diào)用進(jìn)程驗(yàn)證模塊,判斷當(dāng)前進(jìn)程是否為授權(quán)進(jìn)程,如果是,則執(zhí)行步 驟H;否則,執(zhí)行步驟G ;G、設(shè)置文件描述符為負(fù)值,fd< 0,然后返回文件描述符fd ;H、調(diào)用原系統(tǒng)打開文件,然后返回文件描述符fd。
5.根據(jù)權(quán)利要求4所述的Linux文件保護(hù)方法,其特征在于,步驟D所述獲取當(dāng)前進(jìn)程 的可用于確認(rèn)其真實(shí)身份及狀態(tài)的信息,包括進(jìn)程名稱、進(jìn)程的靜態(tài)可執(zhí)行文件的絕對路 徑、進(jìn)程的命令行參數(shù)和進(jìn)程的靜態(tài)文件的md5校驗(yàn)值。
6.根據(jù)權(quán)利要求4所述的Linux文件保護(hù)方法,其特征在于,步驟F所述的調(diào)用進(jìn)程驗(yàn) 證模塊判斷當(dāng)前進(jìn)程是否為授權(quán)進(jìn)程的過程為F1、首先獲得在文件保護(hù)模塊中此前取得的進(jìn)程驗(yàn)證相關(guān)信息;F2、保護(hù)策略配置中進(jìn)行與進(jìn)程授權(quán)相關(guān)的配置;F3、預(yù)先設(shè)置進(jìn)程驗(yàn)證的結(jié)果變量ret為非零值,預(yù)設(shè)為_1 ;F4、將當(dāng)前進(jìn)程名與保護(hù)策略中配置的授權(quán)進(jìn)程名進(jìn)行比較,如果相同,則執(zhí)行步驟 F5 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F5、將當(dāng)前進(jìn)程的絕對路徑與保護(hù)策略中配置的授權(quán)進(jìn)程的絕對路徑相比較,如果相 同,則執(zhí)行步驟F7 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F6、將當(dāng)前進(jìn)程的命令行參數(shù)與保護(hù)策略中配置的保護(hù)參數(shù)相比較,如果相同,則執(zhí)行 步驟F7 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F7、將當(dāng)前進(jìn)程的靜態(tài)文件的md5值與保護(hù)策略中配置的授權(quán)進(jìn)程的md5值相比較,如 果相同,則執(zhí)行步驟F8 ;如果不同,則返回進(jìn)程驗(yàn)證結(jié)果ret的當(dāng)前值;F8、由于前述驗(yàn)證均通過,所以設(shè)置返回值ret = 0,以供文件保護(hù)模塊判斷進(jìn)程驗(yàn)證 結(jié)果之用,然后返回當(dāng)前判斷結(jié)果0。
7.根據(jù)權(quán)利要求4所述的Linux文件保護(hù)方法,其特征在于,步驟G或步驟H之后進(jìn)一 步包括當(dāng)系統(tǒng)關(guān)機(jī)是,文件保護(hù)內(nèi)核模塊將所述透明加密文件系統(tǒng)所在的磁盤關(guān)閉。
全文摘要
本發(fā)明公開一種Linux文件保護(hù)系統(tǒng)及方法,通過替換Linux內(nèi)核文件系統(tǒng)的系統(tǒng)調(diào)用,在內(nèi)核系統(tǒng)調(diào)用接口與文件系統(tǒng)之間加入鉤子(HOOK)函數(shù)以攔截進(jìn)程對文件系統(tǒng)的訪問,進(jìn)行進(jìn)程驗(yàn)證及訪問控制;使用基于進(jìn)程驗(yàn)證的訪問控制與透明加密文件系統(tǒng)相結(jié)合的方式,使得受保護(hù)的文件在系統(tǒng)運(yùn)行時得到動態(tài)保護(hù),在系統(tǒng)關(guān)機(jī)時,文件保護(hù)內(nèi)核模塊把透明加密文件系統(tǒng)所在的加密磁盤關(guān)閉,受保護(hù)的文件得到了及時的靜態(tài)保護(hù)。
文檔編號G06F21/00GK101901313SQ20101019655
公開日2010年12月1日 申請日期2010年6月10日 優(yōu)先權(quán)日2010年6月10日
發(fā)明者任元, 王戍靖 申請人:中科方德軟件有限公司