一种数据访问方法、装置及系统与流程

文档序号:19492522发布日期:2019-12-24 14:11阅读:213来源:国知局
一种数据访问方法、装置及系统与流程

本申请涉及计算机技术领域,特别涉及一种数据访问方法、装置及系统。



背景技术:

在现有技术中,数据拥有者通常将数据和数据的元数据以密文形式存储在云端,这样数据共享者便可在获得相应的授权后,访问云端存储的数据。其中,将数据和数据的元数据均存储在云端,数据和元数据存在被合谋攻击的风险,因此降低了数据的安全性。

因此,如何提高数据安全性,是本领域技术人员需要解决的问题。



技术实现要素:

有鉴于此,本申请的目的在于提供一种数据访问方法、装置及系统,以提高数据安全性。其具体方案如下:

第一方面,本申请提供了一种数据访问方法,应用于数据共享者对应的客户端,包括:

从区块链获取搜索关键字对应的元数据密文,并将元数据密文发至代理服务器,以使代理服务器利用重加密密钥对元数据密文进行重加密,获得重加密元数据密文,并将重加密元数据密文发送至客户端;

利用解密参数和数据共享者的私钥解密重加密元数据密文,得到搜索关键字对应的数据密文在云端的存储位置;

发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;代理服务器利用重加密密钥对数据密文进行重加密,获得重加密数据密文,并将重加密数据密文发送至客户端;

对重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据。

优选地,代理服务器利用重加密密钥对数据密文进行重加密之前,还包括:

代理服务器利用第一验证等式验证数据密文的完整性;

若第一验证等式成立,则执行利用重加密密钥对数据密文进行重加密的步骤;

其中,第一验证等式为:

e(a1,h4(a1||a2||a3))=e(g,a4)

其中,h4()为哈希函数组中的哈希函数,a1,a2,a3,a4分别为数据密文中的参数,g为循环群g1中的生成元。

优选地,对重加密数据密文进行验证,包括:

利用第二验证等式验证重加密数据密文的完整性;

若第二验证等式成立,则利用第三验证等式验证当前加密体制的正确性;

若第三验证等式成立,则执行利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据的步骤;

其中,第二验证等式为:

e(a′1,h4(a′1||a′2||a′3))=e(g,a′4)

其中,h4()为哈希函数组中的哈希函数,a′1,a′2,a′3,a′4分别为重加密数据密文中的参数,g为循环群g1中的生成元;

其中,第三验证等式为:

其中,pkb为数据共享者的公钥,skb为数据共享者的私钥;ε为解密参数,a1'为重加密数据密文中的参数,γ为目标参数,目标参数的计算公式为:γ=h2(m||ξ);m为数据,ξ为循环群g2中的元素,h1()和h2()为哈希函数组中的哈希函数。

优选地,利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据,包括:

按照解密公式组解密重加密数据密文,获得数据,解密公式为:

其中,ξ为循环群g2中的元素,a′2,a′3为重加密数据密文中的参数,pkb为数据共享者的公钥,ε为解密参数,m为数据,h1()和h3()分别为哈希函数组中的哈希函数,γ为目标参数。

第二方面,本申请提供了一种数据访问装置,应用于数据共享者对应的客户端,包括:

元数据获取模块,用于从区块链获取搜索关键字对应的元数据密文,并将元数据密文发至代理服务器,以使代理服务器利用重加密密钥对元数据密文进行重加密,获得重加密元数据密文,并将重加密元数据密文发送至客户端;

元数据解密模块,用于利用解密参数和数据共享者的私钥解密重加密元数据密文,得到搜索关键字对应的数据密文在云端的存储位置;

数据获取模块,用于发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;代理服务器利用重加密密钥对数据密文进行重加密,获得重加密数据密文,并将重加密数据密文发送至客户端;

数据解密模块,用于对重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据。

第三方面,本申请提供了一种数据访问系统,包括:区块链、云端、代理服务器和数据共享者对应的客户端,其中:

区块链,用于存储搜索关键字对应的元数据密文;

云端,用于存储搜索关键字对应的数据密文;

代理服务器,用于利用重加密密钥对元数据密文进行重加密,获得重加密元数据密文;利用重加密密钥对数据密文进行重加密,获得重加密数据密文;

