掌桥专利:专业的专利平台
掌桥专利
首页

一种动态多用户对称可搜索加密、搜索及验证方法

文献发布时间:2024-04-18 19:58:30


一种动态多用户对称可搜索加密、搜索及验证方法

技术领域

本发明属于云计算技术领域,具体涉及一种动态多用户对称可搜索加密、搜索及验证方法。

背景技术

随着云计算和云存储技术的发展,外包数据的安全性已成为热点话题。对称可搜索加密技术能够在泄漏少量预定义信息的情况下,支持云服务器在密文上进行高效检索,因而受到了广泛关注。然而,目前大多数对称可搜索加密方案仅支持单用户场景,也就是说,只有数据拥有者可以访问外包数据。在许多实际应用场景中,多个用户希望通过安全的数据共享进行协作(如医院之间希望共享患者数据)。在这种场景下,单用户可搜索加密技术不再适用。因此,多用户对称可搜索加密技术被提出,其中数据拥有者将加密数据上传至云服务器,并有选择性地授权其他用户访问其部分或全部数据。其中,针对存在恶意用户与云服务器合谋来获取额外信息的场景,许多技术提出了抗合谋的多用户可搜索加密方案。目前来看,仅有少量方法在恶意用户与云服务器合谋的情况下保护了诚实用户的查询隐私,且都只支持静态数据集。

动态对称可搜索加密技术支持在密文数据上进行添加和删除操作,因而更加符合实际应用需求。然而,动态对称可搜索加密方案相比对称可搜索加密方案会产生额外的信息泄漏并可能遭受一些攻击(如文件注入攻击),因此前后向安全成为了动态对称可搜索加密方案必须具备的性质。

目前大多数前后向安全的动态对称可搜索加密方案仅支持单用户场景且只考虑了诚实且好奇的云服务器模型。在某些情况下,如系统故障、传输异常、利益驱使等原因,云服务器可能没有正确地执行检索操作,因而会给查询用户返回不正确或不完整的检索结果。这种情况下,用户对于检索结果的正确性和完整性进行验证是非常必要的,可验证的对称可搜索加密方案得到广泛关注。

王等人公开了一种多用户场景下可验证的多密钥可搜索加密方法,该方法在多用户模型下,支持对搜索结果的正确性与完整性进行有效验证。然而,该方案未考虑数据集动态更新场景。徐等人公开了具有前后向隐私支持非交互多用户可搜索加密方法及系统,该方法避免了数据使用者频繁与数据拥有者交互,且实现了较小的客户端存储,然而该方法未考虑恶意云服务模型,未对数据使用者的检索结果进行验证。李等人公开了一种基于可验证的对称可搜索加密的隐私保护方法,该方法支持多个授权用户对数据拥有者存储于云端的数据发起查询操作,且支持用户对查询结果的完整性和新鲜度进行验证。但该方法未考虑数据动态更新场景,且由于采用了公钥算法,因而方案存在性能瓶颈。Chamani等人提出了第一个抵抗恶意用户与恶意服务器合谋的动态多用户对称可搜索加密方案,并将其拓展到支持检索结果的可验证性。然而该方案的验证过程是在原有动态多用户可搜索加密方案的基础上直接套上默克尔树的验证结构,计算和通信开销大。

也就是说,目前现有技术中存在的相关方法存在以下问题:

(1)可验证过程是在原有动态多用户可搜索加密方案的基础上直接套上默克尔树的验证结构,共享、更新以及验证算法计算和通信开销大;

(2)借助复杂密码工具,如OMAP、加密队列等实现动态操作,更新以及检索算法计算和通信开销大;

(3)搜索陷门与搜索结果与目标关键词的所有插入条目成正比,搜索通信开销大,且用户解密时计算开销大;

(4)未实现多用户场景下非交互式真实删除。

发明内容

为了解决相关技术中存在的上述问题,本发明提供了一种动态多用户对称可搜索加密、搜索及验证方法。本发明要解决的技术问题通过以下技术方案实现:

本发明提供一种动态多用户对称可搜索加密方法,其特征在于,包括:

