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

针对云端加密数据的去重和完整性验证方法

文献发布时间:2023-06-19 18:37:28


针对云端加密数据的去重和完整性验证方法

技术领域

本发明涉及云存储数据处理技术领域,尤其涉及的是一种针对云端加密数据的去重和完整性验证方法。

背景技术

随着科学技术的发展,数据的产生和增长速度都在不断提高。为了节省存储空间,用户(个人或企业)会将数据上传到云服务器进行存储。同时,为了进一步提高数据的安全性,用户可以将数据进行加密后上传到云服务器。

现有技术中,不同的用户会分别将其对应的数据加密后上传到云服务器中,云服务器分别为各个不同的用户划分对应的存储空间并分别存储各个用户上传的所有数据。现有技术的问题在于,不同的用户可能上传相同的数据,因此云服务器中可能存储大量重复的数据,不利于提高云服务器的存储空间的利用率。同时,现有技术中云服务器不提供数据完整性验证的功能。用户在上传数据到云服务器之后不能进行数据完整性验证,只能在需要使用时直接下载云服务器中存储的数据,但无法确定云服务器中的数据是否完整,无法避免因数据不完整而引起的数据使用过程中的错误,不利于提高云端数据存储和使用的安全性。

因此,现有技术还有待改进和发展。

发明内容

本发明的主要目的在于提供一种针对云端加密数据的去重和完整性验证方法,旨在解决现有技术中云服务器中可能存储大量重复的数据且云服务器不提供数据完整性验证的功能,不利于提高云服务器的存储空间的利用率以及云端数据存储和使用的安全性的问题。

为了实现上述目的,本发明第一方面提供一种针对云端加密数据的去重和完整性验证方法,其中,上述针对云端加密数据的去重和完整性验证方法包括:

云服务器生成私钥和公共参数,并公开上述公共参数,其中,上述公共参数是上述云服务器生成的可以由用户端公开获得的系统参数,上述公共参数包括上述云服务器的公钥;

上述用户端获取待上传数据,对上述待上传数据进行加密获得加密数据,向上述云服务器发送上述加密数据的哈希值以触发上述云服务器根据上述加密数据的哈希值判断上述云服务器中是否存储有目标云端加密数据,其中,上述目标云端加密数据的哈希值与上述加密数据的哈希值相同;

当上述云服务器中存储有上述目标云端加密数据时,上述用户端与上述云服务器交互并进行所有权证明,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,上述用户端生成上述待上传数据对应的用于完整性验证的再签名密钥和验证密钥并向上述云服务器上传上述再签名密钥;

上述云服务器为上述目标云端加密数据对应的每一个所有者分别生成该所有者对应的数据完整性证明,其中,上述数据完整性证明根据该所有者上传到上述云服务器的再签名密钥生成;

上述用户端根据上述数据完整性证明的数量确定上述目标云端加密数据对应的所有者数量,并根据上述用户端对应的数据完整性证明和验证密钥验证上述目标云端加密数据的完整性。

可选的,在上述云服务器为上述目标云端加密数据对应每一个所有者分别生成该所有者对应的数据完整性证明之前,上述方法还包括:

当上述云服务器中未存储上述目标云端加密数据时,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,上述用户端生成上述加密数据对应的用于完整性验证的再签名密钥、验证密钥和审计标签,上述用户端向上述云服务器上传上述加密数据、上述再签名密钥和上述审计标签,上述云服务器存储接收到的上述加密数据并作为上述目标云端加密数据。

可选的,上述公共参数还包括:双线性映射函数、上述双线性映射函数的输入群、上述双线性映射函数的目标群、指数群的阶以及两个目标随机元素,其中,上述目标随机元素是上述双线性映射函数的输入群中的随机元素。

可选的,上述用户端获取待上传数据,对上述待上传数据进行加密获得加密数据,包括:

上述用户端获取待上传数据,使用预设的收敛加密算法对上述待上传数据进行加密并获得上述待上传数据对应的加密数据。

可选的,上述用户端与上述云服务器交互并进行所有权证明,包括:

上述用户端选择随机的第一比特串作为云服务器所有权挑战信息并发送给上述云服务器;

上述云服务器选择随机的第二比特串作为用户所有权挑战信息,根据上述云服务器所有权挑战信息、上述用户所有权挑战信息和上述目标云端加密数据计算获取上述云服务器对应的云服务器所有权证明信息,并将上述用户所有权挑战信息和上述云服务器所有权证明信息发送给上述用户端;

