專利名稱:應用層文件透明加密中使用通用加密算法的方法
技術領域:
屬于計算信息安全類的密碼學、文件透明加密
背景技術:
在文件透明加密技術中,分為基于應用層的透明加密和基于驅動層的透明加密。 基于驅動層的透明加密技術,因為其讀寫文件都是的邊界都是512的整數(shù),并且其讀寫的 大小也是512的整數(shù)倍,即使文件大小不足512個字節(jié),也會自動補全。在這種情況下,驅 動層的透明加密可以使用任何國際通用的算法和國內專用的算法。但是應用層的文件讀寫機制與驅動層完全不同。其文件讀寫的邊界是隨機的,其 文件讀寫的大小也是隨機的。這就為如AES算法的使用帶來了困難,因為AES要求從2的 整數(shù)倍的位置開始處理。所以通常的方式有兩種1)不處理文件的讀和寫,轉而處理文件的打開和關閉事件。即在文件打開前,將文 件全部解密成明文。在文件關閉后再重新全部加密成密文。2)使用自行設計的加密算法,進行按位(Bit)的加密。這兩種方案均存在的嚴重的問題,方案一存在著大量的磁盤10,嚴重的影響了性 能,并且因為要將文件解密至硬盤,形成的明文落地,導致安全性隱患。方案二的問題則更明顯,因為自行設計的按位運算的加密僅能實現(xiàn)一種最簡單的 加密,其安全性完全得不到保障。
發(fā)明內容
本發(fā)明實現(xiàn)了一種新的方式,即在應用層的讀寫過程中,通過預讀(PReReadFile) 和延遲寫DelayWriteFile的技術,將邊界隨機、大小隨機、位置不連續(xù)的數(shù)據(jù)轉換為邊界 固定,大小可被512整除、位置連續(xù)的數(shù)據(jù)。本發(fā)明的方案如下1)當讀一個非加密時,不作處理,按Windows原有方式進行。2)當寫一個非加密文件時,不作處理,按Windows原有方式進行。3)當讀一個加密文件時,預讀更多的數(shù)據(jù),使其大小和邊界為8的N倍。將數(shù)據(jù)進 行解密后,再向Windows返回其需要的數(shù)據(jù)量。4)當要寫一個加密文件時,首先將其數(shù)據(jù)緩存起來,當最后需要關閉文件時,再將 文件進行加密后提交給Windows。
下面結合附圖和實施例對發(fā)明專利進一步說明。 圖1為讀取文件時的處理流程,圖2為寫入文件時的處理流程。
具體實施例方式以AutoCAD的數(shù)據(jù)讀寫為例1)當讀一個非加密時,不作處理,按Windows原有方式進行。2)當讀一個加密文件時,如果讀的邊界正好是8的N次方,讀的內容大小也為8的 N次時,不需要I^reReadFile。只需用相應的算法將這段內容在內存中進行解密,然后再提 交給Windows進行處理即可。3)當讀一個加密文件時,如果讀的邊界正好是8的N次方,讀的大小為非8的N次 方時,則從邊界處開始讀,在尾部多讀一部分數(shù)據(jù),使其大小為8的N次方。在用相應的算 法對此段內容進行解密后,將尾部多讀的數(shù)據(jù)丟棄,然后再Windows提交其需要的數(shù)據(jù)。4)當讀一個加密文件時,如果讀的邊界為非8的N次方,讀的大小也為非8的N次 方時,則邊界向前移至8的N次方處,然后開始讀取數(shù)據(jù),同時在其尾部多讀一部分數(shù)據(jù),使 其大小為8的N次方。在用相應算法對其進行解密后,將頭部及尾部多讀的數(shù)據(jù)丟棄,然后 再向Windows提交其需要的數(shù)據(jù)。5)當寫一個非加密文件時,不作處理,按Windows原有方式進行。6)當寫一個加密文件時,如果寫的邊界正好是8的N次方,寫的大小也正好是8的 N次方時,不需要進行DelayWriteFile,只需用相應的算法將這段內容在內存中進行加密, 然后提交給Windows處理即可。7)當寫一個加密文件時,如果寫的邊界正好是8的N次方,而寫的大小為非8的N 次方時,將邊界處開始的8的N次方的數(shù)據(jù)進行加密,提交給Windows系統(tǒng),對于尾部剩下 的一部分數(shù)據(jù),標明原位置和大小,將其緩存起來。如果在后續(xù)的寫過程中,有覆蓋此數(shù)據(jù) 動作,則緩存的數(shù)據(jù)丟棄。如果并未發(fā)生覆蓋動作,則在文件關閉(CloseHandle)的時候, 重新讀取此數(shù)據(jù)周圍的數(shù)據(jù),然后完整一個8的N次方為邊界,大小為8的數(shù)據(jù),加密后,將 相應的數(shù)據(jù)寫入文件,同時丟棄在此過程中多讀的數(shù)據(jù)。8)當寫一個加密文件時,如果寫的邊界為非8的N次方,寫的大小亦為非8的N 次方時,則以8的N次方為邊界,加密大小為8的N次方的數(shù)據(jù),然后將此部分數(shù)據(jù)提交給 Windows系統(tǒng)。對于頭部和尾部多出的一部分數(shù)據(jù),標明原位置和大小,將其緩存起來,如 果在后續(xù)的寫的過程中,有覆蓋些數(shù)據(jù)的動作,則緩存的數(shù)據(jù)丟棄。如果并未發(fā)生覆蓋動 作,則在關閉文件(CloseHandle)的時候,重新讀取此數(shù)據(jù)周圍的數(shù)據(jù)。然后完整一個8的 N次方為邊界,大小為8的數(shù)據(jù),加密后,將相應的數(shù)據(jù)寫入文件,同時丟棄在此過程中多讀 的數(shù)據(jù)。
權利要求
1.一種在應用層讀寫文件時,應用國際通用或國密局指定的算法,進行透明加密的方 法,其特征是將位置隨機、大小不確定的讀寫過程轉化為位置有規(guī)律,大小固定的讀寫。
2.根據(jù)權利要求1,其特征是對于寫文件時超出邊界的部分數(shù)據(jù)進行緩存,在文件關 閉時再行處理。
全文摘要
一種在應用層文件透明加密中使用國際通過算法和國密局指定算法的方法。其主要通過預讀(PreReadFile)、延遲寫(DelayWriteFile)的技術。將位置隨機、大小不確定的讀寫過程轉化為位置有規(guī)律,大小固定的讀寫。并且將剩于的數(shù)據(jù)緩存,在文件關閉時再進行處理。通過此方法,使透明加密對于算法的特性要求大為降低,選擇范圍大大提高,令文件透明加密技術在最核心處滿足國家相關規(guī)定。
文檔編號G06F17/30GK102053996SQ200910233699
公開日2011年5月11日 申請日期2009年10月28日 優(yōu)先權日2009年10月28日
發(fā)明者邱文喬 申請人:無錫安騰軟件開發(fā)有限公司