确定共享数据、所述共享数据的文档标识符id、所述共享数据的合法访问用户、所述合法访问用户的身份标识符u,以及所述合法访问用户的第一密钥、第二密钥和第三密钥;

采用所述第三密钥加密所述文档标识符id,得到密文;

基于所述共享数据中每个关键词、所述第一密钥、所述第二密钥、所述文档标识符id、预设安全参数和共享操作标志,采用多重集合哈希函数生成所述关键词与所述合法访问用户共同对应的更新验证证明,以及生成所述关键词的加密索引和所述关键词与所述合法访问用户共同对应的更新状态;

将所述更新状态和所述更新验证证明上传至超级账本;所述超级账本用于向所述合法访问用户共享所述状态和所述验证证明;所述状态和所述验证证明用于验证所述密文;

将所述加密索引和所述密文构成的全局加密索引,以及所述文档标识符id和所述身份标识符u构成的信息,全部发送至云服务器存储,并使所述云服务器将所述全局加密索引存储至加密索引表T

在一些实施例中,所述基于所述共享数据中每个关键词、所述第一密钥、所述第二密钥、所述文档标识符id、预设安全参数和共享操作标志,采用多重集合哈希函数生成所述关键词与所述合法访问用户共同对应的更新验证证明,以及生成所述关键词的加密索引和所述关键词与所述合法访问用户共同对应的更新状态,包括:

根据所述第一密钥、所述第二密钥和所述共享数据中每个关键词,生成所述关键词对应的第一伪随机值和第二伪随机值;

从所述超级账本中读取所述关键词和所述合法访问用户共同对应的最新状态和最新验证证明,得到读取结果;

根据所述读取结果、所述文档标识符id、所述预设安全参数、所述共享操作标志、所述第一伪随机值和所述第二伪随机值,分别生成所述关键词的加密索引,以及所述关键词与所述合法访问用户共同对应的更新状态;

根据所述读取结果、所述文档标识符id、所述第一伪随机值、所述第二伪随机值和所述更新状态,采用多重集合哈希函数生成所述关键词与所述合法访问用户共同对应的更新验证证明。

在一些实施例中,所述预设安全参数包括:第一预设安全参数和第二预设安全参数;所述根据所述读取结果、所述文档标识符id、所述预设安全参数、所述共享操作标志、所述第一伪随机值和所述第二伪随机值,分别生成所述关键词的加密索引,以及所述关键词与所述合法访问用户共同对应的更新状态,包括:

根据所述第一预设安全参数,生成所述关键词与所述合法访问用户共同对应的更新状态;

将所述第一伪随机值和所述更新状态级联后采用第一哈希函数进行处理,得到第一哈希值;

采用第二哈希函数对所述第二伪随机值和所述文档标识符id进行哈希计算,得到第二哈希值;

将长度为所述第二预设安全参数的0字符串与所述读取结果中的状态读取结果,以及所述共享操作标志和所述第二哈希值依次进行级联,得到级联结果;

将所述第一哈希值和所述级联结果进行异或处理,得到所述关键词的加密索引。

在一些实施例中,所述根据所述读取结果、所述文档标识符id、所述第一伪随机值、所述第二伪随机值和所述更新状态,采用多重集合哈希函数生成所述关键词与所述合法访问用户共同对应的更新验证证明,包括:

当所述读取结果表明不存在所述最新状态和所述最新验证证明时,将所述第一伪随机值与所述文档标识符id级联,采用多重集合哈希函数对所述第二伪随机值与级联后的第一伪随机值和文档标识符id进行计算,以及采用多重集合哈希函数对所述第二伪随机值和所述更新状态进行计算,根据计算结果,得到所述关键词与所述合法访问用户共同对应的更新验证证明;或,

当所述读取结果表明存在所述最新状态和所述最新验证证明时,采用多重集合哈希函数对所述第二伪随机值与级联后的第一伪随机值和文档标识符id进行计算,以及采用多重集合哈希函数对所述第二伪随机值和所述更新状态进行计算,采用多重集合哈希函数对所述第二伪随机值和所述最新状态进行计算,根据计算结果和所述最新验证证明,得到所述关键词与所述合法访问用户共同对应的更新验证证明。

