一种云环境下的数据完整性验证方法与流程

文档序号:19156592发布日期:2019-11-16 00:52阅读:265来源:国知局
一种云环境下的数据完整性验证方法与流程

本发明属于数据隐私保护、安全范围查询领域,具体地,涉及一种云环境下的数据完整性验证方法。



背景技术:

随着云计算的快速发展和广泛使用,云凭借着其强大的存储和计算能力吸引了众多用户的关注,人们越来越多地利用云进行在线数据存储,并通过查询服务随时随地的检索数据;同时,由于移动设备的便携性和灵活性,人们对移动设备的依赖程度越来越高,移动云受到越来越多的关注。但是移动云环境下还是存在着数据隐私安全的问题,为了保护数据隐私,用户通常会先将数据加密再上传到云服务器,但是数据加密往往会降低数据的可用性,也会给数据查询带来更多的困难。针对云环境下数据的安全查询,主要包括两个方面:一是可搜索加密,即对数据进行加密之后依然能够对密文数据进行相关计算和正确查询;二是查询结果完整性验证,即验证云服务返回的查询结果是否正确和完整。

目前,针对可搜索加密的技术主要有保序函数加密和同态加密。保序函数加密能保证数据加密前后的大小顺序一致,但是这种方法容易受到基于统计分析的攻击影响。同态加密的计算结果解密后与未加密时的计算结果一样,但是该方法需要庞大的计算开销和存储开销。针对数据完整性验证的技术主要有merkle哈希树技术和链技术。merkle哈希树需要计算节点的哈希值;链技术往往需要对数据存储两次,因此这些方法都需要过多额外的计算开销和存储空间开销。

上述现有技术中的一些缺陷,使得它们不能应用于计算资源和存储空间都比较有限的移动设备中。其中,可搜索加密方法难以在安全性和计算复杂度之间取得良好的平衡;而数据完整性验证方法需要的额外资源开销大,具有一定局限性。



技术实现要素:

本发明的目的是提供一种云环境下的数据完整性验证方法,以轻量级的计算开销实现数据隐私安全,以轻量级的计算和存储空间对查询结果进行完整性验证,使得本发明能够应用到移动设备上。

为了实现上述目的,本发明提供一种云环境下的数据完整性验证方法,包括如下步骤,

a)数据拥有者构造明文平衡二叉树索引;

b)数据拥有者遍历所述明文平衡二叉树索引,对所述明文平衡二叉树索引的每个节点进行加密,得到密文平衡二叉树索引;

c)数据拥有者将所述密文平衡二叉树索引上传到云服务器;

d)数据使用者将查询边界值加密后向云服务器发起查询请求;

e)云服务器根据查询请求检索数据,并将查询结果和验证对象返回;

f)数据使用者对云服务器返回的结果进行解密;

g)数据使用者构造向量邻域链并验证查询结果数据的完整性。

进一步地,在所述步骤a)中,所述明文平衡二叉树索引的构造过程包括以下步骤,

a01)从包含n个数据项的数据集d中任选一个数据插入到树t中,并将这个数据从所述数据集d中删除,所述数据集d中数据量减1;

a02)从当前插入的数据节点起向上寻找第一个不平衡的节点;

a03)若不存在不平衡节点,则无需对树t做任何调整;若存在不平衡点,则通过相应的对树t的调整使得所有节点平衡;

a04)循环执行所述步骤a01)到所述步骤a03),当所述数据集d为空时结束循环,返回所述树t作为完整的明文平衡二叉树索引。

进一步地,在所述步骤b)中,遍历所述明文平衡二叉树索引,将所述明文平衡二叉树索引加密成向量形式,包括以下步骤,

b01)数据拥有者设定向量长度l(l≥5),设定长度为l-2的基础向量;

b02)访问所述明文平衡二叉树索引的节点,对于当前访问节点,设定当前明文数据在所述向量中的位置p1,设定查询边界值在对应的位置p2,设定噪声数据在其余的l-2个位置,将单个数据值转化成长度为l的初级向量;

b03)随机选择一个正整数因子α,与所述长度为l的初级向量相乘;

b04)所述长度为l的初级向量与一个l×l的密钥矩阵相乘,转化成一个新的长度不变的向量;

b05)遍历所述明文平衡二叉树索引,对每一个节点都执行步骤b02)到步骤b04),将所有节点的键值均加密成向量形式。

