專利名稱:一種文件保護(hù)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域,特別涉及一種文件保護(hù)方法和系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的發(fā)展,各行各業(yè)都開(kāi)始了信息化的大進(jìn)化,尤其是各種金融公 司、軟件開(kāi)發(fā)公司等,敏感數(shù)據(jù)不斷增多,需要進(jìn)行保護(hù)的電子數(shù)據(jù)不斷增多,這些電子數(shù) 據(jù)的安全大多關(guān)系著企業(yè)的生存,因此文件的保護(hù)越來(lái)越受到重視。同時(shí),各種木馬、病毒也越來(lái)月活動(dòng),惡意攻擊者開(kāi)發(fā)越來(lái)越多的非法程序植入他 人計(jì)算機(jī),竊取各種敏感數(shù)據(jù),同時(shí)竊取技術(shù)也越來(lái)越高。為了防止保密數(shù)據(jù)被竊取,出現(xiàn) 了越來(lái)越多的文件保護(hù)方法。最簡(jiǎn)單是方法是,對(duì)秘密文件進(jìn)行隱藏,或是對(duì)文件加上密碼 保存,但是這種方式及其脆弱,很容易通過(guò)掃面計(jì)算機(jī)或是暴力破解等手段破解文件,也出 現(xiàn)了更高安全性的手段。對(duì)需要保密的文件使用密鑰進(jìn)行加密,并且密鑰是秘密保存的,例如保存在加密 鎖中,加密鎖一般為USB接口的智能設(shè)備,其可以與計(jì)算機(jī)進(jìn)行了連接,和計(jì)算機(jī)一起完成 文件保護(hù)和權(quán)限管理的功能,在密鑰被攻擊者獲取的情況下,可以保證文件的安全性,該方 法具體為,在計(jì)算機(jī)中安裝一個(gè)文件保護(hù)程序,當(dāng)合法的程序打開(kāi)加密文件時(shí),文件保護(hù)程 序使用密鑰對(duì)文件進(jìn)行解密,得到明文的文件以供合法者操作,當(dāng)非法的程序試圖打開(kāi)加 密文件時(shí),文件保護(hù)程序禁止其打開(kāi)加密文件,并且不提供解密服務(wù)。但是這種方法仍然存在不安全性,在計(jì)算機(jī)操作系統(tǒng)中,當(dāng)合法的程序打開(kāi)并解 密受保護(hù)的文件時(shí),操作系統(tǒng)會(huì)為解密得到的明文在緩存中分配一定的空間,并將這些明 文存放在緩存中,同時(shí)返回句柄,合法者即可以對(duì)受保護(hù)文件進(jìn)行操作,當(dāng)合法用戶關(guān)閉受 保護(hù)文件時(shí),在緩存中的受保護(hù)文件并不會(huì)立即清空,這時(shí)非法程序如果同樣通過(guò)上層接 口訪問(wèn)該文件時(shí),可直接得到受保護(hù)文件在緩存中的地址讀出明文的數(shù)據(jù)。綜上所述,現(xiàn)有的文件保護(hù)方案中存在缺陷,在合法的應(yīng)用程序訪問(wèn)受保護(hù)文件 后,緩存中的明文數(shù)據(jù)不會(huì)立即被清除,導(dǎo)致非法應(yīng)用程序在緩存中數(shù)據(jù)未清除時(shí)訪問(wèn)受 保護(hù)文件,可以得到緩存中的明文數(shù)據(jù),使得受保護(hù)文件數(shù)據(jù)泄露。
發(fā)明內(nèi)容
為了提高網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)陌踩?,本發(fā)明實(shí)施例提供了一種簽名方法和系統(tǒng)。技 術(shù)方案如下一種簽名方法,所述方法包括應(yīng)用程序接收用戶發(fā)出的對(duì)受保護(hù)文件進(jìn)行操作的指令,所述受保護(hù)文件為經(jīng)過(guò) 加密并以密文形式保存在磁盤中的文件,所述對(duì)受保護(hù)文件進(jìn)行操作的指令包括打開(kāi)、讀、 寫(xiě)、關(guān)閉所述受保護(hù)文件的指令;接收到所述打開(kāi)所述受保護(hù)文件的指令之后,打開(kāi)所述受保護(hù)文件的操作包括
所述應(yīng)用程序調(diào)用操作系統(tǒng)的上層接口,所述上層接口向文件系統(tǒng)發(fā)出打開(kāi)所述受保護(hù)文件的指令;過(guò)濾驅(qū)動(dòng)截獲所述上層接口向文件系統(tǒng)發(fā)出的打開(kāi)所述受保護(hù)文件的指令,并判 斷所述應(yīng)用程序是否為合法應(yīng)用程序;如果合法,所述過(guò)濾驅(qū)動(dòng)讀取受保護(hù)文件的屬性信 息,向所述文件系統(tǒng)發(fā)出在虛擬磁盤中創(chuàng)建所述受保護(hù)文件的影子文件的指令,所述文件 系統(tǒng)通過(guò)虛擬磁盤驅(qū)動(dòng)在所述虛擬磁盤中創(chuàng)建所述影子文件,所述操作系統(tǒng)向所述應(yīng)用程 序返回所述影子文件的句柄,引用計(jì)數(shù)值增加一個(gè)步長(zhǎng);其中,在所述虛擬磁盤中創(chuàng)建影子文件包括方法A和B A,所述過(guò)濾驅(qū)動(dòng)通過(guò)所述文件系統(tǒng)讀取所述受保護(hù)文件的屬性信息,在所述虛擬 磁盤中創(chuàng)建所述影子文件,為所述影子文件隨機(jī)命名,并寫(xiě)入所述受保護(hù)文件的屬性信息, 所述影子文件的數(shù)據(jù)為空;或,B,所述過(guò)濾驅(qū)動(dòng)通過(guò)所述文件系統(tǒng)讀取所述受保護(hù)文件,并使用與主機(jī)連接的加 密鎖中存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件進(jìn)行解密,得到明文,將明文放入所述虛擬磁盤中作 為影子文件的數(shù)據(jù),并為所述明文隨機(jī)命名,作為所述影子文件;接收到所述讀所述受保護(hù)文件的指令之后,讀所述受保護(hù)文件的操作包括所述應(yīng)用程序發(fā)出根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令;當(dāng)創(chuàng)建影子文件使用方法A,所述影子文件的數(shù)據(jù)為空時(shí),所述過(guò)濾驅(qū)動(dòng)截獲所述 應(yīng)用程序發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令,從磁盤中讀取所述受保護(hù)文件的預(yù)定 部分或全部,使用與所述主機(jī)連接的加密鎖內(nèi)存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件的預(yù)定部分或 全部進(jìn)行解密,得到所述受保護(hù)文件的預(yù)定部分的明文或全部明文,所述操作系統(tǒng)為所述 影子文件分配緩存空間中,并將所述預(yù)定部分的明文或全部明文放入所述操作系統(tǒng)為所述 影子文件分配的緩存空間,建立文件映射關(guān)系,所述應(yīng)用程序完成對(duì)所述受保護(hù)文件的讀 操作;當(dāng)創(chuàng)建影子文件使用方法B,所述影子文件中的數(shù)據(jù)為受保護(hù)文件的明文時(shí),所述 過(guò)濾驅(qū)動(dòng)截獲所述應(yīng)用程序發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令,通過(guò)所述虛擬磁盤 驅(qū)動(dòng)在所述虛擬磁盤中讀取所述影子文件,所述操作系統(tǒng)為所述影子文件分配緩存空間, 并將所述虛擬磁盤中的明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間中,所述應(yīng) 用程序完成對(duì)所述受保護(hù)文件的讀操作;接收到所述寫(xiě)所述受保護(hù)文件的指令之后,寫(xiě)所述受保護(hù)文件的操作包括所述應(yīng)用程序發(fā)出根據(jù)所述句柄對(duì)文件進(jìn)行寫(xiě)操作的指令;所述應(yīng)用程序在所述操作系統(tǒng)為所述影子文件分配的緩存中完成對(duì)所述明文的 受保護(hù)文件的寫(xiě)操作,所述寫(xiě)操作包括對(duì)所述受保護(hù)文件的插入新數(shù)據(jù)、修改、替換、編 輯;所述過(guò)濾驅(qū)動(dòng)對(duì)所述修改后的受保護(hù)文件進(jìn)行加密操作并保存;接收到所述關(guān)閉所述受保護(hù)文件的指令之后,關(guān)閉所述受保護(hù)文件的操作包括所述過(guò)濾驅(qū)動(dòng)逐一關(guān)閉打開(kāi)的所述影子文件的句柄,將所述引用計(jì)數(shù)值遞減,遞 減后檢查所述引用計(jì)數(shù)值,當(dāng)所述引用計(jì)數(shù)值為初值時(shí),刪除所述影子文件。優(yōu)選地,所述應(yīng)用程序接收用戶發(fā)出的打開(kāi)所述受保護(hù)文件的指令前,所述方法 還包括
所述操作系統(tǒng)啟動(dòng),再自動(dòng)加載所述過(guò)濾驅(qū)動(dòng)、所述虛擬磁盤驅(qū)動(dòng),并在內(nèi)存中創(chuàng) 建所述虛擬磁盤。優(yōu)選地,當(dāng)判斷所述應(yīng)用程序?yàn)椴缓戏〞r(shí),所述方法還包括所述上層接口通過(guò)所述文件系統(tǒng)找到所述受保護(hù)文件,所述操作系統(tǒng)為所述受保 護(hù)文件分配緩存,并將所述受保護(hù)文件讀入緩存,所述讀入緩存中的受保護(hù)文件為密文形 式;或,向所述應(yīng)用程序返回錯(cuò)誤,非法應(yīng)用程序禁止訪問(wèn)所述受保護(hù)文件。優(yōu)選地,所述過(guò)濾驅(qū)動(dòng)使用與所述主機(jī)連接的加密鎖內(nèi)存儲(chǔ)的密鑰對(duì)所述受保護(hù) 文件的預(yù)定部分或全部進(jìn)行解密,具體的為所述過(guò)濾驅(qū)動(dòng)使用與所述主機(jī)連接的加密鎖內(nèi)存儲(chǔ)的密鑰以簇為單位對(duì)所述受 保護(hù)文件的預(yù)定部分或全部進(jìn)行解密。相應(yīng)地,當(dāng)所述將預(yù)定部分的明文放入所述操作系統(tǒng)為所述影子文件分配的緩存 空間時(shí),所述過(guò)濾驅(qū)動(dòng)對(duì)所述修改后的受保護(hù)文件進(jìn)行加密操作并保存,具體的包括所述過(guò)濾驅(qū)動(dòng)將所述修改后的受保護(hù)文件的明文以簇為單位使用與所述主機(jī)連 接的加密鎖內(nèi)存儲(chǔ)的密鑰進(jìn)行加密,并通過(guò)所述文件系統(tǒng)對(duì)磁盤中存儲(chǔ)所述受保護(hù)文件的 簇進(jìn)行修改。相應(yīng)地,當(dāng)所述將全部明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間 時(shí),所述過(guò)濾驅(qū)動(dòng)對(duì)所述修改后的受保護(hù)文件進(jìn)行加密操作并保存,具體的包括所述過(guò)濾驅(qū)動(dòng)將完整的所述修改后的受保護(hù)文件使用與所述主機(jī)連接的加密鎖 內(nèi)存儲(chǔ)的密鑰進(jìn)行加密,覆蓋所述磁盤中存儲(chǔ)的所述受保護(hù)文件。優(yōu)選地,所述上層接口為,所述操作系統(tǒng)提供的供所述應(yīng)用程序調(diào)用,為所述應(yīng)用 程序提供創(chuàng)建、打開(kāi)、讀取文件操作的功能的接口。優(yōu)選地,所述過(guò)濾驅(qū)動(dòng)判斷所述應(yīng)用程序是否合法,具體的包括在進(jìn)行文件保護(hù)前,使合法的應(yīng)用程序向所述過(guò)濾驅(qū)動(dòng)進(jìn)行注冊(cè),過(guò)濾驅(qū)動(dòng)記錄 所述合法的應(yīng)用程序的注冊(cè)信息,當(dāng)存在應(yīng)用程序通過(guò)調(diào)用上層接口發(fā)送訪問(wèn)受保護(hù)文件 的指令時(shí),過(guò)濾驅(qū)動(dòng)獲取應(yīng)用程序的信息,并判斷與記錄的合法應(yīng)用程序的注冊(cè)信息是否 相同,如果相同,則認(rèn)為應(yīng)用程序合法,如果不相同,則認(rèn)為應(yīng)用程序不合法,所述注冊(cè)信息 包括所述合法的應(yīng)用程序的名稱、進(jìn)程ID、路徑,以及應(yīng)用程序的注冊(cè)表信息。優(yōu)選地,所述應(yīng)用程序接收用戶發(fā)出的打開(kāi)受保護(hù)文件的指令前,還包括對(duì)所述應(yīng)用程序進(jìn)行加殼處理,使得所述加殼后的應(yīng)用程序在啟動(dòng)時(shí)判斷是否有 合法的加密鎖接入,如果有,則所述應(yīng)用程序可以啟動(dòng),否則,所述應(yīng)用程序不能啟動(dòng)。優(yōu)選地,所述引用計(jì)數(shù)值用于記錄所述影子文件的句柄數(shù),當(dāng)未返回所述影子文 件的句柄時(shí),所述引用計(jì)數(shù)值為初值,每返回一個(gè)所述影子文件的句柄,所述引用計(jì)數(shù)值增 加一個(gè)步長(zhǎng),每關(guān)閉一個(gè)所述影子文件的句柄,所述引用計(jì)數(shù)值遞減一個(gè)步長(zhǎng)。一種簽名系統(tǒng),所述系統(tǒng)包括所述文件保護(hù)驅(qū)動(dòng)包括應(yīng)用程序模塊、上層接口模塊、過(guò)濾驅(qū)動(dòng)模塊、文件系統(tǒng) 模塊、虛擬磁盤驅(qū)動(dòng)模塊;所述應(yīng)用程序模塊,用于通過(guò)調(diào)用所述上層接口模塊打開(kāi)存儲(chǔ)在磁盤中的受保護(hù)文件,并通過(guò)所述上層接口模塊發(fā)出根據(jù)句柄對(duì)文件進(jìn)行讀操作和寫(xiě)操作的指令;所述上層接口模塊,用于接收所述應(yīng)用程序模塊發(fā)出的對(duì)文件操作的指令,并通 過(guò)操作所述文件系統(tǒng)模塊完成文件的打開(kāi)、讀、寫(xiě)、關(guān)閉的操作;所述過(guò)濾驅(qū)動(dòng)模塊,用于監(jiān)控主機(jī)中對(duì)所述文件系統(tǒng)模塊的操作,當(dāng)發(fā)現(xiàn)預(yù)定義 的對(duì)所述文件系統(tǒng)模塊的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作,對(duì)所述預(yù)定義的對(duì)所述文件系統(tǒng) 模塊的操作進(jìn)行控制;所述文件系統(tǒng)模塊,用于管理磁盤中存儲(chǔ)的文件,可以在磁盤中完成建立文件,索 引文件,讀取文件,修改文件的操作;所述虛擬磁盤驅(qū)動(dòng)模塊,用于當(dāng)接收到所述過(guò)濾驅(qū)動(dòng)模塊通過(guò)所述文件系統(tǒng)模塊 發(fā)出的創(chuàng)建所述受保護(hù)文件的影子文件的指令后,在虛擬磁盤中建立影子文件,當(dāng)所述影 子文件建立完成后,操作系統(tǒng)向所述應(yīng)用程序模塊返回所述影子文件的句柄;所述加密鎖包括驗(yàn)證模塊和密鑰存儲(chǔ)模塊;所述驗(yàn)證模塊,用于在所述應(yīng)用程序模塊啟動(dòng)時(shí),輔助驗(yàn)證是否有加密鎖連接在 主機(jī)中,如果有,則所述應(yīng)用程序模塊可以啟動(dòng),否則,所述應(yīng)用程序模塊不能啟動(dòng)。所述密鑰存儲(chǔ)模塊,用于在所述過(guò)濾驅(qū)動(dòng)模塊對(duì)受保護(hù)文件進(jìn)行加解密操作時(shí), 提供加解密操作的密鑰。優(yōu)選地,所述應(yīng)用程序模塊包括驗(yàn)證單元、打開(kāi)單元、讀寫(xiě)單元所述驗(yàn)證單元,用于在所述應(yīng)用程序模塊啟動(dòng)時(shí),驗(yàn)證主機(jī)是否連接有合法的加 密鎖,如果有,所述應(yīng)用程序模塊可以啟動(dòng),否則,所述應(yīng)用程序模塊不能啟動(dòng);所述打開(kāi)單元,用于在接收到所述用戶發(fā)送的打開(kāi)受保護(hù)文件的指令時(shí),向所述 上層接口模塊發(fā)出打開(kāi)所述受保護(hù)文件的指令,并在接收到所述影子文件的句柄時(shí),根據(jù) 所述句柄打開(kāi)受保護(hù)文件;所述讀寫(xiě)單元,用于在接收到所述操作系統(tǒng)返回的所述影子文件的句柄后,根據(jù) 所述句柄發(fā)出讀寫(xiě)操作的指令。優(yōu)選地,所述過(guò)濾驅(qū)動(dòng)模塊,具體的包括過(guò)濾單元、判斷單元、解密單元、影子文 件創(chuàng)建單元;所述過(guò)濾單元,用于監(jiān)控所述上層接口模塊是否有打開(kāi)所述受保護(hù)文件的操作, 當(dāng)存在打開(kāi)所述受保護(hù)文件的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作;所述判斷單元,用于在所述過(guò)濾單元截獲預(yù)設(shè)的對(duì)所述文件系統(tǒng)模塊的操作時(shí), 判斷打開(kāi)受保護(hù)文件的應(yīng)用程序是否合法,如果合法,則向所述文件系統(tǒng)模塊發(fā)出創(chuàng)建影 子文件的指令,如果不合法,則直接打開(kāi)所述受保護(hù)文件,打開(kāi)所述受保護(hù)文件時(shí),不進(jìn)行 解密操作;所述解密單元,用于當(dāng)接收到所述上層接口模塊發(fā)送的根據(jù)所述句柄讀或?qū)懰?影子文件的指令時(shí),向所述文件系統(tǒng)模塊發(fā)出讀取受保護(hù)文件的命令,并將讀出的密文形 式的所述受保護(hù)文件進(jìn)行解密操作,得到明文形式的受保護(hù)文件,放入操作系統(tǒng)為所述影 子文件分配的緩存中;所述影子文件創(chuàng)建單元,用于向所述文件系統(tǒng)模塊發(fā)送創(chuàng)建影子文件的指令,并 為所述影子文件隨機(jī)命名。相應(yīng)地,所述預(yù)設(shè)的附加操作具體的為,判所述預(yù)設(shè)的附加操作具體的為,創(chuàng)建影
10子文件、對(duì)文件進(jìn)行加解密、對(duì)數(shù)據(jù)進(jìn)行個(gè)性化操作。相應(yīng)地,所述文件系統(tǒng)模塊還用于,當(dāng)接收到所述影子創(chuàng)建單元發(fā)送的創(chuàng)建影子 文件的指令時(shí),向所述虛擬磁盤驅(qū)動(dòng)模塊發(fā)送創(chuàng)建影子文件的指令。優(yōu)選地,所述在虛擬磁盤中建立影子文件具體的為所述過(guò)濾驅(qū)動(dòng)模塊通過(guò)所述文件系統(tǒng)模塊讀取所述受保護(hù)文件的屬性信息,在所 述虛擬磁盤中創(chuàng)建所述影子文件,并寫(xiě)入所述受保護(hù)文件的屬性信息,所述影子文件的數(shù) 據(jù)為空。相應(yīng)地,當(dāng)所述影子文件的數(shù)據(jù)為空時(shí),所述應(yīng)用程序模塊發(fā)出根據(jù)所述句柄對(duì) 文件進(jìn)行讀操作的指令后,還包括所述過(guò)濾驅(qū)動(dòng)模塊截獲所述應(yīng)用程序模塊發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的 指令,從磁盤中讀取所述受保護(hù)文件的預(yù)定部分或全部,使用所述加密鎖內(nèi)部存儲(chǔ)的密鑰 對(duì)所述受保護(hù)文件的預(yù)定部分或全部進(jìn)行解密操作,得到所述受保護(hù)文件的預(yù)定部分的明 文或全部明文,所述操作系統(tǒng)為所述影子文件分配緩存空間,并將所述預(yù)定部分的明文或 全部明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間,建立文件映射關(guān)系。優(yōu)選地,所述在虛擬磁盤中建立影子文件還具體的為所述過(guò)濾驅(qū)動(dòng)模塊通過(guò)所述文件系統(tǒng)模塊讀取所述受保護(hù)文件,并使用所述加密 鎖中存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件進(jìn)行解密,得到明文,將所述明文放入所述虛擬磁盤中, 作為所述影子文件。相應(yīng)地,所述應(yīng)用程序模塊發(fā)出根據(jù)所述句柄對(duì)文件讀操作的指令后,還包括所述過(guò)濾驅(qū)動(dòng)模塊截獲所述應(yīng)用程序發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令, 向所述文件系統(tǒng)模塊發(fā)送根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令,并通過(guò)所述虛擬磁盤模塊在 所述虛擬磁盤中讀取所述影子文件,所述操作系統(tǒng)為所述影子文件分配緩存空間,并將所 述虛擬磁盤中的明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間,完成對(duì)所述受保 護(hù)文件的讀操作。優(yōu)選地,所述過(guò)濾驅(qū)動(dòng)模塊使用所述加密鎖內(nèi)部存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件的 預(yù)定部分或全部進(jìn)行解密操作,具體的為所述過(guò)濾驅(qū)動(dòng)模塊使用所述加密鎖內(nèi)部存儲(chǔ)的密鑰以簇為單位對(duì)所述受保護(hù)文 件的預(yù)定部分或全部進(jìn)行解密操作。優(yōu)選地,所述過(guò)濾驅(qū)動(dòng)模塊還包括加密單元,所述加密單元用于當(dāng)所述將預(yù)定部分的明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間時(shí), 所述加密單元將經(jīng)過(guò)所述應(yīng)用程序模塊寫(xiě)操作修改的所述受保護(hù)文件的明文以簇為單位 進(jìn)行加密,并通過(guò)所述文件系統(tǒng)模塊對(duì)磁盤中存儲(chǔ)的所述受保護(hù)文件進(jìn)行修改;或,當(dāng)所述將全部明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間時(shí),所述加 密單元將經(jīng)過(guò)所述應(yīng)用程序模塊寫(xiě)操作修改的所述受保護(hù)文件的明文以簇為單位進(jìn)行加 密,覆蓋磁盤中存儲(chǔ)的所述受保護(hù)文件。優(yōu)選地,所述過(guò)濾驅(qū)動(dòng)模塊還包括引用計(jì)數(shù)單元,所述引用計(jì)數(shù)單元用于記錄所述影子文件的句柄數(shù),當(dāng)未返回所述影子文件的句柄時(shí),所述引用計(jì)數(shù)單 元的計(jì)數(shù)值為初值,每返回一個(gè)所述影子文件的句柄,所述引用計(jì)數(shù)值增加一個(gè)步長(zhǎng),每關(guān)閉一個(gè)所述影子文件的句柄,所述引用計(jì)數(shù)值遞減一個(gè)步長(zhǎng),當(dāng)所述引用計(jì)數(shù)值遞減為初 值時(shí),刪除所述影子文件。本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是通過(guò)在文件保護(hù)系統(tǒng)中加入影 子文件,將受保護(hù)文件的明文數(shù)據(jù)放入為影子文件分配的緩存空間中,并且影子文件存儲(chǔ) 在虛擬磁盤中,虛擬磁盤對(duì)非常程序不可見(jiàn),且影子文件不為非法程序所知,因此非常程序 無(wú)法通過(guò)訪問(wèn)影子文件得到緩存中受保護(hù)文件的明文數(shù)據(jù),解決了在現(xiàn)有技術(shù)中存在合法 的程序訪問(wèn)受保護(hù)文件后,明文數(shù)據(jù)遺留在緩存未清除時(shí),非法的程序可通過(guò)緩存地址對(duì) 明文數(shù)據(jù)進(jìn)行訪問(wèn)的缺陷,具有更高的安全性。
圖1為本發(fā)明具體實(shí)施例一提供的一種文件保護(hù)方法的流程圖。圖2為本發(fā)明具體實(shí)施例二提供的一種文件保護(hù)方法的流程圖。圖3為本發(fā)明具體實(shí)施例三提供的一種文件保護(hù)系統(tǒng)的框圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。實(shí)施例1本實(shí)施例提供了一種文件保護(hù)方法,本實(shí)施例以對(duì)在磁盤中存儲(chǔ)的受保護(hù)文件 Encrypt, txt進(jìn)行讀操作為例進(jìn)行說(shuō)明,Encrypt, txt為存儲(chǔ)在用戶磁盤上的受保護(hù)文件, 并經(jīng)過(guò)密鑰加密,是以密文形式在磁盤上存儲(chǔ)的。在用戶對(duì)文件Encrypt, txt進(jìn)行讀取或修改操作時(shí),需要進(jìn)行解密操作,以使用 戶能夠在用戶界面上得到明文的文件數(shù)據(jù);在不同的操作系統(tǒng)中,需要相應(yīng)的應(yīng)用程序用以打開(kāi)不同格式的文件,本實(shí)施例 以在windows XP系統(tǒng)中為例進(jìn)行說(shuō)明,在windows XP系統(tǒng)下對(duì)txt格式的文件進(jìn)行讀寫(xiě) 時(shí),需要啟動(dòng)系統(tǒng)提供的程序not印ad. exe,并在系統(tǒng)中建立進(jìn)程not印ad. exe, notepad, exe可以調(diào)用操作系統(tǒng)提供的接口 NtcreateFilejtReadFile等進(jìn)行打開(kāi)文件、建立文件、 讀取文件等操作,即打開(kāi)文件Encrypt, txt,需啟動(dòng)程序not印ad. exe ;在本實(shí)施例所提供的一種文件保護(hù)方法之前還包括,根據(jù)需要保護(hù)的文件,對(duì)操 作系統(tǒng)提供的合法的應(yīng)用程序進(jìn)行預(yù)處理,在本實(shí)施例中,Encrypt, txt為受保護(hù)文件,由 于受保護(hù)的文件為txt格式,則對(duì)應(yīng)用程序not印ad. exe進(jìn)行預(yù)處理,在本實(shí)施例中,優(yōu)選 地,對(duì)not印ad. exe進(jìn)行預(yù)處理為加殼處理,具體的為在not印ad. exe中加入代碼,使得在 系統(tǒng)運(yùn)行not印ad. exe時(shí),先要檢查主機(jī)上是否有合法的加密鎖接入,如果有,則可以運(yùn)行 該進(jìn)程,否則,系統(tǒng)不能加載not印ad. exe進(jìn)程;一種文件保護(hù)方法,參加圖1,具體步驟如下步驟101,應(yīng)用程序接收用戶發(fā)出的打開(kāi)受保護(hù)文件Encrypt, txt的命令;在本實(shí)施例中,具體的為,應(yīng)用程序接收用戶發(fā)出的讀文件Encrypt, txt的命令, 其中,應(yīng)用程序可能為合法應(yīng)用程序或非法應(yīng)用程序合法應(yīng)用程序?yàn)樯鲜鼋?jīng)過(guò)加殼處理的程序not印ad. exe,并且有合法的加密鎖接入,具有運(yùn)行notepad, exe的權(quán)限;非法應(yīng)用程序?yàn)槲唇?jīng)授權(quán)訪問(wèn)受保護(hù)文件Encrypt, txt的程序;在本實(shí)施例中,步驟101開(kāi)始前還包括啟動(dòng)操作系統(tǒng),加載過(guò)濾驅(qū)動(dòng)和虛擬磁盤 驅(qū)動(dòng),并在內(nèi)存中建立虛擬磁盤,其中,過(guò)濾驅(qū)動(dòng)和虛擬磁盤驅(qū)動(dòng)為本發(fā)明所提供,過(guò)濾驅(qū) 動(dòng)通過(guò)文件系統(tǒng)操作虛擬磁盤驅(qū)動(dòng),可以在虛擬磁盤中完成創(chuàng)建、修改、閃存文件等操作, 上述虛擬磁盤建立在內(nèi)存中,可以提高讀寫(xiě)速度,并且只對(duì)過(guò)濾驅(qū)動(dòng)及過(guò)濾驅(qū)動(dòng)認(rèn)可的程 序可見(jiàn);虛擬磁盤為在內(nèi)存中模擬出一個(gè)磁盤分區(qū),并在上面建立與磁盤存儲(chǔ)相同的數(shù)據(jù) 存儲(chǔ)格式,使得內(nèi)存中被劃分為虛擬磁盤的區(qū)域可以作為普通存儲(chǔ)類磁盤使用。步驟102,應(yīng)用程序調(diào)用操作系統(tǒng)上層應(yīng)用接口準(zhǔn)備打開(kāi)受保護(hù)文件;在本實(shí)施例中,所述操作系統(tǒng)上層應(yīng)用接口,為操作系統(tǒng)提供的用于操作文件 Encrypt, txt的接口,例如NtcreateFile、NtReadFile等,這些接口可以完成txt文件的建 立、讀取等操作;步驟103,過(guò)濾驅(qū)動(dòng)截取上層應(yīng)用接口發(fā)送的指令,并判斷應(yīng)用程序是否合法,如 果不合法,執(zhí)行步驟104,如果合法,則執(zhí)行步驟105 ;所述過(guò)濾驅(qū)動(dòng),可以用于監(jiān)控主機(jī)中對(duì)于文件系統(tǒng)的操作,當(dāng)發(fā)生預(yù)定義的對(duì)文 件系統(tǒng)的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作,或?qū)︻A(yù)定義的對(duì)文件系統(tǒng)的操作進(jìn)行控制。并且, 所述過(guò)濾驅(qū)動(dòng)還具有判斷發(fā)出打開(kāi)受保護(hù)文件命令的應(yīng)用程序是否合法的功能;其中,上述預(yù)定義的對(duì)文件系統(tǒng)的操作包括讀寫(xiě)預(yù)設(shè)文件等,在本實(shí)施例中,預(yù)定 義的對(duì)文件系統(tǒng)的操作為讀取受保護(hù)文件Encrypt, txt的操作;上述預(yù)設(shè)的附加操作包括,創(chuàng)建影子文件、對(duì)文件進(jìn)行加解密、對(duì)數(shù)據(jù)進(jìn)行個(gè)性化 操作等;過(guò)濾驅(qū)動(dòng)判斷應(yīng)用程序是否合法,具體的為在對(duì)合法的應(yīng)用程序進(jìn)行加殼處理 時(shí),使加殼后的應(yīng)用程序向過(guò)濾驅(qū)動(dòng)進(jìn)行注冊(cè),過(guò)濾驅(qū)動(dòng)記錄合法的應(yīng)用程序的注冊(cè)信息, 當(dāng)操作系統(tǒng)中存在應(yīng)用程序通過(guò)調(diào)用上層應(yīng)用接口發(fā)送打開(kāi)受保護(hù)文件的指令時(shí),過(guò)濾驅(qū) 動(dòng)獲取應(yīng)用程序的信息,并判斷與記錄的合法應(yīng)用程序的注冊(cè)信息是否相符,如果相同,則 認(rèn)為應(yīng)用程序合法,如果不相同,則認(rèn)為應(yīng)用程序不合法。其中,上述注冊(cè)信息包括應(yīng)用程序的名稱、進(jìn)程ID、路徑,以及應(yīng)用程序的注冊(cè)表
fn息等。步驟104,操作系統(tǒng)在磁盤上找到受保護(hù)文件Encrypt, txt,并為其分配緩存空 間,進(jìn)行讀??;在本步驟中,由于沒(méi)有使用密鑰進(jìn)行解密,因此放入緩存并進(jìn)行讀取的文件 Encrypt, txt為密文形式;在本實(shí)施例中,本步驟還可以為返回錯(cuò)誤,禁止非法應(yīng)用程序?qū)κ鼙Wo(hù)文件 Encrypt, txt進(jìn)行訪問(wèn)。步驟105,過(guò)濾驅(qū)動(dòng)在虛擬磁盤中創(chuàng)建一個(gè)新文件作為受保護(hù)文件的影子文件,在 本實(shí)施例中,將受保護(hù)文件的影子文件命名為1. txt ;其中,過(guò)濾驅(qū)動(dòng)創(chuàng)建受保護(hù)文件的影子文件具體包括步驟A,過(guò)濾驅(qū)動(dòng)讀取受保護(hù)文件的屬性信息;
上述受保護(hù)文件的屬性信息包括文件的大小、類型、創(chuàng)建時(shí)間等,其中受保護(hù)文件 的具體內(nèi)容為加密存儲(chǔ),但是其屬性信息可通過(guò)文件系統(tǒng)獲得,為明文數(shù)據(jù),過(guò)濾驅(qū)動(dòng)通過(guò) 文件系統(tǒng)讀取受保護(hù)文件的屬性信息;步驟B,過(guò)濾驅(qū)動(dòng)向文件系統(tǒng)發(fā)送在虛擬磁盤中建立1. txt的指令;步驟C,文件系統(tǒng)向虛擬磁盤驅(qū)動(dòng)發(fā)送創(chuàng)建l.txt的指令,虛擬磁盤驅(qū)動(dòng)建立 1. txt ;步驟D,在虛擬磁盤中為影子文件1. txt寫(xiě)入數(shù)據(jù);在本實(shí)施例中,在為影子文件1. txt寫(xiě)入數(shù)據(jù)時(shí)包括兩種方法方法1,將受保護(hù)文件Encrypt, txt的屬性信息寫(xiě)入虛擬磁盤,作為影子文件 1. txt的屬性,但是1. txt的數(shù)據(jù)為空;方法2,將受保護(hù)文件Encrypt, txt的屬性信息寫(xiě)入虛擬磁盤,作為影子文件 1. txt的屬性,同時(shí)過(guò)濾驅(qū)動(dòng)將受保護(hù)文件Encrypt, txt中的數(shù)據(jù)讀出,并使用與主機(jī)連接 的加密鎖內(nèi)存儲(chǔ)的密鑰進(jìn)行解密,得到明文的數(shù)據(jù),寫(xiě)入虛擬磁盤中作為影子文件l.txt 的數(shù)據(jù);其中,在方法2中,對(duì)Encrypt, txt進(jìn)行解密時(shí),優(yōu)選地以簇為單位對(duì)密文進(jìn)行解 密,將Encrypt, txt中的預(yù)定部分或全部解密,得到預(yù)定部分的明文或全部的明文放入虛 擬磁盤中,作為l.txt的數(shù)據(jù);在對(duì)受保護(hù)文件進(jìn)行加解密操作時(shí),不局限于以簇為單位進(jìn)行解密,還可以以流 為單位進(jìn)行解密、以字節(jié)為單位進(jìn)行解密、以數(shù)據(jù)塊為單位進(jìn)行解密等;在過(guò)濾驅(qū)動(dòng)為受保護(hù)文件Encrypt, txt創(chuàng)建影子文件時(shí),影子文件的命名為隨機(jī) 命名,即為影子文件隨機(jī)生成一個(gè)名稱,并且該名稱與磁盤中所存儲(chǔ)的其他文件名稱不同, 在本實(shí)施例中,以為影子文件隨機(jī)生成的名稱為1. txt為例進(jìn)行說(shuō)明。步驟106,過(guò)濾驅(qū)動(dòng)向應(yīng)用程序返回影子文件1. txt的句柄;在本實(shí)施例中,認(rèn)為影子文件1. txt的句柄為hltxt ;在本步驟中,還包括將引用計(jì)數(shù)值增加一個(gè)步長(zhǎng),優(yōu)選地,將引用計(jì)數(shù)值增加1, 引用計(jì)數(shù)值記錄打開(kāi)的影子文件的句柄數(shù),當(dāng)未有影子文件的句柄返回時(shí),將引用計(jì)數(shù)值 設(shè)置為初值0,當(dāng)有影子文件的句柄被關(guān)閉時(shí),將引用計(jì)數(shù)值遞減一個(gè)步長(zhǎng)。步驟107,應(yīng)用程序發(fā)出根據(jù)句柄hltxt進(jìn)行讀操作的指令;步驟108,過(guò)濾驅(qū)動(dòng)截獲到根據(jù)句柄hltxt進(jìn)行讀操作的命令,讀出磁盤中存儲(chǔ)的 密文形式的受保護(hù)文件Encrypt, txt,并進(jìn)行解密操作,將明文形式的Encrypt, txt內(nèi)容讀 入操作系統(tǒng)為1. txt分配的緩存當(dāng)中;其中,過(guò)濾驅(qū)動(dòng)對(duì)密文形式的Encrypt, txt進(jìn)行解密操作,還包括,解密操作所使 用的密鑰存儲(chǔ)于與主機(jī)連接的加密鎖中,受保護(hù)文件的加密方式可以選擇對(duì)稱加密或非對(duì) 稱加密;將明文形式的Encrypt, txt內(nèi)容讀入操作系統(tǒng)為1. txt分配的緩存當(dāng)中還包括 過(guò)濾驅(qū)動(dòng)為緩存中的文件Encrypt, txt與磁盤中存儲(chǔ)的密文的Encrypt, txt建立文件映射 關(guān)系,將磁盤中存儲(chǔ)的受保護(hù)文件Encrypt, txt解密后分塊讀入緩存中,以節(jié)省緩存空間;在對(duì)受保護(hù)文件進(jìn)行解密并將明文放入為影子文件分配的緩存時(shí),可以包括如下 方法
方法一,將受保護(hù)文件的全部數(shù)據(jù)解密,并完整的放入為影子文件分配的緩存中, 這個(gè)適用于受保護(hù)文件比較小時(shí);方法二,將受保護(hù)文件中需要訪問(wèn)的部分,以簇為單元進(jìn)行解密,并將解密的部分 放入為影子文件分配的緩存中,這種方法適用于受保護(hù)文件比較大時(shí),并優(yōu)選地受保護(hù)文 件在進(jìn)行加密保存時(shí),以簇為單位進(jìn)行加密。在本步驟中,上述描述的方法適用于步驟105中步驟D采用方法1時(shí);在步驟D采用方法2時(shí),步驟108還可以為過(guò)濾驅(qū)動(dòng)截獲到根據(jù)句柄hltxt進(jìn)行讀操作的指令,向文件系統(tǒng)發(fā)送讀取影子文 件的指令,文件系統(tǒng)通過(guò)虛擬磁盤驅(qū)動(dòng)讀取影子文件1. txt中的數(shù)據(jù),將1. txt中的數(shù)據(jù)放 入操作系統(tǒng)為影子文件分配的緩存中。步驟109,應(yīng)用程序關(guān)閉打開(kāi)的受保護(hù)文件Encrypt, txt。在本實(shí)施例中,步驟109后還可以包括過(guò)濾驅(qū)動(dòng)逐一關(guān)閉打開(kāi)的影子文件1. txt 的句柄,同時(shí)將引用計(jì)數(shù)值遞減,每次遞減后檢查所述引用計(jì)數(shù)值,當(dāng)引用計(jì)數(shù)值為初值0 時(shí),刪除所述影子文件。本實(shí)施例所提供的一種文件保護(hù)方法,通過(guò)在系統(tǒng)中安裝一個(gè)過(guò)濾驅(qū)動(dòng),在合法 的應(yīng)用程序訪問(wèn)受保護(hù)文件的過(guò)程中,首先并不打開(kāi)真實(shí)的受保護(hù)文件,而是在虛擬磁盤 中建立受保護(hù)文件的影子文件,并更改為其他名稱,為其分配緩存空間,再將受保護(hù)文件進(jìn) 行解密操作讀入緩存中,合法的應(yīng)用程序通過(guò)影子文件的句柄打開(kāi)受保護(hù)文件,其中,虛擬 磁盤只對(duì)合法程序可見(jiàn),影子文件的句柄也只有合法程序可以得到,因此,避免了被非法惡 意程序獲得句柄,而在緩存中將明文形式的受保護(hù)文件讀出,因此,克服了現(xiàn)有技術(shù)中,當(dāng) 文件讀入緩存中不能進(jìn)行有效保護(hù)的缺點(diǎn),因此,本發(fā)明提供的一種文件保護(hù)方法具有更 好的安全性。實(shí)施例2在本實(shí)施例中,以對(duì)存儲(chǔ)在磁盤上的受保護(hù)文件Encrypt, txt進(jìn)行寫(xiě)操作為例進(jìn) 行說(shuō)明,其中,寫(xiě)操作包括,在原有文檔Encrypt, txt的數(shù)據(jù)基礎(chǔ)上插入新數(shù)據(jù)、編輯和修 改數(shù)據(jù)的操作;同實(shí)施例1,受保護(hù)文件Encrypt, txt加密后以密文的形式存儲(chǔ)在磁盤上,以在 windows XP系統(tǒng)中為例,將用于打開(kāi)文件Encrypt, txt的合法應(yīng)用程序not印ad. exe進(jìn) 行加殼處理,本實(shí)施例中的加殼處理具體的為在應(yīng)用程序not印ad. exe中加入代碼,使 得應(yīng)用程序在運(yùn)行時(shí)具有如下功能,在啟動(dòng)not印ad. exe時(shí),檢查是否有合法的加密鎖接 入,當(dāng)有合法的加密鎖接入時(shí),not印ad. exe可以運(yùn)行,系統(tǒng)允許建立not印ad. exe進(jìn)程,并 通過(guò)not印ad. exe對(duì)受保護(hù)文件Encrypt, txt進(jìn)行寫(xiě)操作,當(dāng)沒(méi)有合法的加密鎖接入時(shí), notepad, exe不能運(yùn)行;上述加密鎖在接入主機(jī)時(shí),可以提供對(duì)合法進(jìn)程not印ad. exe需要的認(rèn)證,并且, 在加密鎖中秘密的存儲(chǔ)有密鑰,所述密鑰用于對(duì)受保護(hù)文件Encrypt, txt進(jìn)行加解密操 作;一種文件的保護(hù)方法,參加圖2,具體的如下步驟201,應(yīng)用程序接收用戶發(fā)出的打開(kāi)受保護(hù)文件Encrypt, txt的指令;在本實(shí)施例中,應(yīng)用程序包括合法應(yīng)用程序和非法應(yīng)用程序;
15
合法應(yīng)用程序?yàn)榻?jīng)過(guò)加殼處理的not印ad. exe,可將not印ad. exe與txt格式進(jìn)行 關(guān)聯(lián),當(dāng)用戶打開(kāi)文件Encrypt, txt時(shí),notepad, exe啟動(dòng),并驗(yàn)證是否有合法的加密鎖接 入,如果有,則建立notepad, exe進(jìn)程,可以通過(guò)not印ad. exe對(duì)Encrypt, txt進(jìn)行操作;非法應(yīng)用程序?yàn)楣粽邔?xiě)入,以竊取或修改受保護(hù)文件為目的的程序,不需加密 鎖接入就可以啟動(dòng);同實(shí)施例1,在步驟201前,還包括系統(tǒng)啟動(dòng),加載過(guò)濾驅(qū)動(dòng)和虛擬磁盤驅(qū)動(dòng),并 在內(nèi)存中創(chuàng)建虛擬磁盤;步驟202,應(yīng)用程序調(diào)用操作系統(tǒng)上層應(yīng)用接口向文件系統(tǒng)發(fā)出打開(kāi)受保護(hù)文件 的指令;其中,合法應(yīng)用程序和非法應(yīng)用程序都需要通過(guò)操作系統(tǒng)提供的上層接口打開(kāi)受 保護(hù)文件,在Windows XP系統(tǒng)中,上述上層接口包括NtcreateFile、NtReadFile等;上述文件系統(tǒng)具體的為,操作系統(tǒng)通過(guò)文件系統(tǒng)管理磁盤上存儲(chǔ)的文件,包括 FAT、NTFS 等。步驟203,過(guò)濾驅(qū)動(dòng)截取操作系統(tǒng)上層接口向文件系統(tǒng)發(fā)出的打開(kāi)受保護(hù)文件 Encrypt, txt的指令,并判斷應(yīng)用程序是否合法,如果不合法,執(zhí)行步驟204,如果合法,則 執(zhí)行步驟205 ;上述過(guò)濾驅(qū)動(dòng),可以用于監(jiān)控所述主機(jī)系統(tǒng)中對(duì)文件系統(tǒng)的操作,當(dāng)發(fā)生預(yù)定義 的對(duì)文件系統(tǒng)的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作,或?qū)︻A(yù)定義的對(duì)文件系統(tǒng)的操作進(jìn)行控制, 并且,所述過(guò)濾驅(qū)動(dòng)還具有判斷發(fā)出打開(kāi)受保護(hù)文件命令的應(yīng)用程序是否合法的功能;在本實(shí)施例中,過(guò)濾驅(qū)動(dòng)當(dāng)截獲到操作系統(tǒng)上層接口向文件系統(tǒng)發(fā)出的打開(kāi)受保 護(hù)文件Encrypt, txt的指令時(shí),可以掛起該命令,在對(duì)應(yīng)用程序判斷后,根據(jù)判斷結(jié)果執(zhí)行 相應(yīng)的命令;其中,過(guò)濾驅(qū)動(dòng)判斷應(yīng)用程序是否合法,具體的為在對(duì)合法的應(yīng)用程序進(jìn)行加殼 處理時(shí),使加殼后的應(yīng)用程序向過(guò)濾驅(qū)動(dòng)進(jìn)行注冊(cè),過(guò)濾驅(qū)動(dòng)記錄合法的應(yīng)用程序的注冊(cè) 信息,當(dāng)操作系統(tǒng)中發(fā)現(xiàn)應(yīng)用程序通過(guò)調(diào)用上層應(yīng)用接口發(fā)送訪問(wèn)受保護(hù)文件的指令時(shí), 過(guò)濾驅(qū)動(dòng)獲取應(yīng)用程序的信息,并判斷與記錄的合法應(yīng)用程序的注冊(cè)信息是否相同,如果 相同,則認(rèn)為應(yīng)用程序合法,如果不相同,則認(rèn)為應(yīng)用程序不合法;上述注冊(cè)信息包括應(yīng)用程序的名稱、進(jìn)程ID、路徑,以及應(yīng)用程序的注冊(cè)表信息寸。步驟204,操作系統(tǒng)通過(guò)文件系統(tǒng)打開(kāi)文件Encrypt, txt,文件為密文形式;當(dāng)步驟203中,過(guò)濾驅(qū)動(dòng)判斷應(yīng)用程序?yàn)榉欠☉?yīng)用程序時(shí),則通過(guò)文件系統(tǒng)打開(kāi) 文件Encrypt, txt,將磁盤中存儲(chǔ)的Encrypt, txt數(shù)據(jù)加載入緩存,系統(tǒng)為其分配緩存地址 并返回句柄,由于未進(jìn)行解密操作,所顯示的文件內(nèi)容為密文;在本步驟后,還可以包括非法應(yīng)用程序通過(guò)操作系統(tǒng)上層接口發(fā)送對(duì)文件 Encrypt, txt進(jìn)行寫(xiě)操作的指令,上層接口向文件系統(tǒng)發(fā)出寫(xiě)數(shù)據(jù)的指令,過(guò)濾系統(tǒng)截獲該 指令,禁止執(zhí)行,并返回非法修改的錯(cuò)誤。步驟205,過(guò)濾驅(qū)動(dòng)創(chuàng)建一個(gè)新文件作為受保護(hù)文件的影子文件,在本實(shí)施例中, 將受保護(hù)文件的影子文件命名為1. txt ;其中,過(guò)濾驅(qū)動(dòng)創(chuàng)建受保護(hù)文件的影子文件的過(guò)程與實(shí)施例1中步驟105中相同,這里不再贅述;步驟206,過(guò)濾驅(qū)動(dòng)向合法的應(yīng)用程序返回1. txt的句柄hltxt,打開(kāi)文件受保護(hù) 文件;在本實(shí)施例中,具體的打開(kāi)文件Encrypt, txt并得到明文數(shù)據(jù)的操作包括206a,過(guò)濾驅(qū)動(dòng)返回1. txt的句柄hltxt ;206b,應(yīng)用程序發(fā)出根據(jù)句柄hltxt讀文件的指令;206c,過(guò)濾驅(qū)動(dòng)讀出受保護(hù)文件Encrypt, txt的數(shù)據(jù),并進(jìn)行解密操作,將明文形 式的Encrypt, txt內(nèi)容放入操作系統(tǒng)為1. txt分配的緩存中,并建立文件映射關(guān)系;其中,步驟206c也可以為,過(guò)濾驅(qū)動(dòng)從虛擬磁盤中讀取影子文件l.txt的內(nèi)容, 1. txt中存儲(chǔ)的為受保護(hù)文件Encrypt, txt的明文數(shù)據(jù);過(guò)濾驅(qū)動(dòng)對(duì)密文形式的Encrypt, txt進(jìn)行解密操作,具體地,解密操作所使用的 密鑰存儲(chǔ)于與主機(jī)連接的加密鎖中,受保護(hù)文件的加密方式可以選擇對(duì)稱加密或非對(duì)稱加 密;過(guò)濾驅(qū)動(dòng)向合法的應(yīng)用程序返回1. txt的句柄hltxt后,還可以包括過(guò)濾驅(qū)動(dòng)將 引用計(jì)數(shù)值增加1。步驟207,應(yīng)用程序發(fā)出根據(jù)句柄對(duì)向受保護(hù)文件Encrypt, txt指定位置進(jìn)行寫(xiě) 操作的指令,并進(jìn)行寫(xiě)操作;在本步驟中,對(duì)文件Encrypt, txt的寫(xiě)操作在緩存中完成,即修改的為緩存中存 儲(chǔ)的Encrypt, txt中的數(shù)據(jù);其中,所述寫(xiě)操作包括對(duì)原受保護(hù)文件的寫(xiě)入新數(shù)據(jù)、刪除、替換、修改、編輯等操 作。步驟208,寫(xiě)操作結(jié)束,過(guò)濾驅(qū)動(dòng)對(duì)緩存中的明文Encrypt, txt內(nèi)容進(jìn)行加密操作 并保存,得到修改后的受保護(hù)文件Encrypt, txt ;在本實(shí)施例中,過(guò)濾驅(qū)動(dòng)對(duì)緩存中的明文Encrypt, txt內(nèi)容進(jìn)行加密操作并保 存,得到修改后的受保護(hù)文件Encrypt, txt,具體的包括如下方法方法一,在步驟206c中,將Encrypt, txt的明文完整的讀入緩存中,以供用戶在緩 存中對(duì)Encrypt, txt進(jìn)行寫(xiě)操作,當(dāng)寫(xiě)操作結(jié)束后,使用存儲(chǔ)于緩存中的Encrypt, txt完整 覆蓋存儲(chǔ)于磁盤中的原受保護(hù)文件Encrypt, txt,得到修改后的受保護(hù)文件Encrypt, txt ;方法二,在對(duì)受保護(hù)文件進(jìn)行加解密操作時(shí),以簇為單位進(jìn)行加解密操作,其中, 簇為磁盤存儲(chǔ)介質(zhì)的最小存儲(chǔ)單元。在步驟206c中,將需要操作的Encrypt, txt文件部 分讀入緩存中,在緩存中完成寫(xiě)操作后,以簇為單位對(duì)數(shù)據(jù)進(jìn)行加密操作,將磁盤中存儲(chǔ)的 Encrypt, txt文件中被修改的簇進(jìn)行替換,并由文件系統(tǒng)為增加的數(shù)據(jù)部分分配新簇進(jìn)行 存儲(chǔ),當(dāng)簇中數(shù)據(jù)在文件Encrypt, txt中的位置發(fā)生改變時(shí),文件系統(tǒng)記錄簇的順序,得到 修改后的受保護(hù)文件Encrypt, txt ;當(dāng)步驟206c為過(guò)濾驅(qū)動(dòng)從虛擬磁盤中讀取影子文件l.txt的內(nèi)容時(shí),使用方 法三應(yīng)用程序在緩存中完成對(duì)明文的Encrypt, txt的修改,并對(duì)虛擬磁盤中存儲(chǔ)的 Encrypt, txt進(jìn)行修改,當(dāng)寫(xiě)操作完成后,將虛擬磁盤中明文的Encrypt, txt以簇為單位進(jìn) 行加密,替換磁盤中存儲(chǔ)的密文Encrypt, txt ;在本實(shí)施例中,步驟208后還可以包括過(guò)濾驅(qū)動(dòng)逐一關(guān)閉打開(kāi)的影子文件1. txt的句柄,同時(shí)將引用計(jì)數(shù)值遞減,每次遞減后檢查所述引用計(jì)數(shù)值,當(dāng)引用計(jì)數(shù)值為初值0 時(shí),刪除所述影子文件。本實(shí)施例所提供的文件保護(hù)方法,通過(guò)在內(nèi)存中建立虛擬磁盤,并在虛擬磁盤中 建立影子文件的方法,克服了傳統(tǒng)技術(shù)中的將受保護(hù)文件解密到緩存中,容易暴漏受保護(hù) 文件的缺點(diǎn),在本發(fā)明中,所有的讀寫(xiě)操作均是對(duì)影子文件進(jìn)行的,并且虛擬磁盤只是合法 的應(yīng)用程序可見(jiàn),大大提高了文件數(shù)據(jù)的安全性。實(shí)施例3本實(shí)施例提供了一種文件保護(hù)系統(tǒng),參加圖2,上述一種文件保護(hù)系統(tǒng)包括,文件 保護(hù)驅(qū)動(dòng)1和加密鎖2 ;其中,文件保護(hù)驅(qū)動(dòng)1包括應(yīng)用程序模塊11、上層接口模塊12、過(guò)濾驅(qū)動(dòng)模塊 13、文件系統(tǒng)模塊14、虛擬磁盤驅(qū)動(dòng)模塊15。具體地應(yīng)用程序模塊11,用于通過(guò)調(diào)用上層接口模塊12打開(kāi)存儲(chǔ)在磁盤中的受保護(hù)文 件,并通過(guò)12上層接口模塊發(fā)出根據(jù)句柄進(jìn)行讀操作和寫(xiě)操作的指令;進(jìn)一步地,應(yīng)用程序模塊11包括驗(yàn)證單元111,用于在應(yīng)用程序模塊11啟動(dòng)時(shí),驗(yàn)證主機(jī)是否連接有合法的加密 鎖,如果有,所應(yīng)用程序模塊11可以啟動(dòng),否則,應(yīng)用程序模塊11不能啟動(dòng);打開(kāi)單元112,用于在接收到用戶發(fā)送的打開(kāi)受保護(hù)文件的指令時(shí),向上層接口模 塊12發(fā)出打開(kāi)受保護(hù)文件的指令,并在接收到所述影子文件的句柄時(shí),根據(jù)上述句柄訪問(wèn) 受保護(hù)文件;讀寫(xiě)單元113,用于在接收到操作系統(tǒng)返回的影子文件的句柄后,根據(jù)上述句柄發(fā) 出讀和寫(xiě)操作的指令。上層接口模塊12,用于接收應(yīng)用程序模塊11發(fā)出的對(duì)文件操作的指令,并通過(guò)操 作文件系統(tǒng)模塊14完成文件的打開(kāi)、讀、寫(xiě)、關(guān)閉的操作;;過(guò)濾驅(qū)動(dòng)模塊13,用于監(jiān)控主機(jī)中對(duì)于文件系統(tǒng)模塊14的操作,當(dāng)發(fā)現(xiàn)預(yù)定義的 對(duì)文件系統(tǒng)模塊14的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作,對(duì)上述預(yù)定義的對(duì)文件系統(tǒng)模塊14的 操作進(jìn)行控制;在本實(shí)施例中,優(yōu)選地,上述預(yù)設(shè)的附加操作具體的為,創(chuàng)建影子文件、對(duì)文件進(jìn) 行加解密、對(duì)數(shù)據(jù)進(jìn)行個(gè)性化操作等;進(jìn)一步地,過(guò)濾驅(qū)動(dòng)模塊13,具體的包括過(guò)濾單元131、判斷單元132、解密單元 133、影子文件創(chuàng)建單元134;過(guò)濾單元131,用于監(jiān)控上層接口模塊12是否有打開(kāi)受保護(hù)文件的操作,當(dāng)存在 打開(kāi)受保護(hù)文件的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作;判斷單元132,用于在過(guò)濾單元131截獲預(yù)設(shè)的對(duì)文件系統(tǒng)模塊14的操作時(shí),判斷 打開(kāi)受保護(hù)文件的應(yīng)用程序是否合法,如果合法,則向文件系統(tǒng)模塊14發(fā)出創(chuàng)建影子文件 的指令,如果不合法,則直接打開(kāi)受保護(hù)文件,打開(kāi)受保護(hù)文件時(shí),不進(jìn)行解密操作,其中, 預(yù)設(shè)的對(duì)文件系統(tǒng)模塊14的操作指的是對(duì)受保護(hù)文件的打開(kāi)、讀、寫(xiě)操作;解密單元133,用于當(dāng)接收到上層接口模塊12發(fā)送根據(jù)句柄對(duì)文件進(jìn)行讀或?qū)懖?作的指令時(shí),向文件系統(tǒng)模塊14發(fā)出讀取受保護(hù)文件的命令,并將讀出的密文形式的受保
18護(hù)文件進(jìn)行解密操作,得到明文的受保護(hù)文件,放入操作系統(tǒng)為上述影子文件分配的緩存 中;影子文件創(chuàng)建單元134,用于向文件系統(tǒng)模塊14發(fā)送創(chuàng)建影子文件的指令,并為 該影子文件隨機(jī)命名。文件系統(tǒng)模塊14,用于管理磁盤中存儲(chǔ)的文件,可以在磁盤中完成建立文件,索引 文件,讀取文件,修改文件的操作;虛擬磁盤驅(qū)動(dòng)模塊15,用于當(dāng)接收到過(guò)濾驅(qū)動(dòng)模塊13通過(guò)文件系統(tǒng)模塊14發(fā)出 的創(chuàng)建受保護(hù)文件的影子文件的指令后,在虛擬磁盤中建立影子文件,當(dāng)影子文件建立完 成后,操作系統(tǒng)向應(yīng)用程序模塊11返回上述影子文件的句柄;加密鎖2包括驗(yàn)證模塊21和密鑰存儲(chǔ)模塊22 ;驗(yàn)證模塊21,用于在應(yīng)用程序模塊11啟動(dòng)時(shí),輔助驗(yàn)證是否有加密鎖連接在主機(jī) 中,如果有,則應(yīng)用程序模塊11可以啟動(dòng),否則,應(yīng)用程序模塊11不能啟動(dòng)。密鑰存儲(chǔ)模塊22,用于在過(guò)濾驅(qū)動(dòng)模塊14對(duì)受保護(hù)文件進(jìn)行加解密操作時(shí),提供 加解密操作的密鑰;在虛擬磁盤中建立影子文件具體的為過(guò)濾驅(qū)動(dòng)模塊13通過(guò)文件系統(tǒng)模塊14讀取所述受保護(hù)文件的屬性信息,在虛 擬磁盤中創(chuàng)建所述影子文件,并寫(xiě)入所述受保護(hù)文件的屬性信息,所述影子文件的數(shù)據(jù)為 空;或,過(guò)濾驅(qū)動(dòng)模塊13通過(guò)文件系統(tǒng)模塊14讀取受保護(hù)文件,并使用加密鎖2中存儲(chǔ) 的密鑰對(duì)受保護(hù)文件進(jìn)行解密,得到明文,將明文放入上述虛擬磁盤中,作為影子文件;其中,當(dāng)影子文件的數(shù)據(jù)為空時(shí),應(yīng)用程序模塊11根據(jù)句柄發(fā)出讀操作的指令 后,還包括過(guò)濾驅(qū)動(dòng)模塊13截獲應(yīng)用程序模塊11發(fā)出的根據(jù)上述句柄進(jìn)行讀操作的指令, 從磁盤中讀取受保護(hù)文件的預(yù)定部分或全部,使用加密鎖2內(nèi)部存儲(chǔ)的密鑰對(duì)受保護(hù)文件 的預(yù)定部分或全部進(jìn)行解密操作,得到受保護(hù)文件的預(yù)定部分的明文或全部明文,操作系 統(tǒng)為影子文件分配緩存空間,并將預(yù)定部分的明文或全部明文放入操作系統(tǒng)為上述影子文 件分配的緩存空間,建立文件映射關(guān)系;應(yīng)用程序模塊11根據(jù)上述句柄發(fā)出讀操作的指令后,還包括所述過(guò)濾驅(qū)動(dòng)模塊截獲所述應(yīng)用程序發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令, 向文件系統(tǒng)模塊14發(fā)送根據(jù)上述句柄進(jìn)行讀操作的指令,并通過(guò)所述虛擬磁盤模塊在所 述虛擬磁盤中讀取影子文件,操作系統(tǒng)為上述影子文件分配緩存空間,并將所述虛擬磁盤 中的明文放入操作系統(tǒng)為上述影子文件分配的緩存空間,完成對(duì)受保護(hù)文件的讀操作;過(guò)濾驅(qū)動(dòng)模塊13使用加密鎖2內(nèi)部存儲(chǔ)的密鑰對(duì)受保護(hù)文件的預(yù)定部分或全部 進(jìn)行解密操作,具體的為過(guò)濾驅(qū)動(dòng)模塊13使用加密鎖2內(nèi)部存儲(chǔ)的密鑰以簇為單位對(duì)受保護(hù)文件的預(yù)定 部分或全部進(jìn)行解密操作;在本實(shí)施例中,過(guò)濾驅(qū)動(dòng)模塊13還包括加密單元135,加密單元135用于當(dāng)將預(yù)定部分的明文放入操作系統(tǒng)為上述影子文件分配的緩存空間時(shí),加密單元135將經(jīng)過(guò)應(yīng)用程序模塊11寫(xiě)操作修改的受保護(hù)文件的明文以簇為單位進(jìn)行加密,并通過(guò) 文件系統(tǒng)模塊14對(duì)磁盤中存儲(chǔ)的受保護(hù)文件進(jìn)行修改;或,當(dāng)將全部明文放入操作系統(tǒng)為上述影子文件分配的緩存空間時(shí),加密單元135將 經(jīng)過(guò)應(yīng)用程序模塊11寫(xiě)操作修改的受保護(hù)文件的明文以簇為單位進(jìn)行加密,覆蓋磁盤中 存儲(chǔ)的受保護(hù)文件。在本實(shí)施例中,過(guò)濾驅(qū)動(dòng)模塊13還可以包括引用計(jì)數(shù)單元136,引用計(jì)數(shù)單元136 用于記錄影子文件的句柄數(shù),當(dāng)準(zhǔn)備打開(kāi)受保護(hù)文件并且未返回所述影子文件的句柄 時(shí),所述引用計(jì)數(shù)單元136的計(jì)數(shù)值為初值,每返回一個(gè)上述影子文件的句柄,引用計(jì)數(shù)值 增加一個(gè)步長(zhǎng),每關(guān)閉一個(gè)上述影子文件的句柄,引用計(jì)數(shù)值遞減一個(gè)步長(zhǎng),當(dāng)引用計(jì)數(shù)值 遞減為初值時(shí),刪除所述影子文件。本實(shí)施例所提供的系統(tǒng),與實(shí)施例1、2所提供的方法相對(duì)應(yīng),并互做補(bǔ)充,在系統(tǒng) 中可以體現(xiàn)方法,并由方法可以推斷得出系統(tǒng)。在本發(fā)明所提供的實(shí)施例中,所提供的各種操作及順序僅為最優(yōu)情況,在實(shí)際的 使用中并不一定嚴(yán)格按照上述實(shí)施例提供的操作順序進(jìn)行實(shí)施,并且文件名稱等可以進(jìn)行 協(xié)定的變化只要按照本發(fā)明所提供的方法以及通過(guò)本發(fā)明所提供的方法進(jìn)行的沒(méi)有創(chuàng)造 性的變換進(jìn)行的實(shí)施均應(yīng)該屬于本發(fā)明的保護(hù)范圍。以上僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則 之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種文件保護(hù)方法,其特征在于,所述方法包括應(yīng)用程序接收用戶發(fā)出的對(duì)受保護(hù)文件進(jìn)行操作的指令,所述受保護(hù)文件為經(jīng)過(guò)加密并以密文形式保存在磁盤中的文件,所述對(duì)受保護(hù)文件進(jìn)行操作的指令包括打開(kāi)、讀、寫(xiě)、關(guān)閉所述受保護(hù)文件的指令;接收到所述打開(kāi)所述受保護(hù)文件的指令之后,打開(kāi)所述受保護(hù)文件的操作包括所述應(yīng)用程序調(diào)用操作系統(tǒng)的上層接口,所述上層接口向文件系統(tǒng)發(fā)出打開(kāi)所述受保護(hù)文件的指令;過(guò)濾驅(qū)動(dòng)截獲所述上層接口向文件系統(tǒng)發(fā)出的打開(kāi)所述受保護(hù)文件的指令,并判斷所述應(yīng)用程序是否為合法應(yīng)用程序;如果合法,所述過(guò)濾驅(qū)動(dòng)讀取受保護(hù)文件的屬性信息,向所述文件系統(tǒng)發(fā)出在虛擬磁盤中創(chuàng)建所述受保護(hù)文件的影子文件的指令,所述文件系統(tǒng)通過(guò)虛擬磁盤驅(qū)動(dòng)在所述虛擬磁盤中創(chuàng)建所述影子文件,所述操作系統(tǒng)向所述應(yīng)用程序返回所述影子文件的句柄,引用計(jì)數(shù)值增加一個(gè)步長(zhǎng);其中,在所述虛擬磁盤中創(chuàng)建影子文件包括所述過(guò)濾驅(qū)動(dòng)通過(guò)所述文件系統(tǒng)讀取所述受保護(hù)文件的屬性信息,在所述虛擬磁盤中創(chuàng)建所述影子文件,為所述影子文件隨機(jī)命名,并寫(xiě)入所述受保護(hù)文件的屬性信息,所述影子文件的數(shù)據(jù)為空;或,所述過(guò)濾驅(qū)動(dòng)通過(guò)所述文件系統(tǒng)讀取所述受保護(hù)文件,并使用與主機(jī)連接的加密鎖中存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件進(jìn)行解密,得到明文,將明文放入所述虛擬磁盤中作為影子文件的數(shù)據(jù),并為所述影子文件隨機(jī)命名,作為所述影子文件;接收到所述讀所述受保護(hù)文件的指令之后,讀所述受保護(hù)文件的操作包括所述應(yīng)用程序發(fā)出根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令;當(dāng)所述影子文件的數(shù)據(jù)為空時(shí),所述過(guò)濾驅(qū)動(dòng)截獲所述應(yīng)用程序發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令,從磁盤中讀取所述受保護(hù)文件的預(yù)定部分或全部,使用與所述主機(jī)連接的加密鎖內(nèi)存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件的預(yù)定部分或全部進(jìn)行解密,得到所述受保護(hù)文件的預(yù)定部分的明文或全部明文,所述操作系統(tǒng)為所述影子文件分配緩存空間,并將所述預(yù)定部分的明文或全部明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間中,建立文件映射關(guān)系,所述應(yīng)用程序完成對(duì)所述受保護(hù)文件的讀操作;當(dāng)所述影子文件中的數(shù)據(jù)為受保護(hù)文件的明文時(shí),所述過(guò)濾驅(qū)動(dòng)截獲所述應(yīng)用程序發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令,通過(guò)所述虛擬磁盤驅(qū)動(dòng)在所述虛擬磁盤中讀取所述影子文件,所述操作系統(tǒng)為所述影子文件分配緩存空間,并將所述虛擬磁盤中的明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間中,所述應(yīng)用程序完成對(duì)所述受保護(hù)文件的讀操作;接收到所述寫(xiě)所述受保護(hù)文件的指令之后,寫(xiě)所述受保護(hù)文件的操作包括所述應(yīng)用程序發(fā)出根據(jù)所述句柄對(duì)文件進(jìn)行寫(xiě)操作的指令;所述應(yīng)用程序在所述操作系統(tǒng)為所述影子文件分配的緩存中完成對(duì)所述明文的受保護(hù)文件的寫(xiě)操作,所述寫(xiě)操作包括對(duì)所述受保護(hù)文件的插入新數(shù)據(jù)、修改、替換、編輯;所述過(guò)濾驅(qū)動(dòng)對(duì)所述修改后的受保護(hù)文件進(jìn)行加密操作并保存;接收到所述關(guān)閉所述受保護(hù)文件的指令之后,關(guān)閉所述受保護(hù)文件的操作包括所述過(guò)濾驅(qū)動(dòng)逐一關(guān)閉打開(kāi)的所述影子文件的句柄,將所述引用計(jì)數(shù)值遞減,遞減后檢查所述引用計(jì)數(shù)值,當(dāng)所述引用計(jì)數(shù)值為初值時(shí),刪除所述影子文件。
2.如權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用程序接收用戶發(fā)出的打開(kāi)所述受 保護(hù)文件的指令前,所述方法還包括所述操作系統(tǒng)啟動(dòng),再自動(dòng)加載所述過(guò)濾驅(qū)動(dòng)、所述虛擬磁盤驅(qū)動(dòng),并在內(nèi)存中創(chuàng)建所 述虛擬磁盤。
3.如權(quán)利要求1所述的方法,其特征在于,當(dāng)判斷所述應(yīng)用程序?yàn)椴缓戏〞r(shí),所述方法 還包括所述上層接口通過(guò)所述文件系統(tǒng)找到所述受保護(hù)文件,所述操作系統(tǒng)為所述受保護(hù)文 件分配緩存,并將所述受保護(hù)文件讀入緩存,所述讀入緩存中的受保護(hù)文件為密文形式;或,向所述應(yīng)用程序返回錯(cuò)誤,非法應(yīng)用程序禁止訪問(wèn)所述受保護(hù)文件。
4.如權(quán)利要求1所述的方法,其特征在于,所述過(guò)濾驅(qū)動(dòng)使用與所述主機(jī)連接的加密 鎖內(nèi)存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件的預(yù)定部分或全部進(jìn)行解密,具體的為所述過(guò)濾驅(qū)動(dòng)使用與所述主機(jī)連接的加密鎖內(nèi)存儲(chǔ)的密鑰以簇為單位對(duì)所述受保護(hù) 文件的預(yù)定部分或全部進(jìn)行解密。
5.如權(quán)利要求4所述的方法,其特征在于,當(dāng)所述將預(yù)定部分的明文放入所述操作系 統(tǒng)為所述影子文件分配的緩存空間時(shí),所述過(guò)濾驅(qū)動(dòng)對(duì)所述修改后的受保護(hù)文件進(jìn)行加密 操作并保存,具體的包括所述過(guò)濾驅(qū)動(dòng)將所述修改后的受保護(hù)文件的明文以簇為單位使用與所述主機(jī)連接的 加密鎖內(nèi)存儲(chǔ)的密鑰進(jìn)行加密,并通過(guò)所述文件系統(tǒng)對(duì)磁盤中存儲(chǔ)所述受保護(hù)文件的簇進(jìn) 行修改。
6.如權(quán)利要求4所述的方法,其特征在于,當(dāng)所述將全部明文放入所述操作系統(tǒng)為所 述影子文件分配的緩存空間時(shí),所述過(guò)濾驅(qū)動(dòng)對(duì)所述修改后的受保護(hù)文件進(jìn)行加密操作并 保存,具體的包括所述過(guò)濾驅(qū)動(dòng)將完整的所述修改后的受保護(hù)文件使用與所述主機(jī)連接的加密鎖內(nèi)存 儲(chǔ)的密鑰進(jìn)行加密,覆蓋所述磁盤中存儲(chǔ)的所述受保護(hù)文件。
7.如權(quán)利要求1所述的方法,其特征在于,所述上層接口為,所述操作系統(tǒng)提供的供所 述應(yīng)用程序調(diào)用,為所述應(yīng)用程序提供創(chuàng)建、打開(kāi)、讀取文件操作的功能的接口。
8.如權(quán)利要求1所述的方法,其特征在于,所述過(guò)濾驅(qū)動(dòng)判斷所述應(yīng)用程序是否合法, 具體的包括在進(jìn)行文件保護(hù)前,使合法的應(yīng)用程序向所述過(guò)濾驅(qū)動(dòng)進(jìn)行注冊(cè),過(guò)濾驅(qū)動(dòng)記錄所述 合法的應(yīng)用程序的注冊(cè)信息,當(dāng)存在應(yīng)用程序通過(guò)調(diào)用上層接口發(fā)送訪問(wèn)受保護(hù)文件的指 令時(shí),過(guò)濾驅(qū)動(dòng)獲取應(yīng)用程序的信息,并判斷與記錄的合法應(yīng)用程序的注冊(cè)信息是否相同, 如果相同,則認(rèn)為應(yīng)用程序合法,如果不相同,則認(rèn)為應(yīng)用程序不合法,所述注冊(cè)信息包括 所述合法的應(yīng)用程序的名稱、進(jìn)程ID、路徑,以及應(yīng)用程序的注冊(cè)表信息。
9.如權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用程序接收用戶發(fā)出的打開(kāi)受保護(hù) 文件的指令前,還包括對(duì)所述應(yīng)用程序進(jìn)行加殼處理,使得所述加殼后的應(yīng)用程序在啟動(dòng)時(shí)判斷是否有合法的加密鎖接入,如果有,則所述應(yīng)用程序可以啟動(dòng),否則,所述應(yīng)用程序不能啟動(dòng)。
10.如權(quán)利要求1所述的方法,其特征在于,所述引用計(jì)數(shù)值用于記錄所述影子文件的 句柄數(shù),當(dāng)未返回所述影子文件的句柄時(shí),所述引用計(jì)數(shù)值為初值,每返回一個(gè)所述影子文 件的句柄,所述引用計(jì)數(shù)值增加一個(gè)步長(zhǎng),每關(guān)閉一個(gè)所述影子文件的句柄,所述引用計(jì)數(shù) 值遞減一個(gè)步長(zhǎng)。
11.一種文件保護(hù)系統(tǒng),其特征在于,所述系統(tǒng)包括文件保護(hù)驅(qū)動(dòng)和加密鎖所述文件保護(hù)驅(qū)動(dòng)包括應(yīng)用程序模塊、上層接口模塊、過(guò)濾驅(qū)動(dòng)模塊、文件系統(tǒng)模塊、 虛擬磁盤驅(qū)動(dòng)模塊;所述應(yīng)用程序模塊,用于通過(guò)調(diào)用所述上層接口模塊打開(kāi)存儲(chǔ)在磁盤中的受保護(hù)文 件,并通過(guò)所述上層接口模塊發(fā)出根據(jù)句柄對(duì)文件進(jìn)行讀操作和寫(xiě)操作的指令;所述上層接口模塊,用于接收所述應(yīng)用程序模塊發(fā)出的對(duì)文件操作的指令,并通過(guò)操 作所述文件系統(tǒng)模塊完成文件的打開(kāi)、讀、寫(xiě)、關(guān)閉的操作;所述過(guò)濾驅(qū)動(dòng)模塊,用于監(jiān)控主機(jī)中對(duì)所述文件系統(tǒng)模塊的操作,當(dāng)發(fā)現(xiàn)預(yù)定義的對(duì) 所述文件系統(tǒng)模塊的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作,對(duì)所述預(yù)定義的對(duì)所述文件系統(tǒng)模塊 的操作進(jìn)行控制;所述文件系統(tǒng)模塊,用于管理磁盤中存儲(chǔ)的文件,可以在磁盤中完成建立文件,索引文 件,讀取文件,修改文件的操作;所述虛擬磁盤驅(qū)動(dòng)模塊,用于當(dāng)接收到所述過(guò)濾驅(qū)動(dòng)模塊通過(guò)所述文件系統(tǒng)模塊發(fā)出 的創(chuàng)建所述受保護(hù)文件的影子文件的指令后,在虛擬磁盤中建立影子文件,當(dāng)所述影子文 件建立完成后,操作系統(tǒng)向所述應(yīng)用程序模塊返回所述影子文件的句柄; 所述加密鎖包括驗(yàn)證模塊和密鑰存儲(chǔ)模塊;所述驗(yàn)證模塊,用于在所述應(yīng)用程序模塊啟動(dòng)時(shí),輔助驗(yàn)證是否有加密鎖連接在主機(jī) 中,如果有,則所述應(yīng)用程序模塊可以啟動(dòng),否則,所述應(yīng)用程序模塊不能啟動(dòng)。所述密鑰存儲(chǔ)模塊,用于在所述過(guò)濾驅(qū)動(dòng)模塊對(duì)受保護(hù)文件進(jìn)行加解密操作時(shí),提供 加解密操作的密鑰。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述應(yīng)用程序模塊包括驗(yàn)證單元、打開(kāi)單 元、讀寫(xiě)單元所述驗(yàn)證單元,用于在所述應(yīng)用程序模塊啟動(dòng)時(shí),驗(yàn)證主機(jī)是否連接有合法的加密鎖, 如果有,所述應(yīng)用程序模塊可以啟動(dòng),否則,所述應(yīng)用程序模塊不能啟動(dòng);所述打開(kāi)單元,用于在接收到所述用戶發(fā)送的打開(kāi)受保護(hù)文件的指令時(shí),向所述上層 接口模塊發(fā)出打開(kāi)所述受保護(hù)文件的指令,并在接收到所述影子文件的句柄時(shí),根據(jù)所述 句柄打開(kāi)受保護(hù)文件;所述讀寫(xiě)單元,用于在接收到所述操作系統(tǒng)返回的所述影子文件的句柄后,根據(jù)所述 句柄發(fā)出讀寫(xiě)操作的指令。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述過(guò)濾驅(qū)動(dòng)模塊,具體的包括過(guò)濾單 元、判斷單元、解密單元、影子文件創(chuàng)建單元;所述過(guò)濾單元,用于監(jiān)控所述上層接口模塊是否有打開(kāi)所述受保護(hù)文件的操作,當(dāng)存 在打開(kāi)所述受保護(hù)文件的操作時(shí),執(zhí)行預(yù)設(shè)的附加操作;所述判斷單元,用于在所述過(guò)濾單元截獲預(yù)設(shè)的對(duì)所述文件系統(tǒng)模塊的操作時(shí),判斷打開(kāi)受保護(hù)文件的應(yīng)用程序是否合法,如果合法,則向所述文件系統(tǒng)模塊發(fā)出創(chuàng)建影子文 件的指令,如果不合法,則直接打開(kāi)所述受保護(hù)文件,打開(kāi)所述受保護(hù)文件時(shí),不進(jìn)行解密 操作;所述解密單元,用于當(dāng)接收到所述上層接口模塊發(fā)送的根據(jù)所述句柄讀或?qū)懰鲇白?文件的指令時(shí),向所述文件系統(tǒng)模塊發(fā)出讀取受保護(hù)文件的命令,并將讀出的密文形式的 所述受保護(hù)文件進(jìn)行解密操作,得到明文形式的受保護(hù)文件,放入操作系統(tǒng)為所述影子文 件分配的緩存中;所述影子文件創(chuàng)建單元,用于向所述文件系統(tǒng)模塊發(fā)送創(chuàng)建影子文件的指令,并為所 述影子文件隨機(jī)命名。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述預(yù)設(shè)的附加操作具體的為,創(chuàng)建影子 文件、對(duì)文件進(jìn)行加解密、對(duì)數(shù)據(jù)進(jìn)行個(gè)性化操作。
15.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述文件系統(tǒng)模塊還用于,當(dāng)接收到所述 影子創(chuàng)建單元發(fā)送的創(chuàng)建影子文件的指令時(shí),向所述虛擬磁盤驅(qū)動(dòng)模塊發(fā)送創(chuàng)建影子文件 的指令。
16.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述在虛擬磁盤中建立影子文件具體的為所述過(guò)濾驅(qū)動(dòng)模塊通過(guò)所述文件系統(tǒng)模塊讀取所述受保護(hù)文件的屬性信息,在所述虛 擬磁盤中創(chuàng)建所述影子文件,并寫(xiě)入所述受保護(hù)文件的屬性信息,所述影子文件的數(shù)據(jù)為空。
17.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述在虛擬磁盤中建立影子文件還具體 的為所述過(guò)濾驅(qū)動(dòng)模塊通過(guò)所述文件系統(tǒng)模塊讀取所述受保護(hù)文件,并使用所述加密鎖中 存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件進(jìn)行解密,得到明文,將所述明文放入所述虛擬磁盤中,作為 所述影子文件。
18.如權(quán)利要求16所述的系統(tǒng),其特征在于,當(dāng)所述影子文件的數(shù)據(jù)為空時(shí),所述應(yīng)用 程序模塊發(fā)出根據(jù)所述句柄對(duì)文件進(jìn)行讀操作的指令后,還包括所述過(guò)濾驅(qū)動(dòng)模塊截獲所述應(yīng)用程序模塊發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令, 從磁盤中讀取所述受保護(hù)文件的預(yù)定部分或全部,使用所述加密鎖內(nèi)部存儲(chǔ)的密鑰對(duì)所述 受保護(hù)文件的預(yù)定部分或全部進(jìn)行解密操作,得到所述受保護(hù)文件的預(yù)定部分的明文或全 部明文,所述操作系統(tǒng)為所述影子文件分配緩存空間,并將所述預(yù)定部分的明文或全部明 文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間,建立文件映射關(guān)系。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述應(yīng)用程序模塊發(fā)出根據(jù)所述句柄對(duì) 文件讀操作的指令后,還包括所述過(guò)濾驅(qū)動(dòng)模塊截獲所述應(yīng)用程序發(fā)出的根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令,向所 述文件系統(tǒng)模塊發(fā)送根據(jù)所述句柄對(duì)文件進(jìn)行讀的指令,并通過(guò)所述虛擬磁盤模塊在所述 虛擬磁盤中讀取所述影子文件,所述操作系統(tǒng)為所述影子文件分配緩存空間,并將所述虛 擬磁盤中的明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間,完成對(duì)所述受保護(hù)文 件的讀操作。
20.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述過(guò)濾驅(qū)動(dòng)模塊使用所述加密鎖內(nèi)部存儲(chǔ)的密鑰對(duì)所述受保護(hù)文件的預(yù)定部分或全部進(jìn)行解密操作,具體的為所述過(guò)濾驅(qū)動(dòng)模塊使用所述加密鎖內(nèi)部存儲(chǔ)的密鑰以簇為單位對(duì)所述受保護(hù)文件的 預(yù)定部分或全部進(jìn)行解密操作。
21.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述過(guò)濾驅(qū)動(dòng)模塊還包括加密單元,所述 加密單元用于當(dāng)所述將預(yù)定部分的明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間時(shí),所述 加密單元將經(jīng)過(guò)所述應(yīng)用程序模塊寫(xiě)操作修改的所述受保護(hù)文件的明文以簇為單位進(jìn)行 加密,并通過(guò)所述文件系統(tǒng)模塊對(duì)磁盤中存儲(chǔ)的所述受保護(hù)文件進(jìn)行修改;或,當(dāng)所述將全部明文放入所述操作系統(tǒng)為所述影子文件分配的緩存空間時(shí),所述加密單 元將經(jīng)過(guò)所述應(yīng)用程序模塊寫(xiě)操作修改的所述受保護(hù)文件的明文以簇為單位進(jìn)行加密,覆 蓋磁盤中存儲(chǔ)的所述受保護(hù)文件。
22.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述過(guò)濾驅(qū)動(dòng)模塊還包括引用計(jì)數(shù)單元, 所述引用計(jì)數(shù)單元用于記錄所述影子文件的句柄數(shù),當(dāng)未返回所述影子文件的句柄時(shí),所述引用計(jì)數(shù)單元的 計(jì)數(shù)值為初值,每返回一個(gè)所述影子文件的句柄,所述引用計(jì)數(shù)值增加一個(gè)步長(zhǎng),每關(guān)閉一 個(gè)所述影子文件的句柄,所述引用計(jì)數(shù)值遞減一個(gè)步長(zhǎng),當(dāng)所述引用計(jì)數(shù)值遞減為初值時(shí), 刪除所述影子文件。
全文摘要
本發(fā)明公開(kāi)了一種文件保護(hù)方法和系統(tǒng),屬于信息安全領(lǐng)域。該方法包括應(yīng)用程序接收用戶發(fā)出的打開(kāi)受保護(hù)文件的指令,所述應(yīng)用程序調(diào)用操作系統(tǒng)的上層接口,所述上層接口向文件系統(tǒng)發(fā)出打開(kāi)所述受保護(hù)文件的指令,過(guò)濾驅(qū)動(dòng)截獲所述上層接口向文件系統(tǒng)發(fā)出打開(kāi)所述受保護(hù)文件的指令,如果判斷得到所述應(yīng)用程序合法,則所述過(guò)濾驅(qū)動(dòng)為所述受保護(hù)文件在虛擬磁盤中創(chuàng)建影子文件,并返回影子文件的句柄,通過(guò)該句柄對(duì)受保護(hù)文件進(jìn)行讀寫(xiě)操作,克服了傳統(tǒng)技術(shù)中緩存中的明文受保護(hù)文件容易泄露的缺點(diǎn)。
文檔編號(hào)G06F21/62GK101853363SQ20101017205
公開(kāi)日2010年10月6日 申請(qǐng)日期2010年5月7日 優(yōu)先權(quán)日2010年5月7日
發(fā)明者于華章, 陸舟 申請(qǐng)人:北京飛天誠(chéng)信科技有限公司