本發(fā)明涉及數(shù)據(jù)上傳和下載方法,尤其涉及基于多公共云的分布式數(shù)據(jù)上傳和下載方法。
背景技術:
公共云平臺是指現(xiàn)在多個云服務供應商所提供的多個云平臺。云服務提供商有百度云,阿里云,新浪云,谷歌云,亞馬遜云等。公共云平臺由云引擎、云盤、云數(shù)據(jù)庫以及應用程序組成。
云引擎是公共云平臺所提供的一種應用托管平臺,支持托管多種語言開發(fā)的應用程序,云引擎代表有BAE,SAE。云盤是公共云平臺所提供的云存儲服務,可存儲海量數(shù)據(jù),在該技術中主要存儲密文文件塊、存儲目錄樹字節(jié)文件、密鑰字節(jié)文件。云數(shù)據(jù)庫是客戶端在線數(shù)據(jù)庫服務,開發(fā)人員可以把數(shù)據(jù)庫部署到云數(shù)據(jù)庫,即可通過應用程序進行數(shù)據(jù)操作,在該技術中云數(shù)據(jù)庫對該存儲技術所需要用到的數(shù)據(jù)庫表進行存儲,例如用戶文件塊路徑信息表。該技術的應用程序運行在多個公共云平臺上的云引擎上,負責根據(jù)客戶端的指令,對密文文件塊、存儲目錄樹字節(jié)文件、密鑰字節(jié)文件進行相應的存儲和檢索操作。
公共云數(shù)據(jù)存儲的方式具有便捷、節(jié)約空間、按需分配、省錢等優(yōu)點,因此公共云存儲服務也越來越受歡迎。目前用戶所使用的傳統(tǒng)的公共云存儲方式是用戶把數(shù)據(jù)以明文的形式,上傳到一個公共云提供商的一個公共云平臺,用戶通過公共云提供商所提供的方式,進行上傳、刪除下載和查看文件的操作。
在云服務越來越廣泛被接受的同時,數(shù)據(jù)的安全性也接受著越來越多的考驗?,F(xiàn)有的公共云存儲方式暴露了許多缺點和威脅。數(shù)據(jù)若以明文的形式存儲,如果被竊取即可獲取信息;數(shù)據(jù)若以密文的形式存儲,即使用加密存儲的云盤存儲,仍存在公共云端獲取數(shù)據(jù)的威脅。如果數(shù)據(jù)存儲在一個公共云平臺上,如果該公共云平臺系統(tǒng)出故障或數(shù)據(jù)丟失,用戶將無法獲取上傳的數(shù)據(jù)。用戶把數(shù)據(jù)存儲到一個云提供商的行為是基于對公共云存儲提供商的信任,但云存儲提供商可能是不可信的,提供商可能會泄露用戶數(shù)據(jù),侵犯用戶隱私以牟取利益。此外,當公共云服務商把數(shù)據(jù)存儲到國外的服務器時,其數(shù)據(jù)的安全性還受到服務器所在國的政策的影響,若存在政策要求,公共云服務商可能會把用戶的數(shù)據(jù)提供給相關機構。
技術實現(xiàn)要素:
為增強公共云存儲的安全性,本發(fā)明提出一種基于多公共云的分布式數(shù)據(jù)上傳和下載方法。
本發(fā)明提出一種基于多公共云的分布式數(shù)據(jù)上傳方法包括步驟
S11:客戶端生成一個密鑰、并用所述密鑰對需要上傳的文件加密;
S12:客戶端將加密后的密文文件切塊;
S13:客戶端將每一塊密文文件上傳到對應一個的公共云平臺;
S14:客戶端將所述密鑰按字節(jié)分解為多個字節(jié)B1,B2,B3,...;
S15:客戶端為每個字節(jié)B1,B2,B3,...構造一個多項式f(x)=B+a1x+a2x2+...+an-1xn-1,其中,多項式中的B表示B1,B2,B3,...中的每一個,作為多項式的常數(shù)項存在;
S16:客戶端為每一個多項式隨機生成一組a1,a2,...,an-1,代入所述多項式f(x)=B+a1x+a2x2+...+an-1xn-1;
S17:客戶端為所有多項式f(x)=B+a1x+a2x2+...+an-1xn-1隨機生成一組x1,x2,...,xm,作為密鑰的所有多項式的m個x值,且隨機生成的x1,x2,...,xm作為密鑰的秘密值保存到客戶端本地;
S18:把B1,B2,B3...,按照其順序將所有的f(x1)寫入密鑰文件F1,所有的f(x2)寫入密鑰文件F2,依此類推,一直到f(xm)寫入密鑰文件Fm,并將這m個密鑰文件F1,F2,...,Fm分別上傳到m個公共云平臺;
S19:將密鑰替換為存儲目錄樹,重復步驟S14至S18完成存儲目錄樹的上傳。
進一步地,步驟S12中所述客戶端將加密后的密文文件切塊為等大切塊。
進一步地,如非第一次上傳文件,步驟S11前還包括步驟:客戶端下載存儲目錄樹文件,并恢復存儲目錄樹。
進一步地,步驟S18后還包括步驟:所有密鑰文件上傳后,客戶端對密鑰進行哈希運算,算出其哈希值,并把密鑰的哈希值上傳到某個固定的存儲哈希值文件的公共云平臺。
進一步地,步驟S19后還包括步驟:所有存儲目錄樹文件上傳后,客戶端對存儲目錄樹進行哈希運算,算出其哈希值,并把存儲目錄樹的哈希值上傳到某個固定的存儲哈希值文件的公共云平臺。
本發(fā)明還提出一種基于多公共云的分布式數(shù)據(jù)下載方法包括步驟:
S21:將公共云平臺中的存儲目錄樹子文件下載到客戶端,每個目錄樹文件都逐個字節(jié)地讀取,所有讀取順序相同的字節(jié)屬于同一組多項式方程組的f(x1),f(x2),...,f(xn);
S22:從客戶端本地讀取存儲目錄樹x1,x2,...,xm文件構造多項式,求解,得到多個字節(jié)B1,B2,B3,...;
S23:把所有多項式組求解出來的B1,B2,B3,...按順序合并,恢復存儲目錄樹;
S24:根據(jù)存儲目錄樹,從多個公共云平臺下載密文文件塊;
S25:將存儲目錄樹替換為密鑰重復步驟S21至S23,恢復密鑰;
S26:將密文文件塊排序后恢復為密文文件;
S27:使用密鑰解密密文文件,得到原文件。
進一步地,步驟S23后還包括步驟:將恢復出來的存儲目錄樹進行哈希運算,并和下載到客戶端本地的存儲目錄樹最新哈希值進行比較,若值不相同,則重復步驟S21至S23,重新恢復存儲目錄樹。
進一步地,步驟S24后還包括步驟:將恢復出來的密鑰進行哈希運算,并和下載到客戶端本地的密鑰最新哈希值進行比較,若值不相同,則重復步驟S24,重新恢復密鑰。
本發(fā)明的有益效果在于,與現(xiàn)有技術相比,本發(fā)明更安全且用戶只需要把秘密值x文件從PC端拷貝到移動端,即可進行上傳、下載、刪除、查詢文件的操作。
附圖說明
圖1是本發(fā)明基于多公共云的分布式數(shù)據(jù)上傳方法流程圖。
圖2是本發(fā)明基于多公共云的分布式數(shù)據(jù)下載方法流程圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參見圖1,本發(fā)明基于多公共云的分布式數(shù)據(jù)上傳方法包括步驟:
文件的上傳:
S11:客戶端生成一個密鑰、并用所述密鑰對需要上傳的文件加密;
S12:客戶端將加密后的密文文件切塊,一般為等大切塊;
S13:客戶端將每一塊密文文件上傳到對應一個的公共云平臺;
密鑰的上傳:
S14:客戶端將所述密鑰按字節(jié)分解為多個字節(jié)B1,B2,B3,...;
S15:客戶端為每個字節(jié)B1,B2,B3,...構造一個多項式f(x)=B+a1x+a2x2+...+an-1xn-1,其中,多項式中的B表示B1,B2,B3,...中的每一個,作為多項式的常數(shù)項存在;
S16:客戶端為每一個多項式隨機生成一組a1,a2,...,an-1,代入所述多項式f(x)=B+a1x+a2x2+...+an-1xn-1;
S17:客戶端為所有多項式f(x)=B+a1x+a2x2+...+an-1xn-1隨機生成一組x1,x2,...,xm,作為密鑰的所有多項式的m個x值,且隨機生成的x1,x2,...,xm作為密鑰的秘密值保存到客戶端本地;
S18:把B1,B2,B3...,按照其順序將所有的f(x1)寫入密鑰文件F1,所有的f(x2)寫入密鑰文件F2,依此類推,一直到f(xm)寫入密鑰文件Fm,并將這m個密鑰文件F1,F2,...,Fm分別上傳到m個公共云平臺;所有密鑰文件上傳后,客戶端對密鑰進行哈希運算,算出其哈希值,并把密鑰的哈希值上傳到某個固定的存儲哈希值文件的公共云平臺;和
存儲目錄樹的上傳:
S19:將密鑰替換為存儲目錄樹,重復步驟S14至S18完成存儲目錄樹的上傳。所有存儲目錄樹文件上傳后,客戶端對存儲目錄樹進行哈希運算,算出其哈希值,并把存儲目錄樹的哈希值上傳到某個固定的存儲哈希值文件的公共云平臺。
請參見圖2,本發(fā)明還提出一種基于多公共云的分布式數(shù)據(jù)下載方法包括步驟:
存儲目錄樹的下載:
S21:將公共云平臺中的存儲目錄樹子文件下載到客戶端,每個目錄樹文件都逐個字節(jié)地讀取,所有讀取順序相同的字節(jié)屬于同一組多項式方程組的f(x1),f(x2),...,f(xn);
S22:從客戶端本地讀取存儲目錄樹x1,x2,...,xm文件構造多項式,求解,得到多個字節(jié)B1,B2,B3,...;
S23:把所有多項式組求解出來的B1,B2,B3,...按順序合并,恢復存儲目錄樹;將恢復出來的存儲目錄樹進行哈希運算,并和下載到客戶端本地的存儲目錄樹最新哈希值進行比較,若值不相同,則重復以上步驟,重新恢復存儲目錄樹;
密鑰的下載:
S24:將存儲目錄樹替換為密鑰重復步驟S21至S23,恢復密鑰;將恢復出來的密鑰進行哈希運算,并和下載到客戶端本地的密鑰最新哈希值進行比較,若值不相同,則需要重新恢復密鑰;
密文文件的下載:
S25:根據(jù)存儲目錄樹,從多個公共云平臺下載密文文件塊;
S26:將密文文件塊排序后恢復為密文文件;
解密密文文件:
S27:使用密鑰解密密文文件,得到原文件。
用戶打開客戶端時,如果是第一次上傳文件,則存儲目錄樹默認為空。用戶可以新增文件夾,每新增一個文件夾,存儲目錄樹就新增一個節(jié)點。存儲目錄樹每新增一個節(jié)點,客戶端就需要把更新后的存儲目錄樹上傳到公共云端,以保證每次用戶訪問客戶端可以從公共云端獲取最新的存儲目錄樹。如非第一次上傳文件,步驟S11前還應包括步驟:客戶端下載存儲目錄樹文件,并恢復存儲目錄樹。
將原文件放在本地磁盤中后,就可以把恢復出來的密文文件、恢復出來的密鑰、所有的密文子文件塊、密鑰文件刪掉。
以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍。