一种基于属性的BGN型密文解密外包方案的制作方法

文档序号:11236573阅读:816来源:国知局

本发明属于信息安全技术领域,具体涉及一种基于属性的bgn型密文解密外包方案。



背景技术:

云计算概念的提出,将信息产业的发展带入了快车道。云服务在给用户提供海量的存储服务和强大的计算能力的同时,也推动了经济的发展,公共云主要由不可信的第三方服务提供商来维护和运行,云计算伴生的安全问题也日益凸显。云的安全问题被认为是云服务实际应用面临诸多困难中最大的挑战,也是云服务亟待解决的最大难题。如果用户以明文形式将敏感数据保存到云服务器,由于云端可能会复制甚至篡改这些信息,而用户根本无法得知云端的非授权行为,从而造成不可估计的损失,所以云是不能被无条件信任的。为了防止敏感数据的恶意泄露和非法访问,用户可以以密文形式对数据进行外包。

传统的云计算加解密模型,无法实现对计算结果的细粒度访问控制。shamir在1984年提出了基于身份的加密,用户的公钥是由与其身份相关的唯一标识生成,访问时服务器端不需要再查询用户的公钥证书。基于属性的加密由sahai和waters提出,可以看做是对基于身份的加密的推广,在这种加密体制中,用户的密钥和密文与属性关联起来,只有属性满足访问控制策略时,用户才能合法解密,从而实现了对密文的细粒度访问控制。

在基于属性的加密系统中,用户的密钥和密文分别关联着描述性属性集和访问策略。只有相关联的属性和访问策略相互匹配,一个特定的密钥才能够解密一个特定的密文。目前,有两种基于属性的加密方法已经被提出,包括密钥策略的基于属性的加密(kp-abe)和密文策略的基于属性的加密(cp-abe)。在kp-abe中,访问策略被嵌入在私钥中,而在cp-abe中,访问策略被嵌入在密文中。基于属性的加密abe提供了一种安全的方式,使得数据拥有者在不可信的服务器上共享外包数据,而不是在有着特定用户的可信服务器上进行。这一优势使得abe这种方法在云存储上大受欢迎,因为云存储需为属于不同组织的大量用户提供安全的访问控制。

尽管如此,基于属性的加密abe却在效率上有一个主要的缺陷,即密钥分发和解密阶段的计算代价会随着访问模式的复杂性的增长而增长。密文大小和解密所需时间随访问公式的复杂而增加,这对资源受限的移动用户而言无疑是个巨大的挑战。为了保证远端资源受限的移动用户也能安全高效的解密,外包的abe这一概念被提出来,它使得加解密可以外包给第三方服务提供商。abe解密外包的核心就是修改密钥产生算法,生成两个钥匙,一个是由用户保存的短的elgamal密钥,一个是变形钥匙tk。对于满足访问函数的密文ct,可以先在云端使用tk将ct转化为简单而短小的elgamal密文ct’。用户只需要一个简单的指数运算就可以进行解密。这种外包解密方案相较于传统的基于属性的加密方案,提高了系统的解密效率,降低了接收者的存储开销。然而,这一方案中对密文的解密有一部分是由云端进行的,这要求对外包服务器信任,密文、转换密钥tk都存在被非法读取的可能。

因此,设计一种不仅可以提高解密外包过程中信息安全性,同时又不增加用户解密难度的密文解密外包方案具有重要价值。



技术实现要素:

为了提高现有技术中cp-abe方案的解密外包方案解密外包过程中信息安全性,同时又不增加用户解密难度,本发明提供了一种基于属性的bgn型密文解密外包方案。本发明提供了基于属性的bgn型密文解密外包方案,按照本方案的加密方法得到的密文,可允许服务器对密文数据进行多次加法同态及一次乘法同态操作,从而在不增加用户解密难度的同时大大提升了用户信息的cpa安全性。

本发明要解决的技术问题通过以下技术方案实现:

一种基于属性的bgn型密文解密外包方案,包括以下步骤:

步骤(1):设定系统参数,产生加密密钥,主密钥msk和公钥pk;

步骤(2):发送方选择一个访问结构,对消息进行加密,并输出密文ct;

