本發明涉及加密存儲技術及隱私保護,具體是一種具有被動式動態密鑰分發機制的安全云存儲方法。
背景技術:
隨著科技在進步,人們獲取信息和存儲信息的方式發生了很大變化。這些變化不斷滿足了人們交流、獲取信息、記錄信息的便捷需求。但隨之而來的數據安全性和隱私性卻成為了一大難題。信息安全技術經過多年的發展,已經從密碼技術發展到了隱藏技術和加密技術,但在信息隱藏技術的應用過程中,人們發現單純的用各種信息隱藏算法或者加密算法對數據加密時,攻擊者很有可能較容易的提取出秘密信息,一旦服務器遭到破壞,用戶的重要文件將無法得到保護。
技術實現要素:
為了克服上述現有技術的缺點,本發明提供一種具有被動式動態密鑰分發機制的安全云存儲方法,實現了存儲與加密的分離,即使存儲與加密有一方被不法分子獲得,其得到的也只是一堆不能直接使用的加密信息,只有密鑰認證中心和存儲服務器聯動通過客戶端用戶才可獲得有效數據。
本發明是以如下技術方案實現的:通過架設密鑰認證中心生成動態密鑰來加密文件,客戶端獲得密鑰后加密本地文件并上傳至存儲服務器,客戶端也通過密鑰認證中心請求密鑰解密從存儲服務器得到的文件,具體分為文件上傳和下載兩類情況:
(1)當客戶端用戶需要上傳文件至存儲服務器時,首先發送requestKey命令至密鑰認證中心,密鑰認證中心首先驗證用戶是否合法,當用戶通過驗證后,密鑰認證中心調用生成密鑰算法獲得密鑰并返回responseKey命令到客戶端,客戶端收到密鑰后加密文件并上傳至存儲服務器,存儲服務器收到upload命令后,同樣先驗證用戶,通過驗證后將文件存入數據庫中,若驗證用戶不合法則將返回錯誤信息到客戶端;
(2)當客戶端需要下載文件時,首先發送download命令至存儲服務器,存儲服務器收到命令后,先驗證用戶,通過驗證后,將根據請求的文件路徑取出文件并返回到客戶端,客戶端收到加密的文件后,會向密鑰認證中心發送requestUnlock命令請求密鑰解密文件,密鑰驗證中心收到命令后,查詢密鑰表獲得密鑰并返回responseUnlock命令到客戶端,客戶端收到密鑰后解密文件供用戶使用。
本發明的有益效果是:
(1)密鑰認證中心和存儲服務器是隔離的,且兩者互相不知道對方的具體位置,即便任一方存在安全泄露問題,也不影響數據的安全性,實現了加密與存儲的分離;
(2)密鑰是動態變化的,即使攻擊者截取了一段密鑰,攻擊者也無法確定是哪個用戶的哪個文件加密,因而也無法解密;
(3)采用公有云和私有云混合架構,密鑰認證中心采用公有云架構,存儲服務器根據組織的不同可以假設多臺,不同組織的數據之間是互相隔離的。
附圖說明
下面結合附圖對本發明作進一步說明。
圖1為發明中的整體架構示意圖;
圖2為發明中實際布設邏輯分布圖;
圖3為本方法的上傳加密文件工作流程圖;
圖4為本方法的下載加密文件工作流程圖;
圖5為本方法安全保障機制示意圖;
圖6為本方法的動態加密表的分布示意圖;
圖7為客戶端與服務器通信的主要命令包格式示意圖。
具體實施方式
如圖1所示,一種具有被動式動態密鑰分發機制的安全云存儲方法,它包括客戶端、密鑰認證中心、存儲服務器。密鑰是由密鑰認證中心在需要時被動生成的,通過架設密鑰認證中心生成動態密鑰來加密文件,密鑰認證中心可以在公網上訪問,生成密鑰的算法為動態的且密鑰更新的頻率可自行設置,通過客戶端向密鑰認證中心發送命令獲取密鑰來加密或者解密文件,加密的文件通過客戶端可同步到存儲服務器,密鑰認證中心維護用戶表和密鑰表,存儲服務器維護用戶表和文件表。存儲服務器與通信協議無關,即不局限于FTP協議、SFTP協議、S3協議等文件傳輸協議。
如圖2所示,實際布設時的具體方案如下:
(1)密鑰驗證中心架設在公有云上,客戶端聯網便可以隨時訪問;
(2)存儲服務器可以根據具體的用戶不同架設,一個企業或者組織可以根據需求將存儲服務器放到私有云上,限制只有內部員工可以訪問,不同組織或者個體不可相互訪問;
(3)個體用戶可以直接使用客戶端,而將和架設在公有云上的存儲服務器進行數據的存儲和下載。
如圖3所示,上傳加密文件工作流程如下:
(1)密鑰認證中心收到客戶端upload命令;
(2)密鑰認證中心查找用戶表驗證客戶端用戶是否合法;
(3)若合法,則進行步驟(4),否則返回錯誤信息給客戶端;
(4)密鑰認證中心得到系統當前時間hnow;
(5)密鑰認證中心查找密鑰表中字段dateTime最大的時間hmax;
(6)密鑰認證中心計算出hnow-hmax的差值Δh;
(7)密鑰認證中心比較Δh和固定變化密鑰周期T;
(8)若Δh<T或者Δh=T,則直接返回密鑰表中hmax所對應的密鑰privateKey和hmax給客戶端;
(9)若Δh>T,密鑰認證中心則生成一個隨機的密鑰privateKey以及hnow返回給客戶端,同時將生成的密鑰privateKey和時間hnow存入密鑰表中以備用戶解密文件;
(10)客戶端得到密鑰privateKey后加密需要上傳的文件,加密后的文件將被同步到存儲服務器;
(11)存儲服務器收到文件后查找用戶表驗證客戶端用戶是否合法;
(12)若合法,則進行步驟(13),否則返回錯誤信息給客戶端;
(13)存儲服務器將文件以及加密密鑰的時間記錄到文件表中。
如圖4所示,下載加密的文件工作流程如下:
(1)存儲服務器收到客戶端download命令;
(2)存儲服務器查找用戶表驗證客戶端用戶是否合法;
(3)若合法,則進行步驟(4),否則返回錯誤信息給客戶端;
(4)存儲服務器將加密的時間dateTime及加密文件返回給客戶端;
(5)客戶端發送unlock命令到密鑰認證中心獲取文件所對應的密鑰解密;
(6)密鑰認證中心查找用戶表驗證客戶端用戶是否合法;
(7)若合法,則進行步驟(8),否則返回錯誤信息給客戶端;
(8)密鑰認證中心查找密鑰表,得到dateTime所對應的密鑰privateKey,并將其返回給客戶端;
(9)客戶端得到密鑰privateKey后解密文件供用戶使用。
如圖5所示,本方法的安全保障機制原理如下:
本方法實現了存儲與加密的分離,密鑰認證中心與存儲服務器互相不可見。
如圖5-1所示,(1)當攻擊者攻破密鑰驗證中心時,其所得到的數據即為一堆無效的密鑰,攻擊者無法確定存儲服務器的地址,也無法確定密鑰對應的是哪個用戶的哪個文件,因而即使密鑰驗證中心數據被泄露,數據的持有者也無法得到有效的信息,進而有效地保護了用戶的數據;
如圖5-1所示,(2)當攻擊者攻破存儲服務器時,其所得到的數據即為一堆無法直接使用加密文件,攻擊者無法確定密鑰驗證中心的地址,也無法確定加密文件對應的解密密鑰是什么,因而即使存儲服務器數據被泄露,數據的持有者也無法得到破解加密文件的密鑰,進而有效地保護了用戶的數據;
如圖6所示,本方法中設計的三張表存在的位置:
用戶表:用戶表存在密鑰認證中心和存儲服務器中,用來驗證用戶的合法性,以及在密鑰認證中心中和密鑰表聯合使用共同管理密鑰,在存儲服務器中和文件表聯合使用共同管理文件;用戶表中包含id、username、password字段;
密鑰表:密鑰表存在密鑰認證中心中,用來管理每個用戶的加密文件密鑰;密鑰表包含id、dateTime、privateKey;
文件表:文件表存在存儲服務器中,用來管理每個用戶的文件,文件表包含id、dateTime、fileData。
如圖7所示,客戶端和服務端通信的包格式,涉及文件加密解密的主要命令有如下7種形式:
requestKey命令如圖7-1:用于客戶端向密鑰認證中心請求密鑰來加密文件上傳到存儲服務器,requestKey命令包含的參數有命令類型command、用戶名username、登錄密碼password;
responseKey命令如圖7-2:用于密鑰驗證中心發送密鑰時的命令,responseKey包含的參數有命令類型command、生成的密鑰privatekey、生成密鑰時的系統時間dateTime;
upload命令如圖7-3:用于客戶端在加密文件之后,上傳至存儲服務器時使用的命令,upload命令包含的參數有命令類型command、用戶名username、登錄密碼password、加密的文件數據fileData、密鑰驗證中心返回的dateTime;
download命令如圖7-4:用于客戶端向存儲服務器請求文件時使用的命令,download命令包含的參數有命令類型command、用戶名username、登錄密碼password、請求文件的名稱fileName;
responseData命令如圖7-5:用于存儲服務器將加密文件返回到客戶端時使用的命令,responseData包含的參數有命令類型command、加密的文件數據fileData、加密數據對應的dateTime;
requestUnlock命令如圖7-6:用于客戶端向密鑰認證中心請求密鑰解密文件時使用的命令,requestUnlock命令包含的參數有命令類型command、用戶名username、登錄密碼password,加密文件對應的dateTime;
responseUnlock命令如圖7-7:用于密鑰認證中心將密鑰返回到客戶端時使用的命令,responseUnlock命令包含的參數有命令類型command、解密的密鑰privatekey;
本發明實現了存儲與加密的分離,密鑰認證中心與存儲服務器互相不可見,即使其中一方被攻擊,用戶的數據依然能夠得到保障。