首页 / 专利库 / 人工智能 / n元语法 / 一种混合云中基于同态加密的多关键词密文排序检索方法

一种混合中基于同态加密的多关键词密文排序检索方法

阅读:261发布:2020-05-08

专利汇可以提供一种混合中基于同态加密的多关键词密文排序检索方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种混合 云 中基于同态加密的多关键词密文排序检索方法,数据拥有者对文件集加密后发送给公有云 服务器 ,然后与可信私有云服务器交互获得公共词典,更新公共词典并对文件集生成明文索引发送给私有云服务器;私有云服务器构建动态权重模型计算数据拥有者的加权权重并生成加权索引,然后构建二叉索引树并使用同态加密 算法 对索引树加密得到安全索引,将安全索引发送给公有云服务器。私有云服务器根据数据使用者的查询数据生成查询向量,并将查询向量扩展成陷 门 作为检索 请求 发送到公有云服务器;公有云服务器接收到陷门后在安全索引中检索,将排名靠前的加密文件下载链接列表返回给数据使用者。本发明具有较高的检索效率和准确率。,下面是一种混合中基于同态加密的多关键词密文排序检索方法专利的具体信息内容。

1.一种混合中基于同态加密的多关键词密文排序检索方法,其特征在于,包括以下步骤:
步骤1:初始化;
可信私有云服务器选择一个大素数作为私有密钥,私有云服务器选择一个远大于私有密钥的大素数作为共享密钥;
步骤2:文件加密和上传;
数据拥有者对要上传的文件进行加密后发送到公有云服务器;
步骤3:生成明文索引;
具体实现包括以下子步骤:
步骤3.1:数据拥有者与私有云服务器进行交互获得公共词典;
步骤3.2:数据拥有者对其所有文件进行语法分析、分词和提取关键词,得到关键词集合,并根据关键词集合更新公共词典;
步骤3.3:数据拥有者利用向量空间模型和公共词典为每个文件分别生成明文形式的二进制索引向量,所有的二进制索引向量构成了明文索引;
步骤3.4:数据拥有者将公共词典和明文索引发送给私有云服务器;
步骤4:生成安全索引;
具体实现包括以下子步骤:
步骤4.1:私有云服务器首先计算公共词典中每两个关键词之间的相关系数并生成相关矩阵;
步骤4.2:私有云服务器为数据拥有者的每个文件生成流行度信息,计算数据拥有者对公共词典中所有关键词的平均流行度向量;
步骤4.3:私有云服务器利用相关矩阵和平均流行度向量计算数据拥有者对公共词典中所有关键词的原始权重;
步骤4.4:私有云服务器对所有数据拥有者的原始权重进行归一化处理,得到每个数据拥有者对公共词典中所有关键词的加权权重,并通过数据拥有者的明文索引和加权权重生成所有文件的加权索引向量;
步骤4.5:私有云服务器基于所有数据拥有者的加权索引向量构建一个加权二叉索引树;
步骤4.6:私有云服务器使用步骤1中的私有密钥和共享密钥对二叉索引树中的每个节点对应的加权索引向量进行整数上的同态加密,得到加密索引树,即安全索引;
步骤4.7:私有云服务器将安全索引发送至公有云服务器;
步骤5:生成陷
具体实现包括以下子步骤:
步骤5.1:数据使用者将查询数据和参数信息发送给私有云服务器以请求检索;
步骤5.2:私有云服务器对数据使用者的查询数据进行分词和提取关键词处理,并根据公共词典生成二进制查询向量;
步骤5.3:私有云服务器根据参数信息将查询向量扩展为陷门并发送到公有云服务器;
步骤6:检索;
具体实现包括以下子步骤:
步骤6.1:公有云服务器接收到陷门后,在安全索引中使用步骤1中的共享密钥计算并比较查询向量与加密索引树节点对应密文索引向量的相关性得分,将前n个得分最高的结果存入一个相关性分数序列中;
步骤6.2:公有云服务器对得分结果进行排序,将前n个结果对应的密文文件下载链接列表返回给数据使用者;
步骤6.3:数据使用者下载密文文件,并与数据拥有者交互,获得密钥后解密文件。
2.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤3.1中,数据拥有者与私有云服务器进行交互获得公共词典,交互过程主要是对公共词典的更新,对数据拥有者Oi的每个文件提取关键词后把这些关键词发送到私有云服务器,私有云服务器通过这些关键词更新公共词典,把公共词典里没有的关键词添加进公共词典,因此公共词典里存储了数据拥有者的所有文件的关键词。
3.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤3.2中,数据拥有者Oi对所有文件进行语法分析和分词,用Fi,j表示Oi的第j个文件,对Fi,j提取m个关键词,得到包含m个关键词的集合Ki,j,并根据所有文件的关键词集合更新公共词典D。
4.根据权利要求3所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤3.3中,数据拥有者Oi利用向量空间模型根据每个文件的关键词集合和公共词典D生成数据拥有者Oi的每个文件明文形式的二进制索引向量,用Ii,j表示Oi第j个文件的二进制索引向量,Ii,j长度等于D中关键词个数,记为p,其每一个元素代表D中对应的关键词在文件Fi,j的关键词集合里是否存在,若存在,则为1,否则为0,所有的二进制索引向量构成了明文索引。
5.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤4.1中,私有云服务器使用Jaccard相似系数计算公共词典D中每两个关键词之间的相关系数Sx,y并生成相关矩阵S;
Sx,y计算公式为:
其中,dx和dy分别表示存在关键词x和y的文件集合,L(dx∩dy)表示同时存在关键词x和y的文件个数,L(dx∪dy)表示关键词x和y至少存在一个的文件个数,x和y出现在同一文件中的文件个数越多,两者越相关;S是一个对称矩阵,矩阵的行列数相等,为D中关键词的个数,每一个元素表示对应关键词之间的相关系数。
6.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤4.2中,私有云服务器根据数据拥有者文件的下载次数和点击率生成流行度向量,并根据数据拥有者的流行度向量和二进制索引向量计算出数据拥有者对公共词典中所有关键词的平均流行度向量;
私有云服务器根据数据拥有者Oi所有文件的下载次数和点击率生成流行度向量Pi,其每个元素Pi,j代表文件Fi,j的流行度信息,Fi,j表示Oi的第j个文件;为了表示不同数据拥有者对不同的领域具有不同的权重,私有云服务器构建动态权重模型,通过文件的受欢迎度来确定Oi的平均流行度APi,计算公式如下:
其中,Pi表示Oi的流行度向量,其长度等于Oi的文件个数li;Ii是一个li×p的矩阵,矩阵的每一行代表Oi的一个文件的二进制索引向量;Pi·Ii的结果是一个长度为p的向量,其每个元素代表Oi的所有文件对公共词典D中对应关键词的流行度之和;αi是一个长度为p的向量,其每一个元素表示Oi的所有文件中包含D中对应关键词的文件数的倒数,能通过Ii获得;
运算符 表示两个向量的对应元素的乘积;APi也是一个长度为p的向量,其每个元素代表Oi对D中对应关键词的权威程度。
7.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤4.3中,私有云服务器根据平均流行度向量APi和相关矩阵S计算每一个数据拥有者Oi对公共词典D中的所有关键词的原始权重Wiraw,计算公式如下:
raw
其中,Wi 是一个长度为p的向量,其每个元素依次代表Oi对公共词典D中一个关键词的原始权重。
8.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤4.4中,私有云服务器对所有数据拥有者的原始权重进行归一化处理,首先在不同数据拥有者之间选取每个关键词的最大原始权重构成Wmax,Wmax是一个长度为p的向量,其每个元素代表在所有数据拥有者的原始权重信息中对公共词典D对应关键词的最大原始权重,即:
然后将这些最大原始权重都规格化为1,其他关键词权重是0到1之间的数字,用Wi表示数据拥有者Oi对D中所有关键词的加权权重,则:
Wi=(Wi,1,Wi,2,...,Wi,p);
Wi是一个长度为p的向量,其中Wi,t是Oi对第t个关键词的加权权重,则:
其中,Wmax[t]表示所有数据拥有者的原始权重信息中第t个关键词的最大原始权重;
最后根据Wi及二进制索引向量Ii,j得到加权索引向量 即:
按上述步骤,将明文索引中所有的二进制索引向量进行计算得到对应的加权索引向量。
9.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤4.5中,首先为每个加权索引向量生成一个叶节点u,包含u.id,u.Fid,u.Val,u.id是u的唯一标识,u.Fid表示u指向文件的标识,u.Val用来存储加权索引向量,所有叶节点构成一个节点队列;然后通过两两计算叶节点中加权索引向量的余弦值,找出一个与叶节点u1余弦值最大的叶节点u2进行配对,以u1和u2为子节点生成一个父节点v,包含v.id和v.Val,v.id是v的唯一标识,v.Val用来存储一个新的索引向量,其每个元素是子节点中索引向量的对应元素的较大值;接着继续执行上述步骤,完成余下叶节点的两两配对,并生成对应父节点;最后执行所有父节点的分组配对,直到构造出完整的二叉索引树。
10.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤4.6中,私有云服务器首先将二叉索引树每个节点中加权索引向量的每一位编码为整数Pm,然后使用步骤1中的私有密钥P1和共享密钥P2分别对所有编码数进行整数上的同态加密,每次加密时选取一个随机大素数q,其位数小于P1和P2,计算C=Pm*P1+P1*P2*q,C即为文件Fi,j的加权索引向量中一位元素的加密结果;对其进行解密需要同时使用P1和P2,计算(C mod P2)/P1即可得到Pm,从而还原明文;二叉索引树中所有的加权索引向量加密后的密文索引向量构成了加密索引树,即安全索引。
11.根据权利要求1所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于:步骤6.1中,公有云服务器接收到陷门后,在加密索引树中执行深度优先搜索算法从根节点开始检索,依次计算查询向量Rq与所遍历节点对应密文索引向量的内积R,并使用共享密钥P2计算得到相关性分数Sci,j,公有云服务器将相关性分数存入一个长度为n的分数序列中;当分数序列存满n个相关性分数后继续遍历,若遇到非叶子节点v,则计算v与Rq的相关性分数,如果该分数小于分数序列中的最小分数,则停止遍历并返回上一节点继续遍历,如果该分数大于分数序列中的最小分数,则继续遍历v的所有子节点;若遇到叶子节点u,则计算u与Rq的相关性分数,如果该分数小于分数序列中的最小分数,则继续遍历,如果该分数大于分数序列中的最小分数,则将该分数替换分数序列中的最小分数并继续遍历;按照这个规则完成整个索引树的遍历,最终分数序列中的分数即为n个最高的文件得分。
12.根据权利要求1-11任意一项所述的混合云中基于同态加密的多关键词密文排序检索方法,其特征在于,所述方法还包括步骤7:关键词权重更新;
当数据拥有者没有文件更新时,随着公有云服务器上文件的点击率和下载量的变化,数据拥有者对公共词典中关键词的权重会动态地变化;私有云服务器每隔一段时间按照步骤4更新每个数据拥有者对公共词典中所有关键词的平均流行度和加权权重,此时不用重新计算相关矩阵;然后重新计算所有数据拥有者加权索引,构建新的安全索引并发送到公有云服务器;
当数据拥有者根据实际需求增加文件、删除文件或修改文件时,公共词典会发生变化,导致数据拥有者对词典中关键词的权重也会变化;数据拥有者重新执行步骤2和步骤3将更新后的公共词典和明文索引发送到私有云服务器,同时将新的密文文件发送至公有云服务器;私有云服务器按照步骤4重新生成相关矩阵和加权索引,构建新的安全索引并发送至公有云服务器。