数据共享者对应的客户端,用于从区块链获取元数据密文,并将元数据密文发至代理服务器;利用解密参数和数据共享者的私钥解密代理服务器发送的重加密元数据密文,得到数据密文在云端的存储位置;发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;对代理服务器发送的重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据。

优选地,云端具体用于:

利用系统初始化算法生成公开参数,并将公开参数发送至区块链、代理服务器和数据共享者对应的客户端。

优选地,还包括:

数据拥有者对应的客户端,用于利用数据拥有者的公钥加密元数据,获得元数据密文,将元数据密文存储至区块链;

按照第一公式组加密数据,获得数据密文,将数据密文存储至云端;

其中,第一公式组为:

其中,数据密文用sa表示,sa=(a1,a2,a3,a4),a1,a2,a3,a4分别为数据密文中的参数;g为循环群g1中的生成元,ξ为循环群g2中的元素,pka为数据拥有者的公钥;γ为目标参数,目标参数的计算公式为:γ=h2(m||ξ),m为数据,h1()、h2()、h3()和h4()分别为哈希函数组中的哈希函数。

优选地,还包括:第一可信服务器和第二可信服务器,其中:

第一可信服务器,用于利用解密参数、重加密参数和重加密密钥生成算法计算重加密密钥;

其中,重加密参数由数据拥有者对应的客户端生成,并被发送至第一可信服务器;重加密参数的生成公式为:η为重加密参数,pkb为数据共享者的公钥,pka为数据拥有者的公钥,ska为数据拥有者的私钥,γ为目标参数,h1()为哈希函数组中的哈希函数;

第二可信服务器,用于管理解密参数,解密参数由数据拥有者对应的客户端生成,并被存储至第二可信服务器。

优选地,代理服务器具体用于:

按照第二公式组对数据密文进行重加密,获得重加密数据密文;第一公式组为:

其中,重加密数据密文用sa→b表示,sa→b=(a′1,a′2,a′3,a′4),a′1,a′2,a′3,a′4分别为重加密数据密文中的参数,a1,a2,a3分别为数据密文中的参数;pka为数据拥有者的公钥,pkb为数据共享者的公钥,ska为数据拥有者的私钥,ε为解密参数,γ为目标参数,g为循环群g1中的生成元,h1()和h4()分别为哈希函数组中的哈希函数。

通过以上方案可知,本申请提供了一种数据访问方法,应用于数据共享者对应的客户端,包括:从区块链获取搜索关键字对应的元数据密文,并将元数据密文发至代理服务器,以使代理服务器利用重加密密钥对元数据密文进行重加密,获得重加密元数据密文,并将重加密元数据密文发送至客户端;利用解密参数和数据共享者的私钥解密重加密元数据密文,得到搜索关键字对应的数据密文在云端的存储位置;发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;代理服务器利用重加密密钥对数据密文进行重加密,获得重加密数据密文,并将重加密数据密文发送至客户端;对重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据。

可见,该方法将元数据密文存储在区块链中,将数据密文存储在云端,采用分离存储的方式,有效降低了数据被合谋攻击的风险。并且,数据共享者访问数据的前提是,首先需要从元数据密文中解密得到数据密文在云端的存储位置,而数据密文在云端的存储位置被加密在元数据密文中,元数据密文存储在区块链中。区块链能够避免元数据密文被窃取或篡改,从而提高了元数据的安全性。同时,元数据密文需要利用特定的解密参数和数据共享者的私钥解密才能获得,就算非法用户窃取到元数据密文,也难以解密获得元数据明文。因此本申请为数据的安全共享提供了保障,提高了数据安全性。

相应地,本申请提供的一种数据访问装置及系统,也同样具有上述技术效果。

附图说明

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

图1为本申请公开的一种数据访问方法流程图;

图2为本申请公开的一种数据访问装置示意图;

图3为本申请公开的一种数据访问系统示意图;

图4为本申请公开的另一种数据访问系统示意图。

具体实施方式

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

目前,将数据和数据的元数据均存储在云端,存在被合谋攻击的风险,因此降低了数据的安全性。为此,本申请提供了一种数据访问方案,能够为数据的安全共享提供了保障,提高了数据安全性。

