【技术实现步骤摘要】
支持k个无序节点的图加密最短路径查询方法与系统
[0001]本专利技术涉及一种支持k个无序节点的图加密最短路径查询方法与系统,属于隐私保护、云服务以及加密图数据导航
技术介绍
[0002]图形数据库用于各种应用,包括万维网、在线社交网络和通信网络。例如,LinkedIn有一个由810多万用户组成的社交网络图。这些应用程序有助于高效地查询和分析大规模图形。
[0003]随着云计算的普及,越来越鼓励用户,包括公司和个人,将其图形数据库外包给远程云服务器来降低本地管理成本。然而,将包含敏感信息的图形数据库外包给不受信任的云服务器不仅会导致用户失去数据控制,还会引发他们的安全担忧。这些担忧促进了安全保障的新发展,其中数据加密是一种简单的方法,但会使数据分析变得复杂。
[0004]此外,现有的使用数据加密的方案,只支持密态下起点终点最短路径查询,只返回起点终点最短路径上的节点,不支持一个重要的图形操作:寻找在途径k无序节点时起点和终点之间的最短路径。这种操作与现实应用中的一个常见用户需求相呼应。例如,用户在智能手机上打开地图应用程序,(1)找到从起点到目的地的最短路径,(2)该路径必须经过其他三个位置节点,即她的工作场所、特定健身房和特定比萨店。同时,用户对访问这三个地点的顺序没有要求,称之为无序节点。这也带来了新的需求,即支持k个无序节点的最短路径查询:云服务器在不知道用户提供的节点下,返回从起点出发途径k个无序节点到达终点的最短路径。
[0005]现有技术仅通过图加密的方式支持从起点出发到 ...
【技术保护点】
【技术特征摘要】
1.一种支持k个无序节点的图加密最短路径查询系统,其特征包括:用户模块与云服务模块;所述用户模块包括:系统初始化单元、用户设置模块、索引生成单元、令牌生成单元、结果解密单元;所述云服务模块包括:索引接收单元、令牌接收单元、路径搜索单元;所述用户模块的系统初始化单元产生伪随机排列函数、伪随机函数、随机预言机函数、抗碰撞的哈希函数并向系统内所有单元公开;所述用户模块的用户设置模块获取用户输入的起点、终点和k个无序节点并发送给所述用户模块的令牌生成单元;所述用户模块的索引生成单元处理自身存储的原始图数据,并产生密钥、公钥和私钥,并使用所述公钥、所述伪随机排列函数、所述伪随机函数、所述随机预言机函数和所述抗碰撞的哈希函数加密处理后的图数据,再由加密后的图数据生成安全索引并发送到云服务模块的索引接收单元,再将所述密钥分别发送到用户模块的令牌生成单元和结果解密单元,再将所述私钥发送到用户模块的结果解密单元;所述云服务模块的索引接收单元接收所述安全索引后,转发至自身的路径搜索单元;所述用户模块的令牌生成单元接收所述密钥,并根据用户选择的起点、终点、k个无序节点以及所述伪随机排列函数、所述伪随机函数、所述抗碰撞的哈希函数产生查询令牌后,转发至云服务模块的令牌接收单元;所述云服务模块的令牌接收单元接收所述查询令牌后,转发至自身的路径搜索单元;所述云服务模块的路径搜索单元使用所述查询令牌搜索所述安全索引,若搜索成功,则向所述用户模块的结果解密单元发送对应的结果数据,若搜索失败,则向所述用户模块的结果解密单元的结果解密单元发送空字符串;所述用户模块的结果解密单元若接收所述结果数据,则使用所述私钥对所述结果数据进行解密获得最短距离,再使用所述伪随机排列函数和所述密钥恢复出从起点出发并经过k个无序节点后到达终点的最短路径。2.一种支持k个无序节点的图加密最短路径查询方法,其特征是应用于由一个用户端与一个云服务方所构成的网络环境中,所述图加密最短路径查询方法是按如下步骤进行:步骤一、构建索引:步骤1.1所述用户端采用基于Paillier的密码学方法构建公钥同态加密体系Ω,并生成密钥产生函数Gen、同态加密函数Enc、同态解密函数Dec,再使用所述密钥产生函数Gen生成私钥sk,公钥pk;所述用户端生成一个伪随机排列函数PRP、一个伪随机函数PRF、一个随机预言机函数H、一个抗碰撞的哈希函数h以及两个密钥K1,K2;步骤1.2所述用户端使用Floyd
‑
Warshall算法对由节点集合V和边集合ε的原始图数据G={V,ε}进行计算后获得路径距离集合PD,再对所述路径距离集合PD进行随机排列,并初始化一个数组Arr;步骤1.3所述用户端对节点集合V中的第i个节点v
i
随机产生一个密钥一个密钥和一个随机数r
i
;
以所述第i个节点v
i
为起点,对于所述路径距离集合PD中从起点v
i
出发到终点v
j
的第num
i
条最短路径,所述用户端使用抗碰撞的哈希函数h对终点v
j
进行处理,产生哈希结果h(v
j
),使用公钥pk和同态加密函数Enc对起点v
i
出发到终点v
j
的最短距离进行处理,获得加密结果使用密钥和伪随机排列函数PRP对起点v
i
出发到终点v
j
的最短路径上的途径点v
ij
进行处理,获得路径伪随机排列结果对路径距离集合PD中第num
i+1
条最短路径做随机排列,获得随机排列结果π(num
i+1
);链接所述哈希结果h(v
j
)、加密结果路径伪随机排列结果和随机排列结果π(num
i+1
)后产生一个链表结点N
o
;使用随机预言机函数H对所述密钥和随机数r
j
进行处理,获得随机预言机结果将所述链表结点N
o
和随机预言机结果进行异或运算并产生数组异或结果Arr
ij
;最后将数组异或结果Arr
ij
和随机数r
j
存放在数组Arr的第num
i
个位置上;步骤1.4用户端使用伪随机排列函数PRP和密钥K2对第i个节点v
i
进行处理,获得节点伪随机排列结果再使用伪随机函数PRF和密钥K1对第i个节点v
i
进行处理,获得伪随机结果对路径序号num
i
及其相应起点的密钥与伪随机结果做异或运算获得字典异或结果DX
i
,其中,||是字符串连接运算;创建一个字典DX用于存储伪随机排列结果和字典异或结果DX
i
;步骤1.5用户端将数组Arr和字典DX组成安全索引index并发送给云服务方;步骤二、标准令牌生成:步骤2.1用户端选取将要查询的起点s、终点d;并使用伪随机排列函数PRP和密钥K2对起点s进行处理,获得起点伪随机排列结果并创建一个集合q1用于存放起点伪随机排列结果步骤2.2用户端使用伪随机函数PRF和密钥K1对起点s进行处理,获得起点伪随机结果并创建一个集合q2用于存放起点伪随机结果步骤2.3用户端使用抗碰撞的哈希函数h对终点d进行处理,获得终点哈希结果h(d),并创建一个集合q3用于存放终点哈希结果h(d);步骤2.4用户端将集合q1、集合q2和集合q3组成标准查询令牌q,并将标准查询令牌q发送给云服务方;步骤三、k个无序节点的令牌生成:步骤3.1用户端选取将要查询的起点s、终点d,并从节点集合V中选取k个无序节点{V1,V2,
…
,V
k
};其中,V
k
表示第k个无序节点;使用伪随机排列函数PRP和密钥K2对起点s进行处理,获得起点伪随机排列结果再使用伪随机排列函数PRP和密钥K2对k个无序节点进行处理,获得k个无序节点的伪随机排列结果其中,表示第k个无序节点V
k
的伪随机排列结果,
创建一个集合q
*1
用于存放起点伪随机排列结果和k个无序节点伪随机排列结果步骤3.2用户端使用伪随机函数PRF和密钥K1对起点s进行处理,获得起点伪随机结果再使用伪随机函数PR...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。