在一些实施例中,在所述将所述加密索引和所述密文构成的全局加密索引,以及所述文档标识符id和所述身份标识符u构成的信息,全部发送至云服务器存储之后,还包括:

当要更新所述共享数据中的至少一个关键词时,获取所述共享数据的合法访问用户的所述第一密钥和所述第二密钥;

基于每个要更新的关键词、所述第一密钥、所述第二密钥、所述文档标识符id、所述预设安全参数和更新操作类型标志,采用多重集合哈希函数生成所述要更新的关键词与所述合法访问用户共同对应的更新验证证明,以及生成所述关键词的加密索引和所述关键词与所述合法访问用户共同对应的更新状态;所述更新操作类型标志表征增加或删除;

将所述要更新的关键词的所述更新状态和所述更新验证证明上传至所述超级账本;

将所述密文和所述要更新的关键词的加密索引所构成的更新的全局加密索引,发送至云服务器,并使所述云服务器采用所述更新的全局加密索引对所述加密索引表T

在一些实施例中,所述确定共享数据、所述共享数据的文档标识符id、所述共享数据的合法访问用户、所述合法访问用户的身份标识符u,以及所述合法访问用户的第一密钥、第二密钥和第三密钥,包括:

选择要共享的用户,以及要向所述用户共享的数据;

获取所述用户的身份标识符u、所述第一密钥、所述第二密钥和所述第三密钥,以及所述共享数据的文档标识符id;

通过将所述身份标识符u和所述文档标识符id添加至所述用户访问列表AccessList,将所述用户作为所述共享数据的合法访问用户。

在一些实施例中,在所述获取所述用户的身份标识符u、所述第一密钥、所述第二密钥和所述第三密钥,以及所述共享数据的文档标识符id之前,包括:

获取所述用户发送的注册请求;

根据所述预设安全参数,为所述用户生成所述第一密钥、所述第二密钥和所述第三密钥;

将所述第一密钥、所述第二密钥和所述第三密钥发送至所述用户,并将所述第一密钥、所述第二密钥和所述第三密钥存储至用户密钥列表UsersKeys。

本发明还提供一种搜索方法,应用于云服务器,所述云服务器存储有采用上述方法得到的加密索引表T

接收用户发送的查询陷门,根据所述查询陷门生成key;所述查询陷门包含要查询的关键词对应的第一伪随机值和更新状态;

根据key从所述加密索引列表T

根据key、所述第一伪随机值、所述更新状态和value,得到至少一个对应的子密文信息;每个子密文信息包含第二哈希值,以及共享操作标志或更新操作类型标志;所述更新操作类型标志表征增加或删除;

根据所述第二哈希值、用于存储删除的密文信息的删除条目列表Δ、用于存储上一次查询结果的缓存列表T

在一些实施例中,所述根据所述第二哈希值、用于存储删除的密文信息的删除条目列表Δ、用于存储上一次查询结果的缓存列表T

当所述至少一个子密文信息包含所述共享操作标志,或所述至少一个子密文信息包含所述更新操作类型标志且所述更新操作类型标志表征增加时,判断所述第二哈希值是否存在于所述删除条目列表Δ,若存在,将所述第二哈希值从所述删除条目列表Δ中删除,若不存在,将所述第二哈希值和所述要查询的关键词的密文所构成的id密文信息存储至中间查询结果列表R′,并从所述加密索引列表T

当所述至少一个子密文信息包含所述更新操作类型标志且所述更新操作类型标志表征删除时,将所述第二哈希值添加至所述删除条目列表Δ,之后,判断所述第二哈希值和所述要查询的关键词的密文所构成的id密文信息是否存在于所述缓存列表T

在依次遍历所述至少一个子密文信息中包含的所有操作标志之后,得到更新后的所述缓存列表T

将更新后的所述缓存列表T

本发明还提供一种验证方法,包括:

从超级账本读取要查询的关键词的更新状态和更新验证证明;

当所述最新状态和所述最新验证证明均存在时,根据所述要查询的关键词、所述第一密钥和所述第二密钥,生成所述要查询的关键词对应的第一伪随机值和第二伪随机值;

根据所述第一伪随机值和所述最新状态组成查询陷门,并将所述查询陷门发送至云服务器;

接收所述云服务器发送的采用上述搜索方法生成的查询结果;

采用第三密钥对所述查询结果进行解密,得到包含所述要查询的关键词的所有共享数据的文档标识符id;

采用多重集合哈希函数对所述第二伪随机值与所述更新状态进行计算,得到第一多重集合哈希函数值,并采用多重集合哈希函数对根据所述第二伪随机值与级联后的所述第一伪随机值和解密后的查询结果中所有文档标识符id进行计算,得到所有的第二多重集合哈希函数值;

对所述第一多重集合哈希函数值和所述第二多重集合哈希函数值进行求和,得到重新生成的所述要查询的关键词对应的更新验证证明;

当重新生成的所述要查询的关键词的更新验证证明与从所述超级账本读取的所述要查询的关键词的更新验证证明相同时,表明对所述查询结果的验证通过;否则,表明验证失败。

本发明具有如下有益技术效果:

