本發(fā)明屬于信息安全技術(shù)領(lǐng)域,具體涉及一種云數(shù)據(jù)庫中密鑰管理樹的密鑰撤銷方法,用于對云數(shù)據(jù)庫中密鑰管理樹進(jìn)行有效密鑰撤銷管理。
背景技術(shù):
隨著信息化和大數(shù)據(jù)時代的到來,人們越來越多的將自己的數(shù)據(jù)外包到云服務(wù)器進(jìn)行存儲和管理,然而,近些年來,云安全時間層出不窮,最好的安全保護(hù)方法就是對數(shù)據(jù)進(jìn)行加密;然而對海量數(shù)據(jù)的加密問題會帶來復(fù)雜的密鑰管理問題。對海量數(shù)據(jù)的加密會產(chǎn)生大量的密鑰,這些密鑰也會占用大量的存儲空間,如何存儲大量密鑰對用戶是一個巨大挑戰(zhàn)。目前,有很多采用樹形結(jié)構(gòu)來進(jìn)行密鑰的存儲與管理。然而,現(xiàn)有技術(shù)方案在撤銷過程中,采用了對密鑰管理樹進(jìn)行剪枝并重新建立新的密鑰管理樹的方法,在用戶頻繁更換的云存儲系統(tǒng)中,會帶來大量的存儲開銷和管理開銷。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種云數(shù)據(jù)庫中密鑰管理樹的密鑰撤銷方案,解決了現(xiàn)有云數(shù)據(jù)庫當(dāng)中密鑰管理樹進(jìn)行密鑰撤銷時,密鑰存儲開銷隨著撤銷次數(shù)的增加而增大帶來的存儲開銷和管理難度增大以及重加密過程中帶來大量計算開銷的問題。
為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是,一種云數(shù)據(jù)庫中密鑰管理樹的密鑰撤銷方法,對于已有的云數(shù)據(jù)庫密鑰管理樹結(jié)構(gòu),在樹結(jié)構(gòu)生成的同時對應(yīng)生成密鑰撤銷管理樹,記錄每一個云數(shù)據(jù)庫密鑰管理樹節(jié)點的撤銷狀態(tài),當(dāng)有用戶進(jìn)行撤銷操作時,更新對應(yīng)的密鑰撤銷管理樹狀態(tài),完成撤銷過程。
包括以下步驟:
步驟一、建立密鑰撤銷狀態(tài)管理樹:
步驟二、密鑰的計算:
將帶密鑰的Hash樹的根節(jié)點設(shè)置為根密鑰Kr,用父節(jié)點密鑰值計算出各子節(jié)點的密鑰值,即計算帶密鑰的Hash樹中第x層中第y個節(jié)點對應(yīng)的密鑰值:
Kx,y=H(Kparent,x||y||*Sx,y)
其中Kparent是Kx,y的父節(jié)點對應(yīng)的密鑰,其為已知密鑰;H是一個將集合{0,1}*中元素映射到{0,1}256中的Hash函數(shù),其中{0,1}*代表任意長度的比特串集合,{0,1}256是長度為256的比特串集合,||代表串聯(lián)運算,這里使用x||y是為了保證所有分塊密鑰互不相同,Sx,y是節(jié)點的撤銷狀態(tài)值,在Sx,y前增減‘*’是為了避免直接串聯(lián)可能導(dǎo)致的兩個密鑰相同問題;上述計算出的帶密鑰的Hash樹中的各葉子節(jié)點對應(yīng)的密鑰值Kx,y,即為帶密鑰的Hash樹為每個明文數(shù)據(jù)表生成的互不相同的分塊密鑰;
步驟三、密鑰的撤銷:
31)當(dāng)用戶對密鑰分配樹中某些節(jié)點進(jìn)行密鑰撤銷操作時,計算密鑰撤銷樹對應(yīng)節(jié)點的Sx,y=Sx,y+1;
32)根據(jù)步驟二中密鑰計算過程中的公式重新計算密鑰,作為文件加密密鑰,分配給新的用戶,原有用戶的密鑰無法解密這些文件;
33)當(dāng)密鑰更新次數(shù)超過Sx,y的數(shù)域時,在步驟二中的計算公式中的Sx,y前面多添加一個‘*’,公式變?yōu)?/p>
Kx,y=H(Kparent,x||y||**Sx,y)
并且令對應(yīng)的Sx,y=0,再次超過數(shù)域時,重復(fù)步驟三中的過程3)。
步驟一的具體過程如下:
11)首先選擇一個長度為256比特的根密鑰Kr,設(shè)置其為帶密鑰的Hash樹的根密鑰Kr,并將其秘密保存;
12)根據(jù)用戶的需求定義樹的分支數(shù)和深度,建立帶密鑰的哈希樹;
13)在云數(shù)據(jù)庫的密鑰管理樹結(jié)構(gòu)建立的同時,對應(yīng)建立密鑰撤銷狀態(tài)管理樹建立結(jié)構(gòu)對應(yīng)的狀態(tài)管理樹;
4)將密鑰撤銷管理樹的每一個節(jié)點的撤銷狀態(tài)值Sx,y設(shè)置為0,表示此前沒有撤銷過。
與現(xiàn)有技術(shù)相比,本發(fā)明至少具有以下有益效果,在原有的數(shù)據(jù)庫密鑰管理樹方案中,如果有用戶撤銷密鑰,則需要將對應(yīng)節(jié)點從樹中去除,釋放出來的存儲空間重新組織樹進(jìn)行管理。在撤銷頻繁的系統(tǒng)中,將會產(chǎn)生大量殘缺的管理樹,存儲開銷與管理開銷十分巨大,當(dāng)殘缺樹過多時,為了有效管理,還需要對這些樹對應(yīng)的文件進(jìn)行重加密,帶來大量的計算開銷,采用本方案,在用戶密鑰撤銷過程中,在不必對原有密鑰管理樹結(jié)構(gòu)進(jìn)行任何改變,即可完成密鑰撤銷過程,節(jié)省潛在的存儲開銷、管理開銷和計算開銷。
附圖說明
圖1為本發(fā)明的密鑰撤銷狀態(tài)管理樹建立過程;
圖2為累計密鑰撤銷過程中密鑰樹數(shù)量的對比。
具體實施方式
下面結(jié)合附圖和具體實施方式對本發(fā)明進(jìn)行詳細(xì)說明。
本發(fā)明包括以下步驟:
1.密鑰撤銷狀態(tài)管理樹建立過程:
11)首先選擇一個長度為256比特的根密鑰Kr,設(shè)置其為帶密鑰的Hash樹的根密鑰Kr,并將其秘密保存;
12)根據(jù)用戶的需求定義樹的分支數(shù)和深度,建立帶密鑰的哈希樹;
13)如圖1所示,在云數(shù)據(jù)庫的密鑰管理樹結(jié)構(gòu)建立的同時,對應(yīng)建立密鑰撤銷狀態(tài)管理樹建立結(jié)構(gòu)對應(yīng)的狀態(tài)管理樹;此處以一種帶密鑰的哈希樹為例,此過程對各種密鑰管理樹結(jié)構(gòu)具有普適性,此處僅舉一例;
14)將密鑰撤銷管理樹的每一個節(jié)點的撤銷狀態(tài)值Sx,y設(shè)置為0,表示此前沒有撤銷過。
2.密鑰計算過程:
將帶密鑰的Hash樹的根節(jié)點設(shè)置為根密鑰Kr,用父節(jié)點密鑰值計算出各子節(jié)點的密鑰值,即計算帶密鑰的Hash樹中第x層中第y個節(jié)點對應(yīng)的密鑰值:
Kx,y=H(Kparent,x||y||*Sx,y)
其中Kparent是Kx,y的父節(jié)點對應(yīng)的密鑰,其為已知密鑰;H是一個將集合{0,1}*中元素映射到{0,1}256中的Hash函數(shù),其中{0,1}*代表任意長度的比特串集合,{0,1}256是長度為256的比特串集合,||代表串聯(lián)運算,這里使用x||y是為了保證所有分塊密鑰互不相同,在Sx,y前增減‘*’是為了避免直接串聯(lián)可能導(dǎo)致的兩個密鑰相同問題。上述計算出的帶密鑰的Hash樹中的各葉子節(jié)點對應(yīng)的密鑰值Kx,y,即為帶密鑰的Hash樹為每個明文數(shù)據(jù)表生成的互不相同的分塊密鑰。
3.密鑰撤銷過程:
31)當(dāng)用戶對密鑰分配樹中某些節(jié)點進(jìn)行密鑰撤銷操作時,計算密鑰撤銷樹對應(yīng)節(jié)點的Sx,y=Sx,y+1;
32)根據(jù)密鑰計算過程中的公式重新計算密鑰,作為文件加密密鑰,分配給新的用戶,原有用戶的密鑰無法解密這些文件;
33)當(dāng)密鑰更新次數(shù)超過Sx,y的數(shù)域時,在計算公式中的Sx,y前面多添加一個‘*’,公式變?yōu)?/p>
Kx,y=H(Kparent,x||y||**Sx,y)
并且令對應(yīng)的Sx,y=0,再次超過數(shù)域時,重復(fù)此過程。
本發(fā)明通過引進(jìn)密鑰撤銷狀態(tài)樹來控制密鑰的更新,當(dāng)解決因訪問權(quán)限的變更引起的密鑰更新而導(dǎo)致的系統(tǒng)效率問題,具體有如下三條:
1.現(xiàn)有的技術(shù)在密鑰撤銷時會減去當(dāng)前密鑰樹的枝葉,再為空余出來的存儲空間重新建立密鑰樹,我們的方案不需要減去枝葉也不用新建密鑰樹,直接更新狀態(tài)值S即可完成存儲空間重分配。
2.現(xiàn)有技術(shù)在撤銷過程中密鑰樹越來越多,不好管理,本方案密鑰撤銷過程中密鑰樹數(shù)量不變。
3.現(xiàn)有技術(shù)在殘缺密鑰樹很多時為了提高系統(tǒng)管理效率,需要完全重建所有密鑰樹,并對所有文件重加密,帶來大量的計算開銷,本發(fā)明不存在殘缺密鑰樹問題,不需要重新加密。
如圖2為累計密鑰撤銷過程中密鑰樹數(shù)量的對比:從圖中可以看出,現(xiàn)有技術(shù)方案隨著撤銷操作的累計,密鑰管理樹的數(shù)量會越來越多,而采用本發(fā)明的密鑰撤銷方法,密鑰管理樹的數(shù)量不會發(fā)生變化,進(jìn)而節(jié)省潛在的存儲開銷、管理開銷和計算開銷。