一种能抵抗选择密文攻击的群组间代理重加密方法与流程

文档序号:12068189阅读:311来源:国知局
一种能抵抗选择密文攻击的群组间代理重加密方法与流程

本发明涉及云存储中的数据安全技术领域,具体地,涉及一种能抵抗选择密文攻击的群组间代理重加密方法。



背景技术:

云存储虽然为用户提供了很大的便利,但是在不可信的第三方存储数据并不安全,特别是对于机密数据。代理重加密是通过代理者对密文进行转化,在不失数据机密性的前提下,实现数据的安全转发,从而达到数据共享的目的。它是由Blaze等人在1998年的欧洲密码学年会上提出的,并由Ateniese等人在2005年的网络和分布式系统安全研讨会议和2007年的美国计算机学会计算机与通信安全会议上给出了规范的形式化定义。

在代理重加密中,一个半可信代理人通过代理授权人产生的转换密钥Rk把用授权人Alice的公钥Pa加密的密文转化为用被授权人Bob的公钥Pb加密的密文。在这个过程中,代理人无法获得任何关于明文或者用来解密密文私钥的任何信息。一般说来,代理重加密可以根据其代理功能分为两大类:单向代理重加密和双向代理重加密。在单向代理重加密中,代理者只能将Alice的密文转换成Bob的密文。而在双向代理重加密中,代理者既可以将Alice的密文转换成Bob的密文,也可以将Bob的密文转换成Alice的密文。当然,任何单向代理重加密方案都可以很容易地变成双向代理重加密方案。

一般的代理重加密是分为六个步骤:初始化,密钥生成,加密,重加密秘钥生成,重加密,解密。

1)初始化:可信第三方PKG根据安全参数设置工作环境,并得到主公钥和主私钥。

2)密钥生成:PKG根据其设置的工作环境,为授权人A和被授权人B分别生成各自的公私钥对。

3)重加密秘钥生成:可信第三方PKG利用自己的密钥和为授权人A和被授权人B生成生一个重加密密钥Rk(A→B),并将这个重加密密钥通过安全的信道传递给代理人P。

4)加密:授权人A使用自己的公钥对数据进行加密。

5)重加密:代理人P利用重加密密钥Rk(A→B)对原始密文进行再次加密,所得到的密文称为重加密密文。该密文实际上等同于用被授权人公钥加密的密文。

6)解密:被授权人使用自己的私钥对重加密密文进行解密,得到相应的明文。

代理重加密能够在保持数据机密性的同时,实现了解密权的指派,成功的解决了云存储中加密数据共享的问题。

将代理重加密技术应用于云存储,其安全模型是至关重要的。针对代理重加密安全模型的设计,研究人员已经有了一些有价值的探讨。Blaze等人提出的代理重加密是双向代理重加密。在2005年,Ateniese等人提出了首个单向代理重加密方案。但上述这些方案只满足选择明文攻击安全,而实际应用通常要求密码组件能够抵抗选择密文攻击安全。为此,Calletti等人在2007年的ACM CCS会议上提出了首个能在标准模型下证明的选择密文攻击安全双向代理重加密方案。在2008年的公钥密码学会议上,Libert等人提出了一个标准模型下单向代理重加密方案,该方案可以在非自适应攻击模型下达到选择密文安全。

而对于群组代理重加密,研究人员也有了一些有价值的探讨。2007年,Ma等提出了一个保证数据隐私群组代理重加密方案。在这个方案中,群组中的任何人都能解密密文,也能加密明文。2009年,Chunbo Ma和Jun Ao提出了一个双向群组间代理重加密方案。在这个方案中,一个被群组A加密的消息经过代理重加密,生成能够被群组B中的任何成员解密的密文。上述这些群组代理重加密方案能够解决云存储上群组间的数据共享问题,具有更大的灵活性,然而其安全性与效率仍有待提升。



技术实现要素:

本发明的目的在于,针对上述问题,提出一种能抵抗选择密文攻击的群组间代理重加密方法,以实现数据高效而灵活的共享的优点。

为实现上述目的,本发明采用的技术方案是:一种能抵抗选择密文攻击的群组间代理重加密方法,主要包括:

步骤1:可信第三方PKG根据安全参数生成主公钥和主私钥;

步骤2:可信第三方PKG为群组A生成群组A的公钥和群组A的私钥,为群组B生成群组B的公钥和群组B的私钥;

步骤3:PKG为代理服务器生成重加密密钥;

步骤4:群组A利用生成的公钥对明文进行加密并签名,将得到的带签名的密文发送给代理服务器;

步骤5:代理服务器用重加密密钥对接收到步骤4中的带签名的密文进行重加密,得到重加密密文,并对签名进行验证,若通过验证则将带签名的重加密密文发送给群组B:

步骤6:验证签名,若通过验证,群组B用得到的公钥和私钥解密步骤5中带签名的重加密密文。

进一步地,步骤1中,可信第三方PKG通过运行初始化算法Setup(1k)得到主公钥(g,g1,g2,h,H,P)和主私钥(a,b);