步骤(3):接收方输入主密钥msk和属性s,随机选择参数,输出转换密钥tk和私钥sk;

步骤(4):发送方通过公开信道向云端发送密文数据ct;

步骤(5):接收方向云端发送转换密钥tk;

步骤(6):云端利用转换密钥tk对密文ct进行转换计算得到部分密文ct’,并将所述部分密文ct’发送给接收方;

步骤(7):接收方利用私钥sk对部分密文ct’进行解密,获取消息;

在所述步骤(4)和步骤(5)之间还包括云端对密文的同态计算操作步骤。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,所述步骤(1)具体为:

步骤(1-1):设定系统参数,输入安全参数λ和属性空间u,其中u={0,1}*

步骤(1-2):运行算法ξ(λ),得到元组(q1,q2,g,g1,e)和双线性映射e:g×g→g1,其中,q1,q2为素数,g,g1都是阶为n=q1q2的群;

步骤(1-3):在群g中随机选择生成元k,u,并令则h是群g的q1阶子群生成元,再随机选择阶为p的素数阶群g′和g′t,令g为群g′的一个生成元,得到双线性映射e′:g′×g′→g′t;

步骤(1-4):随机选择由{0,1}*映射到g′的哈希函数f和由g′t映射到(0,1)的哈希函数,随机选择系数α,a∈zp,zp即为模p的整数域,则算法的主密钥表示为:msk=(gα,pk);公钥表示为:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,所述步骤(2)具体为:

步骤(2-1):发送方选择lsss访问结构(m,ρ),其中,m是一个与属性有关的l×n的矩阵,ρ是与m的行元素mi相关的函数,i=1,2,…,l;

步骤(2-2):随机选择n个zp中的元素(s,y2,……,yn)∈zp,组成向量v,v=(s,y2,……,yn),其中,s为秘密共享参量,计算λi=mi·v,其中,mi是m的第i行元素所组成的向量,再随机选择l+1个zp中的元素(r,r1,……,rl)∈zp,输出密文ct,密文ct包括以下三个部分:

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,所述步骤(3)具体为:

步骤(3-1):接收方输入主密钥msk和属性s,随机选择t′∈zp,输出

sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)

步骤(3-2):随机选择z∈zp,并令t=t′/z,得到转换密钥tk和接收方的私钥sk:

tk为:

sk为:sk=(q1,z)。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,所述步骤(6)具体为:

步骤(6-1):云端利用接收方发送的转换密钥tk对密文ct进行转换计算,当接收方的属性s不满足访问结构(m,ρ),则云端输出⊥,系统停止运行;

当接收方的属性s满足访问结构(m,ρ),定义且满足i={i:ρ(i)∈s},则存在常数集{ωi∈zp}i∈i,对于{λi}中的所有的值,计算∑i∈iωiλi=s即可恢复出秘密共享参量s,进而运行转换算法计算,得到部分密文ct’,

所述转换算法计算具体为:

步骤(6-2):云端向接收方返回部分密文ct′=(c,q)。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,所述步骤(7)具体为:

步骤(7-1):接收方输入私钥sk=(q1,z)和部分密文ct′,利用(z,q)计算出e′(g,g)=qz

步骤(7-2):接收方再利用部分私钥q1计算

步骤(7-3):接收方通过pollard’slambda算法解密以为底的离散对数,即可获取明文消息m。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,所述同态计算操作步骤为至少一次加法同态操作和最多一次乘法同态操作。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,步骤(4):发送方通过公开信道向云端发送密文数据ct后,云端对密文的同态计算操作步骤为至少一次加法同态操作,

云端接收密文数据包含c1和c2:

计算

则经过加法同态计算后的密文为:

c=gs

步骤(5):接收方向云端发送转换密钥tk;

步骤(6):云端利用转换密钥tk对加法同态操作后的密文进行转换计算,并将部分密文发送给接收方,步骤(6)具体过程如下:

步骤(6-1):云端利用接收方发送的转换密钥tk对密文进行转换计算,

当接收方的属性s满足访问结构(m,ρ),定义且满足i={i:ρ(i)∈s},则存在常数集{ωi∈zp}i∈i,计算∑i∈iωiλi=s即可恢复出秘密共享参量s,进而运算转换算法计算,得到部分密文,