本发明由于在生成加密索引时,会采用多重集合哈希函数生成关键词与合法访问用户共同对应的最新验证证明,并且,该验证证明用于验证关键词所在的共享数据的密文,因而,可以基于多重集合哈希函数实现对关键词的查询结果的可验证性,并且,在验证过程中仅需O(1)的通信开销以及O(R

本发明由于以超级账本作为数据拥有者(向云端服务器上传全局索引的用户)与用户(向云端服务器发送查询陷门的用户)同步信息的媒介,避免引入OMAP等复杂且高开销的密码工具,从而提升了共享、动态更新以及搜索时的性能,在数据拥有者与查询用户间可以更加高效地同步更新信息,实现了更加高效的动态操作。

本发明由于采用状态链构造加密索引,并采用搜索已缓存的搜索结果的方法,因而大大降低了搜索过程中的计算和通信开销,实现了更好的搜索性能。

本发明由于在多用户场景下构造的加密索引中可以包含用于表征增加或删除的更新操作类型标志,因而,可以在加密索引中添加删除条目的索引,从而可以支持非交互式真实删除,实现了多用户场景下非交互式真实删除。

以下将结合附图及实施例对本发明做进一步详细说明。

附图说明

图1为本发明实施例提供的示例性的可验证动态多用户对称可搜索加密系统模型的一个结构示意图;

图2为本发明实施例提供的动态多用户对称可搜索加密方法的一个流程图;

图3为本发明实施例提供的示例性的不同数据集大小下的搜索时间开销的对比示意图;

图4为本发明实施例提供的示例性的不同检索结果数量下的搜索时间开销的对比示意图;

图5为本发明实施例提供的示例性的搜索通信开销的对比示意图;

图6为本发明实施例提供的示例性的更新时间开销的对比示意图;

图7为本发明实施例提供的示例性的更新通信开销的对比示意图;

图8为本发明实施例提供的示例性的不同数据集大小下的验证时间开销的对比示意图;

图9为本发明实施例提供的示例性的不同检索结果数量下的验证时间开销的对比示意图。

具体实施方式

下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。

在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。

尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

图1是本发明提供的示例性的可验证动态多用户对称可搜索加密系统模型的一个结构示意图。如图1所示,该系统模型中包括数据拥有者、数据使用者(也称为用户)、云服务器和超级账本。(1)数据拥有者:数据拥有者将其明文数据加密后生成密文数据并上传至云服务器。同时,数据拥有者在新数据使用者注册时为其生成密钥。随后,数据拥有者根据需要选择性地将其数据共享给数据使用者,使得其他用户可以对有访问权限的数据进行关键词检索。除此之外,数据拥有者可以对密文数据进行更新,即给某个文档添加某个关键词或从某个文档中删除某个关键词。同时,数据拥有者还需相应地更新状态和验证证明信息并将其上传至超级账本。(2)数据使用者:数据使用者首先需要通过注册进入系统,并从数据拥有者处获取其密钥,各个数据使用者的密钥是不同的。在查询阶段,数据使用者使用其密钥生成查询陷门并发送给云服务器。在得到查询结果密文后,数据使用者使用密钥对查询结果密文进行解密从而得到最终的明文检索结果。此外,数据使用者可以对检索结果进行验证来判断是否收到了完整且正确的检索结果。(3)云服务器:在初始阶段,云服务器存储数据拥有者发送的密文数据。在数据共享和更新阶段,云服务器接收数据拥有者发送的更新数据并存储。在查询阶段,云服务器接收数据使用者发送的查询陷门(即图1中的检索陷门)并在密文索引中进行检索,随后向数据使用者返回检索结果。(4)超级账本:超级账本是一个联盟链协议,仅允许数据拥有者和已进行系统注册的数据使用者参与,云服务器无法访问超级账本。在每次共享或更新操作之后,数据拥有者将用于更新、检索和验证的辅助信息发送至超级账本存储。在检索时,数据使用者首先从超级账本上取下最新的检索和验证辅助信息,基于这些辅助信息进行关键词检索和检索结果验证操作。以下将具体介绍数据拥有者、数据使用者和云服务器的作用。

图2是本发明实施例提供的动态多用户对称可搜索加密方法的一个流程图,该加密方法应用于数据拥有者端,如图2所示,该方法包括以下步骤:

S001、确定共享数据、共享数据的文档标识符id、共享数据的合法访问用户、合法访问用户的身份标识符u,以及合法访问用户的第一密钥k

S002、采用第三密钥k″

S003、基于共享数据中每个关键词w、第一密钥k

S004、将更新状态st

S005、将加密索引(L||D)和密文C构成的全局加密索引(L,(D,C)),以及文档标识符id和身份标识符u构成的信息(u,id),全部发送至云服务器存储,并使云服务器将全局加密索引(L,(D,C))存储至加密索引表T

具体通过以下内容对上述步骤,以及与上述步骤相关的步骤进行具体说明:

S101、数据拥有者初始化系统并给数据使用者进行注册。

这里,步骤S101可以通过以下步骤实现:

S1011、数据拥有者通过预设四个表来初始化系统,具体预设一个用户密钥列表UsersKeys、一个用户访问列表AccessList、一个加密索引表T

S1012、数据拥有者给每个发来注册请求的数据使用者(用户)生成三个密钥。例如对于数据使用者u,数据拥有者根据第一预设安全参数λ,为数据使用者u生成三个随机密钥

S102、数据拥有者给指定的数据使用者共享指定的数据,生成加密索引、更新状态和更新验证证明,使得该数据使用者可以合法访问和验证该共享数据。

这里,共享数据可以是任意类型的数据,例如,可以是共享文档等。

这里,步骤S102可以通过以下步骤实现:

S1021、数据拥有者确定共享数据、共享数据的文档标识符id、共享数据的合法访问用户(数据使用者),以及合法访问用户的身份标识符u、及其第一密钥k

示例性,当数据拥有者要与数据使用者u共享数据(例如,共享文档A)时,首先获取到共享数据的文档标识符id(例如,共享文档A的文档标识符为id),并从用户密钥列表UsersKeys中获取到数据使用者u的三个密钥(k

S1022、针对共享数据包含的每个关键词w,数据拥有者利用数据使用者u的第一密钥k

具体的,对于共享数据包含的每个关键词w,数据拥有者利用合法访问用户u的第一密钥k

S1023、数据拥有者从超级账本中读取数据使用者u及共享数据包含的每个关键词w所对应的最新状态和最新验证证明,得到读取结果。

具体的,数据拥有者从超级账本中读取合法访问用户u和关键词w共同对应的最新状态st

S1024、针对共享数据包含的每个关键词w,数据拥有者根据超级账本中的读取结果,利用第一预设安全参数λ,生成关键词w和数据使用者u共同对应的更新状态st

a)当超级账本中的状态读取结果为空时,即st

b)当超级账本中的状态读取结果为非空时,即st

