一种隐私保护的子图匹配方法及系统转让专利
申请号 : CN202210579666.1
文献号 : CN114969406B
文献日 : 2023-03-14
发明人 : 郑宜峰 , 王松磊
申请人 : 哈尔滨工业大学(深圳)
摘要 :
权利要求 :
1.一种隐私保护的子图匹配方法,其特征在于,所述方法包括:
受信终端对属性图数据进行加密,基于复制秘密共享生成所述属性图中每个属性图节点的自身信息和邻居节点信息分别对应的三份复制秘密共享份额,分别发送给第一计算终端、第二计算终端和第三计算终端,其中,目标属性图节点的所述自身信息包括所述目标属性图节点的节点类型,所述目标属性图节点的节点ID对应的独热向量以及所述目标属性图节点的每种属性的各个属性值对应的独热向量,所述目标属性图节点的所述邻居节点信息包括多个倒排表,所述多个倒排表中的目标倒排表中包括所述目标属性图节点的邻居节点中具有目标类型的各个节点的节点ID对应的独热向量以及所述目标属性图节点的虚假邻居节点ID对应的独热向量,所述目标属性图节点的虚假邻居节点ID对应的独热向量为0向量;
所述受信终端对子图查询数据进行加密,基于函数秘密共享生成每个子图节点的每个属性查询谓词对应的加密令牌,所述加密令牌包括第一加密令牌、第二加密令牌和第三加密令牌,分别发送给所述第一计算终端、所述第二计算终端和所述第三计算终端,其中,所述第一加密令牌、所述第二加密令牌和所述第三加密令牌中均包括所述子图节点的节点类型,所述子图节点的一个属性以及秘钥组中的两个秘钥,所述秘钥组中包括三个秘钥对,每个所述秘钥对为基于所述子图节点的一个属性查询谓词对应的目标值的独热向量中非0数值的位置生成的函数秘密共享秘钥对;
所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的属性图节点的所述自身信息的复制秘密共享份额,依次获取每个子图节点的候选节点的复制秘密共享份额,目标子图节点的候选节点的复制秘密共享份额包括候选节点的节点ID和目标属性的属性值的复制秘密共享份额,其中,所述目标属性为所述目标子图节点的查询属性,当所述目标子图节点没有前序子图节点时,所述目标子图节点的候选节点为节点类型与所述目标子图节点的节点类型相同的所述属性图节点,当所述目标子图节点有前序子图节点时,所述目标子图节点的候选节点为所述目标子图节点的匹配节点的邻居节点中与所述目标子图节点的节点类型相同的所述属性图节点;
所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的所述目标子图节点的候选节点的复制秘密共享份额和目标子图节点对应的所述加密令牌,获取每个候选节点是否为匹配节点的判断结果的复制秘密共享份额,匹配节点为所述目标属性的属性值满足所述目标子图节点的属性查询谓词的候选节点;
所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额,获取目标数据的复制秘密共享份额,所述目标数据包括所述目标子图节点的匹配节点的节点ID和属性值的复制秘密共享份额;
所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的所述目标子图节点的每个匹配节点的节点ID的复制秘密共享份额、每个候选节点的倒排表的复制秘密共享份额以及目标匹配节点的节点ID,获取下一个子图节点的候选节点的复制秘密共享份额;
所述第一计算终端、所述第二计算终端和所述第三计算终端根据所述子图查询的公共结构将本地持有的每个子图节点的所述目标数据重新组织成候选子图,在所述候选子图中删除与所述子图查询数据中的结构不完全相同的子图,分别输出子图匹配结果的复制秘密共享份额。
2.根据权利要求1所述的隐私保护的子图匹配方法,其特征在于,所述受信终端对属性图数据进行加密之前,包括:
所述受信终端在各个所述属性图节点中选择若干个节点类型为目标节点类型的多个第一节点,任意两个所述第一节点的目标邻居节点的数量的差值在预设范围内,所述目标邻居节点为节点类型为第一节点类型的邻居节点;
所述受信终端在所述第一节点的所述目标邻居节点中加入至少一个虚假邻居节点ID,生成所述第一节点的节点类型为所述第一节点类型的所述倒排表;
每个所述第一节点的节点类型为所述第一节点类型的所述倒排表中包括的节点ID的数量相等。
3.根据权利要求1所述的隐私保护的子图匹配方法,其特征在于,所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的所述目标子图节点的候选节点的复制秘密共享份额和目标子图节点对应的所述加密令牌,获取每个候选节点是否为匹配节点的判断结果的复制秘密共享份额,包括:所述第一计算终端、所述第二计算终端和所述第三计算终端均在本地执行以下运算以获取目标候选节点的所述目标属性的属性值是否满足所述目标子图节点的目标属性查询谓词的判断结果的复制秘密共享份额:基于本地持有的所述目标子图节点的目标属性查询谓词对应的所述加密令牌中的一个秘钥,将本地持有的所述目标候选节点的所述目标属性的属性值的一个复制秘密共享份额中的目标位置序号分别作为函数秘密共享的输入,获取函数秘密共享的第一输出;
将所述第一输出和本地持有的所述目标候选节点的所述目标属性的属性值的复制共享秘密份额中所述目标位置序号对应的比特进行与运算,得到第一与运算结果,对所有的所述第一与运算结果进行异或运算,得到第一异或运算结果;
基于本地持有的所述目标子图节点的目标属性查询谓词对应的所述加密令牌中的另一个秘钥,将本地持有的所述目标候选节点的所述目标属性的属性值的另一个复制秘密共享份额中的所述目标位置序号分别作为函数秘密共享的输入,获取函数秘密共享的第二输出;
将所述第二输出和本地持有的所述目标候选节点的所述目标属性的属性值的复制共享秘密份额中所述目标位置序号对应的比特进行与运算,得到第二与运算结果,对所有的所述第二与运算结果进行异或运算,得到第二异或运算结果;
所述第一异或运算结果和所述第二异或运算结果的异或运算结果为所述目标候选节点是否为匹配节点的判断结果的判断结果的一个加性秘密共享份额,基于所述第一异或运算结果和所述第二异或运算结果得到所述目标候选节点的所述目标属性的属性值是否满足所述目标子图节点的目标属性查询谓词的判断结果的复制秘密共享份额;
所述第一计算终端、所述第二计算终端和所述第三计算终端根据自身持有的所述目标候选节点的所述目标属性的属性值是否满足所述目标子图节点的目标属性查询谓词的判断结果的复制秘密共享份额获取所述目标候选节点是否为所述目标子图节点的匹配节点的判断结果的复制秘密共享份额。
4.根据权利要求3所述的隐私保护的子图匹配方法,其特征在于,所述第一计算终端、所述第二计算终端和所述第三计算终端根据自身持有的所述目标候选节点的所述目标属性的属性值是否满足所述目标子图节点的目标属性查询谓词的判断结果的复制秘密共享份额获取所述目标候选节点是否为所述目标子图节点的候选节点的判断结果的复制秘密共享份额,包括:当所述目标子图节点的属性查询谓词只有一个时,直接将所述目标候选节点的所述目标属性的属性值是否满足所述目标子图节点的目标属性查询谓词的判断结果的复制秘密共享份额作为所述目标候选节点是否为所述目标子图节点的候选节点的判断结果的复制秘密共享份额;
当所述目标子图节点的属性查询谓词有多个时,根据指定的布尔表达式聚合所述目标候选节点的所述目标属性的属性值是否满足所述目标子图节点的目标属性查询谓词的判断结果的复制秘密共享份额,得到所述目标候选节点是否为所述目标子图节点的候选节点的判断结果的复制秘密共享份额。
5.根据权利要求1所述的隐私保护的子图匹配方法,其特征在于,所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额,获取目标数据的复制秘密共享份额,包括:当所述目标子图节点的候选节点中只有一个节点为匹配节点时:
所述第一计算终端、所述第二计算终端和所述第三计算终端将本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额与其节点ID的复制秘密共享份额进行求与操作之后,将所有的求与操作结果进行异或操作,得到匹配节点的节点ID的复制秘密共享份额;
所述第一计算终端、所述第二计算终端和所述第三计算终端将本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额与其属性值的复制秘密共享份额进行求与操作之后,将所有的求与操作结果进行异或操作,得到匹配节点的节点ID的复制秘密共享份额。
6.根据权利要求1所述的隐私保护的子图匹配方法,其特征在于,所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额,获取目标数据的复制秘密共享份额,包括:当所述目标子图节点的候选节点中有两个及两个以上的节点为匹配节点时:
所述第一计算终端、所述第二计算终端和所述第三计算终端均在本地生成第一表格,所述第一表格中的每一行由本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额、所述目标子图节点的每个候选节点的节点ID的复制秘密共享份额、所述目标子图节点的每个候选节点的属性值的复制秘密共享份额组成;
所述第一计算终端、所述第二计算终端和所述第三计算终端基于安全的置乱技术协作地随机排列所述第一表格中的行并更新本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额、所述目标子图节点的每个候选节点的节点ID的复制秘密共享份额、所述目标子图节点的每个候选节点的属性值的复制秘密共享份额,以使得所述第一计算终端、所述第二计算终端和所述第三计算终端均在本地持有第一置乱表格,所述第一置乱表格中的每一行由本地持有的所述目标子图节点的每个候选节点是否为匹配节点的判断结果的更新后的复制秘密共享份额、所述目标子图节点的每个候选节点的节点ID的更新后的复制秘密共享份额、所述目标子图节点的每个候选节点的属性值的更新后的复制秘密共享份额组成;
所述第一计算终端、所述第二计算终端和所述第三计算终端分别公开自身持有的所述第一置乱表格中所述目标子图节点的每个候选节点是否为匹配节点的判断结果的复制秘密共享份额的一列,以使得所述第一计算终端、所述第二计算终端和所述第三计算终端获取所述目标子图节点的匹配节点的节点ID和属性值的复制秘密共享份额。
7.根据权利要求1所述的隐私保护的子图匹配方法,其特征在于,所述第一计算终端、所述第二计算终端和所述第三计算终端基于本地持有的所述目标子图节点的每个匹配节点的节点ID的复制秘密共享份额、每个候选节点的倒排表的复制秘密共享份额以及目标匹配节点的节点ID,获取下一个子图节点的候选节点的复制秘密共享份额,包括:所述第一计算终端、所述第二计算终端和所述第三计算终端在本地均执行如下操作:
获取所述目标子图节点的第c个候选节点的第一倒排表中的一个节点ID的复制秘密共享份额与目标匹配节点的节点ID的复制秘密共享份额中的第c位比特进行与运算,得到第三与运算结果,将各个所述第三与运算结果进行异或操作进行聚合,得到所述目标匹配节点的所述第一倒排表中一个节点ID的复制秘密共享份额,其中,所述第一倒排表对应的节点类型为下一个子图节点的节点类型;
对所述目标匹配节点的所述第一倒排表中每个节点ID的复制秘密共享份额中的每个比特执行异或操作,得到所述目标匹配节点的所述第一倒排表中每个节点ID是否为虚假节点ID的判断结果的复制秘密共享份额;
基于所述目标匹配节点的所述第一倒排表中每个节点ID是否为虚假节点ID的判断结果的复制秘密共享份额在所述第一倒排表的复制秘密共享份额中剔除虚假节点ID的复制秘密共享份额;
基于本地持有的所述目标子图节点的候选节点的属性值的复制秘密共享份额和所述目标子图节点的每个匹配节点的所述第一倒排表中的节点ID的复制秘密共享份额获取下一个子图节点的候选节点的所述目标属性的属性值的复制秘密共享份额。
8.根据权利要求7所述的隐私保护的子图匹配方法,其特征在于,所述第一计算终端、所述第二计算终端和所述第三计算终端基于所述目标匹配节点的所述第一倒排表中每个节点ID是否为虚假节点ID的判断结果的复制秘密共享份额在所述第一倒排表的复制秘密共享份额中剔除虚假节点ID的复制秘密共享份额,包括:所述第一计算终端、所述第二计算终端和所述第三计算终端均在本地生成第二表格,所述第二表格中的每一行包括本地持有的所述第一倒排表中一个节点ID的复制秘密共享份额和该节点ID是否为虚假节点ID的判断结果的复制秘密共享份额;
所述第一计算终端、所述第二计算终端和所述第三计算终端基于安全的置乱技术协作地随机排列所述第二表格中的行并更新本地持有的所述第一倒排表中一个节点ID的复制秘密共享份额和该节点ID是否为虚假节点ID的判断结果的复制秘密共享份额,以使得所述第一计算终端、所述第二计算终端和所述第三计算终端均在本地持有第二置乱表格,所述第二置乱表格中的每一行由本地持有的所述第一倒排表中一个节点ID的更新后的复制秘密共享份额和该节点ID是否为虚假节点ID的判断结果的更新后的复制秘密共享份额组成;
所述第一计算终端、所述第二计算终端和所述第三计算终端公开本地持有的所述第二置乱表格中节点ID是否为虚假节点ID的判断结果的复制秘密共享份额的一列,以使得所述第一计算终端、所述第二计算终端和所述第三计算终端剔除虚假ID的复制秘密共享份额。
9.根据权利要求7所述的隐私保护的子图匹配方法,其特征在于,所述基于本地持有的所述目标子图节点的候选节点的属性值的复制秘密共享份额和所述目标子图节点的每个匹配节点的所述第一倒排表中的节点ID的复制秘密共享份额获取下一个子图节点的候选节点的所述目标属性的属性值的复制秘密共享份额,包括:将本地持有的所述目标子图节点的第x个候选节点的所述目标属性的属性值的复制秘密共享份额与下一个子图节点的第一候选节点的第x个比特进行与操作,得到第四与运算结果,将各个所述第四与运算结果进行异或操作,得到所述第一候选节点的所述目标属性的属性值的复制秘密共享份额。
10.一种隐私保护的子图匹配系统,其特征在于,所述系统包括受信终端、第一计算终端、第二计算终端和第三计算终端;所述受信终端、第一计算终端、第二计算终端和第三计算终端协同完成如权利要求1‑9任一项所述的隐私保护的子图匹配方法。
说明书 :
一种隐私保护的子图匹配方法及系统
技术领域
背景技术
发明内容
附图说明
具体实施方式
和Att(Vi)=Att(f(Vi))或者Att(Vi)∈Att(f(Vi));2)
其中T(·)和Att(·)分别代表·的类型和属性。
(fresh)秘密共享份额,即 这样的新的关于0的秘密共享份额可以
通过一个输出域为 的伪随机函数(pseudorandom function:PRF)高效地生成。具体的,在初始化阶段,每一方Pi采样一个PRF密钥ki并发送ki给Pi+1。之后,为了产生第j个新的关于0的秘密共享份额,每一方Pi本地计算 其满足
注意到 没有加密类型信息即Ti,{tj}j∈[S],Tne,因为其是必要的公
共信息。
0向量作为假的ID,使得 然后, 利用RSS技术加密真
实的和虚假的IDs。具体地,可以将同一类型的倒排表的长度都设置为相等的,加密后的统一类型的倒排表的长度可以等于该类型的邻居节点的最大个数,也可以大于该类型的邻居节点的最大个数,即对于邻居节点的个数没有达到预先设置的该类型的倒排表的长度的情况,则需要添加相应个数的虚假邻居节点ID,对于邻居节点的个数已经达到预先设置的该类型的倒排表的情况,则不需要再添加虚假邻居节点ID,最终的目的是使得同一类型的倒排表的长度均相等。由于每个节点的属性值也被加密成RSS的形式,因此在密文域该属性图是一个k‑自同构图。最后,该属性图 的密文可以表示为
其中 表示节点Vi的倒排表类型的集合,N是属性图 中节点的数量。 将该密文图
的秘密共享份额分别发送给计算终端
谓词为年龄等于15,采用分布式点函数实现FSS,年龄的属性值均编码为100位的独热向量,那么明文的符合属性谓词的属性值的独热向量应该是第15位为1,其他位为0,那么将15作为待评估数值,给定一个FSS秘钥,输出的是评估结果(为1)的一个秘密共享份额,将其他的位置作为待评估数值,给定一个FSS秘钥,输出的是评估结果(为0)的一个秘密共享份额,假设属性谓词为年龄小于15,采用分布式比较函数实现FSS,年龄的属性值均编码为100位的独热向量,那么明文的符合属性谓词的属性值的独热向量是第15位为0,其他位为0,将小于
15的位置序号作为待评估数值,给定一个FSS秘钥,输出的是评估结果(为1)的一个秘密共享份额,将大于等于15的位置序号作为待评估数值,给定一个FSS秘钥,输出的是评估结果(为0)的一个秘密共享份额。通过该方法, 可以加密一个子图查询q={Vi=(Ti,(ti,pdi))}i∈[|q|]为对应的查询令牌 最后 发送
和 以及
公共的结构分别给第一计算终端 第二计算终端 和第三计算终端 为了安全的子
图查询令牌更加具体,以图2中的查询q为例,其对应的安全查询令牌是
情况需要分开处理:1)如果Vi是tokq中的没有前序节点的起始节点(例如图2中查询q中的节点U),Vi的候选节点{Vc}是 中所有类型为Ti的节点。 可以本地设置{Vc}的IDs和类型为ti的属性的值为 和 2)如果Vi有前序节点,{Vc}是Vi的前序节点的匹
配节点的邻居节点, 和 将通过模块secAccess安全地获取。
法2描述了候选节点的安全谓词评估算法secEval。
FSS的输入是公共的位置l,是指输入位置本身的值。比如 表示向量 的第l个比特,那就输入l,例如 之后将FSS的输出与加密的比特 进行AND操作(即比特
“与”)。然后,每一个 本地XOR(即异或)所有的AND操作的输出,从而产生候选节点Vc的加密的谓词评估结果。安全谓词计算可以形式化地描述为公式一:
的评估结果 是加性的秘密共享(即每一方仅持有一个秘密份额)的形式。所以为了兼容后续RSS域的计算, 需要使用1.2节中的技术重新共享 使得其是RSS(即复制的秘
密共享,每一方持有两个秘密份额)的形式。
节点Vc满足其中一个的谓词,则 可以安全地聚合评估结果
即,所述第一计算终端、所述第二计算终端和所述第三计算终端根据自身持有的所述目标候选节点的所述目标属性的属性值是否满足所述目标子图节点的目标属性查询谓词的判断结果的复制秘密共享份额获取所述目标候选节点是否为所述目标子图节点的匹配节点的判断结果的复制秘密共享份额,包括:
问模式的泄漏,因为这样 就知道哪些节点是匹配节点了。因此在本实施例中设计了模块secFetch,展示在如图6所示的算法3中,其可以让 从候选节点中获取匹配节点的信息而不知道哪些候选节点是匹配节点。下面介绍具体的设计。
仅有的一个匹配节点的 和属性值 上述过程可以形式化地描述为:
节点的加密的信息 ),安全的置乱技术允许持有该表格的云服务器
协作地随机重新排列表格中的每一行,输出加密的置乱后的表格 而云服务
器 不知道具体的排列π(·)是什么。值得说明的是,在置乱后,行间排列顺序被打乱,但是行内的排列逻辑并不会改变,也就是说,假设置乱前每一行的排列为
那么置乱后,每一行的排列仍为 但是置乱后的表
格中的 的数值发生了变化,即秘密共享份额被更新,例如,置乱前的
一行为0||001||110,置乱后的一行为1||010||101,但是,同一数据对应的秘密共享份额对应出的明文数据没有改变,也就是说,采用置乱前的表格进行数据恢复得到的明文数据与采用置乱后的表格进行数据恢复得到的明文数据相同。后面还会用到该技术,所以封装该技术为 由于该技术打乱了原始的候选节点信息
的顺序,所以 可以直接公开每个候选节点的 从而判断哪些候选节点是匹配的
节点。
的类型。因此,Vm的类型为Tne的倒排表 包含所需要的邻居节点的IDs: 所以
需要从所有候选节点{Vc}的加密的倒排表 中安全地检索每个匹配节点Vm的
倒排表 具体的,让 安全地将每一个候选节点Vc,c∈[C](C是候选节点的数量)
的倒排表 与Vm的加密的ID中对应的一位 进行AND(即求 “与”),即第c个候
选节点的倒排表与Vm的加密的ID中的第c位进行AND操作。之后将所有的AND操作的结果通过异或 进行聚合从而获得匹配节点Vm的倒排表 具体操作可以形式化描述为:
格,再公开 以剔除假的IDs从而保扩搜索模式。
输出从而获得邻居节点Vne的属性值 上述过程可以正式地描述为:
一跳目标节点的候选节点的信息 和 从而进行下一跳的目标节点的匹配。