所述转换算法计算具体为:

步骤(6-2):云端向接收方返回部分密文ct′=(c,q);

步骤(7):接收方利用私钥sk对部分密文ct’进行解密,步骤(7)具体过程如下:

步骤(7-1):接收方输入私钥sk=(q1,z)和部分密文ct′,利用(z,q)进行一次指数运算,计算e′(g,g)=qz,得到e′(g,g),从而得到h(e′(g,g))的值;

步骤(7-2):接收方再利用部分私钥q1计算:

步骤(7-3):接收方通过pollard’slambda算法解密以为底的离散对数,即可获取明文消息m1+m2。

因为经过一次加法同态得到的密文中c′∈g,说明云端接收密文ct后可以进行多次加法同态操作。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,步骤(4):发送方通过公开信道向云端发送密文数据ct后,云端对密文的同态计算操作步骤为一次乘法同态操作,

令k1=e(k,k),h1=e(k,h),则k1的阶为n,h1的阶为q1,并且一定有β∈z,使得z为有限整数域,计算

则经过一次乘法同态计算后的密文为:

c=gs

步骤(5):接收方向云端发送转换密钥tk;

步骤(6):云端利用转换密钥tk对密文进行转换计算,得到部分密文,并将所述部分密文发送给接收方,步骤(6)具体过程如下:

步骤(6-1):云端利用接收方发送的转换密钥tk对密文进行转换计算,当接收方的属性s满足访问结构(m,ρ),定义且满足i={i:ρ(i)∈s},则存在常数集{ωi∈zp}i∈i,计算∑i∈iωiλi=s即可恢复出秘密共享参量s,进而运算转换算法计算,得到部分密文ct’,

所述转换算法计算具体为:

步骤(6-2):云端向接收方返回部分密文ct′=(c,q);

步骤(7):接收方利用私钥sk对部分密文ct’进行解密,获取消息,步骤(7)具体过程如下:

步骤(7-1):接收方输入私钥sk=(q1,z)和部分密文ct′,利用(z,q)进行一次指数运算,即计算e′(g,g)=qz,得到e′(g,g),从而得到h(e′(g,g))2的值;

步骤(7-2):接收方再利用部分私钥q1计算:

步骤(7-3):接收方通过pollard’slambda算法解密以为底的离散对数,即可获取明文消息m1m2。

更具体地,本发明所述的基于属性的bgn型密文解密外包方案中,所述随机选择所指的参数产生算法具体为使用伪随机数生成器随机选择512bit大小的两个大素数q1、q2,g、g1都是阶为n=q1q2的群,e:g×g→g1是双线性映射。

下面对本发明所应用的数学理论作出说明:

本发明所述的“双线性映射”即“双线性对”,是指一种函数映射,将群g中的元素映射到群gt中去,其含义如下:

g,gt是两个阶为p的乘法循环群,g为g的生成元,则双线性映射e:g×g→gt满足下列性质:

(1)双线性:对任意u,k∈g和a,b∈zp,都有e(ua,kb)=e(u,k)ab

(2)非退化性:存在u,k∈g,使得e(u,k)≠1。

(3)可计算性:存在有效算法使得对任意u,k∈g,都可以计算出e(u,k)。

其中,zp为模p的整数域;

本发明所述的“访问结构”具有如下含义:

假设{p1,p2,…,pn}是秘密共享的参与者集合,定义p=2{p1,p2,…,pn},访问结构γ是{p1,p2,…,pn}的非空子集,即访问结构的单调性定义如下:如果a∈γ且则b∈γ。同时,称该子集为一个授权子集,不能重构出共享秘密的子集为非授权子集。

本发明所述的“lsss(linearsecretsharingscheme)访问结构”具有如下含义:

一个定义在秘密共享参与者集合p上的线性秘密共享机制(linearsecretsharingscheme,lsss)π是指:

(1)所有参与者的份额组成一个zp上的向量。

(2)存在一个l×n的矩阵m,它是一个关于π的共享生成矩阵。m的第i行对应实体ρ(i),其中i=1,2,…,l,ρ是从{1,2,…,l}到p的映射函数。随机选择列向量其中s是共享秘密,那么m·v就是利用π得到的关于s的l个共享组成的向量,并且(m·v)i属于实体ρ(i)。

