• / 15
  • 下載費用:30 金幣  

一種基于影子文件的文件加密系統.pdf

摘要
申請專利號:

CN201510707983.7

申請日:

2015.10.27

公開號:

CN105426766A

公開日:

2016.03.23

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 21/60申請日:20151027|||公開
IPC分類號: G06F21/60(2013.01)I; G06F21/62(2013.01)I 主分類號: G06F21/60
申請人: 武漢理工大學
發明人: 龍毅宏
地址: 430070湖北省武漢市洪山區珞獅路122號
優先權:
專利代理機構: 武漢開元知識產權代理有限公司42104 代理人: 潘杰
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510707983.7

授權公告號:

||||||

法律狀態公告日:

2018.05.18|||2016.04.20|||2016.03.23

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

發明涉及一種基于影子文件的文件加密系統,所述系統包括一個文件加密過濾器驅動;當一個受信進程打開或創建一個文件時,若要打開或創建的文件是一個加密文件或者是位于安全文件目錄或安全文件盤中的一個文件,則文件加密過濾器驅動將文件打開或創建操作重定向到一個臨時文件目錄;之后,文件加密過濾器驅動將受信進程針對影子文件的I/O操作轉化為針對影子文件的原文件的I/O操作,并在操作過程中對讀取的加密數據進行解密,對存寫的明文數據進行加密,以及保持影子文件和原文的文件控制塊中的文件信息和緩存數據一致;而非受信進程對加密文件直接進行I/O操作;由于受信進程和非受信進程有各自的數據緩存,從而避免了頻繁清緩存的問題。

權利要求書