上述用户端根据上述云服务器所有权挑战信息、上述加密数据以及接收到的上述用户所有权挑战信息计算获取云服务器验证信息,并根据上述云服务器验证信息和上述云服务器所有权证明信息判断上述云服务器是否具有上述加密数据的所有权;

当判断确定上述云服务器具有上述加密数据的所有权时,上述用户端根据上述云服务器所有权挑战信息、上述用户所有权挑战信息和上述加密数据计算获取上述用户端对应的用户所有权证明信息,并将上述用户所有权证明信息发送给上述云服务器;

上述云服务器根据上述云服务器所有权挑战信息、上述用户所有权挑战信息和上述目标云端加密数据计算获取用户端验证信息,并根据上述用户端验证信息和上述用户所有权证明信息判断上述用户端是否具有上述加密数据的所有权。

可选的,当上述云服务器验证信息和上述云服务器所有权证明信息相同时,上述云服务器具有上述加密数据的所有权;

当上述用户端验证信息和上述用户所有权证明信息相同时,上述用户端具有上述加密数据的所有权。

可选的,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,包括:

上述用户端将上述加密数据的哈希值发送给上述云服务器;

上述云服务器根据上述加密数据的哈希值、上述私钥和上述公共参数计算获取上述加密数据的哈希值所对应的签名值,将上述签名值作为上述加密数据对应的安全文件标签。

可选的,上述云服务器为上述目标云端加密数据对应的每一个所有者分别生成该所有者对应的数据完整性证明,包括:

上述云服务器获取上述目标云端加密数据对应的审计标签,根据上述目标云端加密数据和上述审计标签生成上述目标云端加密数据对应的一般完整性证明;

上述云服务器根据上述一般完整性证明和各上述所有者对应的再签名密钥分别为各上述所有者生成该所有者对应的数据完整性证明;

上述云服务器将所有上述数据完整性证明所构成的完整性证明集合公开。

本发明第二方面提供一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的针对云端加密数据的去重和完整性验证程序,上述针对云端加密数据的去重和完整性验证程序被上述处理器执行时控制云服务器和用户端实现上述任意一种针对云端加密数据的去重和完整性验证方法的步骤。

本发明第三方面提供一种计算机可读存储介质,上述计算机可读存储介质上存储有针对云端加密数据的去重和完整性验证程序,上述针对云端加密数据的去重和完整性验证程序被处理器执行时控制云服务器和用户端实现上述任意一种针对云端加密数据的去重和完整性验证方法的步骤。

由上可见,本发明方案中,云服务器生成私钥和公共参数,并公开上述公共参数,其中,上述公共参数是上述云服务器生成的可以由用户端公开获得的系统参数,上述公共参数包括上述云服务器的公钥;上述用户端获取待上传数据,对上述待上传数据进行加密获得加密数据,向上述云服务器发送上述加密数据的哈希值以触发上述云服务器根据上述加密数据的哈希值判断上述云服务器中是否存储有目标云端加密数据,其中,上述目标云端加密数据的哈希值与上述加密数据的哈希值相同;当上述云服务器中存储有上述目标云端加密数据时,上述用户端与上述云服务器交互并进行所有权证明,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,上述用户端生成上述待上传数据对应的用于完整性验证的再签名密钥和验证密钥并向上述云服务器上传上述再签名密钥;上述云服务器为上述目标云端加密数据对应的每一个所有者分别生成该所有者对应的数据完整性证明,其中,上述数据完整性证明根据该所有者上传到上述云服务器的再签名密钥生成;上述用户端根据上述数据完整性证明的数量确定上述目标云端加密数据对应的所有者数量,并根据上述用户端对应的数据完整性证明和验证密钥验证上述目标云端加密数据的完整性。

与现有技术中相比,本发明方案中,云服务器不会直接用户端上传的所有加密数据,即云服务器不会直接存储大量重复的数据,而是先根据用户端上传的加密数据的哈希值判断云服务器中是否已经存储有与该加密数据相同的目标云端加密数据,如果有,则用户端不必再上传该加密数据到云服务器。云服务器只需要存储一份对应的目标云端加密数据即可,有利于提高云服务器的存储空间的利用率。进一步的,上述云服务器还支持完整性验证的功能,对于每一个证明对目标云端加密数据有所有权的所有者都分别生成该所有者对应的数据完整性证明,用户端一方面可以随时根据数据完整性证明的数量确定该目标云端加密数据所对应的所有者数量,另一方面可以根据自身(即用户端)所对应的数据完整性证明和验证密钥验证目标云端加密数据的完整性,有利于实时对存储在云服务器中的数据进行验证,从而可以避免因数据不完整而引起的数据使用过程中的错误,有利于提高云服务器的存储空间的利用率以及云端数据存储和使用的安全性的问题。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例提供的一种针对云端加密数据的去重和完整性验证方法的流程示意图;

