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