1.一種基于影子文件的文件加密系統,其特征是:
所述文件加密系統包括文件加密過濾器驅動;所述文件加密過濾器
驅動是一個插入到計算機文件系統驅動棧中的、通過攔截文件I/O操作
對文件進行加密和解密處理的文件過濾器驅動;
當一個受信進程打開或創建一個文件時,所述文件加密過濾器驅動
先檢查確定要打開或創建的文件是否是一個加密文件,若是,則將文件
打開或創建操作重定向到一個臨時文件目錄;否則,所述文件加密過濾
器驅動進一步檢查確定要打開或創建的文件是否位于安全文件目錄或安
全文件盤中,若不是,則對文件打開或創建操作不作進一步處理,若是,
則將文件打開或創建操作重定向到一個臨時文件目錄;重定向到臨時文
件目錄中被打開或創建的文件稱為重定向前受信進程要打開或創建的文
件的影子文件,而重定向前受信進程要打開或創建的文件稱為影子文件
的原文件;針對同一個原文件,重定向后的影子文件具有相同的文件路
徑;重定向后的影子文件的文件路徑中包含原文件的文件路徑信息,或
者通過重定向后的影子文件的文件路徑可獲得原文件的文件路徑;
若針對影子文件的文件打開或創建操作請求中的文件打開或創建
方式是:若文件不存在則報錯,則在針對影子文件的文件打開或創建操
作進行之前,所述文件加密過濾器驅動通過影子文件的文件路徑獲得重
定向前的原文件的文件路徑,然后檢查影子文件的原文件是否已存在,
若是,則將針對影子文件的文件打開或創建操作請求中的文件打開或創
建方式修改為若文件不存在則創建,然后讓修改后的針對影子文件的文
件打開或創建操作請求通過,否則,返回文件不存在的錯誤;
在影子文件打開或創建操作完成之后,所述文件加密過濾器驅動通
過影子文件的文件路徑獲得重定向前的原文件的文件路徑,然后按影子
文件打開或創建的方式打開或創建影子文件的原文件,并將打開或創建
的影子文件同打開或創建的原文件關聯;
當一個影子文件被初始打開或創建后,所述文件加密過濾器驅動
通過文件I/O操作設置影子文件的文件信息,或者直接修改影子文件在
內存中的文件控制塊,設置文件控制塊中的文件信息,且當影子文件是
以緩存方式打開或創建時,通過調用緩存管理函數重新設置文件的數據
緩存大小,使得影子文件與原文件在內存中的文件控制塊和數據緩存具
有一致的文件信息和數據緩存大小,包括一致的文件長度、文件分配長
度,以及一致的其他影響文件I/O操作的文件信息;
當一個非受信進程在安全文件目錄或安全文件盤中打開或創建一
個文件時,或者當所述文件加密過濾器驅動因將影子文件同原文件關聯
而打開或創建影子文件在安全文件目錄或安全文件盤中的原文件時,若
所述文件加密過濾器驅動檢查發現在安全文件目錄或安全文件盤中打開
或創建的文件是一個非加密文件,則所述文件加密過濾器驅動先將打開
或創建的文件加密成加密文件;文件加密過濾器驅動根據特征數據判斷
打開或創建的文件是非加密的文件還是加密的文件;
當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個已
打開或創建的影子文件進行文件信息設置操作時,所述文件加密過濾器
驅動一方面針對影子文件的原文件進行同樣的文件信息設置操作,另一
方面將針對影子文件的文件信息設置操作傳遞下去,或者根據文件信息
設置操作要設置的文件信息直接設置影子文件的文件控制塊中的文件信
息,且當設置的文件信息是文件長度或文件分配長度而影子文件是以緩
存方式打開或創建時,通過調用緩存管理函數重新設置影子文件的數據
緩存大小,使得影子文件與原文件在內存中的文件控制塊和數據緩存具
有一致的文件信息和數據緩存大小,包括一致的文件長度、文件分配長
度,以及一致的其他影響文件I/O操作的文件信息;
當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個已
打開或創建的影子文件進行文件數據讀取操作時,所述文件加密過濾器
驅動將針對影子文件的數據讀取操作轉化成針對影子文件的原文件的數
據讀取操作,并對從影子文件的原文件讀取的加密數據進行解密處理;
當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個已
打開或創建的影子文件進行文件數據存寫操作時,所述文件加密過濾器
驅動一方面將針對影子文件的數據存寫操作轉化成針對影子文件的原文
件的數據存寫操作,并在將數據存寫到影子文件的原文件之前,先對要
存寫的明文數據進行加密處理,另一方面當影子文件是以緩存方式打開
或創建時,通過調用緩存管理函數清空影子文件的原文件在內存中的緩
存數據;
當一個受信進程對一個已打開或創建的影子文件進行文件重命名
操作時,所述文件加密過濾器驅動將針對影子文件的文件重命名操作轉
化成針對影子文件的原文件的文件重命名操作,于此同時,所述文件加
密過濾器驅動對影子文件也進行重命名操作,或者不進行重命名操作;
若所述文件加密過濾器驅動對影子文件也進行重命名操作,則重名后的
原文件的文件路徑與重名后的影子文件的文件路徑按照原文件的文件路
徑與影子文件的文件路徑的對應方式保持對應關系;若所述文件加密過
濾器驅動對影子文件不進行重命名操作,則所述文件加密過濾器驅動維
護重名后的原文件的文件路徑與影子文件的文件路徑的對應關系;
所述文件加密過濾器驅動對針對一個已打開或創建的影子文件的
緩存數據刷寫操作不轉化成針對原文件的緩存數據刷寫操作;
當一個非受信進程打開或創建一個文件時,所述文件加密過濾器驅
動不進行文件打開或創建操作重定向處理;
當一個非受信進程對臨時文件目錄中的影子文件進行文件I/O操作
時,所述文件加密過濾器驅動阻止非受信進程對臨時文件目錄中的影子
文件所進行的文件I/O操作;
當一個非受信進程或操作系統輔助文件I/O操作的系統進程對一個
由非受信進程打開或創建的加密文件進行文件信息設置操作時,所述文
件加密過濾器驅動一方面檢查加密文件是否有影子文件,若有,則通過
文件I/O操作設置影子文件的文件信息,或者直接設置影子文件的文件
控制塊中的文件信息,且當設置的文件信息是文件長度或文件分配長度
而影子文件是以緩存方式打開或創建時,通過調用緩存管理函數重新設
置影子文件的數據緩存大小,另一方面將針對加密文件的文件信息設置
操作傳遞下去,使得影子文件與原文件在內存中的文件控制塊和數據緩
存具有一致的文件信息和數據緩存大小,包括一致的文件長度、文件分
配長度,以及一致的其他影響文件I/O操作的文件信息;
當一個非受信進程或操作系統輔助文件I/O操作的系統進程對一個
由非受信進程打開或創建的加密文件進行數據存寫操作時,所述文件加
密過濾器驅動一方面檢查加密文件是否有影子文件,若有,則通過調用
緩存管理函數清空影子文件的緩存數據,另一方面將針對加密文件的數
據存寫操作傳遞下去;
當一個非受信進程或操作系統輔助文件I/O操作的系統進程對一個
由非受信進程打開或創建的加密文件進行數據存寫時,若所述文件加密
過濾器驅動發現存寫的數據是非加密的數據,則所述文件加密過濾器驅
動對要存寫的數據進行加密處理;所述文件加密過濾器驅動根據特征數
據判斷存寫的數據是非加密的數據還是加密的數據;
當臨時文件目錄中的一個影子文件不再使用時,所述文件加密系統
刪除不再使用的影子文件;
所述安全文件目錄或安全文件盤是計算機文件系統的一個文件目
錄或文件盤,安全文件目錄或安全文件盤中的文件被所述文件加密系統
自動加密;加密后的文件的名字和類型不變,即加密后的文件保持原有
文件的名字和擴展名;所述臨時文件目錄是一個預先設定的文件加密系
統用于輔助加密文件處理的文件目錄;
所述受信進程是被允許獲取加密文件的明文數據的程序進程;而不
被允許獲取加密文件的明文數據的程序進程稱為非受信進程;受信進程
針對文件類型而設定;對于任何文件類型而言,操作系統輔助文件I/O
操作的系統進程既不是受信進程,也不是非受信進程;當針對一個由非
受信進程打開或創建的加密文件進行文件I/O操作時,操作系統輔助文
件I/O操作的系統進程不被允許獲取加密文件的明文數據;當針對一個
由受信進程打開或創建的影子文件進行文件I/O操作時,操作系統輔助
文件I/O操作的系統進程被允許獲取影子文件對應的原文件的明文數據。
2.根據權利要求1所述的基于影子文件的文件加密系統,其特征
是:
所述影子文件的文件路徑的一種實施方式是:影子文件的文件路徑
是位于臨時文件目錄中的一個包含原文件的文件路徑信息的文件路徑;
若影子文件的文件路徑是臨時文件目錄中的一個包含原文件的文
件路徑信息的文件路徑,則所述文件加密過濾器驅動直接從影子文件的
文件路徑中獲得原文件的文件路徑;而對于受信進程打開或創建影子文
件的文件I/O操作,所述文件加密過濾器驅動攔截文件打開或創建操作
請求,并在影子文件打開或創建操作進行之前,先檢查要打開或創建的
影子文件的文件路徑中的文件目錄在臨時文件目錄中是否存在,若不存
在,則在臨時文件目錄中創建影子文件的文件路徑中的文件目錄;
若影子文件的文件路徑是臨時文件目錄中的一個包含原文件的文
件路徑信息的文件路徑,且當一個受信進程對一個已打開或創建的影子
文件進行文件重命名操作時,所述文件加密過濾器驅動對影子文件也進
行重命名操作,則重命名后的影子文件的文件路徑是臨時文件目錄中的
一個包含重命名后的原文件的文件路徑信息的文件路徑。
3.根據權利要求1所述的基于影子文件的文件加密系統,其特征
是:所述影子文件的文件路徑的一種實施方式是:影子文件的文件路徑
是直接位于臨時文件目錄下的一個以原文件的文件路徑的散列值的
Base64編碼作為文件名的文件路徑;
若影子文件的文件路徑是直接位于臨時文件目錄下的一個以原文
件的文件路徑的散列值的Base64編碼作為文件名的文件路徑,則所述文
件加密過濾器驅動在內存中維護一個原文件的文件路徑與影子文件的文
件路徑的對應表,稱為文件路徑對應表;所述文件加密過濾器驅動在將
針對一個原文件的打開或創建操作重定向到臨時文件目錄之前,先檢查
文件路徑對應表中是否有要重定向的原文件,若沒有,則在文件路徑對
應表中創建一項要重定向的原文件的文件路徑與重定向后的影子文件的
文件路徑的對應項;當影子文件被刪除時,所述文件加密過濾器驅動從
文件路徑對應表中將被刪除的影子文件的原文件的文件路徑與被刪除的
影子文件的文件路徑的對應項刪除;若影子文件的文件路徑是直接位于
臨時文件目錄下的一個以原文件的文件路徑的散列值的Base64編碼作為
文件名的文件路徑,且當一個受信進程對一個已打開或創建的影子文件
進行文件重命名操作時,文件加密過濾器驅動不對影子文件進行重命名
操作,則文件加密過濾器驅動通過原文件的文件路徑與影子文件的文件
路徑的對應表維護重名后的原文件的文件路徑與影子文件的文件路徑的
對應關系。
4.根據權利要求1所述的基于影子文件的文件加密系統,其特征
是:
所述文件加密過濾器驅動將打開或創建的影子文件同打開或創建
的原文件關聯的一種方案如下:
所述文件加密過濾器驅動按影子文件打開或創建的方式打開或創
建影子文件的原文件,然后將文件系統返回的原文件的文件對象指針放
入到影子文件的文件對象中創建的一個自定義的用戶上下文中,從而將
打開或創建的影子文件同打開或創建的影子文件的原文件關聯。
5.根據權利要求1所述的基于影子文件的文件加密系統,其特征
是:
所述文件加密過濾器驅動判斷一個影子文件是否是被初始打開或
創建的一種方案如下:
所述文件加密過濾器驅動檢查被打開或創建的影子文件在內存中
的文件控制塊中是否已有一個自定義的用戶上下文,若沒有,則影子文
件是被初始打開或創建的,文件加密過濾器驅動在影子文件的文件控制
塊中創建一個自定義的用戶上下文,若有,則影子文件不是被初始打開
或創建的。
6.根據權利要求4所述的基于影子文件的文件加密系統,其特征
是:
基于所述將打開或創建的影子文件同打開或創建的原文件關聯的
方案,當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個
已打開或創建的影子文件進行文件I/O操作時,所述文件加密過濾器驅
動從影子文件的文件對象中的自定義的用戶上下文中獲得影子文件的原
文件的文件對象指針,然后通過原文件的文件對象指針對原文件進行文
件I/O操作及數據緩存操作;當一個受信進程對一個已打開或創建的影
子文件進行文件關閉操作時,所述文件加密過濾器驅動從影子文件的文
件對象中的自定義的用戶上下文中獲得影子文件的原文件的文件對象指
針,然后通過原文件的文件對象指針將原文件關閉,然后將關閉后的原
文件的文件對象指針從自定義的用戶上下文中刪除。
7.根據權利要求1所述的基于影子文件的文件加密系統,其特征
是:
當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個已
打開或創建的影子文件進行文件數據讀取或存寫操作時,所述文件加密
系統將針對影子文件的數據讀取或數據存寫操作轉化成針對影子文件的
原文件的數據讀取或數據存寫操作的一種方案如下:
當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個以
緩存方式打開或創建的影子文件進行非Page數據讀取或非Page數據存
寫操作時,所述文件加密過濾器驅動不進行處理;
當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個以
緩存方式打開或創建的影子文件進行Page數據讀取或Page數據存寫操
作時,所述文件加密過濾器驅動將針對影子文件的Page數據讀取或Page
數據存寫操作轉化成針對影子文件的原文件的Page數據讀取或Page存
寫操作;在進行Page數據存寫操作前或者在Page數據存寫操作完成后,
所述文件加密過濾器驅動通過調用緩存管理函數清空影子文件的原文件
在內存中的緩存數據;
當一個受信進程或操作系統輔助文件I/O操作的系統進程對一個以
非緩存方式打開或創建的影子文件進行非Page數據讀取或非Page數據
存寫操作時,所述文件加密過濾器驅動將針對影子文件的非Page數據讀
取或非Page數據存寫操作轉化成針對影子文件的原文件的非Page數據
讀取或非Page數據存寫操作。
8.根據權利要求5所述的基于影子文件的文件加密系統,其特征
是:
所述文件加密系統刪除臨時文件目錄中不再使用的影子文件的一
種方法如下:
當一個影子文件的文件控制塊中的自定義的用戶上下文由操作系
統調用文件加密系統提供的回調函數進行釋放時,文件加密系統提供的
回調函數通知一個文件加密輔助進程刪除影子文件;
文件加密輔助進程接收到回調函數發出的刪除影子文件的通知后,
刪除影子文件以及影子文件的文件路徑中除臨時文件目錄以外的未被其
他影子文件使用的其他文件目錄;
所述文件加密輔助進程是一個運行在用戶空間的輔助文件加密系
統進行文件加密和解密處理的程序進程;文件加密過濾器驅動將在內核
層不便進行的操作處理交由文件加密輔助進程操作處理。
9.根據權利要求1所述的基于影子文件的文件加密系統,其特征
是:
若所述文件加密系統采用的文件重定向方案是針對非受信進程的
文件重定向方案,即當一個非受信進程打開或創建一個加密文件時,或
者打開或創建安全文件目錄或安全文件盤中的一個文件時,所述文件加
密過濾器驅動將文件打開或創建操作重定向到臨時文件目錄,則相對于
針對受信進程的文件重定向方案,除了受信進程讀取或存寫文件數據時
進行數據解密和加密處理不變外,文件加密系統將針對受信進程和非受
信進程的文件I/O操作處理互換,即將針對受信進程的文件I/O操作處
理變為針對非受信進程的文件I/O操作處理,將針對非受信進程的文件
I/O操作處理變為針對受信進程的文件I/O操作處理。

