一種基于多網盤的文件加密存儲系統及方法
【技術領域】
[0001]本發明屬于計算機領域,主要關注提高基于多網盤的文件加密存儲且可高效率訪問的裝置系統和方法。
【背景技術】
[0002]在公有存儲云情況下,基于多網盤的文件存儲能夠有效防止公有存儲云的服務商對用戶文件的非法訪問,特別是通過對文件加密存儲后進一步防止了公有存儲云的服務商對用戶文件的潛在侵權問題。目前已有的解決方案是用戶將文件進行整體加密后存儲到不同的網盤上,這種方案的缺點是:即便用戶只想讀取該文件的部分內容,也需要用戶將整個加密文件從網盤上下載到本地,然后再解密整個文件,最后讀取該文件的指定部分內容,這種解決方案下對文件的訪問效率極低,因為用戶不得不下載整個文件。
【發明內容】
[0003]本發明目的是解決現有公有存儲云解決方案下對文件的訪問效率極低的問題,提供一種基于多網盤的文件加密存儲且可高效率訪問的裝置系統和方法。本發明針對文件進行分塊加密并存放到不同網盤上,這樣既提高了用戶文件的保密性,也提高了用戶訪問加密文件的訪問效率。
[0004]本發明給出的基于多網盤的文件加密存儲系統至少由一個或多個網盤以及“文件加密”裝置組成;本發明給出的基于多網盤的文件加密存儲方法,采用對文件先分塊再各塊獨自加密,再上傳到多個網盤的方法。
[0005]本發明技術方案
[0006]1.—種基于多網盤的文件加密存儲系統,所述系統包括“網盤”裝置和“文件加密”裝置,二者通過網絡互聯;“網盤”裝置,主要是用來存儲文件數據,“網盤”裝置包括各種公有云中的網盤、私有云中的網盤、以及其它能夠提供文件存取服務的文件服務器;“文件加密”裝置,主要是用來存儲管理文件元數據以及加密文件的透明訪問,即實現對文件數據分塊、數據塊加解密、數據塊上傳下載、以及文件數據塊的合成功能,主要包括“文件訪問接口”模塊、“文件塊分解與合成”模塊、“文件塊索引”模塊、“文件塊加密解密”模塊、“文件塊發送接收”模塊、“網盤訪問”模塊以及“本地存儲介質”模塊;
[0007]其中,
[0008]“文件訪問接口”模塊,負責完成調用者的文件訪問操作,包括將調用者的文件訪問操作所要訪問文件區域轉化為“文件塊”編號序列,將調用者寫訪問文件區域的新數據合并到所屬文件中,以及將調用者讀訪問文件區域從所屬文件中讀取到調用者指定空間;
[0009]“文件塊分解與合成”模塊,負責對指定的文件進行“文件塊”的分解,以及將“文件±夬”合成為文件的功能;
[0010]“文件塊索引”模塊,負責對“文件”概要信息、“文件塊”概要信息的進行維護管理,以及待訪問文件區域與“文件塊”的對應關系之間的檢索;[0011 ] “文件塊加密解密”模塊,負責文件塊的密鑰產生以及針對“文件塊”的加密和解密操作;
[0012]“文件塊發送接收”模塊,負責對“加密文件數據塊”上傳到指定“網盤路徑”,以及將“加密文件數據塊”從指定“網盤路徑”下載到本地存儲介質中;“文件塊發送接收”模塊直接通過“網盤訪問”模塊實現所述功能;
[0013]“網盤訪問”模塊,包括“網盤訪問統一接口驅動”模塊和“網盤驅動”模塊;“網盤訪問統一接口驅動”模塊負責將不同類型的網盤訪問接口統一為相同的接口方式;“網盤驅動”模塊負責針對特定“網盤”裝置的訪問;不同類型的“網盤”裝置有不同的“網盤驅動”模塊,“網盤訪問統一接口驅動”模塊將根據所要訪問的網盤類型來調用不同的“網盤驅動”模塊;
[0014]“本地存儲介質”模塊,包括系統配置信息庫、文件概要信息庫、文件塊概要信息庫、文件塊的本地存儲池以及臨時存儲空間;系統配置信息庫包括系統總容量、“文件塊”長度策略、默認“文件塊”長度和“網盤信息”列表,其中“網盤信息”包括網盤名稱、網盤用戶名、網盤訪問口令、網盤網絡地址、網盤用戶根目錄路徑以及網盤容量限制;文件概要信息庫包含所有文件的“文件”概要信息;每個“文件”概要信息包括文件名、文件編號、文件長度、“文件塊”長度策略、默認“文件塊”長度以及“文件塊”數目;文件塊概要信息庫包括所有文件的所有“文件塊”概要信息;每個“文件塊”概要信息包括“文件塊”基本信息和“文件塊”詳細信息,“文件塊”基本信息包括該“文件塊”的編號、“文件塊”所屬文件編號、“文件塊”的文件偏移量、“文件塊”長度、“文件塊”狀態;“文件塊”狀態包括未下載、未解密、已解密、已修改、已上傳;“文件塊”詳細信息包括該“文件塊”的編號、“文件塊”所屬文件編號、“文件±夬”的“網盤路徑”、“本地路徑”和“文件塊”密鑰;“文件塊”密鑰包括加密算法和密鑰值;
[0015]“文件訪問接口”模塊直接調用“文件塊索引”模塊來完成將調用者的文件訪問操作所要訪問文件區域轉化為“文件塊”編號序列;“文件訪問接口 ”模塊直接調用“文件塊分解與合成”模塊來完成指定“文件塊”的讀操作或者寫操作;“文件塊分解與合成”模塊直接調用“文件塊索引”模塊來完成查詢指定“文件塊”的“文件塊”文件偏移量和“文件塊”長度;“文件塊分解與合成”模塊直接調用“文件塊加密解密”模塊來完成“文件塊”的加密和解密;“文件塊分解與合成”模塊直接調用“文件塊發送接收”模塊來完成“文件塊”數據在本地存儲與網盤之間的上傳下載,而“文件塊發送接收”模塊直接調用“網盤訪問”模塊來完成“文件塊”數據的網絡傳輸;上述模塊所涉及的整個系統以及文件元的信息都存儲在“本地存儲介質”模塊,已下載的“文件塊”以及被操作處理的“文件塊”可存儲在“本地存儲介質”模塊中的文件塊本地存儲池,上述模塊操作處理中產生的中間數據也可存儲在“本地存儲介質”模塊中的臨時存儲空間。
[0016]所述的文件,文件的數據內容以“文件塊”為最小單位存儲在多個“網盤”裝置中,文件的元信息即“文件”概要信息和“文件塊”概要信息存儲在“文件加密”裝置;同一個文件的不同“文件塊”既可以存儲在同一個“網盤”裝置中,也可以存儲在不同的“網盤”裝置中;“文件塊”長度既可以是固定長度,也可以是變長長度,“文件塊”長度由“文件塊”長度策略決定;一個文件所包含的所有“文件塊”長度由該文件的“文件塊”概要信息給出;“文件塊”長度策略由包含在系統配置信息和“文件”概要信息的“文件塊”長度策略依次決定,“文件±夬”長度策略包括全局固定長度、全局變長長度、文件固定長度、文件變長長度和自定義長度策略。
[0017]所述的“文件塊”長度,每個“文件塊”長度的具體值由“網盤存儲分配算法”根據多級“文件塊”長度策略來產生;針對全局變長長度策略和文件變長長度策略,“網盤存儲分配算法”按照文件的邏輯內容結構來進行“文件塊”的劃分;文件的長度、每個“文件塊”的文件偏移量以及“文件塊”長度最終更新到對應的“文件”概要信息和“文件塊”概要信息中。
[0018]所述的“網盤存儲分配算法”,“網盤存儲分配算法”主要負責根據“文件塊”長度策略和“網盤信息”列表針對指定文件給出一整套“網盤文件塊存儲規劃”,包括“文件塊”劃分方案、每個“文件塊”的密鑰信息、以及每個“文件塊”數據的“網盤路徑”;“文件塊”劃分方案包括“文件塊”的文件偏移量和“文件塊”長度。
[0019]所述“文件塊”的密鑰信息,“文件塊”的密鑰信息既可以是對稱密鑰,也可以是非對稱密鑰;同一個文件的不同“文件塊”的密鑰信息既可以是相同的,也可以是不同的;“文件塊”的密鑰信息持久存儲在“文件塊”概要信息中。
[0020]2.—種基于上述多網盤的文件加密存儲系統的讀方法,所述方法包括具體步驟如下:
[0021]第1、“文件訪問接口”模塊獲取調用者“讀操作請求”文件的所要讀操作區域,即讀操作的文件偏移量和長度;
[0022]第2、“文件訪問接口”模塊獲取系統配置信息;
[0023]第3、“文件訪問接口”模塊調用“文件塊索引”模塊將第I步中讀操作區域轉化為所要讀的“文件塊”編號序列,具體步驟如下:
[0024]第3.1、“文件塊索引”模塊獲取第I步中文件的“文件”概要信息;
[0025]第3.2、“文件塊索引”模塊獲取第I步中文件的“文件塊”基本信息列表;
[0026]第3.3、“文件塊索引”模塊根據第I步中讀操作區域以及第3.2步中“文件塊”基本信息列表,計算出第I步中的讀操作區域所對應的“文件塊”編號序列;
[0027]第4、“文件塊索引”模塊獲取第3.3步中“文件塊”編號序列所對應的“文件塊”詳細信息列表;
[0028]第5、“文件訪問接口”模塊調用“文件塊分解與合成”模塊,“文件塊分解與合成”模塊針對第4步中的“文件塊”詳細信息列表,“文件塊分解與合成”模塊進一步調用“文件塊發送接收”模塊下載所對應的已“加密文件數據塊”序列;若全部下載成功則執行第6步,否則執行第7步;
[0029]第6、“加密文件數據塊”序列下載全部成功,執行具體步驟如下:
[0030]第6.1、針對第5步中已下載“加密文件數據塊”序列,“文件塊分解與合成”模塊根據第4步中每個“文件塊”密鑰并調用“文件塊加密解密”模塊對所述已下載“加密文件數據±夬”進行解密,生成對應的“文件數據塊”;
[0031]第6.2、“文件訪問接口”模塊根據第I步中讀操作區域從第6.1步中已解密“文件數據塊”序列中抽取出所要讀操作區域的內容到調用者指定的空間中;
[0032]第6.3、設置讀操作結果為成功;并執行第8步;
[0033]第7、“加密文件數據塊”序列下載失敗,執行具體步驟如下:
[0034]第7.1、在本地存儲中刪除所有第5步中已下載的“加密文件數據塊”;
[0035]第7.2、設置讀操作結果為失敗;并執行第8步;
[0036]第8、返回讀操作結果,程序執行結束。
[0037]3.—種基于上述多網盤的文件加密存儲系統的寫方法,所述方法包括具體步驟如下:
[0038]第1、“文件訪問接口”模塊獲取調用者“寫操作請求”文件的所要寫操作區域,即寫操作的文件偏移量和長度;
[0039]第2、“文件訪問接口”模塊獲取系統配置信息庫;
[0040]第3、“文件訪問接口”模塊調用“文件塊索引”模塊將第I步中的寫操作區域轉化為所要寫的“文件塊”編號序列,具體步驟如下:
[0041]第3.1、“文件塊索引”模塊獲取第I步中文件的“文件”概要信息,并建立“文件”概要信息副本;
[0042]第3.2、“文件塊索引”模塊獲取第I步中文件的“文件塊”概要信息,并建立“文件±夬”基本信息副本和“文件塊”詳細信息副本;
[0043]第3.3、“文件塊索引”模塊根據第I步中寫操作區域以及第3.2步中“文件塊”信息列表,計算出第I步中的寫操作區域所對應的“文件塊”編號序列;
[0044]第4、“文件訪問接口”模塊調用“文件