参见图1所示,本申请实施例公开了一种数据访问方法,应用于数据共享者对应的客户端,包括:

s101、从区块链获取搜索关键字对应的元数据密文,并将元数据密文发至代理服务器,以使代理服务器利用重加密密钥对元数据密文进行重加密,获得重加密元数据密文,并将重加密元数据密文发送至客户端;

在一种具体实施方式中,代理服务器利用重加密密钥对数据密文进行重加密之前,还包括:代理服务器利用第一验证等式验证数据密文的完整性;若第一验证等式成立,则执行利用重加密密钥对数据密文进行重加密的步骤。

其中,第一验证等式为:

e(a1,h4(a1||a2||a3))=e(g,a4)

其中,h4()为哈希函数组中的哈希函数,a1,a2,a3,a4分别为数据密文中的参数,g为循环群g1中的生成元。

其中,若第一验证等式不成立,则说明数据密文有误,因此可向数据共享者对应的客户端和云端反馈数据密文有误的提示信息,以便数据共享者对应的客户端重新发送访问请求,云端重新查询数据密文。

s102、利用解密参数和数据共享者的私钥解密重加密元数据密文,得到搜索关键字对应的数据密文在云端的存储位置;

s103、发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;代理服务器利用重加密密钥对数据密文进行重加密,获得重加密数据密文,并将重加密数据密文发送至客户端;

s104、对重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据。

在一种具体实施方式中,对重加密数据密文进行验证,包括:利用第二验证等式验证重加密数据密文的完整性;若第二验证等式成立,则利用第三验证等式验证当前加密体制的正确性;若第三验证等式成立,则执行利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据的步骤。

其中,第二验证等式为:

e(a′1,h4(a′1'||a′2||a′3))=e(g,a′4)

其中,h4()为哈希函数组中的哈希函数,a′1,a′2,a′3,a′4分别为重加密数据密文中的参数,g为循环群g1中的生成元;

其中,第三验证等式为:

其中,pkb为数据共享者的公钥,skb为数据共享者的私钥;ε为解密参数,a1'为重加密数据密文中的参数,γ为目标参数,目标参数的计算公式为:γ=h2(m||ξ);m为数据,ξ为循环群g2中的元素,h1()和h2()为哈希函数组中的哈希函数。

在一种具体实施方式中,利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据,包括:按照解密公式组解密重加密数据密文,获得数据,解密公式为:

其中,ξ为循环群g2中的元素,a'2,a'3为重加密数据密文中的参数,pkb为数据共享者的公钥,ε为解密参数,m为数据,h1()和h3()分别为哈希函数组中的哈希函数,γ为目标参数。

其中,若第二验证等式或第三验证等式不成立,则可以向全网各端反馈重加密数据密文有误的提示信息,以便各端进行自查,确定错误原因。

可见,本申请实施例将元数据密文存储在区块链中,将数据密文存储在云端,采用分离存储的方式,有效降低了数据被合谋攻击的风险。并且,数据共享者访问数据的前提是,首先需要从元数据密文中解密得到数据密文在云端的存储位置,而数据密文在云端的存储位置被加密在元数据密文中,元数据密文存储在区块链中。区块链能够避免元数据密文被窃取或篡改,从而提高了元数据的安全性。同时,元数据密文需要利用特定的解密参数和数据共享者的私钥解密才能获得,就算非法用户窃取到元数据密文,也难以解密获得元数据明文。因此本申请为数据的安全共享提供了保障,提高了数据安全性。

下面对本申请实施例提供的一种数据访问装置进行介绍,下文描述的一种数据访问装置与上文描述的一种数据访问方法可以相互参照。

参见图2所示,本申请实施例公开了一种数据访问装置,应用于数据共享者对应的客户端,包括:

元数据获取模块201,用于从区块链获取搜索关键字对应的元数据密文,并将元数据密文发至代理服务器,以使代理服务器利用重加密密钥对元数据密文进行重加密,获得重加密元数据密文,并将重加密元数据密文发送至客户端;

元数据解密模块202,用于利用解密参数和数据共享者的私钥解密重加密元数据密文,得到搜索关键字对应的数据密文在云端的存储位置;

数据获取模块203,用于发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;代理服务器利用重加密密钥对数据密文进行重加密,获得重加密数据密文,并将重加密数据密文发送至客户端;

数据解密模块204,用于对重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据。

在一种具体实施方式中,代理服务器还用于:利用第一验证等式验证数据密文的完整性;若第一验证等式成立,则执行利用重加密密钥对数据密文进行重加密的步骤。

其中,第一验证等式为:

e(a1,h4(a1||a2||a3))=e(g,a4)

其中,h4()为哈希函数组中的哈希函数,a1,a2,a3,a4分别为数据密文中的参数,g为循环群g1中的生成元。

在一种具体实施方式中,数据解密模块包括:

第一验证单元,用于利用第二验证等式验证重加密数据密文的完整性;

第二验证单元,用于若第二验证等式成立,则利用第三验证等式验证当前加密体制的正确性;

执行单元,用于若第三验证等式成立,则执行利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据的步骤。

其中,第二验证等式为:

e(a′1,h4(a′1||a′2||a′3))=e(g,a′4)

其中,h4()为哈希函数组中的哈希函数,a′1,a′2,a′3,a′4分别为重加密数据密文中的参数,g为循环群g1中的生成元;

其中,第三验证等式为:

其中,pkb为数据共享者的公钥,skb为数据共享者的私钥;ε为解密参数,a1'为重加密数据密文中的参数,γ为目标参数,目标参数的计算公式为:γ=h2(m||ξ);m为数据,ξ为循环群g2中的元素,h1()和h2()为哈希函数组中的哈希函数。

在一种具体实施方式中,执行单元具体用于:

按照解密公式组解密重加密数据密文,获得数据,解密公式为:

其中,ξ为循环群g2中的元素,a′2,a′3为重加密数据密文中的参数,pkb为数据共享者的公钥,ε为解密参数,m为数据,h1()和h3()分别为哈希函数组中的哈希函数,γ为目标参数。

其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

可见,本实施例提供了一种数据访问装置,该装置为数据的安全共享提供了保障,提高了数据安全性。

下面对本申请实施例提供的一种数据访问系统进行介绍,下文描述的一种数据访问系统与上文描述的一种数据访问方法及装置可以相互参照。

参见图3所示,本申请实施例公开了一种数据访问系统,包括:区块链301、云端302、代理服务器303、数据共享者对应的客户端304和数据拥有者对应的客户端305,其中:

区块链,用于存储搜索关键字对应的元数据密文;

云端,用于存储搜索关键字对应的数据密文;

代理服务器,用于利用重加密密钥对元数据密文进行重加密,获得重加密元数据密文;利用重加密密钥对数据密文进行重加密,获得重加密数据密文;

数据共享者对应的客户端,用于从区块链获取元数据密文,并将元数据密文发至代理服务器;利用解密参数和数据共享者的私钥解密代理服务器发送的重加密元数据密文,得到数据密文在云端的存储位置;发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;对代理服务器发送的重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,获得数据。

优选地,云端具体用于:

利用系统初始化算法生成公开参数,并将公开参数发送至区块链、代理服务器和数据共享者对应的客户端。

优选地,还包括:

数据拥有者对应的客户端,用于利用数据拥有者的公钥加密元数据,获得元数据密文,将元数据密文存储至区块链;

按照第一公式组加密数据,获得数据密文,将数据密文存储至云端;

其中,第一公式组为:

其中,数据密文用sa表示,sa=(a1,a2,a3,a4),a1,a2,a3,a4分别为数据密文中的参数;g为循环群g1中的生成元,ξ为循环群g2中的元素,pka为数据拥有者的公钥;γ为目标参数,目标参数的计算公式为:γ=h2(m||ξ),m为数据,h1()、h2()、h3()和h4()分别为哈希函数组中的哈希函数。

优选地,还包括:第一可信服务器和第二可信服务器,其中:

第一可信服务器,用于利用解密参数、重加密参数和重加密密钥生成算法计算重加密密钥;

其中,重加密参数由数据拥有者对应的客户端生成,并被发送至第一可信服务器;重加密参数的生成公式为:η为重加密参数,pkb为数据共享者的公钥,pka为数据拥有者的公钥,ska为数据拥有者的私钥,γ为目标参数,h1()为哈希函数组中的哈希函数;

第二可信服务器,用于管理解密参数,解密参数由数据拥有者对应的客户端生成,并被存储至第二可信服务器。

优选地,代理服务器具体用于:

按照第二公式组对数据密文进行重加密,获得重加密数据密文;第一公式组为:

其中,重加密数据密文用sa→b表示,sa→b=(a′1,a′2,a′3,a′4),a′1,a′2,a′3,a′4分别为重加密数据密文中的参数,a1,a2,a3分别为数据密文中的参数;pka为数据拥有者的公钥,pkb为数据共享者的公钥,ska为数据拥有者的私钥,ε为解密参数,γ为目标参数,g为循环群g1中的生成元,h1()和h4()分别为哈希函数组中的哈希函数。

其中,

可见,本实施例提供了一种数据访问系统,该系统为数据的安全共享提供了保障,提高了数据安全性。

请参见图4,本实施例提供了另一种数据访问系统,包括:数据拥有者(alice)对应的客户端,数据共享者(bob)对应的客户端,云端,区块链,代理服务器,可信服务器rgk(上文提及的第一可信服务器),可信服务器sd(上文提及的第二可信服务器)。

其中,云端用于进行系统初始化,初始化过程采用setup算法,包括:

选取长度为λ的大素数p,然后构建两个阶数为p的乘法循环群,并将其记为g1和g2。假设g为循环群g1的生成元,并定义双线性映射e:g1×g1→g2。设置如下的哈希函数组h1,h2,h3,h4,分别定义如下:

h1:{0,1}*→g1,h2:{0,1}*→z*p

h3:g2→{0,1}l,h4:{0,1}*→g1

那么,系统初始化获得的公开参数para={g1,g2,p,g,h1,h2,h3,h4},这些公开参数被公开至数据拥有者(alice)对应的客户端,数据共享者(bob)对应的客户端,区块链,代理服务器,可信服务器rgk和可信服务器sd。

数据拥有者(alice)对应的客户端执行的操作包括:

(1)生成数据拥有者的公私钥对keygen(para)→(sk,pk):

生成数据拥有者的公钥和私钥具体过程包括:数据拥有者对应的客户端在数据拥有者的操作下随机选取并计算sk=x,pk=gx,那么可获得数据拥有者的公私钥对(pka,ska),其中,pka为数据拥有者的公钥,ska为数据拥有者的私钥。

(2)生成元数据密文encry(data,pka)→ta:

数据拥有者对应的客户端在数据拥有者的操作下,利用数据拥有者的公钥pka对元数据data进行加密,得到元数据密文ta=(k',pos')。

(3)生成数据密文encry(m,pka)→sa:

数据拥有者对应的客户端在数据拥有者的操作下,利用数据拥有者的公钥pka、循环群g2中选取的元素ξ,对明文消息m进行加密,获得数据密文sa=(a1,a2,a3,a4),数据密文具体如下:

其中,γ=h2(m||ξ)。

(4)生成重加密参数rkpara(pka,ska,pkb,γ)→η:

数据拥有者对应的客户端在数据拥有者的操作下,利用数据拥有者的公私钥对(pka,ska)、γ、bob的公钥pkb、调用rkpara函数,生成重加密参数

(5)数据拥有者对应的客户端在数据拥有者的操作下,随机选取将ε确定为解密参数,并将ε发送至可信服务器sd,以使可信服务器sd管理ε,可信服务器对ε的管理,包括:在数据拥有者对应的客户端发送指令至可信服务器sd时,可信服务器sd对ε进行更新、删除、增加、查询等。

其中,一个数据共享者对应一个ε,当一个数据共享者对应的ε被数据拥有者改变后,若该数据共享者未及时从可信服务器sd中获取最新的ε,那么数据共享者将无法获得想要访问的数据。

可信服务器rgk执行的操作包括:

可信服务器rgk从数据拥有者对应的客户端获取重加密参数η,从可信服务器sd中获取ε,并调用重加密密钥生成算法rekeygen,生成重加密密钥并存储至本地。

其中,ε,η均为固定长度的字符串。可信服务器rgk代替数据拥有者对应的客户端生成重加密密钥,可降低数据拥有者对应的客户端的计算量和压力。

代理服务器执行的操作包括:

代理服务器在获得元数据密文后,并利用重加密密钥对元数据密文ta进行重加密,获得重加密元数据密文ta→b。

代理服务器在获得元数据密文后,并利用重加密密钥对数据密文sa进行重加密,获得重加密数据密文sa→b:

具体的,代理服务器按照第二公式组对数据密文进行重加密,获得重加密数据密文;第一公式组为:

需要说明的是,若代理服务器本地可查询到重加密密钥,那么代理服务器可直接执行重加密操作;否则,代理服务器需要先从可信服务器rgk中获取重加密密钥,再执行重加密操作。代理服务器执行的重加密操作,能够将解密操作所需的参数转换为与bob有关的参数。因为元数据密文或数据密文是由alice的公钥加密的秘文,需要用alice的私钥进行解密。而bob无法获得alice的私钥,因此需要二次加密。重加密过程能够把由alice私钥解密的密文转换为由bob的私钥解密的密文。

其中,代理服务器在获得元数据密文或数据密文后,执行重加密操作之前,需要先对元数据密文或数据密文进行验证,以验证密文的完整性,待验证通过后,才执行重加密操作。下述以数据密文为例介绍验证过程,元数据密文的验证过程可参照数据密文的验证过程。

代理服务器利用第一验证等式验证数据密文的完整性;若第一验证等式成立,则执行重加密操作。

其中,第一验证等式为:

e(a1,h4(a1||a2||a3))=e(g,a4)

其中,h4()为哈希函数组中的哈希函数,a1,a2,a3,a4分别为数据密文中的参数,g为循环群g1中的生成元。

数据共享者(bob)对应的客户端执行的操作包括:

数据共享者对应的客户端在数据共享者的操作下随机选取并计算sk=x',pk=gx′,那么可获得数据共享者的公私钥对(pkb,skb),其中,pkb为数据共享者的公钥,skb为数据共享者的私钥。

其中,x'和x均是中的随机数,x'和x相同的概率为1/p,由于p为大素数,那么1/p的值趋近于0,因此x'和x相同的概率几乎为0,故而数据共享者的公私钥对和数据拥有者的公私钥对相同的概率几乎为0。

当数据共享者想要访问云端的数据时,首先操作相应客户端从区块链中获取元数据密文,并将元数据密文发至代理服务器,以使代理服务器将元数据密文转换为自己可解密的密文。解密代理服务器发送的重加密元数据密文,可得到数据密文在云端的存储位置;进而数据共享者操作相应客户端发送包含存储位置的访问请求至云端,以使云端将数据密文发送至代理服务器;待获得代理服务器发送的重加密数据密文后,数据共享者操作相应客户端对重加密数据密文进行验证,若验证通过,则利用数据共享者的公钥和私钥,以及解密参数解密重加密数据密文,可获得数据。

其中,若数据共享者(bob)对应的客户端本地未查询到解密参数,则需要从可信服务器sd中获取解密参数,才能对重加密元数据密文或重加密数据密文进行解密。

其中,数据共享者对应的客户端解密重加密元数据密文之前,也需要对重加密元数据密文进行验证,待验证通过后,才执行解密操作。本说明书对重加密数据密文的验证过程进行了详细介绍,数据共享者对应的客户端对重加密元数据密文的验证过程可参照其对重加密数据密文的验证过程。

可见,本实施例结合代理重加密技术和区块链设计了一种支持关键词检索的数据访问系统。其中采用数据密文和元数据密文分离存储的方式,有效降低了信息被合谋攻击的风险。将解密参数和重加密参数利用不同的可信服务器进行管理,当访问权限变更时,仅需对解密参数进行更新就可以进行权限更新。并且,本方案中的可信服务器rgk和可信服务器sd代替数据拥有者对应的客户端执行重加密密钥生成和解密参数管理操作,降低了数据拥有者对应的客户端的计算量和压力;代理服务器能够降低云端和数据共享者对应的客户端的计算量和压力。系统中的区块链还为数据的安全共享提供了保障,提高了数据安全性。

本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。

需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的可读存储介质中。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1