线性重构性:假设π是一个关于访问结构γ的lsss,令授权集s∈γ,定义i={i:ρ(i)∈s}且那么就一定会存在这样的一个常数集{wi∈zp}i∈i,使得∑i∈iwimi=(1,0,…,0)成立,从而有∑i∈iwimiv=s;而对于非授权集,则不存在这样的{wi∈zp}i∈i。

本发明的有益效果:

1、本发明的解密外包方案中,信息在加密过程中产生的密文包括三个部分,其中一部分密文嵌入到bgn型密文中,可允许服务器对该部分密文进行多次加法同态及一次乘法同态操作,这种处理结果与直接对明文进行同样的运算再将结果加密一样;因此,对密文进行类同态操作后,不仅可以大大提升数据安全性,同时并不增加用户解密过程的难度。

2、同态计算操作可以在加密数据中进行诸如、检索、比较等操作,得出正确结果,而在整个处理过程中无需对数据进行解密,也就是说服务器不需读取用户敏感数据就可以处理数据信息。

3、本发明的解密外包方案利用双线性映射技术,并使用国产哈希函数sm3算法,将方案的安全性归约到子群判定问题困难假设,使其达到了cpa安全。

4、对云端计算结果的访问控制上,通过加入基于属性的加密方法,实现了对同态运算结果解密权限的基于属性的细粒度访问控制;访问规则由用户指定,可以随时进行访问权限的变更,即共享生成矩阵式和消息绑定在一起生成密文的,所以可以随时更改与共享生成矩阵相关联的身份特征集,而用户的私钥只与身份特征集相关。

5、效率方面,在移动云存储环境下,用户将属性控制经过哈希处理之后嵌入到bgn型密文中,上传到云端存储,再通过密文转换步骤,将密文的部分解密外包到云端进行,保证了数据在云端的安全性,在不泄露明文数据的前提下,借外包解密代理强大的运算能力,加快解密速度,降低了接收者的存储、解密开销,提高了系统的解密效率。

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

附图说明

图1是本发明基于属性的bgn型密文解密外包方案的流程示意图。

具体实施方式

为进一步阐述本发明达成预定目的所采取的技术手段及功效,以下结合附图及实施例对本发明的具体实施方式、结构特征详细说明如下。

实施例1:基于属性的bgn型密文解密外包方案

如图1所示的基于属性的bgn型密文解密外包方案,其具体步骤如下:

步骤(1):设定系统参数,产生加密密钥,主密钥msk和公钥pk,步骤(1)具体过程如下:

步骤(1-1):设定系统参数,输入安全参数λ和属性空间u,其中u={0,1}*;所输入的安全参数λ的取值比较大,本实施例中,λ选择1024bit大小,足以保证方案的安全性。

步骤(1-2):运行算法ξ(λ),得到元组(q1,q2,g,g1,e)和双线性映射e:g×g→g1,其中,q1,q2为素数,g,g1都是阶为n=q1q2的群;ξ(λ)是公开的参数产生算法,q1,q2为大素数,本实施例中选择q1,q2为512bit大小的素数。

步骤(1-3):在群g中随机选择生成元k,u,并令则h是群g的q1阶子群生成元,再随机选择阶为p的素数阶群g′和g′t,令g为群g′的一个生成元,得到双线性映射e′:g′×g′→g′t。

步骤(1-4):随机选择由{0,1}*映射到g′的哈希函数f和由g′t映射到(0,1)的哈希函数h,随机选择系数α,a∈zp,即α、a均在模p的整数域上随机选择,zp即为模p的整数域,则算法的主密钥表示为:msk=(gα,pk);

公钥表示为:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。

步骤(1)中所使用的哈希函数f和哈希函数h均为公开的国产哈希函数sm3算法。

步骤(2):发送方选择一个访问结构,对消息进行加密,并生成密文ct,步骤(2)具体过程如下:

步骤(2-1):发送方选择lsss访问结构(m,ρ),其中,m是一个与属性有关的l×n的矩阵,ρ是与m的行元素mi相关的函数,表示可以将矩阵m的每一行对应到访问结构中某一元素的映射,i=1,2,…,l。