图2是本发明实施例提供的一种针对云端加密数据的去重和完整性验证方法的具体流程示意图;

图3是本发明实施例提供的一种透明的云端加密数据去重和完整性验证系统的结构示意图;

图4是本发明实施例提供的一种智能终端的内部结构原理框图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于分类到”。类似的,短语“如果确定”或“如果分类到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦分类到[所描述的条件或事件]”或“响应于分类到[所描述条件或事件]”。

下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。

随着科学技术的发展,数据的产生和增长速度都在不断提高。为了节省存储空间,用户(个人或企业)会将数据上传到云服务器进行存储,即个人或企业可以将数据外包给云服务器。而上传到云服务器的数据(即外包的数据)可能会涉及用户隐私,需要进行机密存储,因此,为了进一步提高数据的安全性,用户可以将数据进行加密后上传到云服务器。同时,云服务器中数据的是否完整也是影响其安全性的问题之一。

现有技术中,不同的用户会分别将其对应的数据加密后上传到云服务器中,云服务器分别为各个不同的用户划分对应的存储空间并分别存储各个用户上传的所有数据。现有技术的问题在于,不同的用户可能上传相同的数据,因此云服务器中可能存储大量重复的数据,不利于提高云服务器的存储空间的利用率。同时,现有技术中云服务器不提供数据完整性验证的功能。用户在上传数据到云服务器之后不能进行数据完整性验证,只能在需要使用时直接下载云服务器中存储的数据,但无法确定云服务器中的数据是否完整,无法避免因数据不完整而引起的数据使用过程中的错误,不利于提高云端数据存储和使用的安全性。因此,云端加密数据的去重和完整性审计对于云存储系统的安全性和效率具有重要意义。

为了解决上述多个问题中的至少一个问题,本发明方案中,云服务器生成私钥和公共参数,并公开上述公共参数,其中,上述公共参数是上述云服务器生成的可以由用户端公开获得的系统参数,上述公共参数包括上述云服务器的公钥;上述用户端获取待上传数据,对上述待上传数据进行加密获得加密数据,向上述云服务器发送上述加密数据的哈希值以触发上述云服务器根据上述加密数据的哈希值判断上述云服务器中是否存储有目标云端加密数据,其中,上述目标云端加密数据的哈希值与上述加密数据的哈希值相同;当上述云服务器中存储有上述目标云端加密数据时,上述用户端与上述云服务器交互并进行所有权证明,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,上述用户端生成上述待上传数据对应的用于完整性验证的再签名密钥和验证密钥并向上述云服务器上传上述再签名密钥;上述云服务器为上述目标云端加密数据对应的每一个所有者分别生成该所有者对应的数据完整性证明,其中,上述数据完整性证明根据该所有者上传到上述云服务器的再签名密钥生成;上述用户端根据上述数据完整性证明的数量确定上述目标云端加密数据对应的所有者数量,并根据上述用户端对应的数据完整性证明和验证密钥验证上述目标云端加密数据的完整性。

与现有技术中相比,本发明方案中,云服务器不会直接存储用户端上传的所有加密数据,即云服务器不会直接存储大量重复的数据,而是先根据用户端上传的加密数据的哈希值判断云服务器中是否已经存储有与该加密数据相同的目标云端加密数据,如果有,则用户端不必再上传该加密数据到云服务器。云服务器只需要存储一份对应的目标云端加密数据即可,有利于提高云服务器的存储空间的利用率。进一步的,上述云服务器还支持完整性验证的功能,对于每一个证明对目标云端加密数据有所有权的所有者都分别生成该所有者对应的数据完整性证明,用户端一方面可以随时根据数据完整性证明的数量确定该目标云端加密数据所对应的所有者数量,另一方面可以根据自身(即用户端)所对应的数据完整性证明和验证密钥验证目标云端加密数据的完整性,有利于实时对存储在云服务器中的数据进行验证,从而可以避免因数据不完整而引起的数据使用过程中的错误,有利于提高云服务器的存储空间的利用率以及云端数据存储和使用的安全性的问题。