說明書

一種基于影子文件的文件加密系統

技術領域

本發明屬于信息安全技術領域,特別是一種基于影子文件的文件
加密系統。

背景技術

基于文件過濾器驅動(FileFilterDriver)的基于橋文件系統
的文件加密系統能在不影響用戶使用習慣的情況下自動實現文件的
加密和解密,是保證數據安全的重要技術手段。但目前的基于文件過
濾器驅動的透明文件加密技術普遍存在如下問題。

目前的文件系統(如Windows文件系統)都是帶緩存的文件系統,
即,當應用程序讀取一個文件的數據時,文件系統先看內存中是否緩
存有應用程序要讀取的內容,若有,則直接將內存中緩存的數據返回,
否則,文件系統從存儲介質中讀取一定數量文件數據(通常是幾個頁
的數據,如通過文件的page讀操作),然后一方面將讀取的文件數據
緩存在內存中,另一方面將應用程序所需數據返回給應用程序;當多
個進程同時打開同一個文件時,它們共享文件緩存數據(在Windows
文件系統中,一個文件只有一個文件控制塊FCB,因此多個進程同時
打開同一個文件時,它們共享一個FCB和文件緩存)。

在基于文件過濾器驅動的透明文件加密系統中,通常將程序進程
分為受信進程和非受信進程,受信進程針對特定的文件類型而設定;
一個受信進程被允許獲得對應文件類型的加密文件的明文數據,而一
個受信進程則不被允許,比如Word程序的程序進程是Word文檔加密
文件的受信進程,能夠獲得Word文檔加密文件中的明文數據,而瀏
覽器進程作為Word文檔的非受信進程則不被允許獲得Word文檔加密
文件中的明文數據。這樣,當一個受信進程讀取一個加密文件時,內
存中緩存的是明文數據,而當一個非受信進程讀取一個加密文件時,
內存中緩存的是密文數據。當一個受信進程和一個非受信進程交替讀
取一個加密文件時,文件加密系統需要不斷地清空內存中緩存的數
據,以確保內存中緩存有正確的數據(明文或密文),這稱為暴力刷
緩存或清緩存問題,暴力刷緩存或清緩存降低了文件操作的效率;進
一步地,當一個受信進程和一個非受信進程同時讀取一個加密文件
時,文件加密系統就很難處理了,這時內存中緩存的數據有可能同時
存在明文和密文數據,這既可能造成敏感數據泄漏,又使得受信進程
無法正常工作。