步骤(2-2):随机选择n个zp中的元素(s,y2,……,yn)∈zp,组成向量v,v=(s,y2,……,yn),其中,s为秘密共享参量,计算λi=mi·v,其中,mi是m的第i行元素所组成的向量,再随机选择l+1个zp中的元素(r,r1,……,rl)∈zp,即在模p的整数域上随机选择r,r1,…,rl,输出密文ct,ct包括以下三个部分:

步骤(3):接收方输入主密钥msk和属性s,选择随机参数,输出转换密钥tk和私钥sk,步骤(3)具体过程如下:

步骤(3-1):接收方输入主密钥msk和属性s,随机选择t′∈zp,输出:

sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)。

步骤(3-2):随机选择z∈zp,并令t=t′/z,得到转换密钥tk和接收方的私钥sk:

sk=(q1,z)。

步骤(4):发送方通过公开信道向云端发送密文数据ct。

云端接收到发送方发送的密文数据ct之后;可对密文进行同态计算操作步骤,同态计算操作步骤为至少一次加法同态操作和最多一次乘法同态操作;云端接收到的按照本实施例方案进行加密得到的密文ct包括三个部分,其中第一部分密文c嵌入bgn,可允许服务器对该部分密文进行多次加法同态及一次乘法同态操作。

步骤(5):接收方向云端发送转换密钥tk。

步骤(6):云端利用转换密钥tk对密文ct进行转换计算,得到部分密文ct’,并将所述部分密文ct’发送给接收方,步骤(6)具体过程如下:

步骤(6-1):云端利用接收方发送的转换密钥tk对密文ct进行转换计算,当接收方的属性s不满足访问结构(m,ρ),则云端输出⊥,系统停止运行;

当接收方的属性s满足访问结构(m,ρ),定义且满足i={i:ρ(i)∈s},即属性集s中所有元素ρ(i)∈s通过映射ρ(.)对应到矩阵m的行标i的集合,则存在常数集{ωi∈zp}i∈i,使得∑i∈iwimi=(1,0,…,0)成立,对于{λi}中的所有的值,{λi}是秘密s的有效部分,则计算∑i∈iωiλi=s即可恢复出秘密共享参量s,进而运算转换算法计算,得到部分密文ct’,

所述转换算法计算具体为:

步骤(6-2):云端向接收方返回部分密文ct′=(c,q)。

步骤(7):接收方利用私钥sk对部分密文ct’进行解密,获取消息,步骤(7)具体过程如下:

步骤(7-1):接收方输入私钥sk=(q1,z)和部分密文ct′,利用(z,q)进行一次指数运算,即计算e′(g,g)=qz

步骤(7-2):接收方再利用部分私钥q1计算:

步骤(7-3):接收方通过pollard’slambda算法解密以为底的离散对数,即可获取明文消息m。

在本实施例的密文解密外包方案中,其中,步骤(3)的操作主体为接收方,与步骤(2)和步骤(4)不同,因此步骤(3)的顺序可以有变化,步骤(3)不需要必须在步骤(2)和步骤(4)之间,只要在步骤(1)之后、步骤(5)之前即可。本发明方案中的“随机选择”所指的参数产生算法具体为使用伪随机生成器随机选择512bit大小的两个大素数q1、q2,g、g1都是阶为n=q1q2的群,e:g×g→g1是双线性映射。伪随机数生成器不做具体指定,只要它能够达到随机选择的目的即可,只要能够实现随机选择,则对方案安全性不产生影响。

实施例2:基于属性的bgn型密文解密外包方案

具体方案如下:

步骤(1):设定系统参数,产生加密密钥,主密钥msk和公钥pk,步骤(1)具体过程如下:

步骤(1-1):设定系统参数,输入安全参数λ和属性空间u,其中u={0,1}*;所输入的安全参数λ的取值比较大,本实施例中,λ选择1024bit大小,足以保证方案的安全性。

步骤(1-2):运行算法ξ(λ),得到元组(q1,q2,g,g1,e)和双线性映射e:g×g→g1,其中,q1,q2为素数,g,g1都是阶为n=q1q2的群;ξ(λ)是公开的参数产生算法,q1,q2为大素数,本实施例中选择q1,q2为512bit大小的素数。