更进一步地,在所述步骤b02)中,在位置p1嵌入明文数据,在位置p2嵌入数值-1,在l-2个位置中任选两个位置分别嵌入当前明文数据的左邻居和右邻居;所述左邻居和所述右邻居是当前明文数据在升序排序的明文数据集中的左边数值和右边数值;且噪声数据组成的噪声向量与基础向量正交。

进一步地,在步骤d)中,对查询边界值的加密,包括如下步骤,

d01)数据拥有者将所述向量长度l、所述基础向量和所述数据位置信息(p1,p2)发送给数据使用者;

d02)随机选定一个整数β,用β与基础向量相乘之后嵌入到向量中的l-2的噪声位置,在所述p1位置嵌入数字1,在所述p2位置嵌入查询上界值;

d03)随机选定一个整数β,用β与基础向量相乘之后嵌入到向量中的l-2的噪声位置,在所述p1位置嵌入数字1,在所述p2位置嵌入查询下界值;

d04)将查询边界向量与一个l×l的密钥矩阵相乘,分别转化成新的长度不变的向量。

进一步地,在所述步骤e)中,通过云服务器中的数据密文向量与所述查询边界值密文向量之间的点乘计算结果来判断所述云服务器中的数据与所述查询边界值的大小关系。

更进一步地,所述判断数据与查询边界值的大小关系的方法如下,若所述云服务器中的数据密文向量与所述查询边界值密文向量之间的点乘计算结果大于0,则表示所述明文数据值大于查询边界值;若所述云服务器中的数据密文向量与所述查询边界值密文向量之间的点乘结果小于0,则表示所述明文数据值小于查询边界值;若所述云服务器中的数据密文向量与所述查询边界值密文向量之间的点乘计算结果等于0,则表示所述明文数据值等于查询边界值。

进一步地,在所述步骤f)中,在解密过程中,解密密钥包括所述密钥矩阵、所述原始数据在向量中的位置信息以及嵌入作为噪声数据的邻居数据的位置信息。

进一步地,在所述步骤g)中,将明文数据从所述明文向量中提取出来,并按照升序进行排序;将所述每个明文数据的邻居数据从所述明文向量的相应位置中提取出来,使得所述明文数据与其所述邻居数据构成一个邻域向量。

更进一步地,在所述邻域向量构成的向量邻域链中,当前向量中所述明文数据的左邻居噪声是上一个向量的明文数据,右邻居噪声是下一个向量的明文数据。

通过本发明的上述技术方案,本发明的云环境下的数据完整性验证方法的优点在于:

(1)本发明利用基于向量和矩阵相关的运算完成对数据的加密,以轻量级的计算开销实现数据隐私安全;

(2)本发明在数据完整性验证阶段,利用数据加密过程中的噪声信息作为验证信息,通过构造向量邻域链的方式,实现了以轻量级的计算和存储空间对查询结果进行完整性验证的目的,使得本发明能够应用到移动设备上。

本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:

图1为本发明的云环境下的数据完整性验证方法的一种具体实施方式的流程图。

图2为本发明的云环境下的数据完整性验证方法的一种具体实施方式的构造平衡二叉树的变化过程图。

具体实施方式

以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。

如图1所示,本发明云环境下的数据完整性验证方法的一个实施例包括如下步骤,

s1数据拥有者构造明文平衡二叉树索引;

s2数据拥有者遍历平衡二叉树索引,对平衡二叉树索引的每个节点进行加密,得到包含密文平衡二叉树索引;

s3数据拥有者将包含密文平衡二叉树索引上传到云服务器;

s4数据使用者将查询边界值加密,向云服务器发起查询请求;

s5云服务器根据查询请求检索数据,并将查询结果和验证对象返回;

s6数据使用者对云服务器返回的结果进行解密;

s7数据使用者构造向量邻域链并验证查询结果的完整性。

在本发明的一个具体实施例中,在步骤s1中,所述明文数据的平衡二叉树索引的构造过程包括以下步骤,s101从包含n个数据项的数据集d中任选一个数据插入到树t中,并将这个数据从所述数据集d中删除,所述数据集d中数据量减1;s102从当前插入的数据节点起向上寻找第一个不平衡的节点;s103若不存在不平衡节点,则无需对树做任何调整;若存在不平衡点,则通过相应的调整使得所有节点平衡;s104循环执行所述步骤s101到所述步骤s103,当所述数据集d为空时结束循环,返回所述树t作为完整的明文平衡二叉树索引。构造平衡二叉树是为了构建数据索引,从而可以提高查询效率。