同时,现有技术中,不同用户上传的相同数据都会存储在云服务器中,云服务器会向各个用户分别收取对应的费用,例如有4个用户分别上传了相同的一个1GB的文件,则需要占据云服务器4GB的空间,并且云服务器会向4个用户分别收取1GB的存储费用。

而一种应用场景中,云服务器可以自行对不同用户所上传的相同的文件进行去重,即只存储一份云端加密数据,但无法实现透明去重,即云端加密数据的拥有者(即对应的用户端)无法知道该云端加密数据一共被多少个拥有者拥有,此时用户无法获知对应的云服务的存储费用可以降低。

而本发明中,在云服务器实现去重之后,用户端还可以根据其对应的目标云端加密数据所对应的数据完整性证明的数量来确定该目标云端加密数据对应的所有者数量。即本发明可以实现透明去重,云端加密数据的拥有者(即对应的用户端)可以知道该云端加密数据一共被多少个拥有者拥有,从而可以根据拥有者的数量确定应该分摊的费用,有利于提高用户在去重过程中获得的经济效益。例如,有4个用户分别上传了相同的一个1GB的文件,去重后只需要占据云服务器1GB的空间,则可以由4个用户共同承担1GB所对应的存储费用。

在另一种应用场景中,云服务器提供的用于验证数据完整性的证明数据是公开的,可能会被恶意用户利用,从而导致文件被泄露、危害文件机密性甚至侵害用户隐私。而本发明中,云服务器生成的数据完整性证明是分别针对每一个所有者的,即每一个所有者所对应的数据完整性证明的具体内容不同,该所有者需要结合自身的验证密钥和上述数据完整性证明才能验证对应的目标云端加密数据的完整性,有利于进一步提高数据存储和验证过程中的安全性。

如图1所示,本发明实施例提供一种针对云端加密数据的去重和完整性验证方法,具体的,上述方法包括如下步骤:

步骤S100,云服务器生成私钥和公共参数,并公开上述公共参数,其中,上述公共参数是上述云服务器生成的可以由用户端公开获得的系统参数,上述公共参数包括上述云服务器的公钥。

其中,上述云服务器是用于对上传的数据进行存储的云端服务器,云服务器可以用于存储用户端上传的数据。本实施例中,上述针对云端加密数据的去重和完整性验证方法用于对上述云服务器中存储的云端加密数据(本实施例中以所有云端加密数据中的一个目标云端加密数据为例)进行去重和完整性验证(即完整性审计)。需要说明的是,本实施例中上述云服务器与上述用户端通信连接。具体的,本实施例中,云服务器生成私钥和公共参数,并将公开参数向与上述云服务器通信连接的所有用户端公开。

上述私钥用在用户端与云服务器交互进行数据上传的过程中,云服务器使用私钥对加密数据的哈希值进行签名以得到安全可公开的安全文件标签。上述公共参数则用于统一所有用户端在安全文件标签生成、审计标签生成等计算中需要使用的参数,以提高计算过程的安全性和效率。

本实施例中,上述公共参数还包括:双线性映射函数、上述双线性映射函数的输入群、上述双线性映射函数的目标群、指数群的阶以及两个目标随机元素,其中,上述目标随机元素是上述双线性映射函数的输入群中的随机元素。