步骤(1-3):在群g中随机选择生成元k,u,并令则h是群g的q1阶子群生成元,再随机选择阶为p的素数阶群g′和g′t,令g为群g′的一个生成元,得到双线性映射e′:g′×g′→g′t。

步骤(1-4):随机选择由{0,1}*映射到g′的哈希函数f和由g′t映射到(0,1)的哈希函数h,随机选择系数α,a∈zp,即α、a均在模p的整数域上随机选择,zp即为模p的整数域,则算法的主密钥表示为:msk=(gα,pk);

输出公钥表示为:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。

步骤(1)中所使用的哈希函数f和哈希函数h均为公开的国产哈希函数sm3算法。

步骤(2):发送方选择一个访问结构,对消息进行加密,并生成密文ct,步骤(2)具体过程如下:

步骤(2-1):发送方选择lsss访问结构(m,ρ),其中,m是一个与属性有关的l×n的矩阵,ρ是与m的行元素mi相关的函数,表示可以将矩阵m的每一行对应到访问结构中某一元素的映射,i=1,2,…,l。

步骤(2-2):随机选择n个zp中的元素(s,y2,……,yn)∈zp,组成向量v,v=(s,y2,……,yn),其中,s为秘密共享参量,计算λi=mi·v,其中,mi是m的第i行元素所组成的向量,再随机选择l+1个zp中的元素(r,r1,……,rl)∈zp,即在模p的整数域上随机选择r,r1,…,rl,输出密文ct,ct包括以下三个部分:

步骤(3):接收方输入主密钥msk和属性s,选择随机参数,输出转换密钥tk和私钥sk,步骤(3)具体过程如下:

步骤(3-1):接收方输入主密钥msk和属性s,随机选择t′∈zp,输出:

sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)。

步骤(3-2):随机选择z∈zp,并令t=t′/z,得到转换密钥tk和接收方的私钥sk:

sk=(q1,z)。

步骤(4):发送方通过公开信道向云端发送密文数据ct。

云端接收到发送方发送的密文数据ct之后;可对密文进行同态计算操作步骤,同态计算操作步骤为至少一次加法同态操作和最多一次乘法同态操作。在本实施例中,进行一次加法同态操作:

云端接收密文数据包含c1和c2:

计算

经过加法同态计算后的密文为:

c=gs

因为经过加法同态得到的密文中c′∈g,说明云端接收密文ct后可以进行多次加法同态操作。

步骤(5):接收方向云端发送转换密钥tk。

步骤(6):云端利用转换密钥tk对加法同态操作后的密文进行转换计算,得到部分密文ct’,并将所述部分密文ct’发送给接收方,步骤(6)具体过程如下:

步骤(6-1):云端利用接收方发送的转换密钥tk对密文ct进行转换计算,当接收方的属性s不满足访问结构(m,ρ),则云端输出⊥,系统停止运行;

当接收方的属性s满足访问结构(m,ρ),定义且满足i={i∶ρ(i)∈s},则存在常数集{ωi∈zp}i∈i,对于{λi}中的所有的值,{λi}是秘密s的有效部分,也就是计算∑i∈iωiλi=s即可恢复出秘密共享参量s,进而运算转换算法计算,得到部分密文ct’,

所述转换算法计算具体为:

步骤(6-2):云端向接收方返回部分密文ct′=(c,q)。

步骤(7):接收方利用私钥sk对部分密文ct’进行解密,获取消息,步骤(7)具体过程如下:

步骤(7-1):接收方输入私钥sk=(q1,z)和部分密文ct′,利用(z,q)进行一次指数运算,即计算e′(g,g)=qz,得到e′(g,g),从而得到h(e′(g,g))的值。

步骤(7-2):接收方再利用部分私钥q1计算:

步骤(7-3):接收方通过pollard’slambda算法解密以为底的离散对数,即可获取明文消息m1+m2。