本发明的一个实施例中,步骤s2包括:s201数据拥有者设定向量长度l(l≥5),设定长度为l-2的基础向量;s202访问所述平衡二叉树的节点,对于当前访问节点,设定当前明文数据在所述向量中的位置p1,设定查询边界值在对应的位置p2,设定噪声数据在其余的l-2个位置,在l-2个位置中任选两个位置分别嵌入当前明文数据的左邻居和右邻居;所述左邻居和所述右邻居是当前明文数据在升序排序的明文数据集中的左边数值和右边数值;且噪声数据组成的噪声向量与基础向量正交;将单个数据值转化成长度为l的初级向量;s203随机选择一个正整数因子α,与所述长度为l的初级向量相乘;s204所述长度为l的初级向量与一个l×l的密钥矩阵相乘,转化成一个新的长度不变的向量;s205遍历所述平衡二叉树,对每一个节点都执行步骤s202到步骤s204,将所有节点的键值均加密成向量形式。在步骤s203中,引入正整数因子α是为了在查询处理阶段做向量点乘时模糊掉数据值与查询边界值之间的具体差值;并且正整数因子α与初级向量相乘之后不会影响数据和边界值之间大小关系的判断。对于单个的数据值,通过添加噪声向量的方式将其转化成向量形式,并且为了实现正确的查询,对数据进行向量化的过程中添加的噪声向量正交于对查询边界进行向量化的过程中添加的噪声向量。

本发明的一个实施例中,步骤s4包括:s401数据拥有者将所述向量长度l、所述基础向量和所述数据位置信息(p1,p2)发送给数据使用者;s402随机选定一个整数β,用β与基础向量相乘之后嵌入到向量中的l-2的噪声位置,在所述p1位置嵌入数字1,在所述p2位置嵌入查询上界值;s403随机选定一个整数β,用β与基础向量相乘之后嵌入到向量中的l-2的噪声位置,在所述p1位置嵌入数字1,在所述p2位置嵌入查询下界值;s404将查询边界向量与一个l×l的密钥矩阵相乘,分别转化成新的长度不变的向量,且最终向量中的数据值与初级向量中的数据值完全不一样,达到加密的目的。

在本发明的一个实施例中,在s5步骤中,通过云服务器中的数据密文向量与查询边界值密文向量之间的点乘计算来判断云服务器中的数据与查询边界值的大小关系,若云服务器中的数据密文向量与所述查询边界值密文向量之间的点乘计算结果大于0,则表示明文数据值大于查询边界值;若云服务器中的数据密文向量与查询边界值密文向量之间的点乘结果小于0,则表示所述明文数据值小于查询边界值;若云服务器中的数据密文向量与查询边界值密文向量之间的点乘计算结果等于0,则表示所述明文数据值等于查询边界值。

通过比较数据与查询边界值的大小关系来判断数据是否在给定的范围内,然后将在范围内的数据返回给使用者(从密文角度来说就是将密文向量返回给使用者)。

基于平衡二叉树索引查找验证对象的具体算法如下所示:

本发明的一个实施例中,在所述步骤s6中,在解密过程中,解密密钥包括所述密钥矩阵、所述原始数据在向量中的位置信息以及嵌入作为噪声数据的邻居数据的位置信息。

本发明的一个实施例中,在所述步骤s7中,将明文数据从所述明文向量中提取出来,并按照升序进行排序;将所述每个明文数据的邻居数据从所述明文向量的相应位置中提取出来,使得所述明文数据与其所述邻居数据构成一个邻域向量。

在所述邻域向量构成的向量邻域链中,当前向量中所述明文数据的左邻居噪声是上一个向量的明文数据,右邻居噪声是下一个向量的明文数据。构造向量邻域链可以验证查询结果的完整性,检查查询结果中是否有数据被篡改,是否有缺漏的数据,从而实现安全的范围查询。

实施例

初始设定,数据集d包含数据项{3,5,6,8,9},该数据集下界为1,上界为11。特别说明的是,上下界不包含在数据集之内;查询范围为[4,7];密文向量长度l设定为5,则长度为l-2,即为3的基础向量为(-2,3,1)。在长度为5的向量中第二个位置为p1,第三个位置为p2,其他位置为噪声数据所在的位置。

通过本发明的云环境下的数据完整性验证方法,

s1数据拥有者构造明文平衡二叉树索引,步骤如下:

s101从包含5个数据项的数据集d中任选一个数据插入到树t中,假如选择5,将数据5从所述数据集d中删除,所述数据集d中数据量减1,变成4;

s102从当前插入的数据节点起向上寻找第一个不平衡的节点;

s103若不存在不平衡节点,无需对树做任何调整;若存在不平衡点,则通过相应的调整使得所有节点平衡;

s104循环执行步骤s101到步骤s103。如图2所示,构造明文平衡二叉树的变化过程。

s2数据拥有者遍历平衡二叉树索引,对平衡二叉树索引的每个节点进行加密,得到包含密文平衡二叉树索引,步骤如下;

假设为中序遍历:3,5,6,8,9,数据集下界为1,上界为11。

s201数据拥有者设定向量长度l为5,设定长度为l-2。即为3的基础向量为(-2,3,1)。

s202设定在长度为5的向量中第二个位置为明文数据所在位置p1,第三个位置为查询边界值所在位置p2(在对明文数据加密的过程中,该位置即为数值-1),其他位置为噪声数据所在的位置,其中在噪声数据所在位置中选择前两个位置分别嵌入当前明文数据的左邻居和右邻居,并且噪声数据组成的长度为3的噪声向量与给定的基础向量正交。因此对于当前遍历的明文数据3,将其转化成初级向量形式为:(1,3,-1,5,-13)。需要说明的是,(1,5,-13)为噪声向量,且1,5分别为当前明文数据3的左邻居和右邻居,且(1,5,-13)与基础向量(-2,3,1)正交。

s203随机选择一个正整数因子α=2,与所述长度为5的初级向量相乘,变成(2,6,-2,10,-26)。

s204所述长度为5的初级向量与一个5×5的密钥矩阵相乘,转化成一个新的长度不变的向量,假定密钥矩阵为

特别说明的是,该密钥矩阵是下面这个原矩阵的逆矩阵:

而上面这个原矩阵的转置矩阵为:

于是,对明文数据3加密后的最终密文向量为(3404,-11446,11838,4998,-13090)。

同理,依次对其他明文数据5,6,8,9加密,并且假设随机选择的正整数因子α分别是3,4,2,6。以下只列出关键信息:

明文数据5的初级向量为:(3,5,-1,6,-12)

最终密文向量为:(5946,-19986,20670,8727,-22857)

明文数据6的初级向量为:(5,6,-1,8,-14)

最终密文向量为:(9352,-31436,32512,13728,-35952)

明文数据8的初级向量为:(6,8,-1,9,-15)

最终密文向量为:(5530,-18586,19222,8116,-21256)

明文数据9的初级向量为:(8,9,-1,11,-17)

最终密文向量为:(18726,-62940,65094,27486,-71982)

s3数据拥有者将包含密文平衡二叉树索引上传到云服务器;这里将明文索引树中各节点的明文数据替换成该明文数据对应的密文向量即可。

s4数据使用者将查询边界值加密,向云服务器发起查询请求(假设查询范围为[2,10]),

s401数据拥有者将所述向量长度l、所述基础向量和所述数据位置信息(p1,p2)发送给数据使用者,即向量长度l为5,长度为3的基础向量为(-2,3,1)。在长度为5的向量中第二个位置为明文数据所在位置p1(在对查询边界值加密的过程该位置即为数值1),第三个位置为查询边界值所在位置p2,其他位置为噪声数据所在的位置,并且噪声数据组成的长度为3的噪声向量与给定的基础向量共线,即数值上成比例。

s402随机选定一个整数β=2,用β与基础向量相乘之后嵌入到向量中的l-2的噪声位置,在所述p1位置嵌入数值1,在所述p2位置嵌入查询上界值,即查询上界7的初级向量形式为:(-4,1,7,6,2)。

s403随机选定另一个整数β=3,用β与基础向量相乘之后嵌入到向量中的l-2的噪声位置,在所述p1位置嵌入数字1,在所述p2位置嵌入查询下界值,即查询下界4的初级向量形式为:(-6,1,4,9,3)。

s404将查询边界向量与一个5×5的密钥矩阵相乘,分别转化成新的长度不变的向量,且最终向量中的数据值与初级向量中的数据值完全不一样,达到加密的目的。需要说明的是,对查询边界值加密使用的密钥矩阵应该是在对明文数据加密是使用的矩阵所对应原矩阵的转置矩阵,也就是在前面依次列出了三个矩阵,分别是逆矩阵、原矩阵、转置矩阵。因此这里使用的密钥矩阵为