針對透明文件加密中的數據緩存問題,人們提出一些解決方案,
如雙緩存方案等。雙緩存方案設法使得受信進程和非受信進程讀取不
同的緩存數據,這種方案比較復雜。

基于文件過濾器驅動解決透明文件加密中的暴利刷緩存或清緩
存問題目前尚未有很完善的方案。對此,人們自然想到能否從文件系
統入手,即直接開發一個滿足應用需求的透明加密文件系統(一個自
動實現文件加密、解密的文件系統),基于LayerFSD+多FCB(File
ControlBlock,文件控制塊)的SEFS透明加密文件系統即是這樣的
一個加密文件系統(參見基于LayerFSD技術的SEFS透明加密平臺技
術白皮書)。基于LayerFSD+多FCB的SEFS透明加密文件系統讓每個
進程有自己的FCB和緩存,這樣受信進程的緩存是明文,而非受信進
程的緩存是密文。這樣一個多FCB的加密文件系統存在的問題是:1)
多個進程同時訪問一個文件時,內存利用率和文件訪問效率低;2)
改變了操作系統管理文件數據和文件操作的方式,比如,操作系統認
為同一個文件應只有一個FCB和緩存,而對這種文件數據管理方式的
改變的可能會遇到不可預料的問題;3)同通常的文件系統驅動的開
發存在較大差別。