具体为,可信第三方PKG通过安全参数k,任意选择a,b∈Zp和h∈G1,计算得到g1=ga,g2=gb;H:{0,1}≤1→G1和P:{0,1}≤1→G1是在随机预言机下的两个相对独立的哈希函数;令主公钥为(g,g1,g2,h,H,P)和主私钥为(a,b)。

进一步地,步骤2中,可信第三方PKG通过运行密钥生成算法KeyGen(g,g1,g2,h)生成群组A的私钥l与群组A的公钥PKA,以及群组B的私钥k与公钥PKB,并为群组A的每个成员生成私钥(di1,di2)和为群组B中每个成员生成私钥(ti1,ti2)。

进一步地,步骤3具体为,可信第三方PKG用群组A的私钥l和群组B的私钥k运行重加密密钥生成算法ReEnc(l,k)得到重加密密钥rk(A→B),并将重加密密钥发送给代理服务器。

进一步地,步骤4中,群组A利用生成的公钥对明文进行加密并签名,包括,数据拥有者通过主公钥(g,g1,g2,h)和群组A的公钥PKA来对明文M进行加密,生成群组A可以解密的密文,具体为,首先选择一个一次强不可伪造签名

G(1k)→(svk,ssk),令A=svk;选择一个任意实数s∈Zp,然后计算

C=e(g2,hH(svk))s·M

D=gs

F=P(svk)s

运行签名算法S(ssk,(C||D||E||F))得到签名S;

输出密文c=(A,B,C,D,E,F)和签名S;然后数据拥有者将密文c和签名S通过网络广播给群组A的每个成员。

进一步地,步骤5具体为,代理服务器通过密文c和可信第三方发送的重加密密钥rk(A→B),运行重加密算法ReEnc(rk(A→B),c)得到重加密密文c′=(A,B′,C,D,E,F),并对签名进行验证,具体为,计算

若Check(c,S,PKA)=1,则输出新的密文c′=(A,B′,C,D,E,F);否则输出⊥。

进一步地,步骤6具体为,若Check(c′,S,PKB)=1,则解密重加密密文,具体为群组B通过广播的方式把重加密密文传给每个用户,每个用户利用得到的私钥(ti1,ti2)和重加密密文(A,B′,C,D,E,F,S)运行解密算法Dec((c′,S),(ti1,ti2))得到最终的明文M,即I=e(g2,B′)/e(E,di1)·e(D,di2)=1/e(gs,hb)

M=IH(A)·C=M

如果Check(c′,S,PKB)≠1,则输出⊥。

本发明各实施例的能抵抗选择密文攻击的群组间代理重加密方法,实现了解密能力的指派,为云存储提供了一种可靠而方便的数据共享方式。本发明基于群组进行解密能力的指派,群组中的任意成员都能够独立的解密密文,因此比基于个体的代理重加密的方法更加灵活。本发明中,授权人和被授权人的计算复杂度较低,能方便的进行加密解密,特别的,相比于现有的群组间代理重加密方案,本发明在密钥生成阶段算法复杂度更低。本发明在生成密文的时候加入了一个一次强不可伪造签名,保证了密文和重加密密文的完整性。最后,本发明在双线性Diffie_Hellman假设成立的情况和随机预言机模型下,能够实现抵抗选择密文攻击的。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例所述的一种能抵抗选择密文攻击的群组间代理重加密方法示意图;

图2为本发明实施例所述的一种能抵抗选择密文攻击的群组间代理重加密方法的算法流程图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

具体地,图1是一种能抵抗选择密文攻击的群组间代理重加密方法示意图。可信第三方PKG为群组A与群组B分别生成公私钥,并为代理生成重加密密钥。群组A将签名的密文发送给代理。代理对密文进行验证,并利用重加密密钥对密文进行重加密,生成由群组B中成员可以解密并验证的密文。

KeyGen(g,g1,g2,h)→((l,PKA,(di1,di2)),(k,PKB,(ti1,ti2)))

图2是一种能抵抗选择密文攻击的群组间代理重加密方法的算法流程图,包括步骤S1~S6。(S1)可信第三方PKG运行初始化算法Setup(1k)得到主公钥(g,g1,g2,h,H,P)和主私钥(a,b);(S2)可信第三方PKG运行密钥生成算法KeyGen(g,g1,g2,h)生成群组A的私钥l与公钥PKA,以及群组B的私钥k与公钥PKB,并为群组A的每个成员生成私钥(di1,di2)和为群组B中每个成员生成私钥(ti1,ti2);(S3)可信第三方PKG用群组A的私钥l和群组B的私钥k运行重加密密钥生成算法ReEnc(l,k)得到重加密密钥rk(A→B),并将重加密密钥发送给代理人;(S4)数据拥有者利用自己的公钥PKA及可信第三方PKG的主公钥运行加密算法Enc(M,g,g1,g2,h,PKA,H,P)输出密文c=(A,B,C,D,E,F,S),并把密文发送给代理人;(S5)代理人通过得到的密文c和可信第三方发送的重加密密钥rk(A→B),运行重加密算法ReEnc(rk(A→B),c)得到重加密密文c′=(A,B′,C,D,E,F),并对签名进行验证,如果通过验证,则将重加密密文发送给群组B;(S6)群组B通过广播的方式把重加密密文传给每个用户,然后每个用户利用得到的私钥(ti1,ti2)和重加密密文(A,B′,C,D,E,F,S)运行解密算法Dec((c′,S),(ti1,ti2))得到最终的明文M,同时对签名进行验证。

