本发明属于信息安全技术领域,具体涉及一种云数据库中密钥管理树的密钥撤销方法,用于对云数据库中密钥管理树进行有效密钥撤销管理。
背景技术:
随着信息化和大数据时代的到来,人们越来越多的将自己的数据外包到云服务器进行存储和管理,然而,近些年来,云安全时间层出不穷,最好的安全保护方法就是对数据进行加密;然而对海量数据的加密问题会带来复杂的密钥管理问题。对海量数据的加密会产生大量的密钥,这些密钥也会占用大量的存储空间,如何存储大量密钥对用户是一个巨大挑战。目前,有很多采用树形结构来进行密钥的存储与管理。然而,现有技术方案在撤销过程中,采用了对密钥管理树进行剪枝并重新建立新的密钥管理树的方法,在用户频繁更换的云存储系统中,会带来大量的存储开销和管理开销。
技术实现要素:
本发明的目的是提供一种云数据库中密钥管理树的密钥撤销方案,解决了现有云数据库当中密钥管理树进行密钥撤销时,密钥存储开销随着撤销次数的增加而增大带来的存储开销和管理难度增大以及重加密过程中带来大量计算开销的问题。
为了实现上述目的,本发明采用的技术方案是,一种云数据库中密钥管理树的密钥撤销方法,对于已有的云数据库密钥管理树结构,在树结构生成的同时对应生成密钥撤销管理树,记录每一个云数据库密钥管理树节点的撤销状态,当有用户进行撤销操作时,更新对应的密钥撤销管理树状态,完成撤销过程。
包括以下步骤:
步骤一、建立密钥撤销状态管理树:
步骤二、密钥的计算:
将带密钥的Hash树的根节点设置为根密钥Kr,用父节点密钥值计算出各子节点的密钥值,即计算带密钥的Hash树中第x层中第y个节点对应的密钥值:
Kx,y=H(Kparent,x||y||*Sx,y)
其中Kparent是Kx,y的父节点对应的密钥,其为已知密钥;H是一个将集合{0,1}*中元素映射到{0,1}256中的Hash函数,其中{0,1}*代表任意长度的比特串集合,{0,1}256是长度为256的比特串集合,||代表串联运算,这里使用x||y是为了保证所有分块密钥互不相同,Sx,y是节点的撤销状态值,在Sx,y前增减‘*’是为了避免直接串联可能导致的两个密钥相同问题;上述计算出的带密钥的Hash树中的各叶子节点对应的密钥值Kx,y,即为带密钥的Hash树为每个明文数据表生成的互不相同的分块密钥;
步骤三、密钥的撤销:
31)当用户对密钥分配树中某些节点进行密钥撤销操作时,计算密钥撤销树对应节点的Sx,y=Sx,y+1;
32)根据步骤二中密钥计算过程中的公式重新计算密钥,作为文件加密密钥,分配给新的用户,原有用户的密钥无法解密这些文件;
33)当密钥更新次数超过Sx,y的数域时,在步骤二中的计算公式中的Sx,y前面多添加一个‘*’,公式变为
Kx,y=H(Kparent,x||y||**Sx,y)
并且令对应的Sx,y=0,再次超过数域时,重复步骤三中的过程3)。
步骤一的具体过程如下:
11)首先选择一个长度为256比特的根密钥Kr,设置其为带密钥的Hash树的根密钥Kr,并将其秘密保存;
12)根据用户的需求定义树的分支数和深度,建立带密钥的哈希树;
13)在云数据库的密钥管理树结构建立的同时,对应建立密钥撤销状态管理树建立结构对应的状态管理树;
4)将密钥撤销管理树的每一个节点的撤销状态值Sx,y设置为0,表示此前没有撤销过。
与现有技术相比,本发明至少具有以下有益效果,在原有的数据库密钥管理树方案中,如果有用户撤销密钥,则需要将对应节点从树中去除,释放出来的存储空间重新组织树进行管理。在撤销频繁的系统中,将会产生大量残缺的管理树,存储开销与管理开销十分巨大,当残缺树过多时,为了有效管理,还需要对这些树对应的文件进行重加密,带来大量的计算开销,采用本方案,在用户密钥撤销过程中,在不必对原有密钥管理树结构进行任何改变,即可完成密钥撤销过程,节省潜在的存储开销、管理开销和计算开销。
附图说明
图1为本发明的密钥撤销状态管理树建立过程;
图2为累计密钥撤销过程中密钥树数量的对比。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明包括以下步骤:
1.密钥撤销状态管理树建立过程:
11)首先选择一个长度为256比特的根密钥Kr,设置其为带密钥的Hash树的根密钥Kr,并将其秘密保存;
12)根据用户的需求定义树的分支数和深度,建立带密钥的哈希树;
13)如图1所示,在云数据库的密钥管理树结构建立的同时,对应建立密钥撤销状态管理树建立结构对应的状态管理树;此处以一种带密钥的哈希树为例,此过程对各种密钥管理树结构具有普适性,此处仅举一例;
14)将密钥撤销管理树的每一个节点的撤销状态值Sx,y设置为0,表示此前没有撤销过。
2.密钥计算过程:
将带密钥的Hash树的根节点设置为根密钥Kr,用父节点密钥值计算出各子节点的密钥值,即计算带密钥的Hash树中第x层中第y个节点对应的密钥值:
Kx,y=H(Kparent,x||y||*Sx,y)
其中Kparent是Kx,y的父节点对应的密钥,其为已知密钥;H是一个将集合{0,1}*中元素映射到{0,1}256中的Hash函数,其中{0,1}*代表任意长度的比特串集合,{0,1}256是长度为256的比特串集合,||代表串联运算,这里使用x||y是为了保证所有分块密钥互不相同,在Sx,y前增减‘*’是为了避免直接串联可能导致的两个密钥相同问题。上述计算出的带密钥的Hash树中的各叶子节点对应的密钥值Kx,y,即为带密钥的Hash树为每个明文数据表生成的互不相同的分块密钥。
3.密钥撤销过程:
31)当用户对密钥分配树中某些节点进行密钥撤销操作时,计算密钥撤销树对应节点的Sx,y=Sx,y+1;
32)根据密钥计算过程中的公式重新计算密钥,作为文件加密密钥,分配给新的用户,原有用户的密钥无法解密这些文件;
33)当密钥更新次数超过Sx,y的数域时,在计算公式中的Sx,y前面多添加一个‘*’,公式变为
Kx,y=H(Kparent,x||y||**Sx,y)
并且令对应的Sx,y=0,再次超过数域时,重复此过程。
本发明通过引进密钥撤销状态树来控制密钥的更新,当解决因访问权限的变更引起的密钥更新而导致的系统效率问题,具体有如下三条:
1.现有的技术在密钥撤销时会减去当前密钥树的枝叶,再为空余出来的存储空间重新建立密钥树,我们的方案不需要减去枝叶也不用新建密钥树,直接更新状态值S即可完成存储空间重分配。
2.现有技术在撤销过程中密钥树越来越多,不好管理,本方案密钥撤销过程中密钥树数量不变。
3.现有技术在残缺密钥树很多时为了提高系统管理效率,需要完全重建所有密钥树,并对所有文件重加密,带来大量的计算开销,本发明不存在残缺密钥树问题,不需要重新加密。
如图2为累计密钥撤销过程中密钥树数量的对比:从图中可以看出,现有技术方案随着撤销操作的累计,密钥管理树的数量会越来越多,而采用本发明的密钥撤销方法,密钥管理树的数量不会发生变化,进而节省潜在的存储开销、管理开销和计算开销。