發明內容

本發明的目的是針對Windows系統,提出一種基于影子文件的文
件加密系統以克服現有技術的不足。

為了實現本發明的目的,本發明所提出的技術方案是:

一種基于影子文件的文件加密系統,具體如下:

所述文件加密系統包括文件加密過濾器驅動;所述文件加密過
濾器驅動是一個插入到計算機文件系統驅動棧中的、通過攔截文件
I/O操作對文件進行加密和解密處理的文件過濾器驅動;

當一個受信進程打開或創建一個文件時,文件加密過濾器驅動
先檢查確定要打開或創建的文件是否是一個加密文件,若是,則將文
件打開或創建操作重定向到一個臨時文件目錄;否則,文件加密過濾
器驅動進一步檢查確定要打開或創建的文件是否位于安全文件目錄
或安全文件盤中,若不是,則對文件打開或創建操作不作進一步處理
(即讓文件打開或創建操作通過),若是,則將文件打開或創建操作
重定向到一個臨時文件目錄;重定向到臨時文件目錄中被打開或創建
的文件稱為重定向前受信進程要打開或創建的文件的影子文件,而重
定向前受信進程要打開或創建的文件稱為影子文件的原文件;針對同
一個原文件,重定向后的影子文件具有相同的文件路徑;重定向后的
影子文件的文件路徑中包含原文件的文件路徑信息,或者通過重定向
后的影子文件的文件路徑可獲得原文件的文件路徑;

若針對影子文件的文件打開或創建操作請求中的文件打開或創
建方式是若文件不存在則報錯(即僅打開已存在的文件),則在針對
影子文件的文件打開或創建操作進行之前,文件加密過濾器驅動通過
影子文件的文件路徑獲得重定向前的原文件的文件路徑,然后檢查影
子文件的原文件是否已存在,若是,則將針對影子文件的文件打開或
創建操作請求中的文件打開或創建方式修改為若文件不存在則創建
(即若文件存在則打開,若文件不存在則創建),然后讓修改后的針
對影子文件的文件打開或創建操作請求通過,否則,返回文件不存在
的錯誤;

在影子文件打開或創建操作完成之后,文件加密過濾器驅動通
過影子文件的文件路徑獲得重定向前的原文件的文件路徑,然后按影
子文件打開或創建的方式打開或創建影子文件的原文件,并將打開或
創建的影子文件同打開或創建的原文件關聯(比如,若影子文件以緩
存方式打開,則將原文件以緩存方式打開;若影子文件以非緩存方式
打開,則將原文件以非緩存方式打開,使得影子文件同原文件的打開
或創建方式一樣);

當一個影子文件被初始打開或創建后,文件加密過濾器驅動通
過文件I/O操作設置影子文件的文件信息,或者直接修改影子文件在
內存中的文件控制塊(FileControlBlock,FCB),設置文件控制塊
中的文件信息,且對以緩存方式打開或創建的影子文件,通過調用緩
存管理函數(如WindowsCacheManager的函數)重新設置文件的數
據緩存大小,使得影子文件與原文件在內存中的文件控制塊和數據緩
存具有一致的文件信息和數據緩存大小,包括一致的文件長度(File
Size)、文件分配長度(FileAllocationSize),以及一致的其他影
響文件I/O操作的文件信息(一致不意味一樣,比如,若加密文件有
附加頭部,則可能會有頭部長度的差別);

當一個非受信進程在安全文件目錄或安全文件盤中打開或創建
一個文件時,或者當文件加密過濾器驅動因將影子文件同影子文件的
原文件關聯而打開或創建影子文件在安全文件目錄或安全文件盤中
的原文件時,若文件加密過濾器驅動檢查發現在安全文件目錄或安全
文件盤中打開或創建的文件是一個非加密文件,則文件加密過濾器驅
動先將打開或創建的文件加密成加密文件(即確保影子文件的原文件
總是加密文件);文件加密過濾器驅動根據特征數據判斷打開或創建
的文件是非加密的文件還是加密的文件(如附加頭部的特征數據);

當一個受信進程或操作系統輔助文件I/O操作的系統進程(如
Windows的System進程)對一個已打開或創建的影子文件進行文件
信息設置操作時,文件加密過濾器驅動一方面針對影子文件的原文件
進行同樣的文件信息設置操作,另一方面將針對影子文件的文件信息
設置操作傳遞下去,或者根據文件信息設置操作要設置的文件信息直
接設置影子文件的文件控制塊中的文件信息,且當設置的文件信息是
文件長度或文件分配長度而影子文件是以緩存方式打開或創建時,通
過調用緩存管理函數重新設置影子文件的數據緩存大小,使得影子文
件與原文件在內存中的文件控制塊和數據緩存具有一致的文件信息
和數據緩存大小,包括一致的文件長度、文件分配長度,以及一致的
其他影響文件I/O操作的文件信息;