云端接收到的按照本实施例方案进行加密得到的密文ct包括三个部分,其中第一部分密文c嵌入到bgn型密文中,可允许服务器对该部分密文进行多次加法同态操作,这种处理结果与直接对明文进行同样的运算再将结果加密一样;因此,对密文进行类同态操作后,可以大大提升数据安全性,同时并不增加用户解密过程的难度。因为经过加法同态得到的密文中c′∈g,说明云端接收密文ct后可以进行多次加法同态操作。

在本实施例的密文解密外包方案中,其中,步骤(3)的操作主体为接收方,与步骤(2)和步骤(4)不同,因此步骤(3)的顺序可以有变化,步骤(3)不需要必须在步骤(2)和步骤(4)之间,只要在步骤(1)之后、步骤(5)之前即可。

本发明方案中的“随机选择”所指的参数产生算法具体为使用伪随机生成器随机选择512bit大小的两个大素数q1、q2,g、g1都是阶为n=q1q2的群,e:g×g→g1是双线性映射。伪随机数生成器不做具体指定,只要它能够达到随机选择的目的即可,只要能够实现随机选择,则对方案安全性不产生影响。

实施例3:基于属性的bgn型密文解密外包方案

具体方案如下:

步骤(1):设定系统参数,产生加密密钥,主密钥msk和公钥pk,步骤(1)具体过程如下:

步骤(1-1):设定系统参数,输入安全参数λ和属性空间u,其中u={0,1}*;所输入的安全参数λ的取值比较大,本实施例中,λ选择1024bit大小,足以保证方案的安全性。

步骤(1-2):运行算法ξ(λ),得到元组(q1,q2,g,g1,e)和双线性映射e:g×g→g1,其中,q1,q2为素数,g,g1都是阶为n=q1q2的群;ξ(λ)是公开的参数产生算法,q1,q2为大素数,本实施例中选择q1,q2为512bit大小的素数。

步骤(1-3):在群g中随机选择生成元k,u,并令则h是群g的q1阶子群生成元,再随机选择阶为p的素数阶群g′和g′t,令g为群g′的一个生成元,得到双线性映射e′:g′×g′→g′t。

步骤(1-4):随机选择由{0,1}*映射到g′的哈希函数f和由g′t映射到(0,1)的哈希函数h,随机选择系数α,a∈zp,即α、a均在模p的整数域上随机选择,zp即为模p的整数域,则算法的主密钥表示为:msk=(gα,pk);

输出公钥表示为:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。

步骤(1)中所使用的哈希函数f和哈希函数h均为公开的国产哈希函数sm3算法。

步骤(2):发送方选择一个访问结构,对消息进行加密,并生成密文ct,步骤(2)具体过程如下:

步骤(2-1):发送方选择lsss访问结构(m,ρ),其中,m是一个与属性有关的l×n的矩阵,ρ是与m的行元素mi相关的函数,表示可以将矩阵m的每一行对应到访问结构中某一元素的映射,i=1,2,…,l。

步骤(2-2):随机选择n个zp中的元素(s,y2,……,yn)∈zp,组成向量v,v=(s,y2,……,yn),其中,s为秘密共享参量,计算λi=mi·v,其中,mi是m的第i行元素所组成的向量,再随机选择l+1个zp中的元素(r,r1,……,rl)∈zp,即在模p的整数域上随机选择r,r1,…,rl,输出密文ct,ct包括以下三个部分:

步骤(3):接收方输入主密钥msk和属性s,选择随机参数,输出转换密钥tk和私钥sk,步骤(3)具体过程如下:

步骤(3-1):接收方输入主密钥msk和属性s,随机选择t′∈zp,输出:

sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)。

步骤(3-2):随机选择z∈zp,并令t=t′/z,得到转换密钥tk和接收方的私钥sk:

sk=(q1,z)。

步骤(4):发送方通过公开信道向云端发送密文数据ct。

云端接收到发送方发送的密文数据ct之后;可对密文进行同态计算操作步骤,同态计算操作步骤为至少一次加法同态操作和最多一次乘法同态操作。在本实施例中,进行一次乘法同态操作:

令k1=e(k,k),h1=e(k,h),则k1的阶为n,h1的阶为q1,并且一定有β∈z,使得z为有限整数域,计算

经过一次乘法同态计算后的密文为:

c=gs

经过乘法同态得到的密文中c′∈g1,由于不存在有效算法使得e:g1×g1→g成立,所以本方案只能进行一次乘法。