说明书全文

一种混合中基于同态加密的多关键词密文排序检索方法

技术领域

[0001] 本发明属于云计算和信息检索技术领域,具体涉及一种混合云中基于同态加密的多关键词密文排序检索方法。

背景技术

[0002] 随着云计算的发展,越来越多的个人和企业将大量数据和应用外包给云服务器,从而获得价格低廉、高效率、高容量、可扩展的计算和存储资源、随时随地灵活的访问支持等云服务带来的诸多好处。
[0003] 混合云是近年来云计算的主要模式和发展方向,融合了公有云和私有云。公有云由大型的企业运营,具有很大的计算能和存储空间,能够服务于大量的用户,私有云将提供服务的基础设施、应用和数据都纳入到组织内部的管理中,使其能更加符合组织使用需求,混合云由多个公有云、私有云组合而成,基于云间服务的协同和组合,构建一个动态、灵活、无缝的集成云环境,兼有公有云易扩展、节约成本和私有云安全、可控的优势。在混合云中,用户通常将关键数据放在私有云中存储和处理,而将大量应用数据外包到公有云中,而且在一些特殊的混合云应用场景中,例如云爆发、云灾备等,用户需要将更多的重要数据在公有云上存储。由于公有云服务器提供商通常不完全可信,他们可能窥探和分析用户存储的一些重要隐私信息,因此将数据交由公有云服务器托管就意味着数据的安全性和隐私性受到了威胁,需要将数据进行加密后外包给公有云服务器,但与此同时给数据的访问和操作带来新的困难和挑战。
[0004] 目前针对云中外包密文数据的多关键词检索,大多数现有工作都遵循“单一拥有者”模式,即仅独立实现对属于一个数据拥有者的外包数据的检索。现实中,由于不同数据拥有者所属的权威领域不同,多个数据拥有者上传文件存在较大的质量差异,数据使用者通常期望同时从多个数据拥有者上传的所有数据集中检索出高质量的数据,即需要实现“多拥有者”模式。然而,将“单一拥有者”模式直接扩展为“多拥有者”模式面临着两大挑战:一是密钥管理不方便以及高通信成本;二是不同数据拥有者的主题相似文件的质量有明显差别,对文件质量的排名比较困难。因此,研究混合云中针对“多拥有者”模式的安全、高效、准确、灵活的多关键词密文检索方法具有重要的现实意义。
[0005] 针对加密文件进行关键词的密文检索技术,Liu等人首先提出了基于对称加密的密文检索方案,它支持对加密的数据进行关键词检索,并且能够保证文件和关键词的隐私性(文献1)。同时,云服务器能够参与部分解密,以减少用户的计算开销。该方案构建基于双线性映射来实现密文的检索,效率较低。
[0006] Wang等人设计了一种基于非对称加密的密文检索方案,使用不同的密钥加密每个数据,实现灵活的基于加密的访问控制,并且使用基于散列函数的密钥派生过程减少计算开销(文献2)。该方案还设计了一些机制来处理用户访问权限的更改,但是服务提供商只支持通过关键词检索数据拥有者自己的数据,不允许其他人检索。随后,Dawn等人提出了一种基于非对称加密的密文检索方案,用于帮助用户A将用户B的数据存储到云服务器,只有B可以检索数据(文献3)。
[0007] Yasuhiro提出了一种基于布隆过滤器的方案,不需要预先定义词典,查询效率较高,但是在该方案中,用户的查询都需要数据拥有者来处理,因此不适用于云存储(文献4)。
[0008] Prakash等人首次将ElGamal型椭圆曲线密码应用于可搜索的索引,由于其附加的同态性质,保证数据安全性的同时,可以对加密文件进行有效排序(文献5)。但是该方案中关键词查询的效率较低,并且不适用于“多拥有者”模式的情况。
[0009] 针对“单一拥有者”模式的弊端,Guo等人提出了在云服务器上针对“多拥有者”模式的安全多关键词排序检索,用可信代理来管理密钥的分配,并构建分组平衡索引树实现高效的查询。然而,该方案中使用的非对称标量积保持方法虽然可以很方便的实现可搜索加密,但是它的安全险比较高,容易受到攻击(文献6)。
[0010] 综上所述,目前并没有一种能在混合云环境中实现针对“多拥有者”模式的安全高效的多关键词密文排序检索方法,已有相关方案存在不支持“多拥有者”模式或多关键词检索、检索效率较低及安全风险较高等问题。
[0011] 文献1:Liu Q,Wang G J,Wu J.An efficient privacy preserving keyword search scheme in cloud computing.Proceedings of the International Conference on Computational Science and Engineering,IEEE Computer Society,Washington,DC,USA,2009.715-720.
[0012] 文献2:Wang W C,Li Z W,Rodney O,et al.Secure and efficient access to outsourced data.Proceedings of the ACM Workshop on Cloud Computing Security,ACM Press,New York,USA,2009.55-66.
[0013] 文献3:Song X D,David P,Wagner P.Practical techniques for searches on encrypted data.Proceedings of the IEEE Symposium on Security and Privacy,IEEE Computer Society,Washington,DC,USA,2000.44-56.
[0014] 文献4:Yasuhiro O.Partial disclosure of searchable encrypted data with support for boolean queries.Proceedings of the International Conference on Availability Reliability and Security,IEEE Computer Society,Washington,DC,USA,2008.1083-1090.
[0015] 文献5:Prakash S,Andola N,Venkatesan S,et al.Secure access of multiple keywords over encrypted data in cloud environment using ECC-PKI and ECC ElGamal.Proceedings of  the International Conference  on Public Key Infrastructure and Its Applications,IEEE Computer Society,Washington,DC,USA,2017.49-56.
[0016] 文献6:Guo Z Q,Zhang H,Sun C,et al.Secure multi-keyword ranked search over encrypted cloud data for multiple data owners.Journal of Systems and Software,2017.137:380-395.

