一种面向加密图的带约束近似最短距离查询方法与流程

文档序号:12034750阅读:359来源:国知局
一种面向加密图的带约束近似最短距离查询方法与流程
本发明涉及一种面向加密图的带约束近似最短距离查询方法,属于云计算安全领域。
背景技术
:近年来,基于图结构的应用蓬勃发展,如在线社交网络图、城市道路交通图、web图、生物网络图以及通信网络图。因此,在工业界和学术界产生了诸多管理、查询、分析图数据的系统。同时,随着云计算的发展,图数据持有者期望将图数据外包到云端,以节约本地的存储和计算成本。然而,由于云服务器不可信,这带来了严重的隐私问题,因为云端服务器能够窃取用户的图数据敏感信息。为了克服这种隐私泄露问题,一种直观的解决方案是首先将图数据进行加密,然后再将其外包到云端服务器。然而不幸的是,加密操作使得图数据的有效利用成为了一个棘手的难题,因为在加密数据上很难执行在明文图上的一些查询操作。最短距离查询作为一种最基本的图查询操作,它在给定源点和目的地点时,在图上寻找两点之间的最短距离。目前,已经有不少有价值的工作能够支持在图上执行隐私保护的最短距离查询操作。这些方法通常采用了一种新颖的被称为距离预言机的数据结构来回答任意两个图顶点的查询。然而,在实际应用中,用户通常在进行最短距离查询时需要考虑其他额外的约束。例如,在城市交通道路上,用户期望知道在交通费不超过一定限额时,从当前位置到目的地点的最短交通时间(或最短交通距离)。这种问题可以被归类到带约束的最短距离查询问题。在带约束最短距离查询方面已经都大量的研究工作,不过这些工作全部关注于非加密图上的查询。这些方法在执行带约束最短距离查询时涉及到诸多复杂操作,倘若这些操作不经过特殊的设计,则无法应用到加密图上。此外,针对已存在的加密图上的最短距离查询方案,由于其不能在云服务器端执行代价约束过滤操作,因此也不能够应用到带约束最短距离查询的语境中。技术实现要素:为了实现加密图上的带约束最短距离查询,本发明充分利用了对称密码学技术,在很好的保证了查询的高效性的同时完整的给出了在加密图上进行带约束最短距离查询的方法。本发明关注的图为有向图,具有一个顶点集和边集。每一条边具有两个权重,为了后续描述方便,现考虑一个权重为距离,另外一个权重为代价,也即约束条件。带约束最短距离查询就是寻找两点之间,满足代价约束的最短距离。本发明关联的系统模型涉及两个实体对象:用户和云服务器。本发明的核心工作流程如下:步骤1:用户端建立安全的图索引。步骤1.1预先通过已有的方法对输入图建立非加密两跳覆盖标签索引。非加密的图索引包含两部分,一部分是out_label标签集,一部分是in_label标签集。对于每一个顶点u,都关联一个out_label标签集合和一个in_label标签集合。out_label标签集合中的元素(顶点υ,距离d,代价c)对象表示从顶点u到顶点υ的距离为d,代价为c。in_label标签集合中的元素(顶点υ,距离d,代价c)对象表示从顶点υ到顶点u的距离为d,代价为c。步骤1.2给定安全参数,随机生成两个二进制比特串作为安全的加密密钥k1和k2。步骤1.3由加密密钥k1和k2生成用来加密图上距离权重的密钥kd和加密图上代价的密钥kc。密钥kd和kc的生成采用密码学上带密钥的伪随机函数。其中,kd是通过以k2为密钥,以k1拼接数字1作为输入来生成;kc是通过以k2为密钥,以k1拼接数字2作为输入来生成。步骤1.4初始化两个字典iout和iin。其中,iout与out_label标签集对应,用来存储加密out_label标签集索引的结果;iin与in_label标签集对应,用来存储加密in_label标签集索引的结果。步骤1.5针对输入图中的每一个顶点u,初始化一个计数器ω为0,并且初始化用来加密顶点u对应的out_label标签集和in_label标签集索引对象的子密钥sout,u、tout,u、sin,u、tin,u。初始化子密钥过程通过密码学上的伪随机函数来实现,其中,子密钥sout,u是以k2为密钥,顶点u拼接数字1为输入来生成;子密钥tout,u是以k2为密钥,顶点u拼接数字2为输入来生成;子密钥sin,u是以k2为密钥,顶点u拼接数字3为输入来生成;子密钥tin,u是以k2为密钥,顶点u拼接数字4为输入来生成;针对顶点u,执行步骤1.6、1.7和1.8。步骤1.6构建加密顶点u对应的out_label标签集索引。针对out_label标签集索引中的每一个对象(顶点υ,距离d,代价c),执行下列子步骤:步骤1.6.1使用密码学上的带密钥伪随机函数加密顶点υ,得到的输出结果作为加密后的顶点描述符v。加密过程使用密钥k2,且以顶点υ拼接数字0作为输入。步骤1.6.2计算加密距离和代价。针对距离d,首先通过对称密码学算法加密,如使用aes,加密过程使用k1作为密钥,得到加密结果然后用保序加密算法加密距离,以kd为密钥,得到加密结果针对代价c,使用保序加密算法加密,以kc为密钥,得到加密结果cu,v。步骤1.6.3将子步骤1.6.1和1.6.2中得到的加密的顶点描述符v,加密的距离加密的距离以及加密的代价cu,v进行拼接,得到结果这里的符号“||”表示数据拼接。将该结果与对应的密文掩码进行异或操作。密文掩码利用伪随机函数来生成,其中sout,u为输入密钥,计数器ω的值为输入。最后,将异或操作得到的结果存储到字典iout中。其中,存储的位置是通过利用密码学上的伪随机函数计算得到。这里,以tout,u为输入密钥,以计数器ω的值为输入。步骤1.7加密顶点u对应的in_label标签集索引。针对in_label标签集索引中的每一个对象(顶点υ,距离d,代价c),执行下列子步骤:步骤1.7.1使用密码学上的带密钥伪随机函数加密顶点υ,得到的输出结果作为加密后的顶点描述符v。加密过程使用密钥k2,且以顶点υ拼接数字0作为输入。步骤1.7.2计算加密距离和代价。针对距离d,首先通过对称密码学算法加密,如使用aes,加密过程使用k1作为密钥,得到加密结果然后用保序加密算法加密距离,以kd为密钥,得到加密结果针对代价c,使用保序加密算法加密,以kc为密钥,得到加密结果cu,v。步骤1.7.3将子步骤1.7.1和1.7.2中得到的加密的顶点描述符v,加密的距离加密的距离以及加密的代价cuv进行拼接,得到结果这里的符号“||”表示数据拼接。将该结果与对应的密文掩码进行异或操作。密文掩码利用伪随机函数来生成,其中sin,u为输入密钥,计数器ω的值为输入。最后,将异或操作得到的结果存储到字典iin中。其中,存储的位置是通过利用密码学上的伪随机函数计算得到。这里,以tin,u为输入密钥,以计数器ω的值为输入。步骤1.8将计数器ω的值增加1。步骤1.9输出字典iout和iin作为安全的加密图索引。针对原始输入图,采用任意的加密算法进行加密,如aes算法。步骤2:将加密的图索引和加密的图外包到云服务器端。步骤3:生成用户查询令牌。用户的查询包括起始点,目标点,代价约束值,期待服务器返回结果数量。对每一个这样的用户查询,通过下列子步骤生成安全的查询令牌:步骤3.1利用密码学上的伪随机函数生成查询子密钥sout,s、tout,s、sin,t、tin,t、kc。其中,子密钥sout,s的生成以k2为密钥,以起始点拼接数字1为输入。其中,子密钥tout,s的生成以k2为密钥,以起始点拼接数字2为输入。其中,子密钥sin,t的生成以k2为密钥,以目标点拼接数字3为输入。其中,子密钥tin,t的生成以k2为密钥,以目标点拼接数字4为输入。其中,子密钥kc的生成以k2为密钥,以密钥k1拼接数字2为输入。步骤3.2构建代价约束树对于给定的查询代价约束值θ,使用密钥kc构建具有指定深度的代价约束树tθ。代价约束树中的节点分别是θ/2,θ/4,3θ/4等一系列有规则值的加密密文。该树中每一个节点(圆圈表示的节点)的值为保序加密算法密文,该过程用密钥kc进行加密。步骤3.3假设设置返回结果数量为r,那么输出结果(sout,s,tout,s,sin,t,tin,t,tθ,r)作为用户的查询令牌。步骤4:云服务器端利用查询算法回答用户查询。步骤4.1获得查询起始点对应的索引元素集合。初始化一个集合ls,用于存储起始点对应的索引元素。初始化一个计数器ω的值为0。步骤4.2根据步骤1.6.3相同的密码学上的伪随机函数,以用户查询令牌中的tout,s为密钥,计数器ω的值为输入,得到输出,以该输出的值为位置索引,在字典iout中判断是否存在对应的值。如果不存在,跳转至步骤4.4。否则,执行步骤4.3:步骤4.3根据步骤1.6.3相同的密码学上的伪随机函数,以用户查询令牌中的sout,s为密钥,计数器ω的值为输入,得到起始点对应的密文掩码。然后使用该掩码与上述字典中对应的值进行异或操作,得到最初的加密密文,也即这里的符号“||”表示数据拼接。将该结果加入到集合ls中。更新计数器ω,使其值增加1。转向执行步骤4.2。步骤4.4获得查询目标点对应的索引元素集合。初始化一个集合lt,用于存储起始点对应的索引元素。初始化一个计数器ω的值为0。步骤4.5使用同步骤1.7.3相同的密码学上的伪随机函数,以用户查询令牌中的tin,t为密钥,计数器ω的值为输入,得到输出,以该输出的值为位置索引,在字典iin中判断是否存在对应的值。如果不存在,跳转至步骤4.7。否则,执步骤4.6:步骤4.6根据步骤1.7.3相同的密码学上的伪随机函数,以用户查询令牌中的sin,t为密钥,计数器ω的值为输入,得到起始点对应的密文掩码。然后使用该掩码与上述字典中对应的值进行异或操作,得到最初的加密密文,也即这里的符号“||”表示数据拼接。将该结果加入到集合lt中。更新计数器ω,使其值增加1。转向执行步骤4.5。步骤4.7初始化一个集合y。对每一个既在ls又在lt中的加密的顶点描述符v,云服务器利用代价约束树tθ来执行代价约束过滤操作。对于满足代价约束条件的元素,添加到集合y中,对于无法确定是否满足代价约束的元素,也添加到集合y中。基于加密的代价值判断其是否满足代价约束的过程如下述子步骤,考虑两个保序加密的代价密文cs,v和cv,t,分别基于代价约束树进行类似二叉搜索的操作:步骤4.7.1初始化一个计数器ω的值为1以及两个空二进制串cx和cy。步骤4.7.2如果计数器ω的值超过代价约束树tθ的深度,或者已能够确定cs,v+cv,t与代价约束值的大小关系,则转步骤4.7.1进而迭代判断下一个代价对,否则转步骤4.7.3。步骤4.7.3针对cs,v,访问代价约束树tθ的第ω层,如果cs,v大于当前节点值,则对cx拼接“1”,转向当前节点的右子树。否则,则对cx拼接“0”,转向当前节点的左子树。步骤4.7.4针对cv,t,访问代价约束树tθ的第ω层,如果cv,t大于当前节点值,则对cy拼接“1”,转向当前节点的右子树。否则,则对cy拼接“0”,转向当前节点的左子树。步骤4.7.5如果cx和cy的和大于等于2w,则丢弃掉该代价对,并转向步骤4.7.1,判断下一个代价对。否则,执行步骤4.7.6。步骤4.7.6如果cx和cy的和小于等于2w-2,则将该代价对加入到集合y。并转向步骤4.7.1,判断下一个代价对。否则,执行步骤4.7.7。步骤4.7.7将计数器ω的值增加1。转向步骤4.7.2。步骤4.8初始化一个集合w。对每一个在集合y中的元素对象,云服务器执行距离过滤操作,将那些具有更小距离的元素加入到集合w中,对于那些无法判断的元素,也添加到集合w中。距离过滤操作基于下述数学规则:假设对应距离对(a,b)和(c,d),如果a≥c且b≥d,那么a+b≥c+d;如果a≥d且b≥c,那么a+b≥c+d。步骤4.9云服务器端随机从集合w中挑选用户查询令牌指定的r个结果返回给用户。步骤5:用户解密获得满足代价约束的最短距离。用户利用密钥kd解密每一个云服务器返回的距离对得到解密后的结果(ds,v,dv,t),然后选取最小的ds,v+dv,t作为最终的查询结果。其中,子密钥kd是利用密码学上的伪随机函数,以k2为密钥,以密钥k1拼接数字1位输入得到的输出结果。有益效果本发明充分利用了对称密码学技术,鉴于对称密码学技术固有的高效属性,使得本发明提出的加密图上的带约束最短距离查询方案在有效地保护图隐私的情况下,仍然具有极高的查询效率。本发明提出的加密图上的带约束近似最短距离查询方法,能够应用于云环境下,在保证图数据隐私的同时,保留图查询操作的功能。附图说明图1.系统模型图;图2.代价约束树图;图3.输入示例有向图;图4δout加密结果;图5δin加密结果;具体实施过程本发明的具体系统模型如图1所示。本发明查询过程中涉及的代价约束树如图2所示。本发明能够实现安全的图数据外包功能,能够基于加密的图数据实现带约束近似最短距离查询功能。根据步骤1,用户端建立安全的图索引:假设用户具有如图3描述的输入有向图g,图g具有5个顶点,分别是a、b、c、d、e。每条边上标注有对应的距离d和代价c。例如顶点a和顶点b之间的边上的权重d=2和c=3分别表示从顶点a和到顶点b的距离是2,代价是3。然后,如步骤1.1所述,利用已有的方法对输入图处理,获得对应的非加密两跳覆盖标签索引,具体索引结构如下表1和表2所示。表中每一行δout(u)中的元素(v,d,c)表示从顶点u到顶点v的距离为d,代价为c;表中每一行δin(u)中的元素(v,d,c)表示从顶点v到顶点u的距离为d,代价为c;表1示例图g对应的两跳覆盖标签索引δoutδout(a)(a,0,0)(b,5,3)(e,5,1)(e,3,7)δout(b)(b,0,0)δout(c)(c,0,0)δout(d)(d,0,0)(d,1,4)δout(e)(e,0,0)表2示例图g对应的两跳覆盖标签索引δinδin(a)(a,0,0)δin(b)(b,0,0)(e,2,1)δin(c)(b,1,1)(c,0,0)(e,2,6)(e,3,2)δin(d)(a,2,3)(d,0,0)δin(e)(e,0,0)然后如步骤1.2至1.9所述,对非加密两跳覆盖标签索引δout和δin进行加密。这里简单地选取128比特的字符串“01234567891234560123456789123456”作为密钥k1,选取“0123456789abcdef0123456789abcdef”作为密钥k2。然后,利用步骤1.3描述的过程,生成加密图上距离权重的密钥kd和加密图上代价的密钥kc。计算方式如下:kd=h(k2,k1||1)kc=h(k2,k1||2)其中,h表示密码学上的伪随机函数。最终得到的输出结果kd为“d1e0133758e8930124b4f286e9e94d02”,kc为“e5b0d3998bd1428ebaae0e10748c4ede”。接下来,对表1和表2所示的非加密两跳覆盖标签索引进行加密。针对每一个顶点,依照步骤1.6到步骤1.8加密其对应的out_label标签集和in_label标签集。加密结果如下图4和图5所示。现在,假设用户查询输入图上顶点a到顶点c的最短距离,且需满足代价不超过4。假设密码学上的伪随机函数为f(),也就是说,明文m对应的加密输出为f(m),假设保序加密算法为e(),也就是说,明文m对应的保序加密密文为e(m)。为了表示简便,这里的f(m)和e(m)均省略密钥的输入。那么,依据步骤4.1至4.6,最终得到的起始点a对应的索引元素集合ls和目标点c点对应的索引元素集合lt分别为:ls={(f(a),e(0),e(0)),(f(b),e(5),e(3)),(f(e),e(5),e(1)),(f(e),e(3),e(7))}lt={(f(b),e(1),e(1)),(f(c),e(0),e(0)),(f(e),e(3),e(2))}依据步骤4.7,初始化一个集合y,对每一个既在ls又在lt中的加密的顶点描述符v,云服务器利用代价约束树tθ来执行代价约束过滤操作。代价约束树tθ如图2所示。对于满足代价约束条件的元素,添加到集合y中,对于无法确定是否满足代价约束的元素,也添加到集合y中。具体操作过程如下,这里加上从用户端接受到的代价约束树包含一个节点,即e(2):第一,观察集合ls和lt,发现共同出现的加密顶点描述符的值是f(b)和f(e)。第二,针对f(b),在ls中对应的元素是(f(b),e(5),e(3)),在lt中对应的元素是(f(b),e(1),e(1))。因为加密代价值e(3)≥e(2),e(1)≤e(2),因此无法判断通过顶点b的这条路径的代价是否满足约束,则将其加入要集合y,此时,y={<(f(b),e(5)),(f(b),e(1))>}第三,针对f(e),在ls中对应的元素是(f(e),e(5),e(1)),在lt中对应的元素是(f(e),e(3),e(2))。因为加密代价值e(1)≤e(2),e(1)≤e(2),因此,能够判断通过顶点e的这条路径的代码满足约束,则将其加入到集合y,此时,y={<(f(b),e(5)),(f(b),e(1))>,<(f(e),e(5)),(f(e),e(3))>}依照步骤4.8,初始化一个集合w。对每一个在集合y中的元素对象,云服务器执行距离过滤操作,将那些具有更小距离的元素加入到集合w中,对于那些无法判断的元素,也添加到集合w中。具体操作过程如下:对于y中的两个元素,f(b)对应的距离分别是e(5)和e(1),f(e)对应的距离分别是e(5)和e(3)。因为e(5)≥e(5)且e(3)≥e(1),因此可以断定f(e)对应的路径的距离要大于f(b)对应的距离,故丢弃掉f(e)对应的距离对,将f(b)对应的距离对加入到集合w。由于集合w仅仅剩余一个元素,故将该元素返回给用户。根据步骤5:用户解密获得满足代价约束的最短距离。用户一旦收到云服务器端返回的元素(f(b),e(5)),(f(b),e(1)),解密后得到((b,5),(b,1)),用户计算5+1=6,将6作为本次查询的最终结果。本发明解决了对图数据加密后外包到云服务器端执行带约束最短距离查询的困难,能够安全地在云服务器端实现带约束最短距离查询功能。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1