當一個受信進程或操作系統輔助文件I/O操作的系統進程對一
個已打開或創建的影子文件進行文件數據讀取操作時,文件加密過濾
器驅動將針對影子文件的數據讀取操作轉化成針對影子文件的原文
件的數據讀取操作,并對從影子文件的原文件讀取的加密數據進行解
密處理;

當一個受信進程或操作系統輔助文件I/O操作的系統進程對一
個已打開或創建的影子文件進行文件數據存寫操作時,文件加密過濾
器驅動一方面將針對影子文件的數據存寫操作轉化成針對影子文件
的原文件的數據存寫操作,并在將數據存寫到影子文件的原文件之
前,先對要存寫的明文數據進行加密處理,另一方面當影子文件是以
緩存方式打開或創建時,通過調用緩存管理函數清空(Purge)影子
文件的原文件在內存中的緩存數據(而針對影子文件的數據存寫操作
不傳遞下去);

當一個受信進程對一個已打開或創建的影子文件進行文件重命
名操作時,文件加密過濾器驅動將針對影子文件的文件重命名操作轉
化成針對影子文件的原文件的文件重命名操作,于此同時,文件加密
過濾器驅動對影子文件也進行重命名操作,或者不進行重命名操作;
若文件加密過濾器驅動對影子文件也進行重命名操作,則重名后的原
文件的文件路徑與重名后的影子文件的文件路徑按照原文件的文件
路徑與影子文件的文件路徑的對應方式保持對應關系;若文件加密過
濾器驅動對影子文件不進行重命名操作,則文件加密過濾器驅動維護
重名后的原文件的文件路徑與影子文件的文件路徑的對應關系;

文件加密過濾器驅動對針對一個已打開或創建的影子文件的緩
存數據刷寫(flush)操作不轉化成針對原文件的緩存數據刷寫操作;

當一個非受信進程打開或創建一個文件時,文件加密過濾器驅
動不進行文件打開或創建操作重定向處理;

當一個非受信進程對臨時文件目錄中的影子文件進行文件I/O
操作時,文件加密過濾器驅動阻止非受信進程對臨時文件目錄中的影
子文件所進行的文件I/O操作;

當一個非受信進程或操作系統輔助文件I/O操作的系統進程對
一個由非受信進程打開或創建的加密文件(原文件)進行文件信息設
置操作時,文件加密過濾器驅動一方面檢查加密文件是否有影子文
件,若有,則通過文件I/O操作設置影子文件的文件信息,或者直接
設置影子文件的文件控制塊中的文件信息,且當設置的文件信息是文
件長度或文件分配長度而影子文件是以緩存方式打開或創建時,通過
調用緩存管理函數重新設置影子文件的數據緩存大小,另一方面將針
對加密文件(原文件)的文件信息設置操作傳遞下去,使得影子文件
與原文件在內存中的文件控制塊和數據緩存具有一致的文件信息和
數據緩存大小,包括一致的文件長度、文件分配長度,以及一致的其
他影響文件I/O操作的文件信息;

當一個非受信進程或操作系統輔助文件I/O操作的系統進程對
一個由非受信進程打開或創建的加密文件(原文件)進行數據存寫操
作時,文件加密過濾器驅動一方面檢查加密文件是否有影子文件,若
有,則通過調用緩存管理函數清空影子文件的緩存數據,另一方面將
針對加密文件(原文件)的數據存寫操作傳遞下去;

當一個非受信進程或操作系統輔助文件I/O操作的系統進程對
一個由非受信進程打開或創建的加密文件(原文件)進行數據存寫時,
若文件加密過濾器驅動發現存寫的數據是非加密的數據,則文件加密
過濾器驅動對要存寫的數據進行加密處理;文件加密過濾器驅動根據
特征數據判斷存寫的數據是非加密的數據還是加密的數據(如附加頭
部的特征數據);

當臨時文件目錄中的一個影子文件不再使用時,所述文件加密
系統刪除不再使用的影子文件;

所述安全文件目錄或安全文件盤是計算機文件系統的一個文件
目錄或文件盤,安全文件目錄或安全文件盤中的文件被所述文件加密
系統自動加密;加密后的文件的名字和類型不變,即加密后的文件保
持原有文件的名字和擴展名;所述臨時文件目錄是一個預先設定的文
件加密系統用于輔助加密文件處理的文件目錄;

所述受信進程是被允許獲取加密文件的明文的程序進程;而不
被允許獲取加密文件的明文的程序進程稱為非受信進程;受信進程針
對文件類型而設定(如Word程序的運行進程是Word文檔的受信進程);
對于任何文件類型而言,操作系統輔助文件I/O操作的系統進程既
不是受信進程,也不是非受信進程;當針對一個由非受信進程打開或
創建的加密文件進行文件I/O操作時,操作系統輔助文件I/O操作的
系統進程不被允許獲取加密文件的明文數據;當針對一個由受信進程
打開或創建的影子文件進行文件I/O操作時,操作系統輔助文件I/O
操作的系統進程被允許獲取影子文件對應的原文件(加密文件)的明
文數據。

若所述文件加密系統采用的文件重定向方案是針對非受信進程
的文件重定向方案,即當一個非受信進程打開或創建一個加密文件
時,或者打開或創建安全文件目錄或安全文件盤中的一個文件時,文
件加密過濾器驅動將文件打開或創建操作重定向到臨時文件目錄,則
相對于針對受信進程的文件重定向方案,除了受信進程讀取或存寫文
件數據時進行數據解密和加密處理不變外,文件加密系統將針對受信
進程和非受信進程的文件I/O操作處理互換,即將針對受信進程的文
件I/O操作處理變為針對非受信進程的文件I/O操作處理,將針對非
受信進程的文件I/O操作處理變為針對受信進程的文件I/O操作處
理。