于是,查询上界7的最终密文向量形式为:(31,41,83,5,53);查询下界4的最终密文向量形式为:(24,54,74,8,29)。

s5云服务器根据查询请求检索数据,并将查询结果和验证对象返回;这里通过数据密文向量与查询边界值密文向量之间的点乘计算来判断云服务器中的数据与查询边界值的大小关系,若云服务器中的数据密文向量与所述查询边界值密文向量之间的点乘计算结果大于0,则表示明文数据值大于查询边界值;若云服务器中的数据密文向量与查询边界值密文向量之间的点乘结果小于0,则表示所述明文数据值小于查询边界值;若云服务器中的数据密文向量与查询边界值密文向量之间的点乘计算结果等于0,则表示所述明文数据值等于查询边界值。

举一个例子说明:用明文数据5的密文向量形式(5946,-19986,20670,8727,-22857)分别与查询上界7的密文向量(31,41,83,5,53)和查询下界4的密文向量(24,54,74,8,29)做点乘计算,计算结果分别为-6,3。因为-6小于0,说明5小于上界7;因为3大于0,说明5大于下界4。结果正确!

验证对象本质上是查询结果集合中最大一项的右邻居。对于查询范围[4,7],查询结果集合为{5,6},该集合中最大的一项是6,6的右邻居是8,因此8是验证对象。同样的,在密文角度来看,8所对应的密文向量就是验证对象。

s6数据使用者对云服务器返回的结果进行解密;根据上述过程,云服务器会将密文向量(5946,-19986,20670,8727,-22857)和(9352,-31436,32512,13728,-35952)作为查询结果返回,将密文向量(5530,-18586,19222,8116,-21256)作为验证对象返回。

在解密过程中,解密密钥包括所述密钥矩阵、所述原始数据在向量中的位置信息以及嵌入作为噪声数据的邻居数据的位置信息。需要特别说明的是,这里的解密密钥矩阵应该是前面所述的原矩阵,即

将查询结果集合中的密文向量(5946,-19986,20670,8727,-22857)和(9352,-31436,32512,13728,-35952)分别与解密矩阵相乘,得到结果为(9,15,-3,18,-36)和(20,24,-4,32,-56),然后根据位置信息可知第二个位置为明文数据所在位置,第三个位置为数值-1所在位置,于是得知α分别是3,4,于是分别除以α得到初级向量形式为(3,5,-1,6,-12)和(5,6,-1,8,-14)。

将验证对象(5530,-18586,19222,8116,-21256)与解密矩阵相乘,得到接获为(12,16,-2,18,-30),可以得知α是2,然后得到初级向量形式为(6,8,-1,9,-15)。

s7数据使用者构造向量邻域链并验证查询结果的完整性。

在所述步骤s7中,将明文数据从所述明文向量中提取出来,并按照升序进行排序;将所述每个明文数据的邻居数据从所述明文向量的相应位置中提取出来,使得所述明文数据与其所述邻居数据构成一个邻域向量。于是可以构造向量邻域链为:(3,5,6)(5,6,8)(6,8,9)。可以看到三个向量中的元素构成链的结构,即第一个向量中的明文数据是5,它的右邻居是下一个向量的明文数据;第二个向量中的明文数据是6,它的左邻居是前一个向量的明文数据,它的右邻居是下一个向量的明文数据;第三个向量中的明文数据是8,它的左邻居是前一个向量的明文数据。

由此可以验证查询结果中包含的明文数据是5和6,符合查询范围[4,7],验证对象包含的明文数据是8,不在范围[4,7]内,这一部分正确。另外由链中的第一个向量可知,明文数据5的左邻居是3,3不在给定查询范围内,由验证对象可知明文数据8的左邻居是6,6在给定查询范围内,这一部分也正确。综上所述,返回的查询结果全都符合查询范围,并且链的连续性说明查询结果也是完整的,并没有漏掉一些符合查询范围的数据。

通过上述描述可知,本发明的云环境下的数据完整性验证方法的优点在于,本发明的云环境下的数据完整性验证方法利用基于向量和矩阵相关的运算完成对数据的加密,以轻量级的计算开销实现数据隐私安全;并且,本发明的云环境下的数据完整性验证方法在数据完整性验证阶段,利用数据加密过程中的噪声信息作为验证信息,通过构造向量邻域链的方式,实现了以轻量级的计算和存储空间对查询结果进行完整性验证的目的,使得本发明能够应用到移动设备上。

以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。

此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1