发明内容

[0017] 针对现有技术的以上缺陷和改进需求,本发明提供了一种混合云环境中支持“多拥有者”模式的安全高效的多关键词密文排序检索方法。
[0018] 本发明所采用的技术方案是:一种混合云中基于同态加密的多关键词密文排序检索方法,其特征在于,包括以下步骤:
[0019] 步骤1:初始化;
[0020] 可信私有云服务器选择一个大素数作为私有密钥,私有云服务器选择一个远大于私有密钥的大素数作为共享密钥;
[0021] 步骤2:文件加密和上传;
[0022] 数据拥有者对要上传的文件进行加密后发送到公有云服务器;
[0023] 步骤3:生成明文索引;
[0024] 具体实现包括以下子步骤:
[0025] 步骤3.1:数据拥有者与私有云服务器进行交互获得公共词典;
[0026] 步骤3.2:数据拥有者对其所有文件进行语法分析、分词和提取关键词,得到关键词集合,并根据关键词集合更新公共词典;
[0027] 步骤3.3:数据拥有者利用向量空间模型和公共词典为每个文件分别生成明文形式的二进制索引向量,所有的二进制索引向量构成了明文索引;
[0028] 步骤3.4:数据拥有者将公共词典和明文索引发送给私有云服务器。
[0029] 步骤4:生成安全索引;
[0030] 具体实现包括以下子步骤:
[0031] 步骤4.1:私有云服务器首先计算公共词典中每两个关键词之间的相关系数并生成相关矩阵;
[0032] 步骤4.2:私有云服务器为数据拥有者的每个文件生成流行度信息,计算数据拥有者对公共词典中所有关键词的平均流行度向量;
[0033] 步骤4.3:私有云服务器利用相关矩阵和平均流行度向量计算数据拥有者对公共词典中所有关键词的原始权重;
[0034] 步骤4.4:私有云服务器对所有数据拥有者的原始权重进行归一化处理,得到每个数据拥有者对公共词典中所有关键词的加权权重,并通过数据拥有者的明文索引和加权权重生成所有文件的加权索引向量;
[0035] 步骤4.5:私有云服务器基于所有数据拥有者的加权索引向量构建一个加权二叉索引树;
[0036] 步骤4.6:私有云服务器使用步骤1中的私有密钥和共享密钥对二叉索引树中的每个节点对应的加权索引向量进行整数上的同态加密,得到加密索引树,即安全索引;
[0037] 步骤4.7:私有云服务器将安全索引发送至公有云服务器;
[0038] 步骤5:生成陷
[0039] 具体实现包括以下子步骤:
[0040] 步骤5.1:数据使用者将查询数据和参数信息发送给私有云服务器以请求检索;
[0041] 步骤5.2:私有云服务器对数据使用者的查询数据进行分词和提取关键词处理,并根据公共词典生成二进制查询向量;
[0042] 步骤5.3:私有云服务器根据参数信息将查询向量扩展为陷门并发送到公有云服务器;
[0043] 步骤6:检索;
[0044] 具体实现包括以下子步骤:
[0045] 步骤6.1:公有云服务器接收到陷门后,在安全索引中使用步骤1中的共享密钥计算并比较查询向量与加密索引树节点对应密文索引向量的相关性得分,将前n个得分最高的结果存入一个相关性分数序列中;
[0046] 步骤6.2:公有云服务器对得分结果进行排序,将前n个结果对应的密文文件下载链接列表返回给数据使用者;
[0047] 步骤6.3:数据使用者下载密文文件,并与数据拥有者交互,获得密钥后解密文件。
[0048] 与现有技术相比,本发明具有以下的有益效果:实现了一种混合云环境中基于整数上同态加密的多关键词密文排序检索方法,能够有效保障数据的安全隐私,支持“多拥有者”模式和多关键词的数据检索,具有较高的检索效率和准确率,排序结果不仅考虑到查询数据和文件之间的相关性,还考虑到文件质量,更符合用户的需求。附图说明
[0049] 图1为本发明实施例的整体流程图
[0050] 图2为本发明实施例中生成明文索引阶段的细化流程图;
[0051] 图3为本发明实施例中生成安全索引阶段的细化流程图;
[0052] 图4为本发明实施例中生成安全索引阶段的文件权重示例图;
[0053] 图5为本发明实施例中生成安全索引阶段的节点配对示例图;
[0054] 图6为本发明实施例中生成安全索引阶段的加权索引树示例图;
[0055] 图7为本发明实施例中加密索引树节点阶段的细化流程图;
[0056] 图8为本发明实施例中生成陷门阶段的细化流程图;
[0057] 图9为本发明实施例中查询阶段的细化流程图。

