欢迎来到知嘟嘟! 联系电话:13336804447 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13336804447
知嘟嘟经纪人
收藏
专利号: 201710186150X
申请人: 河南科技大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.云环境下基于MDB+树的多域连接关键词的搜索方法,其特征在于:包括以下步骤:

步骤一、数据拥有者将每一个数据记录构建成基于MDB+树的安全索引,并将各数据记录对应的文档进行加密,然后将加密的索引以及加密的文档外包给云服务器,其具体的方法为:(1)在初始化阶段,数据拥有者将数据记录的属性集A={A1,A2,…,Am}划分为h组,即A’={A1’,A2’,…,Ah’},其中m为属性的个数,h为MDB+树的最大层,然后随机产生一个Vi位的二进制矢量Si和一个Vi×Vi的可逆矩阵{M1,i,M2,i},其中Vi是对应于MDB+树第i层的矢量长度,私钥SKi为三元组{Si,M1,i,M2,i};

(2)数据拥有者将数据记录的每一条记录的各个子属性进行矢量表示后加密:将数据记录r的矢量 划分为h个子矢量 表示 对应于Ai'的矢量,对矢量 执行加密,加密过程如下:①用一个非零的随机数εi乘以 得到 也即 ②将 划分为两个随机的矢量 对于j=1到n,假如Si[j]=1, 和 被设置满足

假如Si[j]=0, 和 均被设置为 ③产生加密的矢量

Cr,i,

(3)根据数据记录的每一条记录构建基于MDB+树的索引,数据拥有者将基于MDB+树的安+全索引以及加密后的数据记录外包给云服务器,构建基于MDB 树的索引的方法如下:若数据拥有者将属性集A划分为h个组,那么MDB+树最大层就是h,MDB+树的第i层相对应于Ai',树的每个节点是一个B+树,并用三角形表示,每个节点包含多个来自Ai'的关键词,分享上层的相同关键词的所有关键词形成下层的一个子节点,节点内关键词是以密文形式存在的;

步骤二、数据用户向数据拥有者请求搜索授权,数据拥有者根据授权规则决定是否授权,假如用户获得授权,数据拥有者执行步骤三;

步骤三、生成陷门,数据拥有者向数据用户分发一个搜索陷门和解密秘钥;

步骤四、数据用户提交搜索陷门给云服务器,云服务器接收到用户提交的搜索陷门时,利用匹配算法搜索MDB+树,找出与用户查询需求匹配的所有记录,搜索陷门不揭露查询的任何信息;所述匹配算法为:当服务器接收到用户提交的用于查询的搜索陷门时,从根节点开始以递归的方式搜索MDB+树,即当搜索过程进入第i层的一个节点的时候,从左向右的方向选择尚未选择的一个关键词Ki,接着对这个关键词的加密的矢量进行解密操作当 时解密输出不为1,它表示该关键词与查询关键词不匹配,这时操作分两种情况:假如该关键词是该节点的最后一个关键词,搜索过程进入父节点的下一个关键词,否则搜索该节点的下一个关键词;当且仅当 时,解密输出为1,表示该关键词与查询关键词匹配,这时操作分两种情况:若关键词Ki不是位于树的最底层,则搜索继续下到下一层的子节点,若关键词Ki位于树的最底层,也即ρ(Ki)指向record ID array,将该array中的record IDs添加到列表L中;

步骤五、云服务器返回满足特定搜索规则的记录,解密密钥实现匹配记录的解密。

2.根据权利要求1所述的云环境下基于MDB+树的多域连接关键词的搜索方法,其特征在于:所述步骤三中向用户发送的搜索陷门的生成方法为:根据授权用户搜索的关键词生成查询矢量q,对q按位取反得到矢量 表示矢量 中对应A′i的矢量,对 执行如下操作:(1)用不为0的随机数βi乘以 得到 即 (2)将 划分为两个随机的矢量

假如Si[j]=1, 和 均被设置为与 相等;假如Si[j]=0,

和 被设置满足 则陷门 即为

3.根据权利要求1所述的云环境下基于MDB+树的多域连接关键词的搜索方法,其特征在于:所述步骤一中将数据记录的每一条记录的子属性进行矢量表示的方法,分为以下两种情况:(1)对于一个不能分层的属性的矢量表示方法为:如果有m个属性,则每个属性值被依次在范围[1,m]内分配一个整数,这m个整数都被表示为一个m位的二进制矢量,对于整数i,它的第i位被设置为1,其它m-1位都为0;

(2)对于一个可以分层的属性的矢量表示方法为:先将属性进行分层,再对分层的属性进行矢量表示:对于最大层为k的任何分层属性Ai,将其扩展为k个子属性:Ai,1,...,Ai,k,其中Ai,d值的集合是Trd(Ai),Ai,d的值是路径P(x)上从顶端开始第d个元素,这里x是属性树Trd(Ai)的叶子结点;

在最大层为k的属性树Trd(Ai)中,对叶子结点x的矢量表示过程如下:

①找到路径P(x)=(N1,...,Nk),其中Nd(d=1,...,k)是路径P(x)上从根节点开始的第d个节点;

②令(Ai,1,...,Ai,k)分别等于(N1,...,Nk);

③Ai,1用二进制1表示,因为第1层属性只有一个属性值;

④假如Trd(Ai)(1≤i≤k)的每一个结点都有n个子节点,那么Ai,d+1被表示成n位的二进制矢量,假如Ai,d+1是Ai,d的第j个子节点,那么只有第j位为1,其他n-1位都为0;假如Trd(Ai)(1≤i≤k)中的节点N比同层其他节点有更多的子节点,那么Ai,d+1被表示成m位的二进制矢量,其中m是节点N的子节点的个数。