從以上描述可以看到,基于本發明的技術方案,1)多個進程同
時訪問一個文件時,最多存在兩個文件緩存,內存利用率和文件訪問
效率都得到提高;2)沒有改變操作系統管理文件數據和文件操作的
方式,因為從操作系統的角度,非受信進程訪問的文件(原文件)和
受信進程訪問的文件(影子文件)是兩個不同的文件;3)在受信進
程和非受信進程同時讀取加密文件時,避免了頻繁清空緩存的問題,
只有出現數據存寫操作時才會有清空緩存的情況出現。

附圖說明

圖1為本發明的系統結構圖。

具體實施方式

下面對本發明的具體實施進行描述。圖1是本發明的系統結構
圖。

文件加密過濾器驅動的開發可以采用Windows文件過濾器驅動
(filterdriver)或微過濾器驅動(mini-filterdriver)技術開
發。

利用Windows文件過濾器驅動或微過濾器驅動進行受信進程和
非受信進程判斷已是成熟的技術,在此不多敘述。

對于文件重定向,可以利用Windows文件I/O的reparsepoint
功能(參見WDK中的simrep.c代碼)。

影子實像文件的文件路徑可采用的一種技術方案是:臨時文件目
錄名\原文件的文件路徑,這里,原文件的文件路徑是程序進程要打
開或創建的原文件的完整路徑包括文件所在文件盤(這里,原文件的
完整路徑中的文件盤指示可以采用內核層的表示,也可以采用用戶層
的表示;若采用用戶層的表示,則將盤符后的冒號去掉,如D:轉換
成D)。

影子實像文件的文件路徑可采用的另一種技術方案是:臨時文件
目錄名\以原文件的文件路徑的散列值的Base64編碼的文件名,即影
子文件的文件路徑是直接位于臨時文件目錄下的一個以原文件的文
件路徑的散列值的Base64編碼作為文件名的文件路徑(影子文件的
擴展名是不重要的,可以是原文件的擴展名,可以沒有擴展名,或者
其他擴展名)。

若影子文件的文件路徑是臨時文件目錄中的一個包含原文件的
文件路徑信息的文件路徑,則文件加密過濾器驅動直接從影子文件的
文件路徑中獲得原文件的文件路徑;而對于受信進程打開或創建影子
文件的文件I/O操作,文件加密過濾器驅動攔截文件打開或創建操作
請求,并在影子文件打開或創建操作進行之前,先檢查要打開或創建
的影子文件的文件路徑中的文件目錄在臨時文件目錄中是否存在,若
不存在,則在臨時文件目錄中創建影子文件的文件路徑中的文件目
錄。

若影子文件的文件路徑是臨時文件目錄中的一個包含原文件的
文件路徑信息的文件路徑,且當一個受信進程對一個已打開或創建的
影子文件進行文件重命名操作時,文件加密過濾器驅動對影子文件也
進行重命名操作,則重命名后的影子文件的文件路徑是臨時文件目錄
中的一個包含重命名后的原文件的文件路徑信息的文件路徑。

若影子文件的文件路徑是直接位于臨時文件目錄下的一個以原
文件的文件路徑的散列值的Base64編碼作為文件名的文件路徑,則
文件加密過濾器驅動在內存中維護一個原文件的文件路徑與影子文
件的文件路徑的對應表,稱為文件路徑對應表;文件加密過濾器驅動
在將針對一個原文件的打開或創建操作重定向到臨時文件目錄(中的
一個影子文件)之前,先檢查文件路徑對應表中是否有要重定向的原
文件,若沒有,則在文件路徑對應表中創建一項要重定向的原文件的
文件路徑與重定向后的影子文件的文件路徑的對應項;當影子文件被
刪除時,文件加密過濾器驅動從文件路徑對應表中將被刪除的影子文
件的原文件的文件路徑與被刪除的影子文件的文件路徑的對應項刪
除。

若影子文件的文件路徑是直接位于臨時文件目錄下的一個以原
文件的文件路徑的散列值的Base64編碼作為文件名的文件路徑,且
當一個受信進程對一個已打開或創建的影子文件進行文件重命名操
作時,文件加密過濾器驅動不對影子文件進行重命名操作,則文件加
密過濾器驅動通過原文件的文件路徑與影子文件的文件路徑的對應
表維護重名后的原文件的文件路徑與影子文件的文件路徑的對應關
系。

文件加密過濾器驅動將打開或創建的影子文件同打開或創建的
原文件關聯的一種方案如下:

文件加密過濾器驅動按影子文件打開或創建的方式打開或創建
影子文件的原文件,然后將文件系統返回的原文件的文件對象(File
Object)指針放入到影子文件的文件對象中創建的一個自定義的用戶
上下文中(CustomUserContext),從而將打開或創建的影子文件同
打開或創建的影子文件的原文件關聯。

文件加密過濾器驅動判斷一個影子文件是否是被初始打開或創
建的一種方案如下:

文件加密過濾器驅動檢查被打開或創建的影子文件在內存中的
文件控制塊(FileControlBlock,FCB)中是否已有一個自定義的
用戶上下文,若沒有,則影子文件是被初始打開或創建的,文件加密
過濾器驅動在影子文件的文件控制塊中創建一個自定義的用戶上下
文,若有,則影子文件不是被初始打開或創建的(即文件控制塊中是
否存在自定義的用戶上下文是影子文件是否是被初始打開或創建的
標志)。

基于前面所述將打開或創建的影子文件同打開或創建的原文件
關聯的方案,當一個受信進程或操作系統輔助文件I/O操作的系統進
程對一個已打開或創建的影子文件進行文件I/O操作時,文件加密過
濾器驅動從影子文件的文件對象中的自定義的用戶上下文中獲得影
子文件的原文件的文件對象指針,然后通過原文件的文件對象指針對
原文件進行文件I/O操作及數據緩存操作;當一個受信進程對一個已
打開或創建的影子文件進行文件關閉操作時,文件加密過濾器驅動從
影子文件的文件對象中的自定義的用戶上下文中獲得影子文件的原
文件的文件對象指針,然后通過原文件的文件對象指針將原文件關
閉,然后將關閉后的原文件的文件對象指針從自定義的用戶上下文中
刪除。

對文件數據的加密可以采用流加密或塊加密。為了區分加密文件
和非加密文件以及存放加密解密有關信息,可以給加密文件附加一個
特別的、包含特征信息的頭部(加密頭部)。

若加密文件包含一個附加的加密頭部,則當一個程序進程打開或
創建一個文件時,文件加密過濾器驅動通過檢查要打開或創建文件是
否包含加密頭部特征數據確定要打開或創建文件是加密文件還是非
加密文件;當一個非受信進程和操作系統輔助文件I/O操作的系統進
程對一個加密文件進行數據存寫操作時,文件加密過濾器驅動通過檢
查要存寫的文件數據是否包含加密頭部特征數據判斷要存寫的文件
數據是明文數據還是密文數據。

若加密文件包含一個附加的加密頭部,文件加密系統采用文件重
定向方案是針對受信進程進行文件重定向,即當一個受信進程打開或
創建一個加密文件時,或者打開或創建安全文件目錄或安全文件盤中
的中文件時,文件加密過濾器驅動將文件打開或創建操作重定向到臨
時文件目錄的方案,則具體實施時可設定影子文件的文件長度和文件
分配長度是原文件的文件長度和文件分配長度,或者是原文件的文件
長度和文件分配長度減去附加頭部長度后的長度。

當一個受信進程或操作系統輔助文件I/O操作的系統進程對一
個已打開或創建的影子文件進行文件數據讀取或存寫操作時,所述文
件加密系統將針對影子文件的數據讀取或數據存寫操作轉化成針對
影子文件的原文件的數據讀取或數據存寫操作的一種方案如下:

當一個受信進程或操作系統輔助文件I/O操作的系統進程對一
個以緩存方式打開或創建的影子文件進行非Page數據讀取或非Page
數據存寫操作時,文件加密過濾器驅動不進行處理;

當一個受信進程或操作系統輔助文件I/O操作的系統進程對一
個以緩存方式打開或創建的影子文件進行Page數據讀取或Page數據
存寫操作時,文件加密過濾器驅動將針對影子文件的Page數據讀取
或Page數據存寫操作轉化成針對影子文件的原文件的Page數據讀取
或Page存寫操作;在進行Page數據存寫操作前或者在Page數據存
寫操作完成后,文件加密過濾器驅動通過調用緩存管理函數清空
(Purge)影子文件的原文件在內存中的緩存數據;

當一個受信進程或操作系統輔助文件I/O操作的系統進程對一
個以非緩存方式打開或創建的影子文件進行非Page數據讀取或非
Page數據存寫操作時,文件加密過濾器驅動將針對影子文件的非
Page數據讀取或非Page數據存寫操作轉化成針對影子文件的原文件
的非Page數據讀取或非Page數據存寫操作。

通過前面所述的在影子文件被初始打開或創建時在影子文件的
文件控制塊中創建一個自定義的用戶上下文的方案,文件加密系統刪
除臨時文件目錄中不再使用的影子文件的一種方法如下:

當一個影子文件的文件控制塊中的自定義的用戶上下文由操作
系統調用所述文件加密系統提供的回調函數進行釋放時,文件加密系
統提供的回調函數通知一個文件加密輔助進程刪除影子文件;

文件加密輔助進程接收到回調函數發出的刪除影子文件的通知
后,刪除影子文件以及影子文件的文件路徑中除臨時文件目錄以外的
其他文件目錄;

這里的文件加密輔助進程是一個運行在用戶空間(用戶層)的輔
助文件加密系統進行文件加密和解密處理的程序進程,即文件加密輔
助程序的運行進程;文件加密過濾器驅動將在內核層不便進行的操作
處理交由文件加密輔助進程操作處理;文件加密輔助程序可采用任何
桌面程序開發語言開發,如C/C++、C#等;文件加密過濾器驅動與文
件加密輔助進程之間的數據交互可采用Windows內核層(內核空間)
與用戶層(用戶空間)之間的通信機制實施。

其他未說明的具體技術實施,對于相關領域的技術人員而言是眾
所周知,不言自明的。

關 鍵 詞:
一種 基于 影子 文件 加密 系統
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種基于影子文件的文件加密系統.pdf
鏈接地址:http://www.rgyfuv.icu/p-6345656.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图