1.一種基于FUSE的雙向文件加密系統,其特征是:所述雙向文件加密系統包括:
用戶空間文件系統:一個采用用戶空間文件系統技術開發的、對文件進行加密和解密
處理的系統;所述用戶空間文件系統在用戶計算機系統中對應一個文件盤或文件目錄,即
表現為一個文件盤或文件目錄;所述用戶空間文件系統對應的文件盤或文件目錄稱為虛擬
文件盤或虛擬文件目錄;所述虛擬文件盤或虛擬文件目錄中的文件稱為虛擬文件;所述用
戶空間文件系統又包括FUSE文件驅動、FUSE用戶空間程序,其中,FUSE文件驅動是所述用戶
空間文件系統的驅動,FUSE用戶空間程序是用戶空間文件系統中對文件I/O操作請求進行
處理的用戶空間程序;FUSE用戶空間程序的程序進程稱為FUSE用戶空間進程;當一個程序
進程請求以緩存I/O方式打開或創建虛擬文件盤或虛擬文件目錄中的一個虛擬文件時,所
述用戶空間文件系統的FUSE文件驅動不為打開或創建的虛擬文件在內存中創建數據緩存,
即:即便程序進程請求以緩存I/O方式打開或創建虛擬文件,FUSE文件驅動也不為打開或創
建的虛擬文件創建數據緩存;對于程序進程針對被打開或創建的虛擬文件進行的所有文件
I/O操作,所述用戶空間文件系統的FUSE文件驅動按非緩存I/O的方式進行響應處理,即:
FUSE文件驅動將針對虛擬文件的所有文件I/O操作請求,包括數據讀取和存寫、文件信息設
置和查詢,都提交到FUSE用戶空間進程進行處理;
文件重定向過濾器驅動:一個攔截文件I/O操作請求并進行文件I/O操作重定向處理的
文件系統過濾器驅動類型的驅動;
所述雙向文件加密系統所在用戶計算機中的文件目錄包括加密文件目錄和非加密文
件目錄,存儲在加密文件目錄中的文件被所述雙向文件加密系統自動加密成為加密文件,
而存儲在非加密文件目錄中的文件是明文文件或者加密文件,存儲在非加密文件目錄中的
明文文件不被所述雙向文件加密系統自動加密成為加密文件;
對所述雙向文件加密系統所在用戶計算機中的文件包括明文文件和密文文件進行文
件I/O操作的程序進程包括受信進程、非受信進程、中性進程以及操作系統輔助文件I/O操
作的系統進程;所述受信進程是中性進程以及操作系統輔助文件I/O操作的系統進程以外
的被允許獲取文件的明文數據的程序進程;所述非受信進程是中性進程以及操作系統輔助
文件I/O操作的系統進程以外的不被允許讀取文件的明文數據的程序進程;受信進程和非
受信進程針對文件類型而設定;所述中性進程是一個在讀取文件的數據時始終讀取的是文
件在磁盤上的原始數據的程序進程;操作系統輔助文件I/O操作的系統進程輔助一個程序
進程所進行的文件I/O操作是被輔助的程序進程所進行的文件I/O操作的一部分;在處理一
個程序進程針對一個文件的文件I/O操作請求的過程中,FUSE文件驅動將進行文件I/O操作
的程序進程的進程ID或名稱連同文件I/O操作請求一起傳遞到FUSE用戶空間進程;若傳遞
的是進程ID,則FUSE用戶空間進程通過進程ID得到程序進程的名稱;之后FUSE用戶空間進
程通過程序進程的名稱確定進行文件I/O操作的程序進程是受信進程,非受信進程,中性進
程,還是操作系統輔助文件I/O操作的系統進程;
所述文件重定向過濾器驅動對一個程序進程打開或創建一個文件的I/O操作請求按如
下方式進行重定向處理:
當一個程序進程請求打開或創建加密文件目錄中的一個文件包括加密文件和明文文
件時,或請求打開或創建非加密文件目錄中的一個加密文件時,所述文件重定向過濾器驅
動將文件打開或創建請求重定向到用戶空間文件系統所對應的虛擬文件盤或虛擬文件目
錄中的一個虛擬文件;
當一個程序進程請求打開或創建非加密文件目錄中的一個明文文件時,所述文件重定
向過濾器驅動按如下方式之一進行處理:
方式一:
當一個受信進程請求打開或創建非加密文件目錄中的一個明文文件時,所述文件重定
向過濾器驅動不對文件打開或創建請求進行重定向;
當一個非受信進程或中性進程請求打開或創建非加密文件目錄中的一個明文文件時,
所述文件重定向過濾器驅動將文件打開或創建請求重定向到用戶空間文件系統所對應的
虛擬文件盤或虛擬文件目錄中的一個虛擬文件;
方式二:
當一個受信進程或中性進程請求打開或創建非加密文件目錄中的一個明文文件時,所
述文件重定向過濾器驅動不對文件打開或創建請求進行重定向,而當一個非受信進程請求
打開或創建非加密文件目錄中的一個明文文件時,所述文件重定向過濾器驅動將文件打開
或創建請求重定向到用戶空間文件系統所對應的虛擬文件盤或虛擬文件目錄中的一個虛
擬文件;
當一個程序進程請求打開或創建加密文件目錄或非加密文件目錄中的一個不存在的
文件時,被打開或創建的文件被當作明文文件;
所述文件重定向過濾器驅動對所述用戶空間文件系統的FUSE用戶空間進程針對加密
文件目錄和非加密文件目錄中的文件包括加密文件和明文文件所進行的文件打開或創建
操作請求不進行重定向處理,對所述用戶空間文件系統的FUSE用戶空間進程針對加密文件
目錄和非加密文件目錄中的文件包括加密文件和明文文件所進行的文件I/O操作不干預;
加密文件目錄和非加密文件目錄中的重定向前的文件稱為重定向后的虛擬文件的對
應原文件;當所述文件重定向過濾器驅動將一個程序進程針對加密文件目錄或非加密文件
目錄中的一個文件所進行的文件打開或創建操作重定向到用戶空間文件系統對應的虛擬
文件盤或虛擬文件目錄中的一個虛擬文件時,所述文件重定向過濾器驅動將重定向前的原
文件的完整文件路徑,包括文件所在文件盤的信息,編碼在重定向后的虛擬文件的文件路
徑中,即重定向后的虛擬文件的文件路徑中包含有重定向前程序進程要打開或創建的原文
件的完整文件路徑信息,重定向前的原文件同重定向后的虛擬文件之間存在一一對應的關
系,而所述用戶空間文件系統的FUSE用戶空間進程從程序進程要打開或創建的虛擬文件的
文件路徑中獲得虛擬文件的對應原文件的完整文件路徑;
當接收到一個程序進程針對虛擬文件盤或虛擬文件目錄中的一個虛擬文件進行文件
打開或創建的操作請求后,所述用戶空間文件系統的FUSE用戶空間進程從程序進程請求打
開或創建的虛擬文件的文件路徑中獲得重定向前的原文件的完整文件路徑,然后將程序進
程針對虛擬文件的打開或創建操作轉化為針對虛擬文件對應的重定向前的原文件的打開
或創建操作,之后將程序進程針對虛擬文件的文件I/O操作轉化為針對重定向前的原文件
的文件I/O操作;特別地:
在將程序進程針對虛擬文件的打開或創建操作轉化為針對虛擬文件對應的重定向前
的原文件的打開或創建操作過程中,若所述FUSE用戶空間進程檢查發現程序進程要打開或
創建的虛擬文件的對應原文件的是加密文件目錄中的一個明文文件,則FUSE用戶空間進程
將虛擬文件的對應原文件加密成為一個加密文件;
若原文件是位于加密文件目錄中的文件,則在將程序進程針對虛擬文件的文件I/O操
作轉化為針對重定向前的原文件的文件I/O操作過程中,FUSE用戶空間進程按正向加密方
式對文件I/O操作進行處理;
若原文件是位于非加密文件目錄中的加密文件,則在將程序進程針對虛擬文件的文件
I/O操作轉化為針對重定向前的原文件的文件I/O操作過程中,FUSE用戶空間進程按正向加
密方式或可變正向加密方式對文件I/O操作進行處理;
若原文件是位于非加密文件目錄中的明文文件,則在將程序進程針對虛擬文件的文件
I/O操作轉化為針對重定向前的原文件的文件I/O操作過程中,FUSE用戶空間進程按反向加
密方式或可變反向加密方式對文件I/O操作進行處理;
所述正向加密方式是:當一個程序進程通過虛擬文件及用戶空間文件系統對一個加密
文件進行數據讀取操作時,若程序進程是受信進程,則程序進程讀取的是明文數據,若程序
進程是非受信進程或中性進程,則程序進程讀取的是密文數據;而當一個程序進程通過虛
擬文件及用戶空間文件系統對一個加密文件進行數據存寫操作時,無論程序進程要存寫的
是明文數據還是密文數據,最終存寫到文件的數據是加密數據,即加密文件在磁盤上始終
保持為加密文件;
所述可變正向加密方式是:當一個程序進程通過虛擬文件及用戶空間文件系統對一個
加密文件進行數據讀取操作時,若程序進程是受信進程,則程序進程讀取的是明文數據,若
程序進程是非受信進程或中性進程,則程序進程讀取的是密文數據;而當一個程序進程通
過虛擬文件及用戶空間文件系統對一個加密文件進行數據存寫操作時,程序進程要存寫的
數據被直接存寫到文件,即若程序進程要存寫的是明文數據,則明文數據被存寫到磁盤上
的文件,磁盤上的加密文件變成明文文件,若程序進程要存寫的是密文數據,則密文數據被
存寫到磁盤上的文件,磁盤上的文件仍然保持為加密文件;
所述反向加密方式是:當一個程序進程通過虛擬文件及用戶空間文件系統對一個明文
文件進行數據讀取操作時,若程序進程是受信進程或中性進程,則程序進程讀取的是明文
數據,若程序進程是非受信進程,則程序進程讀取的是密文數據;而當一個程序進程通過虛
擬文件及用戶空間文件系統對一個明文文件進行數據存寫操作時,無論程序進程要存寫的
是明文數據還是密文數據,最終存寫到文件的數據是明文數據,即明文文件在磁盤上始終
保持為明文文件;
所述可變反向加密方式是:當一個程序進程通過虛擬文件及用戶空間文件系統對一個
明文文件進行數據讀取操作時,若程序進程是受信進程或中性進程,則程序進程讀取的是
明文數據,若程序進程是非受信進程,則程序進程讀取的是密文數據;而當一個程序進程通
過虛擬文件及用戶空間文件系統對一個明文文件進行數據存寫操作時,若程序進程要存寫
的是明文數據,則明文數據被直接存寫到文件,即磁盤上的文件仍然保持為明文文件,若程
序進程要存寫的是密文數據,則FUSE用戶空間進程進一步根據策略確定最終是存寫明文數
據還是密文數據,若確定最終是存寫明文數據,則FUSE用戶空間進程將密文數據解密后再
存寫到文件,即磁盤上的文件保持為明文文件,若確定最終是存寫密文數據,則FUSE用戶空
間進程直接將密文數據存寫到文件,即磁盤上的明文文件變成加密文件;確定最終是存寫
明文數據還是密文數據的策略來自配置信息或包含在要存寫的密文數據中或編碼在FUSE
用戶空間程序的代碼中。
2.根據權利要求1所述的基于FUSE的雙向文件加密系統,其特征是:
所述用戶空間文件系統的FUSE用戶空間進程將針對虛擬文件的打開或創建轉操作化
為針對虛擬文件對應的重定向前的原文件的打開或創建操作、并在之后將針對虛擬文件的
文件I/O操作轉化為針對重定向前的原文件的文件I/O操作的一種方案如下:
對于針對同一個虛擬文件的多次打開或創建操作,FUSE用戶空間進程對虛擬文件在加
密文件目錄或非加密文件中的對應原文件在同一時刻最多打開或創建兩次,其中一次以緩
存I/O方式打開,一次以非緩存I/O方式;FUSE用戶空間進程在內存中為每個被打開或創建
的虛擬文件創建一個用戶空間文件對象;所述用戶空間文件對象是FUSE用戶空間進程在用
戶空間維護的針對被打開或創建的虛擬文件的一種數據結構;
當接收到以緩存I/O方式打開或創建一個虛擬文件的操作請求后,FUSE用戶空間進程
檢查虛擬文件對應的原文件是否已被FUSE用戶空間進程自己以緩存I/O方式打開或創建,
若是,則不再以緩存I/O方式打開或創建原文件,直接將打開或創建的虛擬文件的用戶空間
文件對象與以緩存I/O方式打開或創建的原文件的文件句柄關聯;否則,FUSE用戶空間進程
先以緩存I/O方式打開或創建虛擬文件的對應原文件,然后將打開或創建的虛擬文件的用
戶空間文件對象與以緩存I/O方式打開或創建的原文件的文件句柄關聯;
當接收到以非緩存I/O方式打開或創建一個虛擬文件的操作請求后,FUSE用戶空間進
程檢查虛擬文件對應的原文件是否已被FUSE用戶空間進程自己以非緩存I/O方式打開或創
建,若是,則不再以非緩存I/O方式打開或創建原文件,直接將打開或創建的虛擬文件的用
戶空間文件對象與以非緩存I/O方式打開或創建的原文件的文件句柄關聯;否則,FUSE用戶
空間進程先以非緩存I/O方式打開或創建虛擬文件的對應原文件,然后將打開或創建的虛
擬文件的用戶空間文件對象與以非緩存I/O方式打開或創建的原文件的文件句柄關聯;
若虛擬文件的對應原文件在加密文件目錄中,則:所述FUSE用戶空間進程打開或創建
虛擬文件在加密文件目錄中的對應原文件后,若檢查發現被打開或創建的原文件是明文文
件,則將被打開或創建的原文件加密成為加密文件;
當接收到一個程序進程針對一個已打開或創建的虛擬文件的、非進行文件關閉的文件
I/O操作請求后,所述FUSE用戶空間進程通過已打開或創建的虛擬文件的用戶空間文件對
象所關聯的原文件的文件句柄,將針對虛擬文件的文件I/O操作轉化針對虛擬文件的對應
原文件的文件I/O操作,并在文件I/O操作處理過程中按正向或反向加密方式包括可變正向
或可變反向加密方式對文件I/O操作進行處理;若程序進程針對一個已打開或創建的虛擬
文件的文件I/O操作請求是刪除文件,則僅在虛擬文件對應的原文件僅對應有一個被打開
或創建的虛擬文件時,所述FUSE用戶空間進程才執行文件刪除操作;
當接收到一個程序進程關閉一個以緩存或非緩存I/O方式打開或創建的虛擬文件的請
求后,所述FUSE用戶空間進程解除要關閉的虛擬文件的用戶空間文件對象與以緩存或非緩
存I/O方式打開或創建的原文件的文件句柄的關聯;
當完成關閉一個以緩存或非緩存I/O方式打開或創建的虛擬文件的操作請求的處理
后,若所述FUSE用戶空間進程檢查發現虛擬文件對應的以緩存或非緩存I/O方式打開或創
建的原文件的文件句柄已沒有已打開或創建的虛擬文件的用戶空間文件對象與之關聯,則
所述FUSE用戶空間進程關閉虛擬文件對應的以緩存或非緩存I/O方式打開或創建的、已沒
有已打開或創建的虛擬文件的用戶空間文件對象與之關聯的原文件;或者在進行定時掃描
時,若所述FUSE用戶空間進程檢查發現一個以緩存或非緩存I/O方式打開或創建的原文件
的文件句柄已沒有已打開或創建的虛擬文件的用戶空間文件對象與之關聯,則所述FUSE用
戶空間進程關閉已沒有已打開或創建的虛擬文件的用戶空間文件對象與之關聯的原文件。
3.根據權利要求1所述的基于FUSE的雙向文件加密系統,其特征是:
若原文件是位于加密文件目錄中的文件或者是位于非加密文件目錄中的加密文件,則
在將程序進程針對虛擬文件的文件I/O操作轉化為針對重定向前的原文件的文件I/O操作
過程中,FUSE用戶空間進程按正向加密方式對文件I/O操作進行處理的方案具體如下:
若程序進程是針對一個被受信進程打開或創建的虛擬文件進行文件數據讀取操作,則
所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的加密數據解密成明文后返回;
若程序進程是針對一個被非受信進程或中性進程打開或創建的虛擬文件進行文件數
據讀取操作,則所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的加密數據返回;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是明文數據,則所述FUSE用戶空間進程將程序進程要存寫的明文數據加密成密文
后再存寫到虛擬文件對應的原文件;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是密文數據,則所述FUSE用戶空間進程將程序進程要存寫的密文數據直接存寫到
虛擬文件對應的原文件。
4.根據權利要求1所述的基于FUSE的雙向文件加密系統,其特征是:
若原文件是位于非加密文件目錄中的加密文件,則在將程序進程針對虛擬文件的文件
I/O操作轉化為針對重定向前的原文件的文件I/O操作過程中,FUSE用戶空間進程按可變正
向加密方式對文件I/O操作進行處理的方案具體如下:
若程序進程是針對一個被受信進程打開或創建的虛擬文件進行文件數據讀取操作,則
所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的加密數據解密成明文后返回;
若程序進程是針對一個被非受信進程或中性進程打開或創建的虛擬文件進行文件數
據讀取操作,則所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的加密數據返回;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是密文數據,則所述FUSE用戶空間進程將程序進程要存寫的密文數據直接存寫到
虛擬文件對應的原文件;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是明文數據,則所述FUSE用戶空間進程將程序進程要存寫的明文數據直接存寫到
虛擬文件對應的原文件,使之成為明文原文件,之后FUSE用戶空間進程按反向加密方式或
可變反向加密方式對針對明文原文件的文件I/O操作進行處理。
5.根據權利要求1所述的基于FUSE的雙向文件加密系統,其特征是:
若原文件位于是位于非加密文件目錄中的明文文件,則在將程序進程針對虛擬文件的
文件I/O操作轉化為針對重定向前的原文件的文件I/O操作過程中,FUSE用戶空間進程按反
向加密方式對文件I/O操作進行處理的方案具體如下:
若程序進程是針對一個被受信進程或中性進程打開或創建的虛擬文件進行文件數據
讀取操作,則所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的明文數據返回;
若程序進程是針對一個被非受信進程打開或創建的虛擬文件進行文件數據讀取操作,
則所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的明文數據加密成密文后返回;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是明文數據,則所述FUSE用戶空間進程將程序進程要存寫的明文數據直接存寫到
虛擬文件對應的原文件;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是密文數據,則所述FUSE用戶空間進程將程序進程要存寫的密文數據解密成明文
后再存寫到虛擬文件對應的原文件。
6.根據權利要求1所述的基于FUSE的雙向文件加密系統,其特征是:
若原文件是位于非加密文件目錄中的明文文件,則在將程序進程針對虛擬文件的文件
I/O操作轉化為針對重定向前的原文件的文件I/O操作過程中,FUSE用戶空間進程按可變反
向加密方式對文件I/O操作進行處理的方案具體如下:
若程序進程是針對一個被受信進程或中性進程打開或創建的虛擬文件進行文件數據
讀取操作,則所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的明文數據返回;
若程序進程是針對一個被非受信進程打開或創建的虛擬文件進行文件數據讀取操作,
則所述FUSE用戶空間進程將從虛擬文件對應的原文件讀取的明文數據加密成密文后返回;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是明文數據,則所述FUSE用戶空間進程將程序進程要存寫的明文數據直接存寫到
虛擬文件對應的原文件;
若程序進程是針對一個被打開或創建的虛擬文件進行文件數據存寫操作且程序進程
要存寫的是密文數據,則所述FUSE用戶空間進程根據策略確定要存寫明文數據還是密文數
據,若確定是要存寫明文數據,則所述FUSE用戶空間進程將程序進程要存寫的密文數據解
密成明文后再存寫到虛擬文件對應的原文件,若確定是要存寫密文數據,所述FUSE用戶空
間進程將程序進程要存寫的密文數據直接存寫到虛擬文件對應的原文件,使之成為加密原
文件,之后FUSE用戶空間進程按正向加密方式或可變正向加密方式對針對加密原文件的文
件I/O操作進行處理。
7.根據權利要求3所述的基于FUSE的雙向文件加密系統,其特征是:
對應于所述正向加密處理方式,相應的數據緩存方案如下:
所述FUSE用戶空間進程為每個被打開或創建的加密文件目錄中的原文件或被打開或
創建的非加密文件目錄中的加密原文件在用戶空間維護一個明文數據緩存,且:
當一個程序進程向一個被受信進程打開或創建的虛擬文件讀取數據而虛擬文件對應
的原文件是加密文件時,若明文數據緩存中已有程序進程要讀取的數據,則FUSE用戶空間
進程將明文數據緩存中程序進程要讀取的數據返回;否則,FUSE用戶空間進程從虛擬文件
對應的原文件讀取數據,然后將從原文件讀取的加密數據解密后緩存在明文數據緩存中,
并向程序進程返回明文數據;
當一個程序進程向一個被非受信進程或中性進程打開或創建的虛擬文件讀取數據而
虛擬文件對應的原文件是加密文件時,若程序進程要讀取的數據存在于延時存寫的明文數
據緩存中,則FUSE用戶空間進程將延時存寫的明文數據緩存中程序進程要讀取的數據加密
后返回;否則,FUSE用戶空間進程直接從虛擬文件對應的原文件讀取數據并將讀取的加密
數據返回;
當一個程序進程向一個被受信進程或非受信進程或中性進程打開或創建的虛擬文件
存寫明文數據而虛擬文件對應的原文件是加密文件時,FUSE用戶空間進程先將要存寫的明
文數據存寫到明文數據緩存中,然后延時將明文數據緩存中的明文數據加密后存寫到虛擬
文件對應的原文件,或者,FUSE用戶空間進程立即將明文數據加密后存寫到虛擬文件對應
的原文件;
當一個程序進程向一個被非受信進程或中性進程打開或創建的虛擬文件存寫密文數
據而虛擬文件對應的原文件是加密文件時,FUSE用戶空間進程直接將密文數據存寫到虛擬
文件對應的原文件,進一步地,若原文件在FUSE用戶空間進程中有明文數據緩存,則在完成
數據存寫后FUSE用戶空間進程清空原文件在FUSE用戶空間進程中的明文數據緩存。
8.根據權利要求4所述的基于FUSE的雙向文件加密系統,其特征是:
對應于所述可變正向加密處理方式,相應的數據緩存方案如下:
所述FUSE用戶空間進程對每個被打開或創建的非加密文件目錄中的加密原文件在用
戶空間維護一個明文數據緩存,且:
當一個程序進程向一個被受信進程打開或創建的虛擬文件讀取數據而虛擬文件對應
的原文件是加密文件時,若明文數據緩存中已有程序進程要讀取的數據,則FUSE用戶空間
進程將明文數據緩存中程序進程要讀取的數據返回;否則,FUSE用戶空間進程從虛擬文件
對應的原文件讀取數據,然后將從原文件讀取的加密數據解密后緩存在明文數據緩存中,
并向程序進程返回明文數據;
當一個程序進程向一個被非受信進程或中性進程打開或創建的虛擬文件讀取數據而
虛擬文件對應的原文件是加密文件時,若程序進程要讀取的數據存在于延時存寫的明文數
據緩存中,則FUSE用戶空間進程將延時存寫的明文數據緩存中程序進程要讀取的數據加密
后返回;否則,FUSE用戶空間進程直接從虛擬文件對應的原文件讀取數據并將讀取的加密
數據返回;
當一個程序進程向一個被受信進程或非受信進程或中性進程打開或創建的虛擬文件
存寫明文數據而虛擬文件對應的原文件是位于非加密文件目錄中的加密文件時,FUSE用戶
空間進程先將要存寫的明文數據直接存寫到原文件,使之成為明文原文件,然后清空原文
件在FUSE用戶空間進程中的明文數據緩存,之后按反向加密處理方式或可變反向加密處理
方式對針對明文原文件的文件I/O操作進行緩存處理;
當一個程序進程向一個被非受信進程或中性進程打開或創建的虛擬文件存寫密文數
據而虛擬文件對應的原文件是加密文件時,FUSE用戶空間進程直接將密文數據存寫到原文
件,進一步地,若原文件在FUSE用戶空間進程中有明文數據緩存,則在完成數據存寫后FUSE
用戶空間進程清空原文件在FUSE用戶空間進程中的明文數據緩存。
9.根據權利要求5所述的基于FUSE的雙向文件加密系統,其特征是:
對應于所述反向加密處理方式,相應的數據緩存方案如下:
所述FUSE用戶空間進程對每個被打開或創建的非加密文件目錄中的明文原文件在用
戶空間維護一個密文數據緩存;且:
當一個程序進程向一個被非受信進程打開或創建的虛擬文件讀取數據而虛擬文件對
應的原文件是非加密文件目錄中的明文原文件時,若密文數據緩存中已有程序進程要讀取
的數據,則FUSE用戶空間進程將密文數據緩存中程序進程要讀取的數據返回;否則,FUSE用
戶空間進程從虛擬文件對應的原文件讀取數據,然后將從原文件讀取的明文數據加密后存
寫到密文數據緩存中,并向程序進程返回密文數據;
當一個程序進程向一個被受信進程或中性進程打開或創建的虛擬文件讀取數據而虛
擬文件對應的原文件是非加密文件目錄中的明文文件時,若程序進程要讀取的數據存在于
延時存寫的密文數據緩存中,則FUSE用戶空間進程將延時存寫的密文數據緩存中程序進程
要讀取的數據解密后返回;否則,FUSE用戶空間進程直接從原文件讀取數據并將讀取的明
文數據返回;
當一個程序進程向一個被受信進程或非受信進程或中性進程打開或創建的虛擬文件
存寫明文數據而虛擬文件對應的原文件是非加密文件目錄中的明文文件時,FUSE用戶空間
進程直接將明文數據存寫到原文件,進一步地,若原文件在FUSE用戶空間進程中有密文數
據緩存,則FUSE用戶空間進程在完成數據存寫后清空原文件在FUSE用戶空間進程中的密文
數據緩存;
當一個程序進程向一個被非受信進程或中性進程打開或創建的虛擬文件存寫密文數
據而虛擬文件對應的原文件是非加密文件目錄中的明文文件時,FUSE用戶空間進程先將要
存寫的密文數據存寫到密文數據緩存中,然后延時將密文數據緩存中的密文數據解密后存
寫到虛擬文件對應的原文件,或者,FUSE用戶空間進程立即將密文數據解密后的明文數據
存寫到虛擬文件對應的原文件。
10.根據權利要求6所述的基于FUSE的雙向文件加密系統,其特征是:
對應于所述可變反向加密處理方式,相應的數據緩存方案如下:
所述FUSE用戶空間進程對每個被打開或創建的非加密文件目錄中的明文原文件在用
戶空間維護一個密文數據緩存;且:
當一個程序進程向一個被非受信進程打開或創建的虛擬文件讀取數據而虛擬文件對
應的原文件是非加密文件目錄中的明文原文件時,若密文數據緩存中已有程序進程要讀取
的數據,則FUSE用戶空間進程將密文數據緩存中程序進程要讀取的數據返回;否則,FUSE用
戶空間進程從虛擬文件對應的原文件讀取數據,然后將從原文件讀取的明文數據加密后存
寫到密文數據緩存中,并向程序進程返回密文數據;
當一個程序進程向一個被受信進程或中性進程打開或創建的虛擬文件讀取數據而虛
擬文件對應的原文件是非加密文件目錄中的明文文件時,若程序進程要讀取的數據存在于
延時存寫的密文數據緩存中,則FUSE用戶空間進程將延時存寫的密文數據緩存中程序進程
要讀取的數據解密后返回;否則,FUSE用戶空間進程直接從原文件讀取數據并將讀取的明
文數據返回;
當一個程序進程向一個被受信進程或非受信進程或中性進程打開或創建的虛擬文件
存寫明文數據而虛擬文件對應的原文件是非加密文件目錄中的明文文件時,FUSE用戶空間
進程直接將明文數據存寫到原文件,進一步地,若原文件在FUSE用戶空間進程中有密文數
據緩存,則FUSE用戶空間進程在完成數據存寫后清空原文件在FUSE用戶空間進程中的密文
數據緩存;
當一個程序進程向一個被非受信進程或中性進程打開或創建的虛擬文件存寫密文數
據而虛擬文件對應的原文件是非加密文件目錄中的明文文件時,若根據策略確定要將明文
數據存寫到文件,則FUSE用戶空間進程先將要存寫的密文數據存寫到密文數據緩存中,然
后延時將密文數據緩存中的密文數據解密后存寫到虛擬文件對應的原文件,或者,FUSE用
戶空間進程立即將密文數據解密后的明文數據存寫到虛擬文件對應的原文件;若根據策略
確定要將密文數據存寫到文件,則FUSE用戶空間進程將程序進程要存寫的密文數據直接存
寫到虛擬文件對應的原文件,進一步地,若FUSE用戶空間進程為原文件在FUSE用戶空間中
維護有密文數據緩存,則FUSE用戶空間進程在完成數據存寫后清空原文件在FUSE用戶空間
進程中的密文數據緩存,之后FUSE用戶空間進程按正向加密方式或可變正向加密方式對針
對密文原文件的文件I/O操作進行緩存處理。
展開