本发明属于信息共享和信息安全领域,特别涉及了一种可撤销的云数据安全共享方法。
背景技术:
随着云技术的发展,越来越多的用户、企业、科研院所将自己的信息保存至云端。云计算给用户提供便利的数据服务时也带来用户数据安全的问题。为了保护用户数据的安全,用户的数据通常在本地加密后再存储在云端。当用户的数据被加密存储在云端后,用户往往需要对数据进行某些操作,而数据共享是最长见的一种操作。然而由于加密使得用户的数据失去了原有的结构,导致了云服务器对数据的共享操作也随之失效。现有的云数据安全共享方法主要基于代理重加密来实现。现有的基于代理重加密的实现方法都无法实现对共享用户的安全、高效撤销。现有的实现方法都是将共享密钥设置在某一个时间段内有效,当每一个新的时间段来临时,无论是否有用户被从共享列表中撤销掉,数据拥有者都需要为共享列表中的用户重新生成一个新的共享密钥。这些方法存在两个问题:(1)数据拥有者在每个新的时间段都需要生成一个新的共享密钥,而新的共享密钥的计算量往往比较大;(2)数据拥有者每次生成新的共享密钥后都需要一个安全信道来将这个共享密钥发送给云服务器,建立安全信道的代价往往比较大。
技术实现要素:
为了解决上述背景技术提出的技术问题,本发明提供一种可撤销的云数据安全共享方法。
为了实现上述技术目的,本发明的技术方案为:
一种可撤销的云数据安全共享方法,包括以下步骤:
(1)云服务器生成系统的公共参数和系统的主密钥;
(2)云服务器为每个用户id生成对应的私钥;
(3)数据拥有者将需要共享的数据m加密成密文c,并上传至云服务器;
(4)数据拥有者为初始的共享用户列表s生成共享密钥,并上传至云服务器;
(5)数据拥有者是否需要撤销部分共享用户,若是,进入步骤(6),若否进入步骤(7);
(6)云服务器从数据拥有者处接收需要撤销的共享用户列表r,得到新的共享用户列表s′=s-r,并生成共享用户列表s′对应的新的共享密钥;
(7)云服务器根据密文c和当前的共享密钥生成共享用户的密文ct;
(8)各用户从云服务器下载密文,利用私钥进行解密,获得数据m。
进一步地,在步骤(1)中,云服务器首先选取一个标准椭圆曲线,并根据该椭圆曲线构造循环群g以及群g上的双线性运算e:g×g→gt,其中gt是由双线性运算e的结果构成的群,群g的生成元为g,阶数为素数p;云服务器随机选取群g上的元素μ,q∈g和整数α∈zp,其中zp表示整数集合{0,1,…,p-1},计算
进一步地,在步骤(2)中,每个用户id生成对应的私钥
进一步地,在步骤(3)中,数据拥有者将数据m加密成密文c=(cm,c0,c1),其中cm=m·νr,
进一步地,在步骤(4)中,数据拥有者为初始的共享用户列表s生成共享密钥rk:
rk=(rk1,rk2,rk3,rk4,rk5,(rk6,i)i∈{1,2,…,k+1})
其中,rk1=skid·qt,rk2=gαt,
t,s∈zp,σ∈gt,k为系统支持的最大撤销用户数。
进一步地,在步骤(6)中,云服务器生成共享用户列表s′对应的新的共享密钥rk′:
rk′=(rk1,rk2,rk3,rk4′,rk5′,rk6′)
其中,
fi是多项式f(x)的项xi的系数,
进一步地,在步骤(7)中,生成的共享密文ct=(cm′,c1′,c2′,c3′,c4′,c5′);若当前共享密钥为原共享密钥rk,则cm′=cm·e(rk1,c0)-1·(rk2,c1),c1′=c1,c2′=rk3,c3′=rk4,c4′=rk5,c5′=rk6,1;若当前共享密钥为新的共享密钥rk′,则cm′=cm·e(rk1,c0)-1·(rk2,c1),c1′=c1,c2′=rk3,c3′=rk4′,c4′=rk5′,c5′=rk6′。
进一步地,在步骤(8)中,若用户为数据拥有者,从云服务器下载密文c,解密得到数据m=cm·e(skid,c0)-1;若用户不是数据拥有者,从云服务器下载共享密文ct,首先计算
采用上述技术方案带来的有益效果:
通过本发明,数据拥有者在每次需要撤销共享用户时,仅仅需要发送一个撤销的共享用户列表给云服务器,传统方法在intel(r)core(tm)i5-8250ucpu@1.60ghz8gbram的pc机上需要144毫秒产生新的共享密钥,采用本发明后几乎是实时的。同时,传统方法无法在智能手机等移动设备上计算生成新的共享密钥,而本发明可以支持数据拥有者在智能手机等移动设备上授权数据共享。
附图说明
图1是本发明的方法流程图。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。
一种可撤销的云数据安全共享方法,如图1所述,包括以下步骤:
步骤1:云服务器生成系统的公共参数和系统的主密钥;
步骤2:云服务器为每个用户id生成对应的私钥;
步骤3:数据拥有者将需要共享的数据m加密成密文c,并上传至云服务器;
步骤4:数据拥有者为初始的共享用户列表s生成共享密钥,并上传至云服务器;
步骤5:数据拥有者是否需要撤销部分共享用户,若是,进入步骤6,若否进入步骤7;
步骤6:云服务器从数据拥有者处接收需要撤销的共享用户列表r,得到新的共享用户列表s′=s-r,并生成共享用户列表s′对应的新的共享密钥;
步骤7:云服务器根据密文c和当前的共享密钥生成共享用户的密文ct;
步骤8:各用户从云服务器下载密文,利用私钥进行解密,获得数据m。
在本实施例中,步骤1采用如下优选方案实现:
云服务器首先选取一个标准椭圆曲线,并根据该椭圆曲线构造循环群g以及群g上的双线性运算e:g×g→gt,其中gt是由双线性运算e的结果构成的群,群g的生成元为g,阶数为素数p;云服务器随机选取群g上的元素μ,q∈g和整数α∈zp,其中zp表示整数集合{0,1,…,p-1},计算
在本实施例中,步骤2采用如下优选方案实现:
每个用户id生成对应的私钥
在本实施例中,步骤3采用如下优选方案实现:
数据拥有者将数据m加密成密文c=(cm,c0,c1),其中cm=m·νr,
在本实施例中,步骤4采用如下优选方案实现:
数据拥有者为初始的共享用户列表s生成共享密钥rk:
rk=(rk1,rk2,rk3,rk4,rk5,(rk6,i)i∈{1,2,…,k+1})
其中,rk1=skid·qt,rk2=gαt,
t,s∈zp,σ∈gt,k为系统支持的最大撤销用户数。
在本实施例中,步骤6采用如下优选方案实现:
云服务器生成共享用户列表s′对应的新的共享密钥rk′:
rk′=(rk1,rk2,rk3,rk4′,rk5′,rk6′)
其中,
fi是多项式f(x)的项xi的系数,
在本实施例中,步骤7采用如下优选方案实现:
生成的共享密文ct=(cm′,c1′,c2′,c3′,c4′,c5′);若当前共享密钥为原共享密钥rk,则cm′=cm·e(rk1,c0)-1·(rk2,c1),c1′=c1,c2′=rk3,c3′=rk4,c4′=rk5,c5′=rk6,1;若当前共享密钥为新的共享密钥rk′,则cm′=cm·e(rk1,c0)-1·(rk2,c1),c1′=c1,c2′=rk3,c3′=rk4′,c4′=rk5′,c5′=rk6′。
在本实施例中,步骤8采用如下优选方案实现:
若用户为数据拥有者,从云服务器下载密文c,解密得到数据m=cm·e(skid,c0)-1;若用户不是数据拥有者,从云服务器下载共享密文ct,首先计算
实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。