为阐明上述过程,首先进行以下定义:

定义1:Sig=(G,S,V)是一个一次强不可伪造签名方案。在一次强不可伪造签名方案中,1=1sig(k)表示验证密钥G(1k)输出的长度。G(1k)→(svk,ssk)是一个密钥生成算法,生成签名密钥对(svk,ssk)。S(ssk,c)→S是签名算法,S为在密钥ssk的作用下对c的签名。V(svk,c,S)是利用密钥svk对签名S进行验证。

定义2:H:{0,1}≤1→G1和P:{0,1}≤1→G1是在随机预言机下的两个相对独立的哈希函数,其中G1是基于素数p的一个乘法循环群。

定义3:e:G1×G2→G2是一个双线性对,其中G1,G2是基于素数p的一个乘法循环群。

定义4:定义Check(c,S,pk)为基于强不可伪造签名方案及双线性对的密文数据验证算法。c=(A,B,C,D,E,F)为被验证的密文,pk是群组的公钥,S是强不可伪造签名方案下对(C,D,E,F)的签名。具体的验证算法Check(c,S,pk)的定义如下:

1)第一步运行V(A,(C||D||E||F),S)来验证签名S,以确认(C,D,E,F)是未被篡改的。

2)第二步利用双线性对B进行验证,如果下面公式成立,则可以确认B是合法的:(e(B,P(A))=e(pk,F))AND(e(B,g1)=e(pk,E))==true

如果第一步与第二步的验证均通过,则输出1;否则输出⊥。

本发明为云计算中能抵抗选择密文攻击的基于群组间的代理重加密,其特征在于,包括以下步骤:

1)初始化:Setup(1k)→((g,g1,g2,h),(a,b)):

可信第三方PKG通过安全参数,任意选择a,b∈Zp和h∈G1,计算得到g1=ga,g2=gb。H:{0,1}≤1→G1和P:{0,1}≤1→G1是在随机预言机下的两个相对独立的哈希函数。令主公钥为(g,g1,g2,h,H,P)和主私钥为(a,b)。

2)密钥生成KeyGen(g,g1,g2,h)→((l,PKA,(di1,di2)),(k,PKB,(ti1,ti2))):可信第三方PKG利用主密钥,分别为群组A与群组B生成公私钥对。

任意选择k∈Zp作为群组A的标识符。定义群组A的公钥为对于群组组员pi∈A的私钥按如下方法生成:

a)选择mi∈Zp,同时计算ni∈Zp,使得满足k≡(mi+ni)mod p。

b)计算得到和

则成员pi的私钥为di=(di1,di2)。

同时,PKG任意选择l∈Zp作为群组B的标识符。定义PKB=g1l作为群组B的公钥,群组B成员私钥ti=(ti1,ti2)的生成跟群组A的一样。

3)重加密密钥生成:ReEnc(l,k)→rk(A→B)

可信第三方利用A,B两个群组标志符l,k,生成重加密密钥rk(A→B)=l/kmod p。

4)加密:Enc(M,g,g1,g2,h,PKA,H,P)→((A,B,C,D,E,F),S):

数据拥有者通过主公钥(g,g1,g2,h)和群组A的公钥PKA来对明文M进行加密,生成群组A可以解密的密文:

a)首先选择一个一次强不可伪造签名G(1k)→(svk,ssk),令A=svk。

b)选择一个任意实数s∈Zp,然后计算

C=e(g2,hH(svk))s·M D=gsF=P(svk)s

c)运行签名算法S(ssk,(C||D||E||F))得到签名S。

d)输出密文c=(A,B,C,D,E,F)和签名S。

然后数据拥有者将密文c和签名S通过网络广播给群组A的每个成员。

5)重加密:ReEnc(rk(A→B),c)→c′:

代理人通过得到的重加密密钥rk(A→B)和在公钥PKA下加密的密文c进行重加密,得到重加密密文:

a)计算

b)如果Check(c,S,PKA)=1,则输出新的密文c′=(A,B′,C,D,E,F);要不然输出⊥。

6)解密Dec((c′,S),(ti1,ti2),PKB)→M:

被授权人通过从代理人得到的重加密密文c′和自己的私钥(ti1,ti2)。如果

Check(c′,S,PKB)=1,则解密重加密密文

如果Check(c′,S,PKB)≠1,则输出⊥。

至少可以达到以下有益效果:实现数据高效而灵活的共享。相比于现有的群组间代理重加密方案,本发明在密钥生成阶段算法复杂度更低,特别的,通过采用强不可伪造签名方案对密文数据进行验证,本发明能够验证密文的完整性从而抵抗选择密文攻击,弥补了现有方案的不足。

最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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