具体实施方式

[0058] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0059] 以下首先就本发明的技术术语进行解释和说明:
[0060] 数据拥有者:文件数据集的贡献者,将数据上传到云服务器存储的个人或组织。
[0061] 数据使用者:需要对数据拥有者存储在云服务器中的数据进行检索的用户。
[0062] 公有云服务器:由大型企业运营,能够提供给用户较大存储空间和数据处理能力;会诚实地执行用户所要求的协议及功能,但是会尽可能地窥探和分析用户存储的重要隐私数据。
[0063] 私有云服务器:由中小型企业组织内部构建,安全可信,用于处理有较高安全性需求的数据操作。
[0064] 明文索引:索引指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序,未被加密或者其他处理的索引即明文索引。
[0065] 安全索引:加密以后得到的索引即安全索引。
[0066] 私有密钥:加密算法中未公开发布的密钥称为私有密钥。
[0067] 共享密钥:加密算法中公开发布的密钥称为共享密钥,共享密钥和私有密钥是一对密钥,都参与对数据的加密和解密,仅有共享密钥无法解密数据。
[0068] 向量空间模型:把对文本内容的处理简化为向量空间中的向量运算,并且以空间上的相似度表达语义的相似度。当文件被表示为文件空间的向量,就可以通过计算向量之间的相似度来度量文件间的相似度。文本处理中最常用的相似度度量方式是余弦距离。
[0069] Jaccard相似系数:两个样本集交集的元素个数与并集的元素个数的比值,一般用来比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。
[0070] 以下结合实施例和附图对本发明做进一步说明。
[0071] 图1为本发明混合云中基于同态加密的多关键词密文排序检索方法的整体流程图。如图1所示,本发明混合云中基于同态加密的多关键词密文排序检索方法是应用在混合云中的数据检索情境中,该情境包括数据拥有者、私有云服务器、公有云服务器和数据使用者四个实体。首先,每个数据拥有者与私有云服务器交互更新公共词典,对其所有文件生成明文形式的索引向量发送给私有云服务器,同时将文件集加密后发送至公有云服务器;然后,私有云服务器构建动态权重模型计算每个数据拥有者对公共词典中所有关键词的加权权重,生成加权索引,构建二叉索引树,通过同态加密算法对索引树进行加密得到安全索引,并将安全索引发送至公有云服务器;接着,当数据使用者需要检索公有云服务器上的文件时,私有云服务器接收数据使用者发送的检索数据和参数信息,生成查询向量,将查询向量扩展为陷门后发送到公有云服务器发起检索请求;最后,公有云服务器根据陷门和安全索引为数据使用者进行检索,将得分最高的密文文件下载链接列表返回给数据使用者,数据使用者下载密文文件,并与数据拥有者交互获得密钥后解密文件。在其实施方式中,私有云服务器还承担着必要时更新数据拥有者的权重和安全索引的责任。
[0072] 在本实施例中,数据拥有者为3个终端(PC、PDA、智能手机等)用户,分别为O1、O2、O3,现在数据拥有者需要上传至公有云服务器共享的数据为文件集合F;数据使用者为用户X,需要访问集合F。
[0073] 本发明提供的一种混合云中基于同态加密的多关键词密文排序检索方法,具体包括以下步骤:
[0074] 步骤1:初始化;
[0075] 私有云服务器选择两个大素数作为私有密钥和共享密钥;步骤1具体包括以下子步骤:
[0076] 步骤1.1:私有云服务器选择大素数P1作为私有密钥;
[0077] 步骤1.2:私有云服务器选择一个远大于P1的大素数P2作为共享密钥。
[0078] 步骤2:文件加密和上传;
[0079] 数据拥有者对要上传的文件进行加密后发送到公有云服务器,步骤2具体包括以下子步骤:
[0080] 步骤2.1:数据拥有者准备好要上传的文件集合,并使用DES算法分别对每个文件进行加密;
[0081] 步骤2.2:数据拥有者将密文文件上传至公有云服务器。
[0082] 步骤3:生成明文索引;
[0083] 数据拥有者首先与私有云服务器进行交互获得公共词典,然后对所有文件提取关键词生成关键词集合,更新公共词典并为每个文件生成明文形式的二进制索引向量,所有的二进制索引向量构成了明文索引,最后将公共词典和明文索引发送给私有云服务器;
[0084] 如图2所示,步骤3具体包括以下子步骤:
[0085] 步骤3.1:数据拥有者Oi与私有云服务器进行交互获得公共词典,交互过程主要是对公共词典的更新,对数据拥有者Oi的每个文件提取关键词后把这些关键词发送到私有云服务器,私有云服务器通过这些关键词更新公共词典,把公共词典里没有的关键词添加进公共词典,因此公共词典里存储了数据拥有者的所有文件的关键词,并没有重复。
[0086] 在本实施例中,数据拥有者O1与私有云服务器交互后得到公共词典D,D初始包含了20个关键词,具体为D={filter,index,document,frequency,vector,index,file,segment,attribute,keyword,node,score,cloud,result,internet,word,retrival,icon,data,query}。
[0087] 步骤3.2:数据拥有者Oi对所有文件进行语法分析和分词,用Fi,j表示Oi的第j个文件,对Fi,j提取m个关键词(一般通过tf-idf算法,即通过计算关键词的词频和逆文本频率得到文件中最重要的前m个关键词,这些关键词可以反映该文件的主题特征,不是通过文件的主题特征去提取关键词),得到包含m个关键词的集合Ki,j,并根据所有文件的关键词集合更新公共词典D;
[0088] 在本实施例中共有6个文件,数据拥有者O1有3个文件,数据拥有者O2有1个文件,数据拥有者O3有2个文件,对每个文件提取10个关键词,得到关键词集合如下表1所示:
[0089] 表1文件集合的关键词集合
[0090]
[0091]
[0092] 每个数据拥有者根据其关键词集合更新公共词典D,O1将D中没有的关键词{service,computing,encryption,search,memory,management,key,owner,security,scheme,privacy,maintenance}添加到D末尾,并将更新后的D发送到私有云服务器。当O2更新D时,只需将关键词{space,model,environment,access,element}添加到D末尾,同理O3将关键词{download,resource,relevance}添加到D末尾,因此最后D一共包含40个关键词;
[0093] 为了更清晰地描述本发明的关键步骤,本实施例以英文文件内容为例进行说明;对于中文文件,也可以按照步骤3.2对其进行分词和提取关键词处理得到关键词集合并更新公共词典D;
[0094] 步骤3.3:数据拥有者Oi利用向量空间模型(向量空间模型是计算机中常用的一种模型,把对文本内容的处理简化为向量空间中的向量运算,以空间上的相似度表达文本之间的相似度,在这里若公共词典中有p个关键词,将数据拥有者Oi的每个文件都转化成一个p维向量,公共词典中的某个关键词未出现在文件中,这个关键词在向量中对应的元素为0,否则为1,每个文件都有这样的一个向量,称之为索引向量)根据每个文件的关键词集合和公共词典D生成数据拥有者Oi的每个文件明文形式的二进制索引向量,用Ii,j表示Oi第j个文件的二进制索引向量,Ii,j长度等于D中关键词个数,记为p,其每一个元素代表D中对应的关键词在文件Fi,j的关键词集合里是否存在,若存在,则为1,否则为0,所有的二进制索引向量构成了明文索引;
[0095] 在本实施例中,数据拥有者Oi根据其每个文件Fi,j的关键词集合和公共词典D分别为每个文件生成二进制索引向量,用Ii,j表示Oi第j个文件的二进制索引向量,Ii,j长度为40位,若D的关键词在Fi,j关键词集合中存在,则Ii,j中该关键词对应位为1,否则为0;例如,文件F1,1的二进制索引向量可以表示为I1,1={0,1,1,0,0,…,0,0,0,0},文件F2,1的二进制索引向量可以表示为I2,1={0,0,0,1,1,…,1,0,0,0};Oi所有文件的二进制索引向量构成了其明文索引;
[0096] 步骤3.4:数据拥有者将公共词典和明文索引发送至私有云服务器。
[0097] 步骤4:生成安全索引;私有云服务器首先计算公共词典中每两个关键词之间的相关系数并生成相关矩阵,然后为数据拥有者的每个文件生成流行度信息,计算数据拥有者对公共词典中所有关键词的平均流行度向量,并计算数据拥有者对词典中所有关键词的原始权重,归一化后得到加权权重进而生成加权索引向量,接着根据加权索引向量构建加权二叉索引树,最后使用步骤1中的私有密钥和共享密钥对加权索引树中的所有节点进行整数上的同态加密得到安全索引,并将安全索引发送给公有云服务器;如图3所示,步骤4具体包括以下子步骤:
[0098] 步骤4.1:私有云服务器使用Jaccard相似系数计算公共词典D中每两个关键词之间的相关系数Sx,y并生成相关矩阵S;Sx,y计算公式如下:
[0099]
[0100] 其中,dx和dy分别表示存在关键词x和y的文件集合,L(dx∩dy)表示同时存在关键词x和y的文件个数,L(dx∪dy)表示关键词x和y至少存在一个的文件个数,x和y出现在同一文件中的文件个数越多,两者越相关;S是一个对称矩阵,矩阵的行列数相等,为D中关键词的个数,每一个元素表示对应关键词之间的相关系数;
[0101] 在本实施例中,私有云服务器计算公共词典D中每两个关键词的相关系数,如D的第2个关键词index和第3个关键词document,同时存在这两个关键词的文件有F1,1和F1,3,至少存在一个关键词的文件有F1,1、F1,2、F1,3、F3,1和F3,2,则S2,3=2/5=0.4,即index和document的相关系数为0.4。由于D中有40个关键词,私有云服务器使用一个40×40的相关矩阵S来表示所有关键词之间的相关系数,如下所示:
[0102]
[0103] 步骤4.2:私有云服务器根据数据拥有者Oi所有文件的下载次数和点击率生成流行度向量Pi,其每个元素Pi,j代表文件Fi,j的流行度信息;为了表示不同数据拥有者对不同的领域具有不同的权重,私有云服务器构建动态权重模型,通过文件的受欢迎度来确定Oi的平均流行度APi,计算公式如下:
[0104]
[0105] 其中,Pi表示Oi的流行度向量,其长度等于Oi的文件个数li;Ii是一个li×p的矩阵,矩阵的每一行代表Oi的一个文件的二进制索引向量;Pi·Ii的结果是一个长度为p的向量,其每个元素代表Oi的所有文件对公共词典D中对应关键词的流行度之和;αi是一个长度为p的向量,其每一个元素表示Oi的所有文件中包含D中对应关键词的文件数的倒数,可以通过Ii获得;运算符 表示两个向量的对应元素的乘积;APi也是一个长度为p的向量,其每个元素代表Oi对D中对应关键词的权威程度;
[0106] 在本实施例中,由于数据拥有者O1有3个文件,私有云服务器构建一个长度为3的流行度向量P1来表示O1所有文件的流行度信息,P1={3,4,9},其三个元素分别代表文件F1,1、F1,2和F1,3的流行度信息。α1的每一个元素表示O1的所有文件中包含D中对应关键词的文件数的倒数,例如O1的所有文件中只有文件F1,1包含D中第一个关键词filter,文件F1,1、F1,2和F1,3包含D中第二个关键词index,因此α1的前两个元素分别为1和1/3,私有云服务器计算O1的平均流行度AP1如下:
[0107]
[0108] 同理,私有云服务器构建向量P2和P3来表示数据拥有者O2、O3所有文件的流行度信息,并计算出数据拥有者O2和O3的平均流行度向量AP2和AP3;
[0109] 步骤4.3:私有云服务器根据平均流行度向量APi和相关矩阵S计算每一个数据拥有者Oi对公共词典D中的所有关键词的原始权重 计算公式如下:
[0110]
[0111] 其中, 是一个长度为p的向量,其每个元素依次代表Oi对公共词典D中一个关键词的原始权重;
[0112] 在本实施例中,数据拥有者Oi的原始权重 是一个长度为40的向量,通过相关矩阵S和Oi的平均流行度向量APi计算出数据拥有者O1的原始权重W1raw={18.34,10.55,raw8.27,…,9.67,21.60,24.33},数据拥有者O2的原始权重W2 ={12.97,8.47,19.78,…,
11.69,5.88,10.81},数据拥有者O3的原始权重W3raw={10.50,6.69,6.15,…,15.37,9.23,
13.34};
[0113] 步骤4.4:私有云服务器对所有数据拥有者的原始权重进行归一化处理,首先在不同数据拥有者之间选取每个关键词的最大原始权重构成Wmax,Wmax是一个长度为p的向量,其每个元素代表在所有数据拥有者的原始权重信息中对公共词典D对应关键词的最大原始权重,即:
[0114]
[0115] 然后将这些最大原始权重都规格化为1,其他关键词权重是0到1之间的数字,用Wi表示数据拥有者Oi对D中所有关键词的加权权重,则:
[0116] Wi=(Wi,1,Wi,2,...,Wi,p);
[0117] Wi是一个长度为p的向量,其中Wi,t是Oi对第t个关键词的加权权重,则:
[0118]
[0119] 其中,Wmax[t]表示所有数据拥有者的原始权重信息中第t个关键词的最大原始权重;
[0120] 最后根据Wi及二进制索引向量Ii,j得到加权索引向量 即:
[0121]
[0122] 按上述步骤,将明文索引中所有的二进制索引向量进行计算得到对应的加权索引向量;
[0123] 在本实施例中,公共词典D中的第一个关键词filter的最大原始权重为18.34,将其规格化为1,则归一化后数据拥有者O1、O2、O3对关键词filter的加权权重分别为1、0.71和0.57;利用这种方法,每个数据拥有者获得了对D中所有关键词的加权权重,再根据明文索引和加权权重生成所有文件的加权索引向量,例如计算加权索引向量 如下:
[0124]
[0125] 步骤4.5:私有云服务器基于所有文件的加权索引向量构建一个加权二叉索引树;首先为每个加权索引向量生成一个叶节点u,包含u.id,u.Fid,u.Val,u.id是u的唯一标识,u.Fid表示u指向文件的标识,u.Val用来存储加权索引向量,所有叶节点构成一个节点队列;然后通过两两计算叶节点中加权索引向量的余弦值,找出一个与叶节点u1余弦值最大的叶节点u2进行配对,以u1和u2为子节点生成一个父节点v,包含v.id和v.Val,v.id是v的唯一标识,v.Val用来存储一个新的索引向量,其每个元素是子节点中索引向量的对应元素的较大值;接着继续执行上述步骤,完成余下叶节点的两两配对,并生成对应父节点;最后执行所有父节点的分组配对,直到构造出完整的二叉索引树;
[0126] 在本实施例中,如图4所示,是所有数据拥有者的6个文件的加权索引向量,私有云服务器首先分别为这6个加权索引向量生成叶节点;然后对6个叶节点进行配对,如图5所示,对文件F1,1的节点进行配对时,分别计算F1,1节点与其他5个节点的向量余弦值,选择余弦值最大的F1,2节点与F1,1节点进行配对,并创建F1,1节点与F1,2节点的父节点,父节点存储了一个新的索引向量,其每个元素是F1,1节点与F1,2节点中索引向量的对应元素的较大值;同理F1,3节点与F2,1节点进行配对,F3,1节点与F3,2节点进行配对,并创建各自的父节点;最后如图6所示,继续通过父节点的分组配对构造出完整的二叉索引树;
[0127] 步骤4.6:如图7所示,私有云服务器首先将二叉索引树每个节点中加权索引向量的每一位编码为整数Pm,然后使用步骤1中的私有密钥P1和共享密钥P2分别对所有编码数进行整数上的同态加密,每次加密时选取一个随机大素数q,其位数小于P1和P2,计算C=Pm*P1+P1*P2*q,C即为文件Fi,j的加权索引向量中一位元素的加密结果;对其进行解密需要同时使用P1和P2,计算(C mod P2)/P1即可得到Pm,从而还原明文;二叉索引树中所有的加权索引向量加密后的密文索引向量构成了加密索引树,即安全索引;
[0128] 在本实施例中,选取256位大素数P1和300位大素数P2作为私有密钥和共享密钥对加权索引向量进行加密,例如,加密加权索引向量 时,将其第一位元素0编码为一个整数,选取随机大素数q1计算C1=Pm1*P1+P1*P2*q1即为第一位加密后的结果,然后选取随机大素数q2加密第二位元素,最终完成所有加权索引向量的加密,得到安全索引;
[0129] 步骤4.7:私有云服务器将安全索引发送至公有云服务器。
[0130] 步骤5:生成陷门;数据使用者将查询数据和参数信息发送到私有云服务器以请求检索,私有云服务器对查询数据提取关键词并根据公共词典生成二进制查询向量,再将查询向量扩展为陷门并发送给公有云服务器;如图8所示,步骤5具体包括以下子步骤:
[0131] 步骤5.1:数据使用者将查询数据和参数信息发送给私有云服务器以请求检索;
[0132] 在本实施例中,数据使用者X将要查询的数据q={secure index and keyword search}和需要返回的文件数量n=3发送给私有云服务器;
[0133] 步骤5.2:私有云服务器对查询数据进行分词和提取关键词处理,得到查询的关键词集合Kq,并通过公共词典D生成二进制查询向量Rq,Rq是一个长度为p的向量,其每个元素代表D中对应的关键词在Kq里是否存在,若存在,则为1,否则为0;
[0134] 在本实施例中,私有云服务器对查询数据进行提取关键词处理得到关键词集合Kq={secure,index,keyword,search},并根据公共词典D生成二进制查询向量Rq={0,1,0,…,0,0,0},其中第2位、第10位和第24位为1,其余位为0;
[0135] 步骤5.3:私有云服务器将参数信息添加到查询向量Rq的末尾,得到陷门Tq,Tq是一个长度为p+1的向量,前p个元素与查询向量一致,最后一位元素代表需要返回的文件数量,最后将Tq发送到公有云服务器;
[0136] 在本实施例中,将参数n=3添加到查询向量Rq的末尾,得到陷门Tq={0,1,0,…,0,0,0,3},并将Tq发送到公有云服务器。
[0137] 步骤6:检索;公有云服务器根据陷门和安全索引为数据使用者的请求进行检索,将前n个得分最高的密文文件下载链接列表返回给数据使用者,数据使用者下载密文文件,并与数据拥有者交互获得密钥后解密文件,如图9所示,步骤6具体包括以下子步骤:
[0138] 步骤6.1:公有云服务器接收到陷门后,在加密索引树中执行深度优先搜索算法从根节点开始检索,依次计算查询向量Rq与所遍历节点对应密文索引向量的内积R,并使用共享密钥P2计算得到相关性分数Sci,j,公有云服务器将相关性分数存入一个长度为n的分数序列中;当分数序列存满n个相关性分数后继续遍历,若遇到非叶子节点v,则计算v与Rq的相关性分数,如果该分数小于分数序列中的最小分数,则停止遍历并返回上一节点继续遍历,如果该分数大于分数序列中的最小分数,则继续遍历v的所有子节点;若遇到叶子节点u,则计算u与Rq的相关性分数,如果该分数小于分数序列中的最小分数,则继续遍历,如果该分数大于分数序列中的最小分数,则将该分数替换分数序列中的最小分数并继续遍历;按照这个规则完成整个索引树的遍历,最终分数序列中的分数即为n个最高的文件得分;
[0139] 在本实施例中,如图6,公有云服务器会依次计算查询向量Rq与节点root、u4、u1、F1,1、F1,2、u2、F1,3对应密文索引向量的内积,并使用P2对内积结果进行模操作得到相关性分数;公有云服务器计算Rq与叶子节点F1,1、F1,2、F1,3的相关性分数并将其存入一个长度为3的分数序列中,此时分数序列中包含的相关性分数为{1.21,1,0.89};继续计算Rq与叶子节点F2,1的相关性分数Sc2,1=0.2,该分数小于分数序列中的最小分数,则继续遍历,返回到root节点后计算Rq与非叶子节点u3的相关性分数Sc3,0=1.15,该分数大于分数序列中的最小分数,因此需要继续遍历u3的两个叶子节点;计算Rq与叶子节点F3,1的相关性分数Sc3,1=0.96,该分数大于分数序列中的最小分数,则用该分数替换分数序列中的最小分数0.89,此时分数序列中的相关性分数为{1.21,1,0.96},计算Rq与叶子节点F3,2的相关性分数Sc3,2=0.71,该分数小于分数序列中的最小分数,不做任何操作,遍历结束,最终分数序列中的分数{1.21,1,0.96}即为3个最高的文件得分;
[0140] 若在明文环境中,Rq与加权索引向量 的明文内积为:
[0141]
[0142] 用 表示加权索引向量 加密后的密文索引向量,则公有云服务器计算Rq与密文索引向量 的内积R1,1为:
[0143] R1,1=Rq·(C1,C2,C3,...,C40)
[0144] =(0,1,0,...,0,0,0)·(C1,C2,C3,...,C40)
[0145] =C2+C10+C24
[0146] =Pm2*P1+P1*P2*q2+Pm10*P1+P1*P2*q10+Pm24*P1+P1*P2*q24
[0147] =P1*(Pm2+Pm10+Pm24)+P1*P2*(q2+q10+q24)
[0148] 其中,Pm2、Pm10和Pm24分别代表 的第2位、第10位和第24位元素编码后得到的整数,使用步骤1中的共享密钥P2对密文内积结果进行模操作得到相关性分数Sci,j,则:
[0149] Sc1,1=[P1*(Pm2+Pm10+Pm24)+P1*P2*(q2+q10+q24)]modP2
[0150] =P1*(Pm2+Pm10+Pm24)
[0151] 该分数结果可以反映明文文件和查询数据之间的相关性,这是因为该加密算法具有加法上的同态性,使得密文内积结果解密后与明文内积结果一致,例如对上述Rq与的内积结果进行解密:
[0152] Decrypt[P1*(Pm2+Pm10+Pm24)+P1*P2*(q2+q10+q24)]
[0153] =[P1*(Pm2+Pm10+Pm24)+P1*P2*(q2+q10+q24)]modP2/P1
[0154] =(P1*(Pm2+Pm10+Pm24))/P1
[0155] =Pm2+Pm10+Pm24
[0156] 得到的结果进行反编码后即可还原为明文分数1.21,因此通过比较相关性分数Sci,j就可以完成文件得分的排序;
[0157] 步骤6.2:公有云服务器对计算的得分结果进行排序,将前n个结果对应的密文文件下载链接列表返回给数据使用者;
[0158] 在本实施例中,分数序列中的3个相关性分数分别对应文件F1,1、F1,2和F3,1,且Sc1,1>Sc3,1>Sc1,2,公有云服务器将F1,1、F3,1和F1,2对应的密文文件下载链接列表返回给数据使用者X;
[0159] 步骤6.3:数据使用者下载密文文件,并与数据拥有者交互,获得密钥后解密文件;
[0160] 在本实施例中,数据使用者X下载所需要的文件后,与数据拥有者O1和O3交互获得密钥,即可解密文件。
[0161] 步骤7:关键词权重更新;当数据拥有者没有文件更新时,随着公有云服务器上文件的点击率和下载量的变化,数据拥有者对公共词典中关键词的权重会动态地变化。私有云服务器每隔一段时间按照步骤4更新每个数据拥有者对公共词典中所有关键词的平均流行度和加权权重,此时不用重新计算相关矩阵;然后重新计算所有数据拥有者加权索引,构建新的安全索引并发送到公有云服务器;
[0162] 当数据拥有者根据实际需求增加文件、删除文件或修改文件时,公共词典会发生变化,导致数据拥有者对词典中关键词的权重也会变化。数据拥有者重新执行步骤2和步骤3将更新后的公共词典和明文索引发送到私有云服务器,同时将新的密文文件发送至公有云服务器;私有云服务器按照步骤4重新生成相关矩阵和加权索引,构建新的安全索引并发送至公有云服务器;
[0163] 在本实施例中,数据拥有者O1对文件F1,1进行增加、删除或修改操作后,重新执行步骤2和步骤3将更新后的公共词典和明文索引发送到私有云服务器,同时将新的密文文件发送至公有云服务器;私有云服务器按照步骤4重新生成加权索引,构建新的安全索引并发送至公有云服务器;当没有文件更新时,私有云服务器每隔一段时间按照步骤4重新计算加权索引,构建新的安全索引并发送至公有云服务器即可。
[0164] 本发明实现了一种混合云中基于同态加密的多关键词密文排序检索方法,通过构建动态权重模型计算数据拥有者对索引关键词的加权权重,使得权重较高的数据拥有者的高质量文件更容易被检索出;采用加权二叉索引树作为索引结构,以及整数上的同态加密算法实现密文检索,能够保证检索的安全隐私,具有较高的检索效率和准确率,并能对检索结果进行有效排序。
[0165] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