本发明涉及一种无证书多消息多接收者签密方法,特别涉及一种可更新密钥的无证书多消息多接收者签密方法。
背景技术:
文献“专利申请号是201710815077.8的中国发明专利”公开了一种真实匿名的无证书多消息多接收者签密方法,该方法的用户选择一个秘密值作为部分私钥,并用这个秘密值来计算部分公钥,然后将部分公钥和自己的身份信息发送给密钥生成中心KGC。密钥生成中心生成对应的部分私钥和对应的部分公钥验证参数,然后通过安全信道发送给用户。用户收到对应的部分私钥和对应的部分公钥之后,验证其合法性,若能通过验证,则继续计算出自己的公钥和私钥,并公开公钥,否则停止操作;签密过程中不仅不包含发送者和接收者的身份信息,而且对要发送的多个不同的消息进行整体加密,只有授权的接收者可以解密验证密文消息。但是该方法存在以下问题:接收者不能验证发送者的具体身份,若收到了非法的消息,也不能找到消息的发送者;使用的哈希函数较多;用户不能自己更新密钥,如果用户想要更新密钥只能重新注册。
技术实现要素:
为了克服现有无证书多消息多接收者签密方法复杂的不足,本发明提供一种可更新密钥的无证书多消息多接收者签密方法。该方法首先由用户注册生成自己的公钥和私钥,公钥为两部分,由验证份额和部分私钥组成,当用户需要进行密钥更新时,则重新选择一个随机数,然后生成新的验证份额和密钥更新验证参数,然后通过公开信道将其发送给密钥生成中心KGC,密钥生成中心KGC收到后验证两者是否满足验证等式,若满足则将新的验证份额替换原来的验证份额,否则更新失败。当KGC更新了公钥后,用户计算并更新自己的私钥。在签密过程,对发送者的身份信息和明文一起加密,用发送者的私钥生成一个签名参数;在解签密过程,当解密得到发送者的身份信息以后,再获取对应的公钥验证签名参数。若通过验证,则接收签密密文;否则拒绝接收签密密文。该方法的有益效果是:第一、接收者能够验证发送者的具体身份;第二、减少了哈希函数的使用数量;第三、用户能够通过公开信道更新自己的密钥。
本发明解决其技术问题所采用的技术方案:一种可更新密钥的无证书多消息多接收者签密方法,其特点是包括以下步骤:
(1)用户注册过程:
(1a)用户U随机选取一个整数dU作为自己的秘密值,按照下式,用户U计算自己的验证份额DU,并将自己的身份信息IDU和验证份额DU通过公开信道发送给密钥生成中心KGC:
DU=dUP (1-1)
其中,DU表示用户U的验证份额,dU表示用户U的秘密值,P表示密钥生成中心KGC选取的椭圆曲线E的一个生成元,IDU表示用户U的身份信息,用户U包括接收者Ri和发送者S,i=1,2,…,n,n表示发送者S在已注册的用户U中随机选取的接收者Ri的数目;
(1b)密钥生成中心KGC收到用户U的验证份额DU和身份信息IDU后,随机选取一个整数wU,按照下式计算用户U的部分私钥验证参数WU和部分私钥vU,并将用户U的部分私钥验证参数WU和部分私钥vU通过安全信道发送给用户U:
WU=wUP (1-2)
vU=s+wUH0(IDU,DU,WU) (1-3)
其中,wU表示密钥生成中心KGC为用户U随机选取的整数,WU表示用户U的部分私钥验证参数,vU表示用户U的部分私钥,s表示密钥生成中心KGC选取的系统主密钥,H0表示密钥生成中心KGC选取的单向哈希函数;
(1c)用户U判断收到的部分私钥vU和部分私钥验证参数WU是否满足如下等式。若是,则执行步骤(4),否则,用户U向密钥生成中心KGC报错,并退出用户注册过程:
vUP=H0(IDU,DU,WU)P+Ppub (1-4)
其中,Ppub表示密钥生成中心KGC生成的系统公钥;
(1d)按照下式,用户U计算自己的部分公钥QU:
QU=H0(IDU,DU,WU)WU (1-5)
其中,QU表示用户U的部分公钥;
(1e)按照下式,用户U生成自己的公钥PKU并将其发送给密钥生成中心KGC:
PKU=(DU,QU) (1-6)
其中,PKU表示用户U的公钥,包含用户U的验证份额DU和用户U的部分公钥QU两部分;
(1f)密钥生成中心KGC收到用户U发送的公钥PKU后,对外发布用户U的公钥PKU;
(1g)密钥生成中心KGC对外发布用户U的公钥PKU后,按照下式,用户U计算自己的伪秘密值xU和伪部分私钥yU:
xU=dUH0(IDU,DU,QU) (1-7)
yU=vUH0(IDU,DU,QU) (1-8)
其中,xU表示用户U的伪秘密值,yU表示用户U的伪部分私钥;
(1h)按照下式,用户U生成自己的私钥SKU,并秘密保存,然后退出用户注册过程:
SKU=(xU,yU) (1-9)
其中,SKU表示用户U的私钥,包含用户U的伪秘密值xU和用户U的伪部分私钥yU两部分;
(2)用户密钥更新过程:
(2a)当用户U需要进行更新密钥时执行步骤(2b),若不需要更新密钥则直接执行步骤(3);
(2b)用户U随机选取一个整数dU′,然后计算用户U新的验证份额DU′和密钥更新验证参数βU,并将用户U新的验证份额DU′和密钥更新验证参数βU通过公开信道发送给密钥生成中心KGC:
DU′=dU′P (2-1)
βU=dU′-1(xU+yU)H0(IDU,DU′,QU) (2-2)
其中,dU′表示用户U新的秘密值,DU′表示用户U新的验证份额,βU表示用户U的密钥更新验证参数,-1表示求逆元操作;
(2c)密钥生成中心KGC判断收到的用户U新的验证份额DU′和密钥更新验证参数βU是否满足等式βUDU′=(DU+QU+Ppub)H0(IDU,DU′,QU)。若满足,则密钥生成中心KGC将用户U的公钥设置为PKU=(DU,QU)=(DU′,QU)并进行发布,否则,用户密钥更新失败并退出用户密钥更新过程;
(2d)密钥生成中心KGC发布用户U的公钥PKU=(DU,QU)=(DU′,QU)后,按照下式,用户U计算自己新的伪秘密值xU′和新的伪部分私钥yU′,并设置自己的私钥SKU=(xU,yU)=(xU′,yU′):
xU′=dU′H0(IDU,DU′,QU) (2-3)
yU′=yUH0(IDU,DU,QU)-1H0(IDU,DU′,QU) (2-4)
其中,xU′表示用户U新的伪秘密值,yU′表示用户U新的伪部分私钥;
(3)发送者签密:
(3a)发送者S判断自己是否已经执行了步骤(1)的用户注册过程。若是,则执行步骤(3b),否则发送者S执行步骤(1)的用户注册过程,并获取自己的私钥SKS=(xS,yS),然后执行步骤(3b);
其中SKS表示发送者的私钥,包含发送者S的伪秘密值xS和发送者S的伪部分私钥yS两部分,xS表示发送者S的伪秘密值,yS表示发送者S的伪部分私钥;
(3b)发送者S在已注册的用户U中随机选取n个用户作为接收者R1,R2,…,Rn并获取n个用户的公钥PK1,PK2,…,PKn,然后执行步骤(3c);
其中,PKi表示第i个接收者Ri的公钥,包含第i个接收者Ri的验证份额Di和第i个接收者Ri的部分公钥Qi两部分,Di表示第i个接收者Ri的验证份额,Qi表示第i个接收者Ri的部分公钥;
(3c)发送者S随机选取一个整数t,计算签密验证份额T:
T=tP (3-1)
其中,t表示发送者S随机选取的整数,T表示发送者S的签密验证份额;
(3d)按照下式,发送者S计算每一个接收者Ri的公钥隐藏信息Ki:
Ki=tH0(IDi,Di,Qi)(Di+Qi+Ppub) (3-2)
其中,Ki表示第i个接收者Ri的公钥隐藏信息,IDi表示第i个接收者Ri的身份信息;
(3e)按照下式,发送者S计算每一个接收者Ri的伪身份值αi:
αi=H0(IDi,Ki,T) (3-3)
其中,αi表示第i个接收者Ri的伪身份值;
(3f)发送者S随机选取一个整数θ作为伪密钥,按照下式,发送者S构造接收者身份信息混合值f(u):
其中,θ表示发送者S随机选取的伪密钥,mod表示求模操作,f(u)表示接收者身份信息混合值,u表示自变量,∏表示连乘操作,q表示密钥生成中心KGC选取的大素数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数;
(3g)按照下式,发送者S计算明文消息混合值M:
其中,M表示明文消息混合值,H1和H2表示密钥生成中心KGC选取的单向哈希函数,||表示链接操作,表示逐位异或操作,mi表示要发送给第i个接收者Ri的明文消息;
(3h)按照下式,发送者S计算加密消息密文V:
其中,V表示加密消息密文,Ek(.)表示密钥生成中心KGC选取的对称加密算法,k为对称密钥,IDS表示发送者S的身份信息;
(3i)按照下式,发送者S计算签名参数λ:
λ=(xS+yS)t-1 (3-7)
其中,λ表示发送者S的签名参数,xS表示发送者S的伪秘密值,yS表示发送者S的伪部分私钥;
(3j)按照下式,发送者S计算密文有效性参数Λ:
Λ=H3(M,θ,c1,c2,…,cn,V,T,λ) (3-8)
其中,Λ表示密文有效性参数,H3表示密钥生成中心KGC选取的单向哈希函数;
(3k)发送者S将接收者身份信息混合值f(u)的系数c0,c1,…,cn-1、发送者S的签密验证份额T、加密消息密文V、发送者S的签名参数λ和密文有效性参数Λ构成签密密文C=<c0,c1,…,cn-1,T,V,λ,Λ>,并对签密密文C进行广播,然后结束发送者签密过程;
(4)接收者解签密:
(4a)按照下式,接收者Ri计算公钥隐藏信息Ki:
Ki=(xi+yi)T (4-1)
(4b)按照下式,接收者Ri计算自己的伪身份值αi:
αi=H0(IDi,Ki,T) (4-2)
(4c)按照下式,接收者Ri计算发送者S随机选取的伪密钥θ:
θ=f(αi) (4-3)
(4d)按照下式,接收者Ri计算明文消息混合值和发送者S的身份信息M||IDS:
(4e)按照下式,接收者Ri计算权限参数Λ′:
Λ′=H3(M,θ,c1,c2,…,cn,V,T,λ) (4-5)
其中,Λ′表示权限参数;
(4f)接收者Ri判断权限参数Λ′与密文有效性参数Λ是否相等。若是,则执行步骤(4g),否则,解密失败,并退出接收者解签密过程;
(4g)接收者Ri计算H1(αi,T)和H2(αi),根据H1(αi,T)找出明文消息混合值M中对应的计算
(4h)接收者Ri根据(4d)中解密得到的发送者S的身份信息IDS找到对应的发送者S的公钥PKS=(DS,QS),并判断下述等式是否成立。若是,则接收者Ri接收明文消息mi并退出接收者解签密过程,否则,接收者Ri拒绝明文消息mi并退出接收者解签密过程:
λT=H0(IDS,DS,QS)(DS+QS+Ppub) (4-6)
PKS表示发送者S的公钥,包含发送者S的验证份额DS和发送者S的部分公钥QS两部分,DS表示发送者S的验证份额,QS表示发送者S的部分公钥。
本发明的有益效果是:该方法首先由用户注册生成自己的公钥和私钥,公钥为两部分,由验证份额和部分私钥组成,当用户需要进行密钥更新时,则重新选择一个随机数,然后生成新的验证份额和密钥更新验证参数,然后通过公开信道将其发送给密钥生成中心KGC,密钥生成中心KGC收到后验证两者是否满足验证等式,若满足则将新的验证份额替换原来的验证份额,否则更新失败。当KGC更新了公钥后,用户计算并更新自己的私钥。在签密过程,对发送者的身份信息和明文一起加密,用发送者的私钥生成一个签名参数;在解签密过程,当解密得到发送者的身份信息以后,再获取对应的公钥验证签名参数。若通过验证,则接收签密密文;否则拒绝接收签密密文。该方法的有益效果是:第一,由于通过消除公钥两部分间的关联,解决了需要重新注册或者建立安全信道才能更新密钥的问题,实现了通过公开信道密钥更新的功能,通过计算密钥更新验证参数,解决了非授权用户假冒授权用户进行密钥更新的问题。在用户注册以后,用户可以根据需要更新自己的密钥,并且不需要重新注册,提高了通信的安全性,故解决了现有技术中的重复注册问题。由于通过公开信道来更新密钥,减少了计算和通信开销,解决了现有技术中密钥更新过程成本较高的技术问题。
第二,由于在签密过程中将发送者的身份信息与明文消息混合值一起进行加密,在密文中不包含发送者身份信息的情况下,接收者能够通过验证发送者的具体身份和签名参数是否对应,解决了现有技术中发送者身份直接暴露在密文中和密文伪造的技术问题。
下面结合附图和具体实施方式对本发明作详细说明。
附图说明
图1是本发明可更新密钥的无证书多消息多接收者签密方法的流程图。
具体实施方式
名词解释:
U:用户。包括发送者S和接收者Ri,i=1,2,…,n,n表示发送者S在已注册的用户U中随机选取的接收者Ri的数目;
KGC:密钥生成中心,为可信第三方,负责产生用户U的公私钥;
η:密钥生成中心KGC选取的安全参数;
q:密钥生成中心KGC选取的大素数;
Fq:密钥生成中心KGC选取的一个有限域;
E:密钥生成中心KGC在有限域Fq上选取的一条椭圆曲线;
P:密钥生成中心KGC选取的椭圆曲线E的一个生成元;
s:密钥生成中心KGC选取的系统主密钥;
Ppub:密钥生成中心KGC生成的系统公钥;
∈:限定域符号,例如a∈B,就是a属于B;
Hj:密钥生成中心KGC选取的单向哈希函数,其中j=0,1,2,3;
A→B:定义域A到值域B的映射;
{0,1}*:任意长的“0”或“1”构成的串;
×:笛卡尔乘积,例如集合A={a,b},集合B={0,1},则两个集合的笛卡尔积为{(a,0),(a,1),(b,0),(b,1)};
Zq*:基于大素数q构成的非零乘法群;
Ek(.):密钥生成中心KGC选取的对称加密算法,如AES,k为对称密钥;
Dk(.):密钥生成中心KGC选取的对称解密算法,如AES,k为对称密钥;
params:系统参数;
dU:用户U的秘密值;
xU:用户U的伪秘密值;
DU:用户U的验证份额;
IDU:用户U的身份信息;
wU:密钥生成中心KGC为用户U随机选取的整数;
WU:用户U的部分私钥验证参数;
QU:用户U的部分公钥;
PKU:用户U的公钥,包含用户U的验证份额DU和用户U的部分公钥QU两部分;
vU:用户U的部分私钥;
yU:用户U的伪部分私钥;
SKU:用户U的私钥,包含用户U的伪秘密值xU和用户U的伪部分私钥yU两部分;
dU′:用户U新的秘密值;
DU′:用户U新的验证份额;
xU′:用户U新的伪秘密值;
yU′;用户U新的伪部分私钥;
βU:用户U的密钥更新验证参数;
S:发送者;
xS:发送者S的伪秘密值;
DS:发送者S的验证份额;
IDS:发送者S的身份信息;
QS:发送者S的部分公钥;
PKS:发送者S的公钥,包含发送者S的验证份额Di和发送者S的部分公钥Qi两部分;
yS:发送者S的伪部分私钥;
SKS:发送者S的私钥,包含发送者S的伪秘密值xS和发送者S的伪部分私钥yS两部分;
n:发送者S在已注册的用户中随机选取的接收者Ri的数目;
Ri:第i个接收者,i=1,2,…,n;
xi:第i个接收者Ri的伪秘密值,i=1,2,…,n;
Di:第i个接收者Ri的验证份额,i=1,2,…,n;
IDi:第i个接收者Ri的身份信息,i=1,2,…,n;
Qi:第i个接收者Ri的部分公钥,i=1,2,…,n;
PKi:第i个接收者Ri的公钥,包含第i个接收者Ri的验证份额Di和第i个接收者Ri的部分公钥Qi两部分,i=1,2,…,n;
yi:第i个接收者Ri的伪部分私钥,i=1,2,…,n;
SKi:第i个接收者Ri的私钥,包含第i个接收者Ri的伪秘密值xi和第i个接收者Ri的伪部分私钥yi两部分,i=1,2,…,n;
t:发送者S随机选取的整数;
T:发送者S的签密验证份额;
Ki:第i个接收者Ri的公钥隐藏信息,i=1,2,…,n;
αi:第i个接收者Ri的伪身份值,i=1,2,…,n;
f(u):接收者身份信息混合值,其中u表示自变量;
∏:连乘操作,例如
θ:发送者S随机选取的伪密钥;
mod:求模操作,例如7mod 3=1;
c0,c1,…,cn-1:接收者身份信息混合值f(u)的系数;
M:明文消息混合值;
逐位异或操作,例如
||:链接操作,例如0110||0011=01100011;
-1:求逆元操作,例如7-1=1/7;
mi:要发送给第i个接收者Ri的明文消息,i=1,2,…,n;
V:加密消息密文;
λ:发送者S的签名参数;
Λ:密文有效性参数;
C:签密密文;
Λ′:权限参数。
参照图1。本发明可更新密钥的无证书多消息多接收者签密方法具体步骤如下:
首先,密钥生成中心KGC根据系统安全参数η选取大素数q和一个有限域Fq,并选取一条在有限域Fq上的安全椭圆曲线E,选取P为密钥生成中心KGC选取的椭圆曲线E的一个生成元;随机选系统主密钥s∈Zq*并秘密保存,其中,∈表示限定域符号,Zq*表示基于大素数q构成的非零乘法群;构造4个单向哈希函数,分别记为:
H0:{0,1}*×Gq×Gq→Zq*;H1:Gq×Zq*→{0,1}*;H2:Zq*→{0,1}*;
H3:{0,1}*×Zq*×Zq*×…×Zq*×{0,1}*×Gq×Zq*→Zq*;
其中,H0,H1,H2和H3表示密钥生成中心KGC构造的4个单向哈希函数,A→B表示定义域A到值域B的映射,{0,1}*表示任意长的“0”或“1”构成的串,Fq表示密钥生成中心KGC选取的一个有限域,×表示笛卡尔乘积,Zq*表示基于大素数q构成的非零乘法群;
密钥生成中心KGC从现有的对称加密算法中任意选取一种对称加密算法Ek(.),并选取与该对称加密算法对应的对称解密算法Dk(.);
密钥生成中心KGC构造并公开系统参数:params=<Fq,E,P,Ppub,H0,H1,H2,H3,Ek(.),Dk(.)>,同时密钥生成中心KGC秘密保存系统主密钥s。
(1)用户注册过程:
(1a)用户U随机选取dU∈Zq*作为自己的秘密值,按照下式,用户U计算自己的验证份额DU,并将自己的身份信息IDU和验证份额DU通过公开信道发送给密钥生成中心KGC:
DU=dUP (1-1)
其中,DU表示用户U的验证份额,dU表示用户U的秘密值,P表示密钥生成中心KGC选取的椭圆曲线E的一个生成元,IDU表示用户U的身份信息,用户U包括接收者Ri和发送者S,i=1,2,…,n,n表示发送者S在已注册的用户U中随机选取的接收者Ri的数目;
(1b)密钥生成中心KGC收到用户U的验证份额DU和身份信息IDU后,随机选取wU∈Zq*,按照下式计算用户U的部分私钥验证参数WU和部分私钥vU,并将用户U的部分私钥验证参数WU和部分私钥vU通过安全信道发送给用户U:
WU=wUP (1-2)
vU=s+wUH0(IDU,DU,WU) (1-3)
其中,wU表示密钥生成中心KGC为用户U随机选取的整数,WU表示用户U的部分私钥验证参数,vU表示用户U的部分私钥,s表示密钥生成中心KGC选取的系统主密钥,H0表示密钥生成中心KGC选取的单向哈希函数;
(1c)用户U判断收到的部分私钥vU和部分私钥验证参数WU是否满足如下等式。若是,则执行步骤(4),否则,用户U向密钥生成中心KGC报错,并退出用户注册过程:
vUP=H0(IDU,DU,WU)P+Ppub (1-4)
其中,Ppub表示密钥生成中心KGC生成的系统公钥;
(1d)按照下式,用户U计算自己的部分公钥QU:
QU=H0(IDU,DU,WU)WU (1-5)
其中,QU表示用户U的部分公钥;
(1e)按照下式,用户U生成自己的公钥PKU并将其发送给密钥生成中心KGC:
PKU=(DU,QU) (1-6)
其中,PKU表示用户U的公钥,包含用户U的验证份额DU和用户U的部分公钥QU两部分;
(1f)密钥生成中心KGC收到用户U发送的公钥PKU后,对外发布用户U的公钥PKU;
(1g)密钥生成中心KGC对外发布用户U的公钥PKU后,按照下式,用户U计算自己的伪秘密值xU和伪部分私钥yU:
xU=dUH0(IDU,DU,QU) (1-7)
yU=vUH0(IDU,DU,QU) (1-8)
其中,xU表示用户U的伪秘密值,yU表示用户U的伪部分私钥;
(1h)按照下式,用户U生成自己的私钥SKU,并秘密保存,然后退出用户注册过程:
SKU=(xU,yU) (1-9)
其中,SKU表示用户U的私钥,包含用户U的伪秘密值xU和用户U的伪部分私钥yU两部分;
(2)用户密钥更新过程:
(2a)当用户U需要进行更新密钥时执行步骤(2b),若不需要更新密钥则直接执行步骤(3);
(2b)用户U随机选取dU′∈Zq*,然后计算用户U新的验证份额DU′和密钥更新验证参数βU,并将用户U新的验证份额DU′和密钥更新验证参数βU通过公开信道发送给密钥生成中心KGC:
DU′=dU′P (2-1)
βU=dU′-1(xU+yU)H0(IDU,DU′,QU) (2-2)
其中,dU′表示用户U新的秘密值,DU′表示用户U新的验证份额,βU表示用户U的密钥更新验证参数,-1表示求逆元操作;
(2c)密钥生成中心KGC判断收到的用户U新的验证份额DU′和密钥更新验证参数βU是否满足等式βUDU′=(DU+QU+Ppub)H0(IDU,DU′,QU)。若满足,则密钥生成中心KGC将用户U的公钥设置为PKU=(DU,QU)=(DU′,QU)并进行发布,否则,用户密钥更新失败并退出用户密钥更新过程;
(2d)密钥生成中心KGC发布用户U的公钥PKU=(DU,QU)=(DU′,QU)后,按照下式,用户U计算自己新的伪秘密值xU′和新的伪部分私钥yU′,并设置自己的私钥SKU=(xU,yU)=(xU′,yU′):
xU′=dU′H0(IDU,DU′,QU) (2-3)
yU′=yUH0(IDU,DU,QU)-1H0(IDU,DU′,QU) (2-4)
其中,xU′表示用户U新的伪秘密值,yU′表示用户U新的伪部分私钥;
(3)发送者签密:
(3a)发送者S判断自己是否已经执行了步骤(1)的用户注册过程。若是,则执行步骤(3b),否则发送者S执行步骤(1)的用户注册过程,并获取自己的私钥SKS=(xS,yS),然后执行步骤(3b);
其中SKS表示发送者的私钥,包含发送者S的伪秘密值xS和发送者S的伪部分私钥yS两部分,xS表示发送者S的伪秘密值,yS表示发送者S的伪部分私钥;
(3b)发送者S在已注册的用户U中随机选取n个用户作为接收者R1,R2,…,Rn并获取他们的公钥PK1,PK2,…,PKn,然后执行步骤(3c);
其中,PKi表示第i个接收者Ri的公钥,包含第i个接收者Ri的验证份额Di和第i个接收者Ri的部分公钥Qi两部分,Di表示第i个接收者Ri的验证份额,Qi表示第i个接收者Ri的部分公钥;
(3c)发送者S随机选取t∈Zq*,计算签密验证份额T:
T=tP (3-1)
其中,t表示发送者S随机选取的整数,T表示发送者S的签密验证份额;
(3d)按照下式,发送者S计算每一个接收者Ri的公钥隐藏信息Ki:
Ki=tH0(IDi,Di,Qi)(Di+Qi+Ppub) (3-2)
其中,Ki表示第i个接收者Ri的公钥隐藏信息,IDi表示第i个接收者Ri的身份信息;
(3e)按照下式,发送者S计算每一个接收者Ri的伪身份值αi:
αi=H0(IDi,Ki,T) (3-3)
其中,αi表示第i个接收者Ri的伪身份值;
(3f)发送者S随机选取整数θ∈Zq*作为伪密钥,按照下式,发送者S构造接收者身份信息混合值f(u):
其中,θ表示发送者S随机选取的伪密钥,mod表示求模操作,f(u)表示接收者身份信息混合值,u表示自变量,∏表示连乘操作,q表示密钥生成中心KGC选取的大素数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数;
(3g)按照下式,发送者S计算明文消息混合值M:
其中,M表示明文消息混合值,H1和H2表示密钥生成中心KGC选取的单向哈希函数,||表示链接操作,表示逐位异或操作,mi表示要发送给第i个接收者Ri的明文消息;
(3h)按照下式,发送者S计算加密消息密文V:
其中,V表示加密消息密文,Ek(.)表示密钥生成中心KGC选取的对称加密算法,k为对称密钥,IDS表示发送者S的身份信息;
(3i)按照下式,发送者S计算签名参数λ:
λ=(xS+yS)t-1 (3-7)
其中,λ表示发送者S的签名参数,xS表示发送者S的伪秘密值,yS表示发送者S的伪部分私钥;
(3j)按照下式,发送者S计算密文有效性参数Λ:
Λ=H3(M,θ,c1,c2,…,cn,V,T,λ) (3-8)
其中,Λ表示密文有效性参数,H3表示密钥生成中心KGC选取的单向哈希函数;
(3k)发送者S将接收者身份信息混合值f(u)的系数c0,c1,…,cn-1、发送者S的签密验证份额T、加密消息密文V、发送者S的签名参数λ和密文有效性参数Λ构成签密密文C=<c0,c1,…,cn-1,T,V,λ,Λ>,并对签密密文C进行广播,然后结束发送者签密过程;
(4)接收者解签密:
(4a)按照下式,接收者Ri计算公钥隐藏信息Ki:
Ki=(xi+yi)T (4-1)
(4b)按照下式,接收者Ri计算自己的伪身份值αi:
αi=H0(IDi,Ki,T) (4-2)
(4c)按照下式,接收者Ri计算发送者S随机选取的伪密钥θ:
θ=f(αi) (4-3)
(4d)按照下式,接收者Ri计算明文消息混合值和发送者S的身份信息M||IDS:
(4e)按照下式,接收者Ri计算权限参数Λ′:
Λ′=H3(M,θ,c1,c2,…,cn,V,T,λ) (4-5)
其中,Λ′表示权限参数;
(4f)接收者Ri判断权限参数Λ′与密文有效性参数Λ是否相等。若是,则执行步骤(4g),否则,解密失败,并退出接收者解签密过程;
(4g)接收者Ri计算H1(αi,T)和H2(αi),根据H1(αi,T)找出明文消息混合值M中对应的计算
(4h)接收者Ri根据(4d)中解密得到的发送者S的身份信息IDS找到对应的发送者S的公钥PKS=(DS,QS),并判断下述等式是否成立。若是,则接收者Ri接收明文消息mi并退出接收者解签密过程,否则,接收者Ri拒绝明文消息mi并退出接收者解签密过程:
λT=H0(IDS,DS,QS)(DS+QS+Ppub) (4-6)
PKS表示发送者S的公钥,包含发送者S的验证份额DS和发送者S的部分公钥QS两部分,DS表示发送者S的验证份额,QS表示发送者S的部分公钥。