一种云计算环境中低调整率的保序加密方法与流程

文档序号:12035081阅读:267来源:国知局
本发明涉及一种云计算环境中对存储数据进行保序加密的方法,属于信息安全
技术领域
:。
背景技术
::随着云计算技术的不断发展,大量用户数据被上传并存储在云端数据库中,在有效利用这些数据的同时,保证用户隐私信息的安全,成为加密算法的研究热点之一。传统数据加密方案虽然可以有效降低存储在不可信服务器端机密信息的泄露,但由于无法直接对密文进行有效操作,因而需要先在客户端对密文解密后才能进行相关计算,浪费了云计算平台的计算能力。一种可行方案是将保序加密ope(order-preservingencryption)方案与云计算平台结合,允许用户在云端直接对密文进行特定计算。比较大小是数据库中常见的操作,如对某列数据进行比较、排序或范围查询等。ope方案可以在提供较高安全保护级别的同时,为用户提供基于云端密文的有效计算服务。mope(mutable-orderpreservingencoding)是一种除顺序信息以外,不会泄漏任何其他明文信息的保序加密方案,核心思想是利用平衡二叉搜索树的结构对密文数据进行编码。该方案利用二叉搜索树的性质对数据按顺序进行编码,数据库中同时存储加密后的密文数据与其对应的保序编码。然而利用平衡二叉搜索树来编码,虽然能使查找比较操作效率较高,但会因为需要保证二叉搜索树的平衡性,在数据库大量进行插入或删除操作时,导致编码的频繁变更,给服务器带来很大的开销。技术实现要素:本发明所要解决的技术问题是针对
背景技术
:的缺陷,提供一种云计算环境中对存储数据进行保序加密的方法,在保证数据安全性的同时,可以直接对密文数据进行比较等操作,提高密文操作的效率。本发明为了解决上述技术问题,采用如下技术方案:一种云计算环境中低调整率的保序加密方法,包括以下步骤:步骤一、从密文数据库中的逻辑二叉树ope_tree的根节点开始依次获取密文,将密文解密后获得加密前的明文,将其依次与待加密的明文进行比较,确定待加密明文的插入路径;步骤二、从插入节点向上逐级回溯父节点,判断其左右子树的高度之差是否超过平衡因子:若是,则进入步骤三,若否,则退出;步骤三、查找并保存失衡二叉树的节点信息;步骤四、根据失衡二叉树,构建重排序完全二叉树;步骤五、根据重排序完全二叉树节点数组调整失衡二叉树,构建更新后的平衡二叉树,并更新相关节点的高度和编码。进一步的,本发明的云计算环境中低调整率的保序加密方法,在步骤一中,记ope_tree为数据库中的逻辑二叉树,v为待加密的明文,以如下步骤计算明文v的插入路径path:1.1、用户端与服务器进行交互,获取ope_tree根节点的密文c′,此时path为空字符串;1.2、客户端用户解密密文c′,从而获得加密前的明文v′;1.3、判断待插入明文v与明文v′的大小关系:若v<v′,则向左进行查找,path=path+“0”;若v=v′,则找到插入节点;若v>v′,则向右进行查找,path=path+“1”;1.4、服务器基于用户端的反馈信息,返回下一个密文c′,并执行步骤1.2;1.5、当找到v,或者服务器到达树的一个空节点时,终止步骤,得到插入路径path。进一步的,本发明的云计算环境中低调整率的保序加密方法,步骤二的具体步骤如下:2.1、根据插入路径path,从插入节点的父节点开始向根节点回溯,设当前回溯节点为p;2.2、查询数据库得到节点p和其左、右子树的原高度,新节点的插入会导致高度的改变,节点p的新高度为左、右子树高度较大值加1;2.3、比较插入新节点前后节点p的高度,判断avl-n树的平衡性:如果高度不变,则avl-n树依然平衡,不需要重平衡,本次插入操作结束;否则,继续执行步骤2.4;2.4、判断节点p的左、右子树高度差值是否超过平衡因子n,若超过则执行步骤三;否则更新节点p高度,继续往上回溯,节点p指向当前节点父节点,转步骤2.2。进一步的,本发明的云计算环境中低调整率的保序加密方法,步骤三中,记path为失衡节点的路径,查找并保存失衡二叉树的(2n+5)个节点信息,存入节点数组node[],具体步骤如下:3.1、将失衡节点作为根节点,存入node[i],i=1;3.2、比较path+“0”节点和path+“1”节点的高度,将高度较大的节点作为主干节点,较小的节点作为从属节点;将主干节点存入node[i+1],从属节点存入node[i+n+3],i=i+1,若i>n+1,转步骤3.4,否则转步骤3.3;3.3、将主干节点作为新根节点,并根据主干节点相对父节点的左右方向在path后补“0”或“1”,转步骤3.2;3.4、保存失衡二叉树的节点信息:node[n+3]=新根节点的左孩子,node[2n+5]=新根节点的右孩子。进一步的,本发明的云计算环境中低调整率的保序加密方法,步骤四构建重排序完全二叉树时,记node[]为节点数组,index[]为重排序完全二叉树节点数组,具体步骤如下:4.1、中序遍历失衡二叉树,得到对应的编号数组ubtarray[];4.2、构建包含(2n+5)个节点的有序的完全平衡二叉树,中序遍历完全平衡二叉树,得到完全二叉树数组cbtarray[];4.3、根据两个数组:cbtarray[]、ubtarray[],构建重排序完全二叉树,得到对应的广度优先遍历数组index[];然后从1到2n+5给i依次赋值,得到index[cbtarray[i]]=ubtarray[i]。进一步的,本发明的云计算环境中低调整率的保序加密方法,步骤五具体步骤如下:5.1、更新平衡二叉树的节点高度,从n+2到1给i依次赋值,更新后的平衡二叉树i节点的左孩子为index[2*i],右孩子为index[2*i+1],以i节点为根节点的子树高度为其左右孩子中较高的子树高度加1;5.2、记根节点路径path为原始失衡节点的路径,更新节点编码,节点的左孩子路径编码为path=path+“0”,右孩子路径编码为path=path+“1”。本发明采用以上技术方案,与现有技术相比具有以下技术效果:本发明利用广义的平衡二叉搜索树,实现了可变保序编码方案gmope,并取得了较为理想的实验结果。把该保序加密方案运用在数据加密系统中,可以让客户端直接对密文数据库中的数据进行检索等操作,且支持任意类型数据的保序加密。gmope加密方案允许用户自定义平衡约束条件,采用新型的重平衡调整方法,既保证了保序加密方案的可变性,又减少了重平衡的次数,提高了效率。与现有方案对比,由于本发明提出的方法采用广义平衡二叉树avl-n实现编码操作,减少重平衡操作,显著提高了密文数据库的操作效率。附图说明图1是加密方案的流程图。图2是客户端与数据库交互示意图。图3是失衡二叉树的重平衡详细过程图。具体实施方式下面结合附图对本发明的技术方案的实施作进一步的详细描述:本发明针对云计算中对加密数据进行操作的效率问题,提出一种广义可变保序编码方案gmope,允许用户自定义加密算法与调整策略,保留被加密明文的顺序关系,使用户能直接对数据库中密文进行顺序相关操作。该方案基于广义平衡二叉搜索树(avl-n)进行保序编码,支持任意数据类型的保序加密,运用新型重平衡调整策略,提高数据库增减操作的效率,除顺序信息以外,不会泄漏任何其他明文信息。如图1所示,该方法包括以下步骤:步骤一:查找明文v的插入路径记ope_tree为数据库中的逻辑二叉树,v为待加密的明文,以如下步骤计算插入路径path:1.1用户端与服务器进行交互,获取ope_tree根节点的密文c′,此时path为空字符串;1.2客户端用户解密密文c′,从而获得加密前的明文v′;1.3判断待插入明文v与明文v′的大小关系。若v<v′,则向左进行查找,path=path+“0”;若v=v′,则找到节点;若v>v′,则向右进行查找,path=path+“1”;1.4服务器基于用户端的反馈信息,返回下一个密文c′,并执行步骤1.2;1.5当找到v,或者服务器到达树的一个空节点时,算法终止,得到插入路径path。如图2所示,数据库中存储了69,32,20,10,25加密后的密文、对应的编码信息。ope_tree是数据库中的逻辑平衡二叉树,其中阴影部分的明文在实际数据库中不存在。左、右孩子与父节点之间的关系通过编码来标识,path+“0”为左孩子,path+“1”为右孩子。表格ope_table记录了密文数据和对应的保序编码(十进制数字仅表明密文顺序),以及二叉树中每个节点的高度。当插入新数据55时,按算法1的步骤操作,依次与32、69比较后得到插入位置的路径path为10。根据路径path进行二进制编码,先在path后补“1”,若还有没有达到规定长度,则后续位置补“0”直到达到规定长度ope_length,即为该节点的二进制编码。例如,55的编码为[10]1。将密文enc(55)和对应编码插入数据库即完成了插入过程,其中enc()函数是任意可以和gmope算法结合的加密算法。通用编码公式定义如下:ope_encoding=[path]10…0步骤二:判断avl-n树的平衡性从插入节点向上逐级回溯父节点,判断其左右子树的高度之差是否超过平衡因子n,从而决定是否需要重平衡算法,步骤如下:2.1根据路径path,从插入节点的父节点开始向根节点回溯,设当前回溯节点为p;2.2查询数据库得到节点p和其左、右子树的原高度。新节点的插入可能会导致高度的改变,节点p的新高度为左、右子树高度较大值加1;2.3比较插入新节点前后节点p的高度,判断avl-n树的平衡性。如果高度不变,说明avl-n树依然平衡,不需要重平衡,本次插入操作结束;否则,继续2.4;2.4判断节点p的左、右子树高度差值是否超过平衡因子n,若超过则执行步骤三;否则更新节点p高度,继续往上回溯,节点p指向当前节点父节点,转2.2;步骤三:查找并保存失衡二叉树的节点信息记path为失衡节点的路径,查找并保存失衡二叉树的(2n+5)个节点信息,存入节点数组node[],具体步骤如下:3.1将失衡节点作为根节点,存入node[i](i=1);3.2比较path+“0”节点和path+“1”节点的高度,高度较大的节点作为主干节点,较小的作为从属节点。主干节点存入node[i+1],从属节点存入node[i+n+3]。i=i+1,若i>n+1,转3.4,否则转3.3;3.3将主干节点作为新根节点,并根据主干节点相对父节点的左右方向在path后补“0”或“1”,转3.2;3.4node[n+3]=新根节点的左孩子,node[2n+5]=新根节点的右孩子。以图3中的unbalancedbinarytree为例(n=1),假设用户插入节点3后(在此3为节点的编号),造成了节点1、2和节点3的不平衡,并通过步骤(2)回溯到节点1,标记为失衡节点。继续步骤(3),将失衡节点,即节点1的相关信息存入节点数组node[1]。比较左右孩子的高度,左孩子高度为2,右孩子高度为0,因此左孩子,即为节点2标记为主干节点,存入node[2],相应的右孩子存入node[5]。之后依次类推:节点2的左孩子高度较高,标记为新的主干节点,存入node[3];右孩子存入node[6]。最后i=3>2=n+1,节点3的左孩子直接存入node[4],右孩子直接存入node[5]。至此失衡节点下属的二叉树节点标记完成,也完成了保存工作。步骤四:构建重排序完全二叉树记node[]为节点数组,index[]为重排序完全二叉树节点数组,具体步骤如下:4.1中序遍历失衡二叉树,得到对应的编号数组ubtarray[]。4.2构建包含(2n+5)个节点的有序的完全平衡二叉树,中序遍历完全二叉树,得到完全二叉树数组cbtarray[]。4.3根据上面的两个数组,构建重排序完全二叉树,得到对应的广度优先遍历数组index[]。从1到2n+5给i依次赋值,得到index[cbtarray[i]]=ubtarray[i]。以图3中失衡树(unbalancedbinarytree)为示例,说明具体重排节点的过程(n=1)。首先中序遍历图3中失衡树(unbalancedbinarytree)得到失衡树数组ubtarray[]=[4,3,7,2,6,1,5],然后按照失衡树中的节点数,即7个节点,构建有序完全二叉树(completebinarytree)并对其进行中序遍历,得到顺序信息记为数组cbtarray[]=[4,2,5,1,6,3,7]。结合ubtarray[]和cbtarray[],根据步骤(3)中公式index[cbtarray[i]]=ubtarray[i],得到重排后的索引数组index[]=[2,3,1,4,7,6,5],对应的是重排完全二叉树(rearrangedtree)的广度优先遍历结果。步骤五:将失衡二叉树重构,并更新相关节点的高度和编码根据重排序完全二叉树节点数组index[],构建更新后的平衡二叉树,并更新节点高度和编码,具体步骤如下:5.1更新其节点高度,从n+2到1给i依次赋值,更新后的平衡二叉树i节点的左孩子为index[2*i],右孩子为index[2*i+1],以i节点为根节点的子树高度为其左右孩子中较高的子树高度加1。5.2记根节点路径path为原始失衡节点的路径,更新节点编码,节点的左孩子路径编码为path=path+“0”,右孩子路径编码为path=path+“1”。根据图3中由步骤四得来的数组index[]=[2,3,1,4,7,6,5],构建重平衡操作后的二叉树(rearrangedtree)。同时更新节点高度。从最后的叶子节点开始,节点5、6的高度均为1,数组下标为2*3和2*3+1,它们的父节点为node[3],即节点1,更新高度为2。以此类推,更新节点3的高度为2,节点2的高度为3。从根节点开始更新编码。index[1]的路径即为原始失衡节点的path,因此可知新的根节点2的编码。节点2的左孩子为节点3,路径为path+“0”,编码可以由路径计算得出;右孩子为节点1,路径为path+“1”,编码计算得出。综上所述,本发明提出了一种广义可变保序编码方案gmope,通过放松对平衡二叉树平衡银子的约束条件,avl-n模型的设计,降低了数据库插入操作时的调整频率,提升了数据库操作的效率。以上所述仅是本发明的部分实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1