步骤(5):接收方向云端发送转换密钥tk。

步骤(6):云端利用转换密钥tk对密文进行转换计算,得到部分密文ct’,并将所述部分密文ct’发送给接收方,步骤(6)具体过程如下:

步骤(6-1):云端利用接收方发送的转换密钥tk对密文ct进行转换计算,当接收方的属性s不满足访问结构(m,ρ),则云端输出⊥,系统停止运行;

当接收方的属性s满足访问结构(m,ρ),定义且满足i={i:ρ(i)∈s},则存在常数集{ωi∈zp}i∈i,对于{λi}中的所有的值,{λi}是秘密s的有效部分,则计算∑i∈iωiλi=s即可恢复出秘密共享参量s,进而运算转换算法计算,得到部分密文ct’,

所述转换算法计算具体为:

步骤(6-2):云端向接收方返回部分密文ct′=(c,q)。

步骤(7):接收方利用私钥sk对部分密文ct’进行解密,获取消息,步骤(7)具体过程如下:

步骤(7-1):接收方输入私钥sk=(q1,z)和部分密文ct′,利用(z,q)进行一次指数运算,即计算e′(g,g)=qz,得到e′(g,g),从而得到h(e′(g,g))2的值。

步骤(7-2):接收方再利用部分私钥q1计算:

步骤(7-3):接收方通过pollard’slambda算法解密以为底的离散对数,即可获取明文消息m1m2。

根据实施例3,云端接收到的按照本实施例方案进行加密得到的密文ct包括三个部分,其中第一部分密文c嵌入到bgn型密文中,可允许服务器对该部分密文进行一次乘法同态操作,这种处理结果与直接对明文进行同样的运算再将结果加密一样;因此,对密文进行类同态操作后,可以大大提升数据安全性,同时并不增加用户解密过程的难度。

在移动云存储环境下,用户将属性控制经过哈希处理之后嵌入到bgn型密文中,上传到云端存储,再通过密文转换步骤,将密文的部分解密外包到云端进行,保证了数据在云端的安全性,在不泄露明文数据的前提下,借外包解密代理强大的运算能力,加快解密速度,降低了接收者的存储、解密开销,提高了系统的解密效率。

实施例4:对本发明的bgn型密文解密外包方案的安全性进行说明

本发明方案的安全性是建立在敌手算法α不能攻破子群判定问题的假设基础上。假设存在某一算法β能够以优势ε攻破本方案的语义安全性,那么就一定存在敌手算法α能够以优势ε解决子群判定问题假设。详细的证明过程如下:

(1)敌手算法α随机选择g∈g,将公钥(n,g,g1,e,g,x)发送给算法β。

(2)算法β随机挑选两个明文消息m0,m1发送给敌手算法α,算法α返回随机挑战密文其中

(3)算法β输出关于b的猜测b′,如果b=b′,算法α输出“1”,否则输出“0”。

如果元素x是在群g中均匀分布,那么挑战密文c在群g中也是均匀分布,与b的选择无关,即pr|b=b′|=1/2;如果x是群g的q1阶子群中的元素,那么根据假设就有pr|b=b′|>1/2+ε,所以sd-adva(τ)>ε,这就意味着敌手算法α解决子群判定问题假设的优势ε是不可忽略的,与困难问题矛盾。

因此,方案在子群判定问题困难假设下达到了cpa安全。同时,需要注意到,解密者属性的泄露不会影响密文的安全。因为如果攻击者拿不到部分密钥q1,那么他即使知道加密者的属性和随机参数z,即攻击者能够算出e′(g,g)的值,但是不清楚部分密钥q1的值,因而无法计算

所以还是不能得到正确的明文。另一方面,攻击者即使只拿到了部分密钥q1,但是由于他的属性不满足密文访问策略,即攻击者不能算出e′(g,g)的值,因此也不能解密得到明文。综上所述,只有属性满足密文访问策略的合法解密者才可以正常解密密文。

根据上述说明过程可知,本发明的解密外包方案利用双线性映射技术,并使用国产哈希函数sm3算法,将方案的安全性归约到子群判定问题困难假设,使其达到了cpa安全。

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

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