S1025、针对共享数据包含的每个关键词w,数据拥有者根据超级账本中的读取结果,利用更新状态st

a)当超级账本中的验证证明读取结果为空时,即hash

b)当超级账本中的验证证明读取结果为非空时,即hash

S103、数据拥有者利用数据使用者的第三密钥k″

S104、数据拥有者将更新状态st

这里,数据拥有者将w和u对应的更新状态和验证证明(st

S105、数据拥有者将加密索引和密文构成的全局加密索引,以及共享数据的文档标识符id和合法访问用户的身份标识符u构成的信息,全部发送至云服务器存储。云服务器分别存储至加密索引表T

这里,数据拥有者将加密索引(L||D)和密文C构成的全局加密索引(L,(D,C)),以及信息(u,id)发送给云服务器进行存储。云服务器存储所有信息,其中加密索引表存储格式为T

在一些实施例中,当数据拥有者需要向云服务器中已存储的共享数据中添加新关键词或删除关键词时,具体的过程通过以下步骤实现:

S106、当数据拥有者向云服务器中已存储的共享数据中添加新关键词或删除关键词时,生成更新数据对应的加密索引、更新状态和更新验证证明,使得相关数据使用者可以合法访问和验证更新后的共享数据。

这里,步骤S106可以通过以下步骤实现:

S1061、数据拥有者首先从用户访问列表AccessList中获取被更新数据对应的所有合法访问用户的身份标识符,并从本地存储的用户密钥列表UsersKeys中获取这些合法访问用户的三个密钥;然后,数据拥有者确定将要在共享数据中添加或删除的更新关键词列表KwList。

示例性,当数据拥有者要更新文档标识符为id的共享数据时,首先从用户访问列表AccessList中获取被更新数据对应的所有合法访问用户的身份标识符并存入一个临时列表UserList中,即UserList←AccessList[id];然后,从本地存储的用户密钥列表UsersKeys中获取这些合法访问用户的三个密钥,即(k

S1062、针对共享数据id的每个合法访问用户u∈UserList和每个更新关键词

示例性,数据拥有者生成第一伪随机值

S1063、数据拥有者从超级账本中读取数据使用者u及更新关键词

示例性,数据拥有者从超级账本中读取合法访问用户u和更新关键词

S1064、针对更新关键词

示例性,当超级账本中的读取结果为空时,即

当超级账本中的读取结果非空时,即

S107、数据拥有者利用数据使用者的第三密钥k″

S108、数据拥有者将要更新的关键词的更新状态和更新验证证明上传至超级账本。

这里,数据拥有者将

S109、数据拥有者将密文和要更新的关键词的加密索引所构成的更新的全局加密索引,发送至云服务器。云服务器采用更新的全局加密索引对加密索引表T

这里,数据拥有者将加密索引(L||D)和密文C构成的全局加密索引(L,(D,C))发送给云服务器进行存储。云服务器更新加密索引表,存储格式为T

本发明还提供一种搜索方法,应用于数据使用者端和云服务器端,其中云服务器中存储有采用上述加密方法生成的加密索引表T

S201、数据使用者首先从超级账本读取状态信息和验证证明,然后判断状态信息和验证证明是否为空。如果状态信息和验证证明为空,数据使用者直接得到空集作为查询结果;否则,数据使用者生成查询陷门并发送给云服务器。

示例性,当数据使用者u查询关键词w时,首先从超级账本读取w对应的更新状态和更新验证证明(st

在本实施例中,当数据使用者u从超级账本读取的状态信息和验证证明不为空,即(st

S202、云服务器根据查询陷门(t

这里,步骤S202可以通过以下步骤实现:

S2021、云服务器在接收到数据使用者u发送的查询陷门(t

这里,最终查询结果列表R用来存储最终的搜索结果,中间查询结果列表R′存储本次查询中从T

S2022、云服务器根据查询陷门(t

S2023、云服务器判断上述密文索引(D,C)是否为空。如果密文索引(D,C)不为空,云服务器利用上述第一哈希值得到的D′和加密索引表中得到的D进行异或计算,从而解密得到一个对应的子密文信息

S2024、云服务器利用S2023得到的更新操作类型标志op和第二哈希值G(r

a)当op=del时,意味着(G(r

b)当op=add时,意味着(G(r

S2025、云服务器将T

这里,在第一次执行完步骤S2022-S2025之后,会根据得到的状态st

S2026、云服务器在更新后的T

S203、数据使用者u在本地解密最终查询结果R之后获得明文数据。

具体地,数据使用者u利用第三密钥k″

本发明还提供一种验证方法,应用于数据使用者端,该方法包括:

S301、数据使用者从超级账本读取要查询的关键词的更新状态和更新验证证明,然后判断状态信息和验证证明是否为空。该步骤和S201类似。

具体地,当数据使用者u想查询关键词w时,可以从超级账本上读取关键词w和数据使用者u共同对应的更新状态和更新验证证明;若超级账本上不存在关键词w和数据使用者u共同对应的状态和验证证明时,表明云服务器中不包含关键词w的共享数据,数据使用者u则不会向云服务器进行关键词w的查询。

S302、当更新状态和更新验证证明均存在时,数据使用者u根据要查询的关键词、第一密钥和第二密钥,生成要查询的关键词对应的第一伪随机值和第二伪随机值。

示例性,当数据使用者u从超级账本上查询到了关键词w和数据使用者u共同对应的更新状态st

S303、数据使用者u根据第一伪随机值和更新状态组成查询陷门,并将查询陷门发送至云服务器。

这里,数据使用者u将t

S304、数据使用者u接收云服务器采用上述步骤S202搜索方法生成的查询结果。

S305、数据使用者u采用第三密钥对查询结果进行解密,得到包含查询关键词的所有共享数据的明文文档标识符id。

示例性,当云服务器发送的查询结果为密文C时,数据使用者u采用第三密钥k″

S306、数据使用者u首先对获取的更新状态st

S307、当重新生成的要查询关键词的更新验证证明hash′

这里,当hash′

本发明基于多重集合哈希函数实现检索结果的可验证性,在验证过程中仅需O(1)的通信开销以及O(R

为了更清楚地说明本发明的性能优点,下面将对本发明提出的方案以及最新的可验证动态多用户对称可搜索加密方案O-μSE和Q-μSE在更新、搜索和验证算法的性能上进行对比。

图3、图4以及图5所示为搜索的算法性能对比示意图,具体的,图3为不同数据集大小下的搜索时间开销的对比示意图,图4为不同检索结果数量下的搜索时间开销的对比示意图,图5为搜索通信开销的对比示意图。显然,本发明的方案搜索性能更优,首先是因为避免了使用OMAP等复杂密码工具;其次,云服务器端在检索时引入了缓存的概念,避免了重复检索;此外,本发明采用了状态链的设计思想以及做到了真实删除,因而进一步提高了搜索性能。

图6、图7所示为更新算法的性能对比示意图,具体的,图6为更新时间开销的对比示意图,图7为更新通信开销的对比示意图。可以看到,本发明的加密方法的更新性能优于其他方案,因为本发明利用超级账本在数据拥有者与用户间同步信息,降低了信息同步开销。除此之外,其他方案需要额外更新相应的默克尔树来支持后续的验证操作。

图8、图9所示为验证的算法性能对比示意图,具体的,图8为不同数据集大小下的验证时间开销的对比示意图,图9为不同检索结果数量下的验证时间开销的对比示意图。本发明方案采用多重集合哈希函数支持验证操作,验证一个文档的计算复杂度为O(1),O-μSE和Q-μSE方案采用默克尔树实现验证功能,验证一个文档的计算复杂度为O(log),因此,本发明的验证算法的验证性能更好。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

相关技术
  • 用于具有前向隐私与委托可验证性的动态可搜索对称加密的方法和系统
  • 一种多用户场景下可验证的多密钥可搜索加密方法
技术分类

06120116504145