一種基于多像文件的加密文件系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息安全技術(shù)領(lǐng)域,特別是一種基于多像文件的加密文件系統(tǒng)。
【背景技術(shù)】
[0002]透明文件加密系統(tǒng)能在不改變用戶使用習(xí)慣的情況下自動(dòng)實(shí)現(xiàn)文件的加密和解密,是保證數(shù)據(jù)安全的重要技術(shù)手段。在透明文件加密中,對(duì)加密文件進(jìn)行文件I/O操作的程序進(jìn)程分為受信進(jìn)程和非受信進(jìn)程,受信進(jìn)程被允許獲取加密文件的明文數(shù)據(jù),而非受信進(jìn)程則不被允許。在目前的計(jì)算機(jī)文件系統(tǒng)中,為了提高文件I/O操作的效率,文件I/O操作大多是采用緩存方式,即文件系統(tǒng)在計(jì)算機(jī)內(nèi)存中緩存程序進(jìn)程讀取和/或存寫的數(shù)據(jù),且不同程序進(jìn)程對(duì)同一個(gè)文件進(jìn)行文件I/o操作時(shí)它們?cè)趦?nèi)存中的數(shù)據(jù)緩存是共享的。帶緩存的文件I/o給透明文件加密帶來(lái)了額外的問題:當(dāng)受信進(jìn)程和非受信進(jìn)程同時(shí)對(duì)一個(gè)加密文件進(jìn)行文件I/o操作時(shí),特別是交替進(jìn)行文件數(shù)據(jù)讀取、存寫操作時(shí),緩存中會(huì)交替出現(xiàn)明文數(shù)據(jù)和密文數(shù)據(jù),這樣會(huì)帶來(lái)如下問題:一是非受信進(jìn)程有可能讀取到明文數(shù)據(jù),造成數(shù)據(jù)泄密,二是導(dǎo)致程序進(jìn)程不能正確處理數(shù)據(jù),比如受信進(jìn)程讀取的是密文數(shù)據(jù)而無(wú)法正常處理。為了解決這一問題,人們常用的解決方案是:在受信進(jìn)程和非受信進(jìn)程交替對(duì)同一個(gè)文件進(jìn)行文件I/o操作時(shí),不斷地刷寫(flush)、清空(clear)緩存數(shù)據(jù)。這種方案的問題是:一是要頻繁的刷寫、清空緩存,導(dǎo)致出現(xiàn)所謂暴力刷緩存、清緩存的問題,二是在受信進(jìn)程和非受信進(jìn)程交替讀取、存寫數(shù)據(jù)時(shí),要正確處理緩存刷寫、清空是非常困難的。
[0003]針對(duì)透明文件加密存在的以上問題,本發(fā)明的申請(qǐng)人在其專利申請(qǐng)“一種基于雙像文件的加密文件系統(tǒng)”(專利申請(qǐng)?zhí)?201510690514.9)中提出了一種基于雙像文件的解決方案,基于此方案,受信進(jìn)程和非受信進(jìn)程各自使用自己獨(dú)立的緩存,從而在出現(xiàn)受信進(jìn)程和非受信進(jìn)程對(duì)同一個(gè)文件進(jìn)行文件I/O操作的情況下能有效地避免頻繁刷緩存、清緩存(僅在很少的情況下要進(jìn)行清緩存)。但專利申請(qǐng)201510690514.9中的方案也存在如下問題:一個(gè)非受信進(jìn)程存寫的文件數(shù)據(jù)有可能是明文數(shù)據(jù)(比如,瀏覽器下載、保存一個(gè)未加密的Word文檔),這樣在多個(gè)非受信進(jìn)程對(duì)正在存寫的文件進(jìn)行文件I/O操作有可能出現(xiàn)數(shù)據(jù)泄露。對(duì)此問題的一種解決方案是:由雙像加密文件系統(tǒng)的文件驅(qū)動(dòng)或額外引入的一個(gè)文件過濾器在發(fā)現(xiàn)非受信進(jìn)程存寫的文件數(shù)據(jù)是明文數(shù)據(jù)時(shí)立即對(duì)明文數(shù)據(jù)進(jìn)行加密。但這種解決方案一是太麻煩,二是不能完全解決數(shù)據(jù)泄露問題,比如,當(dāng)非受信進(jìn)程是以內(nèi)存映射方式打開或創(chuàng)建文件并存寫明文數(shù)據(jù)時(shí),雙像加密文件系統(tǒng)的文件驅(qū)動(dòng)或額外引入的文件過濾器發(fā)現(xiàn)內(nèi)存中的緩存的數(shù)據(jù)是明文數(shù)據(jù)時(shí)候可能已經(jīng)晚了,緩存中的明文數(shù)據(jù)可能已被其他非受信進(jìn)程讀取了(雖然這種機(jī)率非常小)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提出一種基于多像文件的加密文件系統(tǒng),以克服現(xiàn)有技術(shù)方案的不足。
[0005]為了實(shí)現(xiàn)本發(fā)明的目的,本發(fā)明所提出的技術(shù)方案是:
[0006]—種基于多像文件的加密文件系統(tǒng),所述系統(tǒng)如下:
[0007]所述加密文件系統(tǒng)中存儲(chǔ)管理的每個(gè)文件是加密的文件;所述加密文件系統(tǒng)在計(jì)算機(jī)系統(tǒng)中對(duì)應(yīng)(或裝載mount為)一個(gè)文件盤或文件目錄(即顯示為一個(gè)文件盤或文件目錄);所述加密文件系統(tǒng)中存儲(chǔ)管理的每個(gè)文件在加密文件系統(tǒng)所對(duì)應(yīng)的文件盤或文件目錄中有多個(gè)文件映像:一個(gè)主像文件,多個(gè)A像文件以及一個(gè)B像文件,其中,主像文件是程序進(jìn)程進(jìn)行文件I/O操作直接針對(duì)的文件(除非重定向,程序進(jìn)程不主動(dòng)針對(duì)A像文件和B像文件直接進(jìn)行文件I/O操作,用戶也感受不到多個(gè)文件映像的存在);主像文件、A像文件和B像文件在加密文件系統(tǒng)中的對(duì)應(yīng)文件(即加密文件)稱為主像文件、A像文件和B像文件對(duì)應(yīng)的原文件;主像文件、A像文件和B像文件與對(duì)應(yīng)的原文件具有一樣的文件名和文件類型(SP文件擴(kuò)展名);所述加密文件系統(tǒng)中的一個(gè)(原)文件所對(duì)應(yīng)的A像文件的個(gè)數(shù)沒有限制(理論上可以有無(wú)窮多個(gè));
[0008]所述加密文件系統(tǒng)中存儲(chǔ)管理的每個(gè)文件目錄在加密文件系統(tǒng)所對(duì)應(yīng)的文件盤或文件目錄中同樣有多個(gè)文件目錄映像:一個(gè)主像文件目錄,一個(gè)A像文件目錄以及一個(gè)B像文件目錄;主像文件目錄、A像文件目錄和B像文件目錄在加密文件系統(tǒng)中的對(duì)應(yīng)文件目錄稱為主像文件目錄、A像文件目錄和B像文件目錄所對(duì)應(yīng)的原文件目錄(文件目錄是實(shí)際上是一種特別的文件,可以不單獨(dú)列出來(lái)處理,在此單獨(dú)列出來(lái)處理提供更多的靈活性);
[0009]對(duì)所述加密文件系統(tǒng)中的加密文件(即原文件)進(jìn)行文件I/O操作的程序進(jìn)程包括受信進(jìn)程、非受信進(jìn)程和操作系統(tǒng)輔助文件I/O操作的系統(tǒng)進(jìn)程(如Windows System進(jìn)程);所述受信進(jìn)程是操作系統(tǒng)輔助文件I/O操作的系統(tǒng)進(jìn)程以外的被允許獲取加密文件的明文數(shù)據(jù)的程序進(jìn)程;所述非受信進(jìn)程是操作系統(tǒng)輔助文件I/O操作的系統(tǒng)進(jìn)程以外的不被允許取加密文件的明文數(shù)據(jù)的程序進(jìn)程;受信進(jìn)程和非受信進(jìn)程針對(duì)文件類型而設(shè)定(如Word程序的運(yùn)行進(jìn)程是Word文檔的受信進(jìn)程,而Internet Explorer的運(yùn)行進(jìn)程則是Word文檔的非受信進(jìn)程);操作系統(tǒng)輔助文件1/0操作的系統(tǒng)進(jìn)程不屬于任一種文件類型的受信進(jìn)程和非受信進(jìn)程;當(dāng)操作系統(tǒng)輔助文件1/0操作的系統(tǒng)進(jìn)程輔助一個(gè)非受信進(jìn)程對(duì)一個(gè)對(duì)應(yīng)文件類型(即非受信進(jìn)程定義所針對(duì)的文件類型)的加密文件進(jìn)行文件1/0操作時(shí),操作系統(tǒng)輔助文件1/0操作的系統(tǒng)進(jìn)程不被允許獲取加密文件的明文數(shù)據(jù);當(dāng)操作系統(tǒng)輔助文件1/0操作的系統(tǒng)進(jìn)程輔助一個(gè)受信進(jìn)程對(duì)一個(gè)對(duì)應(yīng)文件類型(即受信進(jìn)程定義所針對(duì)的文件類型)的加密文件進(jìn)行文件I/o操作時(shí),操作系統(tǒng)輔助文件1/0操作的系統(tǒng)進(jìn)程被允許獲取加密文件的明文數(shù)據(jù)(操作系統(tǒng)輔助文件I/o操作的系統(tǒng)進(jìn)程輔助一個(gè)程序進(jìn)程所進(jìn)行的文件I/o操作是被輔助的程序進(jìn)程所進(jìn)行的文件1/0操作的一部分);
[0010]非受信進(jìn)程僅被允許對(duì)對(duì)應(yīng)文件類型(S卩非受信進(jìn)程定義所針對(duì)的文件類型)的原文件所對(duì)應(yīng)的A像文件進(jìn)行文件1/0操作;受信進(jìn)程僅被允許對(duì)對(duì)應(yīng)文件類型(即受信進(jìn)程定義所針對(duì)的文件類型)的原文件所對(duì)應(yīng)的B像文件進(jìn)行文件1/0操作(比如Word文檔的受信進(jìn)程,如Word程序進(jìn)程,僅被允許對(duì)一個(gè)Word文檔的B像文件進(jìn)行文件1/0操作,而Word文檔的非受信進(jìn)程,Internet Explorer的程序進(jìn)程,僅被允許對(duì)一個(gè)Word文檔的A像文件進(jìn)行文件1/0操作);操作系統(tǒng)輔助文件1/0操作的系統(tǒng)進(jìn)程被允許對(duì)任一種文件類型的原文件的A像文件和B像文件進(jìn)行文件1/0操作;
[0011 ]當(dāng)一個(gè)非受信進(jìn)程對(duì)加密文件系統(tǒng)所對(duì)應(yīng)的文件盤或文件目錄中的一個(gè)對(duì)應(yīng)文件類型(B卩非受信進(jìn)程定義所針對(duì)的文件類型)的主像文件進(jìn)行文件打開或創(chuàng)建操作時(shí),所述加密文件系統(tǒng)將非受信進(jìn)程的文件打開或創(chuàng)建操作重定向到主像文件所對(duì)應(yīng)的原文件的一個(gè)A像文件(即轉(zhuǎn)化為針對(duì)一個(gè)A像文件的文件打開或創(chuàng)建操作);不同非受信進(jìn)程重針對(duì)同一個(gè)主像文件進(jìn)行的文件打開或創(chuàng)建操作經(jīng)重定向后的A像文件各不相同;
[0012]當(dāng)接收到一個(gè)非受信進(jìn)程對(duì)一個(gè)對(duì)應(yīng)文件類型的A像文件進(jìn)行文件打開或創(chuàng)建操作的請(qǐng)求后,所述加密文件系統(tǒng)將針對(duì)A像文件的文件打開或創(chuàng)建操作轉(zhuǎn)化成針對(duì)A像文件的對(duì)應(yīng)原文件的文件打開或創(chuàng)建操作;
[0013]當(dāng)接收到一個(gè)程序進(jìn)程(非受信進(jìn)程或操作系統(tǒng)輔助文件I/O操作的系統(tǒng)進(jìn)程)對(duì)一個(gè)已打開或創(chuàng)建的A像文件進(jìn)行文件I/O操作的請(qǐng)求后,所述加密文件系統(tǒng)將針對(duì)A像文件的文件I/0操作轉(zhuǎn)化成針對(duì)A像文件的對(duì)應(yīng)原文件的文件I/0操作;特別地:當(dāng)針對(duì)A像文件的文件I/O操作是數(shù)據(jù)存寫操作時(shí),若所述加密文件系統(tǒng)(通過特征數(shù)據(jù),如特征頭部)檢查發(fā)現(xiàn)要存寫的數(shù)據(jù)是明文數(shù)據(jù),則所述加密文件系統(tǒng)先將明文數(shù)據(jù)加密后再存寫到A像文件的對(duì)應(yīng)原文件;
[0014]當(dāng)一個(gè)受信進(jìn)程對(duì)加密文件系統(tǒng)所對(duì)應(yīng)的文件盤或文件目錄中的一個(gè)對(duì)應(yīng)文件類型(即受信進(jìn)程定義所針對(duì)的文件類型)的主像文件進(jìn)行文件打開或創(chuàng)建操作時(shí),所述加密文件系統(tǒng)將受信進(jìn)程的文件打開或創(chuàng)建操作重定向到主像文件所對(duì)應(yīng)的原文件的B像文件(即轉(zhuǎn)化為針對(duì)B像文件的文件打開或創(chuàng)建操作);
[0015]當(dāng)接收到一個(gè)受信進(jìn)程對(duì)一個(gè)對(duì)應(yīng)文件類型的B像文件進(jìn)行文件打開或創(chuàng)建操作的請(qǐng)求后,所述加密文件系統(tǒng)將針對(duì)B像文件的文件打開或創(chuàng)建操作轉(zhuǎn)化成針對(duì)B像文件的對(duì)應(yīng)原文件的文件打開或創(chuàng)建操作;
[0016]當(dāng)接收到一個(gè)程序進(jìn)程(受信進(jìn)程或操作系統(tǒng)輔助文件I/O操作的系統(tǒng)進(jìn)程)對(duì)一個(gè)已打開或創(chuàng)建的B像文件進(jìn)行文件I/O操作的請(qǐng)求后,所述加密文件系統(tǒng)將針對(duì)B像文件的文件I/O操作轉(zhuǎn)化成針對(duì)B像文件的對(duì)應(yīng)原文件的文件I/O操作;特別地:當(dāng)針對(duì)B像文件的文件I/O操作是讀取數(shù)據(jù)時(shí),所述加密文件系統(tǒng)將從B像文件對(duì)應(yīng)的原文件讀取的加密數(shù)據(jù)解密成明文數(shù)據(jù)后再返回;當(dāng)針對(duì)B像文件的文件I/O操作是存寫數(shù)據(jù)時(shí),所述加密文件系統(tǒng)將要存寫的明文數(shù)據(jù)加密后再存寫到B像文件對(duì)應(yīng)的原文件;
[0017]當(dāng)一個(gè)程序進(jìn)程對(duì)加密文件系統(tǒng)所對(duì)應(yīng)的文件盤或文件目錄中的一個(gè)主像文件目錄進(jìn)行文件目錄打開或創(chuàng)建操作時(shí),所述加密文件系統(tǒng)不將針對(duì)主像文件目錄的打開或創(chuàng)建操作進(jìn)行重定向,直接將程序進(jìn)程針對(duì)主像文件目錄的(所有)文件目錄I/O操作轉(zhuǎn)化成針對(duì)主像文件目錄的對(duì)應(yīng)原文件目錄的文件目錄I/O操作;
[0018]或者,當(dāng)一個(gè)程序進(jìn)程對(duì)加密文件系統(tǒng)所對(duì)應(yīng)的文件盤或文件目錄中的一個(gè)主像文件目錄進(jìn)行文件目錄打開或創(chuàng)建操作時(shí),所述加密文件系統(tǒng)將程序進(jìn)程打開或創(chuàng)建主像文件目錄的操作重定向到要打開或創(chuàng)建的主像文件目錄所對(duì)應(yīng)的原文件目錄的A像文件目錄或B像文件目錄(具體采用何種方式取決于具體實(shí)施),之后將程序進(jìn)程針對(duì)A像文件目錄或B像文件目錄的(所有)文件目錄I/O操作轉(zhuǎn)化成針對(duì)A像文件目錄或B像文件目錄的對(duì)應(yīng)原文件目錄的文件目錄I/O操作。
[0019]若所述加密文件系統(tǒng)引入一個(gè)文件過濾器驅(qū)動(dòng),則所述加密文件系統(tǒng)的文件重定向(包括文件和文件目錄重定向)和/或文件加密解密處理功能由文件過濾器驅(qū)動(dòng)實(shí)施。
[0020]若在所述加密文件系統(tǒng)所在計(jì)算機(jī)系統(tǒng)中設(shè)置一個(gè)安全文件盤或安全文件目錄(如通過一個(gè)安裝配置程序設(shè)置),則將針對(duì)安全文件盤或安全文件目錄中文件和文件目錄的I/O操作映射到加密文件系統(tǒng)所對(duì)應(yīng)的文件盤或文件目錄中的一種方案如下:
[0021](約定)安全文件盤或安全文件目錄中的每個(gè)文件是加密文件系統(tǒng)存儲(chǔ)管理的文件的映像,即安全文件盤或安全文件目錄中(顯現(xiàn))的每個(gè)文件與加密文件系統(tǒng)中存儲(chǔ)管理的每個(gè)文件相對(duì)應(yīng);