本实施例中,云服务器根据如下具体步骤生成私钥和公共参数。云服务器执行双线性映射初始化,获得参数(p,q,e:G

云服务器公开哈希函数

步骤S200,上述用户端获取待上传数据,对上述待上传数据进行加密获得加密数据,向上述云服务器发送上述加密数据的哈希值以触发上述云服务器根据上述加密数据的哈希值判断上述云服务器中是否存储有目标云端加密数据,其中,上述目标云端加密数据的哈希值与上述加密数据的哈希值相同。

其中,上述用户端可以是与上述云服务器通信连接的任意一个用户端。本实施例中,用户端进行数据加密并与云服务器交互进行查重。具体的,用户端获取到需要进行上传的本地原始数据(即明文数据)并作为待上传数据,然后在本地对上述待上传数据进行加密获得加密数据(即密文数据),然后将加密数据的哈希值上传到云服务器,云服务器根据加密数据的哈希值判断进行文件重复判断。

具体的,在进行文件重复判断时,云服务器判断自己存储的所有云端加密数据中,是否有一个目标云端数据的哈希值与上述加密数据的哈希值相同,有则该目标云端数据与加密数据的内容是相同的,即两者是重复的,不需要再次存储上述加密数据,反之则代表该加密数据是新上传的一个数据(即首次上传的数据),在云端没有存储与之相同的数据,用户端需要上传该加密数据,云服务器则存储该加密数据。

如此,可以实现数据去重,并且在进行查重时,只需要上传对应的哈希值,不需要上传完整的加密数据,有利于节约通信资源,且可以提高去重效率。

上述用户端获取待上传数据,对上述待上传数据进行加密获得加密数据,包括:上述用户端获取待上传数据,使用预设的收敛加密算法对上述待上传数据进行加密并获得上述待上传数据对应的加密数据。需要说明的是,本实施例中预设的是收敛加密算法,实际使用过程中还可以设置其它加密算法,在此不作具体限定。

本实施例中,若用户端U获取的待上传数据为F=m

步骤S300,当上述云服务器中存储有上述目标云端加密数据时,上述用户端与上述云服务器交互并进行所有权证明,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,上述用户端生成上述待上传数据对应的用于完整性验证的再签名密钥和验证密钥并向上述云服务器上传上述再签名密钥。

具体的,本实施例中,对于重复的文件,用户端无需进行上传该加密数据等初始化上传操作,可以直接按已有目标云端加密数据的情况来与云服务器交互执行后续数据上传操作,即可以实现去重,云服务器不需要重复存储相同的数据。其中,上述重复的文件所对应的后续数据上传操作包括:用户端与云服务器交互生成可公开的安全文件标签并进行所有权证明;用户端生成用于审计的再签名密钥和验证密钥并上传再签名密钥。

在另一种应用场景中,对于首次上传的文件,则用户端与云服务器交互执行上传加密数据等初始化上传操作,保证云服务器中存储有该加密数据及其相关的必要数据(例如安全文件标签)。其中,上述初始化上传操作包括:用户端与云服务器交互生成该加密数据对应的可公开的安全文件标签;用户端生成用于审计的再签名密钥,审计标签和验证密钥;用户端上传审计标签,再签名密钥和加密数据到云服务器。

具体的,当上述云服务器中未存储上述目标云端加密数据时,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,上述用户端生成上述加密数据对应的用于完整性验证的再签名密钥、验证密钥和审计标签,上述用户端向上述云服务器上传上述加密数据、上述再签名密钥和上述审计标签,上述云服务器存储接收到的上述加密数据并作为上述目标云端加密数据。

其中,上述审计代表数据完整性检验,即验证存储在云服务器上的云端加密数据是否丢失或损坏,上述在签名密钥、审计标签和验证密钥都用于审计。需要说明的是,在上述用户端将加密数据上传到云服务器并存储为目标云端数据之后,将该用户端记录为该目标云端数据的所有者。如果后续还有其他新的用户端准备上传相同的加密数据,则在对该新的用户端进行所有权证明通过之后将该新的用户端也记录为该目标云端数据的所有者。

在一种应用场景中,云服务器使用区块链最新生成的块数据的哈希值作为种子生成挑战数据;云服务器根据挑战数据,使用密文数据、审计标签和再签名密钥生成数据完整性证明并将其发送给用户端;用户端使用验证密钥验证数据完整性证明;如果验证通过则表示用户端存储在云端的数据时完整的。其中,审计标签的生成依靠加密数据,再签名密钥是随机选择的,不依赖于明文数据或密文数据;但是验证密钥依赖于选择的再签名密钥和明文数据的哈希值。

本实施例中,在该加密数据是首次上传时,云服务器使用自己的私钥对加密数据的哈希值进行签名;云服务器将用户端的拥有者顺序和签名结果发送给用户端;用户端计算签名结果的哈希值并将其作为公开的安全文件标签;用户端将加密数据分成n个数据块,使用明文数据(即待上传数据)的哈希值作为签名密钥,为每个加密数据块生成一个审计标签;用户端生成再签名密钥和验证密钥并将再签名密钥、审计标签和验证密钥发送给云服务器。

在该加密数据并非首次上传时,云服务器使用自己的私钥对加密数据的哈希值进行签名;云服务器将用户端的拥有者顺序和签名结果发送给用户端;用户端计算签名结果的哈希值并将其作为公开的安全文件标签;用户端生成再签名密钥和验证密钥并将再签名密钥发送给云服务器。

需要说明的是,一个加密数据(或目标云端加密数据,本实施例中两者内容相同,故可以视为同一数据)的所有者包括当前要上传该加密数据的用户端,和以前上传或尝试上传并通过所有权验证的用户端,在云服务器中可以记录各个云端加密数据(包括目标云端加密数据)对应的所有者,以便及时为各个用户生成数据完整性证明。具体的,本实施中,上述用户端与上述云服务器交互以根据上述加密数据的哈希值、上述私钥和上述公共参数生成安全文件标签,包括:上述用户端将上述加密数据的哈希值发送给上述云服务器;上述云服务器根据上述加密数据的哈希值、上述私钥和上述公共参数计算获取上述加密数据的哈希值所对应的签名值,将上述签名值作为上述加密数据对应的安全文件标签。

在一种应用场景中,上述安全文件标签的具体形式为H

其中,上述加密数据的哈希值可以由用户端发送给云服务器,也可以由云服务器直接根据存储的目标云端加密数据计算获得,在此不作具体限定。上述云服务器还将上述安全文件标签向所有用户端公开,安全文件标签可以用于在公开验证文件拥有者数量时索引文件,所有文件拥有者根据公开信息中的安全文件标签识别文件。

进一步的,上述用户端与上述云服务器交互并进行所有权证明,包括:上述用户端选择随机的第一比特串作为云服务器所有权挑战信息并发送给上述云服务器;上述云服务器选择随机的第二比特串作为用户所有权挑战信息,根据上述云服务器所有权挑战信息、上述用户所有权挑战信息和上述目标云端加密数据计算获取上述云服务器对应的云服务器所有权证明信息,并将上述用户所有权挑战信息和上述云服务器所有权证明信息发送给上述用户端;上述用户端根据上述云服务器所有权挑战信息、上述加密数据以及接收到的上述用户所有权挑战信息计算获取云服务器验证信息,并根据上述云服务器验证信息和上述云服务器所有权证明信息判断上述云服务器是否具有上述加密数据的所有权;当判断确定上述云服务器具有上述加密数据的所有权时,上述用户端根据上述云服务器所有权挑战信息、上述用户所有权挑战信息和上述加密数据计算获取上述用户端对应的用户所有权证明信息,并将上述用户所有权证明信息发送给上述云服务器;上述云服务器根据上述云服务器所有权挑战信息、上述用户所有权挑战信息和上述目标云端加密数据计算获取用户端验证信息,并根据上述用户端验证信息和上述用户所有权证明信息判断上述用户端是否具有上述加密数据的所有权。

需要说明的是,上述所有权证明过程实际上包括用户端验证云服务器是否具有加密数据的所有权和云服务器验证用户端是否具有目标云端加密数据的所有权,也即验证用户端所拥有的加密数据和云服务器中存储的目标云端加密数据的内容是否确实相同。本实施例中以两者的内容确实相同为例进行具体说明,两者相同时加密数据的所有权与目标云端加密数据的所有权可以视为相同的所有权。

具体的,当上述云服务器验证信息和上述云服务器所有权证明信息相同时,上述云服务器具有上述加密数据的所有权;当上述用户端验证信息和上述用户所有权证明信息相同时,上述用户端具有上述加密数据的所有权。

步骤S400,上述云服务器为上述目标云端加密数据对应的每一个所有者分别生成该所有者对应的数据完整性证明,其中,上述数据完整性证明根据该所有者上传到上述云服务器的再签名密钥生成。

其中,上述数据完整性证明是云服务器生成的用于证明数据完整性的证明信息。具体的,对于同一文件的每一个所有者,云服务器为其生成该用户端可唯一验证的数据完整性证明,并且将所有用户端的数据完整性证明向所有用户端公开,从而也可以规避云服务器的不诚实行为(即云服务器必须如实说明文件所有者的数量)。

进一步的,上述云服务器为上述目标云端加密数据对应的每一个所有者分别生成该所有者对应的数据完整性证明,包括:上述云服务器获取上述目标云端加密数据对应的审计标签,根据上述目标云端加密数据和上述审计标签生成上述目标云端加密数据对应的一般完整性证明;上述云服务器根据上述一般完整性证明和各上述所有者对应的再签名密钥分别为各上述所有者生成该所有者对应的数据完整性证明;上述云服务器将所有上述数据完整性证明所构成的完整性证明集合公开。

其中,上述审计标签只需要由第一个上传加密数据的用户端上传一次并存储在云服务器中,后续使用过程中云服务器可以直接获得。

步骤S500,上述用户端根据上述数据完整性证明的数量确定上述目标云端加密数据对应的所有者数量,并根据上述用户端对应的数据完整性证明和验证密钥验证上述目标云端加密数据的完整性。

本实施例中,用户端可以根据数据完整性证明的数量确定上述目标云端加密数据对应的所有者数量,从而实现透明去重,即用户端可以获知去重之后同一文件由多少个用户端共享。进而可以根据共享的用户端的数量进行费用分摊,有利于提高使用效益。同时,用户端还可以根据自身对应的该用户端可以唯一验证的数据完整性证证明和自身的验证密钥来验证云服务器中存储的数据的完整性。

具体的,用户端根据公开的安全文件标签检索数据完整性证明集合,然后根据数据完整性证明数量验证文件拥有者数量;根据数据上传阶段确定的拥有者顺序检索数据完整性证明,然后使用验证密钥验证文件完整性。

进一步的,当有文件所有者想要删除其在云服务器对应的加密数据时,云服务器为剩下的其他每个所有者分配新的顺序并在下一个验证周期为该加密数据生成数据完整性证明。

本实施例中,在进行查重之后上述各个步骤所对应的具体操作步骤如下具体描述。具体的,如果F在云服务器中不存在,则用户端U将加密数据C发送给云服务器,云服务器验证接收到的加密数据的哈希值h是否等于之前接收的由用户端U发送过来的加密数据的哈希值H

如果F在云服务器中已经存在,即云服务器中已经有对应的目标云端服务器,也即当前的用户端不是第一个上传该加密数据的用户端。此时先进行所有权证明,用户端选择随机的比特串R

进一步的,在生成数据完整性证明时,云服务器从预设的区块链获取最新区块并计算其哈希值bh,然后计算随机挑战极数据{b1,…,bn},其中对于取值为1到n的i有bi=T(i,bh),T代表公开伪随机数生成函数;对于每个加密数据块c

进一步的,在用户端进行完整性验证时,用户端U从预设的区块链获取最新区块并计算其哈希值bh,然后计算随机挑战极数据{b1,…,bn},其中对于取值为1到n的i有bi=T(i,bh),T代表公开伪随机数生成函数;用户端U从云服务器的公共可访问网站上获取数据完整性证明;用户端U获取数据完整性证明的数量并将其作为目标云端加密数据(或加密数据)对应的所有者数量。用户端U计算验证辅助数据C=Q

图2是本发明实施例提供的一种针对云端加密数据的去重和完整性验证方法的具体流程示意图,其中用户代表用户端,云代表云服务器。如图2所示,云服务器生成公共参数和密钥(包括私钥以及公共参数中的公钥)。用户与云交互进行重复检测,判断用户是第一用户(即第一个上传加密数据的用户)还是后续用户并根据判断结果执行数据上传操作。然后云为各个用户生成完整性证明,用户可以根据完整性证明验证云服务器中存储的数据的完整性。

图3是本发明实施例提供的一种透明的云端加密数据去重和完整性验证系统的结构示意图,如图3所示,上述透明的云端加密数据去重和完整性验证系统包括云服务器和多个用户端,图3中以包括两个用户端(即第一数据上传者和后续数据上传者)为例进行具体说明。云服务器先进行初始化,在各个用户端上传加密数据时,云服务器先进行查重,对于第一数据上传者,直接进行数据上传(包括加密数据)。对于后续数据上传者,先进行所有权验证,然后进行数据上传(不包括加密数据),如此可以实现数据去重。云服务器还生成完整性证明,以方便用户端进行完整性验证。需要说明的是,云端加密数据去重的实现需要用户端使用确定的加密方法,应该允许用户知道其存储在云端的文件的拥有者数量,然后所有拥有者共同承担存储费用。同时,为了避免用于公开验证的文件信息被恶意用户利用从而危害文件的机密性和用户隐私,本实施例中通过在公开的文件信息中增加云服务器的密钥(例如云服务器的私钥和公钥)以防止文件隐私内容被其他恶意用户获取,并且通过一次完整性验证同时实现文件拥有者数量和文件完整性的验证,在降低用户计算负担的同时有利于用户及时获知文件共同所有者的数量。具体的,本实施例中通过数据完整性审计间接地实现了文件的拥有者数量验证,降低了用户的验证计算消耗;通过在公开的文件信息中增加云的密钥防止恶意用户使用公开验证信息窃取文件隐私内容,进而提高外包文件(即上传到云服务器的数据)的机密性。

在另一种应用场景中,可以由一个针对云端加密数据的去重和完整性验证系统来执行上述针对云端加密数据的去重和完整性验证方法。上述针对云端加密数据的去重和完整性验证系统包括:初始化模块,用于系统公共参数生成和密钥生成;查重模块,用于确定文件是否在云端已经存储;数据上传模块,用于上传密文数据和完整性审计辅助数据;所有权证明模块,用于在文件已经在云端存在时验证用户的文件所有权;完整性证明生成模块,用于为文件的每个拥有者生成独立的数据完整性证明;完整性验证模块,用于验证文件的完整性和拥有者数量;其中,上述文件为加密数据。

具体的,用户端使用收敛加密算法加密获得加密数据,然后计算加密数据的哈希值并将哈希值发送给云服务器,云服务器中的查重模块根据该哈希值在云服务器内部查找文件,并将查询结果反馈给用户端。

上述数据上传模块具体用于用户端与云服务器交互生成可公开的安全文件标签,然后上传加密数据,审计标签,再签名密钥(首次上传的文件);上传再签名密钥(重复的文件)。具体的,数据上传模块生成公开的安全文件标签并根据文件是否重复进行不同的数据上传操作。用户与云交互生成文件公开的安全文件标签;对于不重复的文件,用户上传加密数据,审计标签和再签名密钥;对于重复的文件,用户上传再签名密钥;其中在审计标签计算时,先将加密数据分成n个数据块,然后使用明文数据(即待上传数据)的哈希值作为签名密钥为每个加密数据块生成一个审计标签。

上述所有权证明模块用于控制云服务器生成随机挑战信息并将其发送给用户端;控制用户端根据挑战信息使用加密数据生成所有权证明数据并将其发送给云服务器;控制云服务器验证用户端的所有权证明。

上述完整性证明模块用于控制云服务器使用密文数据和审计标签生成一般性完整性证明,然后使用每个拥有者的再签名密钥为每个所有者生成不同的完整性证明;控制云服务器将所有拥有者的完整性证明在一个集合中向用户端公开。

上述完整性验证模块用于控制用户端使用验证密钥验证云服务器存储的数据的完整性,并根据数据完整性证明的数量确定文件拥有者的数量。

具体的,本实施例中,上述针对云端加密数据的去重和完整性验证系统及其各模块的具体功能可以参照上述针对云端加密数据的去重和完整性验证方法中的对应描述,在此不再赘述。

需要说明的是,上述针对云端加密数据的去重和完整性验证系统的各个模块的划分方式并不唯一,在此也不作为具体限定。

由上可见,本发明方案中,云服务器不会直接用户端上传的所有加密数据,即云服务器不会直接存储大量重复的数据,而是先根据用户端上传的加密数据的哈希值判断云服务器中是否已经存储有与该加密数据相同的目标云端加密数据,如果有,则用户端不必再上传该加密数据到云服务器。云服务器只需要存储一份对应的目标云端加密数据即可,有利于提高云服务器的存储空间的利用率。进一步的,上述云服务器还支持完整性验证的功能,对于每一个证明对目标云端加密数据有所有权的所有者都分别生成该所有者对应的数据完整性证明,用户端一方面可以随时根据数据完整性证明的数量确定该目标云端加密数据所对应的所有者数量,另一方面可以根据自身(即用户端)所对应的数据完整性证明和验证密钥验证目标云端加密数据的完整性,有利于实时对存储在云服务器中的数据进行验证,从而可以避免因数据不完整而引起的数据使用过程中的错误,有利于提高云服务器的存储空间的利用率以及云端数据存储和使用的安全性的问题。

基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图4所示。上述智能终端包括处理器及存储器。该智能终端的存储器包括针对云端加密数据的去重和完整性验证程序,存储器为针对云端加密数据的去重和完整性验证程序的运行提供环境。该针对云端加密数据的去重和完整性验证程序被处理器执行时实现上述任意一种针对云端加密数据的去重和完整性验证方法的步骤。需要说明的是,上述智能终端还可以包括其它功能模块或单元,在此不作具体限定。

本领域技术人员可以理解,图4中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体地智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本发明实施例还提供一种计算机可读存储介质,上述计算机可读存储介质上存储有针对云端加密数据的去重和完整性验证程序,上述针对云端加密数据的去重和完整性验证程序被处理器执行时实现本发明实施例提供的任意一种针对云端加密数据的去重和完整性验证方法的步骤。

应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的系统/智能终端和方法,可以通过其它的方式实现。例如,以上所描述的系统/智能终端实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

技术分类

06120115635692