本发明涉及一种无证书匿名多接收者签密方法,特别涉及一种无安全信道的无证书匿名多接收者签密方法。
背景技术
文献“专利申请号是201710332215.7的中国发明专利”提出了一种无证书匿名多接收者签密方法。该方法首先密钥生成中心kgc生成用户的公钥和部分私钥,并将其发送给用户。用户收到公钥和部分私钥后,计算自己的私钥,并验证接收到的公钥和部分私钥是否正确,若正确,则继续执行后面的操作,否则停止操作;接下来在椭圆曲线上设计签密算法,得到签密密文,广播发送签密密文给接收者,但是只有授权的接收者才能正确地解密出明文消息。最后,授权的接收者验证明文消息的合法性,如果合法,授权接收者接收明文消息,否则,拒绝接收明文消息。该方法存在的不足之处是,首先,密钥生成中心kgc通过安全信道发送用户的部分私钥,意味着用户和密钥生成中心kgc在交互部分私钥时,安全性完全依赖于安全信道,如果安全信道遭到破坏,那么任何人都可以获取用户的部分私钥,并且使用安全信道的成本开销较大;其次,虽然该方法有签名操作,但是授权接收者是在解密得到明文消息后,再验证明文消息的合法性,这导致授权接收者会解密出无用或不真实甚至携带病毒的明文消息,从而给授权接收者带来一定的危害。
综上所述,上述方法安全信道的使用不仅导致系统成本开销较大,而且导致用户部分私钥的安全性较低。另外授权接收者会解密出无用或不真实甚至携带病毒的明文消息,意味着上述方法的安全性较低。
技术实现要素:
为了克服现有无证书匿名多接收者签密方法安全性差的不足,本发明提供一种无安全信道的无证书匿名多接收者签密方法。该方法首先由密钥生成中心kgc通过公开信道将伪部分私钥和部分公钥发送给用户,用户接收后,验证接收到的部分公钥和伪部分私钥是否成立,若成立,则计算出用户的公钥、部分私钥以及私钥,否则停止操作;接下来将签密算法设计在椭圆曲线上,签密算法中的密文信息不包括发送者和接收者的身份信息,最后广播密文消息,只有授权接收者在验证密文消息合法的前提下,才解密密文消息获取明文消息。预期的技术效果是:第一,密钥生成中心kgc通过公开信道将用户的伪部分私钥发送给用户,用户接收后计算出部分私钥,这不仅提高了用户部分私钥安全性,而且减少了系统成本开销;第二,授权接收者在验证密文合法的前提下,解密密文消息,避免解密出无用或者不真实甚至携带病毒的明文消息,提高了安全性。
本发明解决其技术问题所采用的技术方案:一种无安全信道的无证书匿名多接收者签密方法,其特点是包括以下步骤:
步骤一、用户u包括发送者s和接收者ri,获取自己的公钥pku和私钥sku,其中i=1,2,…,n,n是正整数,表示发送者s选取的接收者的个数;
步骤二、用户u随机选取一个整数vu∈zp*作为秘密值,然后按照下式,用户u计算自己的秘密值参数vu:
vu=vup
其中,vu表示用户u随机选取的秘密值,∈表示限定域符号,zp*表示基于大素数p构成的非零乘法群,p表示密钥生成中心kgc选取的大素数,vu表示用户u的秘密值参数,p表示密钥生成中心kgc选取的加法循环群gp上的生成元,gp表示密钥生成中心kgc选取的椭圆曲线e上的加法循环群,e表示密钥生成中心kgc选取的有限域fp上的安全的椭圆曲线,fp表示密钥生成中心kgc选取的阶为大素数p的有限域;
步骤三、用户u将秘密值参数vu和自己的身份信息idu通过公开信道发送给密钥生成中心kgc,密钥生成中心kgc收到用户u的秘密值参数vu和身份信息idu后,随机选取整数du∈zp*,按照下式,计算用户u的部分公钥du:
du=h0(idu,vu,du)p
其中,du表示密钥生成中心kgc为用户u随机选取的整数,∈表示限定域符号,zp*表示基于大素数p构成的非零乘法群,p表示密钥生成中心kgc选取的大素数,du表示用户u的部分公钥,h0表示密钥生成中心kgc选取的抗碰撞哈希函数,idu表示用户u的身份信息,vu表示用户u的秘密值参数,p表示密钥生成中心kgc选取的加法循环群gp上的生成元;
步骤四、按照下式,密钥生成中心kgc计算用户u的部分私钥yu:
yu=h0(idu,vu,du)+s(modp)
其中,yu表示用户u的部分私钥,h0表示密钥生成中心kgc选取的抗碰撞哈希函数,idu表示用户u的身份信息,vu表示用户u的秘密值参数,du表示密钥生成中心kgc为用户u随机选取的整数,s表示密钥生成中心kgc选取的系统主密钥,mod表示求模操作,p表示密钥生成中心kgc选取的大素数;
步骤五、按照下式,密钥生成中心kgc计算用户u的伪部分私钥ru:
ru=yu+h1(idu,svu)
其中,ru表示用户u的伪部分私钥,yu表示用户u的部分私钥,h1表示密钥生成中心kgc选取的抗碰撞哈希函数,idu表示用户u的身份信息,s表示密钥生成中心kgc选取的系统主密钥,vu表示用户u的秘密值参数;
步骤六、密钥生成中心kgc通过公开信道将用户u的部分公钥du和伪部分私钥ru发送给用户u。
步骤七、用户u接收到密钥生成中心kgc发送过来的部分公钥du和伪部分私钥ru后,判断它们是否满足如下的等式。如果是,则执行步骤八,否则,用户u向密钥生成中心kgc报错,并退出用户注册过程;
rup=du+ppub+h1(idu,vuppub)p
其中,ru表示用户u的伪部分私钥,du表示用户u的部分公钥,ppub表示密钥生成中心kgc生成的系统公钥,h1表示密钥生成中心kgc选取的抗碰撞哈希函数,idu表示用户u的身份信息,vu表示用户u随机选取的秘密值,p表示密钥生成中心kgc选取的加法循环群gp上的生成元;
步骤八、按照下式,用户u计算公钥pku:
pku=du+h1(idu,vu)vu
其中,pku表示用户u的公钥,du表示用户u的部分公钥,h1表示密钥生成中心kgc选取的抗碰撞哈希函数,idu表示用户u的身份信息,vu表示用户u的秘密值参数;
步骤九、按照下式,用户u计算自己的部分私钥yu:
yu=ru-h1(idu,vuppub)
其中,yu表示用户u的部分私钥,ru表示用户u的伪部分私钥,h1表示密钥生成中心kgc选取的抗碰撞哈希函数,idu表示用户u的身份信息,vu表示用户u随机选取的秘密值,ppub表示密钥生成中心kgc生成的系统公钥;
步骤十、用户u按照下式计算私钥sku:
sku=h1(idu,pku)(yu+h1(idu,vu)vu)(modp)
其中,sku表示用户u的私钥,h1表示密钥生成中心kgc选取的抗碰撞哈希函数,idu表示用户u的身份信息,pku表示用户u的公钥,yu表示用户u的部分私钥,vu表示用户u的秘密值参数,vu表示用户u随机选取的秘密值,mod表示求模操作,p表示密钥生成中心kgc选取的大素数;
步骤十一、用户u将自己的公钥pku通过公开信道发送给密钥生成中心kgc,并由密钥生成中心kgc对外公布用户u的公钥pku,用户u安全地保存自己的私钥sku,之后退出用户注册过程;
步骤十二、发送者s判断自己是否已经执行了用户注册过程。若是,则执行步骤十三,否则,发送者s执行用户注册过程获取自己的公钥pks和私钥sks后,再执行步骤十三;
步骤十三、发送者s随机选取已注册的接收者ri,i=1,2,…,n,其中,n是正整数,表示发送者s随机选取的接收者ri的数目;
步骤十四、按照下式,对每一个i=1,2,…,n,发送者s计算第i个接收者ri的伪公钥qi:
qi=pki+ppub
其中,qi表示第i个接收者ri的伪公钥,pki表示第i个接收者ri的公钥,n表示发送者s随机选取的接收者ri的数目,ppub表示密钥生成中心kgc生成的系统公钥;
步骤十五、发送者s随机选取签密整数w∈zp*,按照下式计算发送者s的签密验证份额w:
w=wp
其中,w表示发送者s随机选取的签密整数,w表示发送者s的签密验证份额,∈表示限定域符号,zp*表示基于大素数p构成的非零乘法群,p表示密钥生成中心kgc选取的加法循环群gp上的生成元;
步骤十六、按照下式,对每一个i=1,2,…,n,发送者s计算第i个接收者ri的签密验证份额fi:
fi=wh1(idi,pki)qi
其中,fi表示第i个接收者ri的签密验证份额,w表示发送者s随机选取的签密整数,h1表示密钥生成中心kgc选取的抗碰撞哈希函数,idi表示第i个接收者ri的身份信息,pki表示第i个接收者ri的公钥,qi表示第i个接收者ri的伪公钥,n表示发送者s随机选取的接收者ri的数目;
步骤十七、按照下式,对每一个i=1,2,…,n,发送者s计算第i个接收者ri的伪身份值αi:
αi=h2(w,fi)
其中,αi表示第i个接收者ri的伪身份值,h2表示密钥生成中心kgc选取的抗碰撞哈希函数,w表示发送者s的签密验证份额,fi表示第i个接收者ri的签密验证份额,n表示发送者s随机选取的接收者ri的数目;
步骤十八、发送者s随机选取加密整数g∈zp*,按照下式,计算加密验证份额g:
g=gp
其中,g表示发送者s随机选取的加密整数,g表示加密验证份额,∈表示限定域符号,zp*表示基于大素数p构成的非零乘法群,p表示密钥生成中心kgc选取的加法循环群gp上的生成元;
步骤十九、按照下式,发送者s计算密文消息m:
其中,m表示密文消息,m表示明文消息,
步骤二十、发送者s随机选取整数ξ∈zp*作为伪密钥,按照下式,发送者s构造接收者身份信息混合值f(x):
其中,ξ表示发送者s随机选取的伪密钥,∈表示限定域符号,zp*表示基于大素数p构成的非零乘法群,f(x)表示接收者身份信息混合值,x表示自变量,∏表示连乘操作,αi表示第i个接收者ri的伪身份值,n表示发送者s随机选取的接收者ri的数目,mod表示求模操作,p表示密钥生成中心kgc选取的大素数,a0,a1,…,an-1表示接收者身份信息混合值f(x)的各项系数;
步骤二十一、按照下式,发送者s计算密文的有效性参数h:
h=h4(m,ids,g,w,a0,a1,...,an-1)
其中,h表示密文的有效性参数,h4表示密钥生成中心kgc选取的抗碰撞哈希函数,m表示密文消息,ids表示发送者s的身份信息,g表示加密验证份额,w表示发送者s的签密验证份额,a0,a1,…,an-1表示接收者身份信息混合值f(x)的各项系数;
步骤二十二、按照下式,发送者s计算对称密钥k:
k=h5(ξ)
其中,k表示对称密钥,h5表示密钥生成中心kgc选取的抗碰撞哈希函数,ξ表示发送者s随机选取的伪密钥;
步骤二十三、发送者s按照下式计算混合密文消息j:
j=ek(m||ids||h)
其中,j表示混合密文消息,ek表示对称加密算法,k表示对称密钥,m表示密文消息,ids表示发送者s的身份信息,h表示密文的有效性参数,||表示链接符号;
步骤二十四、发送者s按照下式计算密文的伪参数h0:
h0=h6(h)
其中,h0表示密文的伪参数,h6表示密钥生成中心kgc选取的抗碰撞哈希函数,h表示密文的有效性参数;
步骤二十五、发送者s计算g-1使其满足等式gg-1≡1(modp),并计算签名参数z:
z=g-1(sks+h0)(modp)
其中,g表示发送者s随机选取的加密整数,g-1表示发送者s随机选取的加密整数g在模大素数p下的逆元,z表示签名参数,sks表示发送者s的私钥,h0表示密文的伪参数,mod表示求模操作,p表示密钥生成中心kgc选取的大素数;
步骤二十六、发送者s将混合密文消息j、发送者s的签密验证份额w、接收者身份信息混合值f(x)的系数a0,a1,…,an-1、签名参数z作为签密密文c,并将签密密文c广播给接收者ri,其中i=1,2,…,n;
步骤二十七、接收者ri收到签密密文c后,执行解签密过程,其中,i=1,2,…,n,n表示发送者s随机选取的接收者ri的数目;
步骤二十八、按照下式,接收者ri计算自己的签密验证份额fi:
fi=skiw
其中,fi表示第i个接收者ri的签密验证份额,ski表示第i个接收者ri的私钥,w表示发送者s的签密验证份额;
步骤二十九、按照下式,接收者ri计算自己的伪身份值αi:
αi=h2(w,fi)
其中,αi表示第i个接收者ri的伪身份值,h2表示密钥生成中心kgc选取的抗碰撞哈希函数,w表示发送者s的签密验证份额,fi表示第i个接收者ri的签密验证份额;
步骤三十、按照下式,接收者ri计算接收者身份信息混合值f(x):
f(x)=xn+an-1xn-1+...+a1x+a0
其中,f(x)表示接收者身份信息混合值,x表示自变量,n表示发送者s随机选取的接收者ri的数目,a0,a1,...,an-1表示接收者身份信息混合值f(x)的各项系数;
步骤三十一、按照下式,接收者ri计算发送者s随机选取的伪密钥ξ:
ξ=f(αi)
其中,ξ表示发送者s随机选取的伪密钥,f(x)表示接收者身份信息混合值,x表示自变量,αi表示第i个接收者ri的伪身份值;
步骤三十二、按照下式,接收者ri计算对称密钥k:
k=h5(ξ)
其中,k表示对称密钥,h5表示密钥生成中心kgc选取的抗碰撞哈希函数,ξ表示发送者s随机选取的伪密钥;
步骤三十三、按照下式,接收者ri计算密文消息m、发送者s的身份信息ids以及密文的有效性参数h:
m||ids||h=dk(j)
其中,m表示密文消息,ids表示发送者s的身份信息,h表示密文的有效性参数,j表示混合密文消息,dk表示对称解密算法,k表示对称密钥,||表示链接符号;
步骤三十四、接收者ri按照下式计算密文的伪参数h0:
h0=h6(h)
表示,h0表示密文的伪参数,h6表示密钥生成中心kgc选取的抗碰撞哈希函数,h表示密文的有效性参数;
步骤三十五、按照下式,接收者ri计算加密验证份额g:
g=z-1(h1(ids,pks)(pks+ppub)+h0p)
其中,g表示加密验证份额,z表示签名参数,z-1表示签名参数z在模大素数p下的逆元,h1表示密钥生成中心kgc选取的抗碰撞哈希函数,ids表示发送者s的身份信息,pks表示发送者s的公钥,ppub表示密钥生成中心kgc生成的系统公钥,h0表示密文的伪参数,p表示密钥生成中心kgc选取加法循环群gp上的生成元;
步骤三十六、按照下式,接收者ri计算密文的权限参数h′:
h′=h4(m,ids,g,w,a0,a1,...,an-1)
其中,h′表示密文的权限参数,h4表示密钥生成中心kgc选取的抗碰撞哈希函数,m表示密文消息,ids表示发送者s的身份信息,g表示加密验证份额,w表示发送者s的签密验证份额,a0,a1,…,an-1表示接收者身份信息混合值f(x)的各项系数;
步骤三十七、接收者ri判断密文的权限参数h′与密文的有效性参数h是否相等。若是,则说明发送者s的身份通过验证,接收者ri确定接受发送者s发送的密文消息m,并执行步骤三十八,否则,说明发送者s的身份验证不通过,接收者ri拒绝接受发送者s发送的密文消息m,并退出解签密过程。
步骤三十八、接收者ri解密得到明文消息m:
其中,m表示明文消息,m表示密文消息,
本发明的有益效果是:该方法首先由密钥生成中心kgc通过公开信道将伪部分私钥和部分公钥发送给用户,用户接收后,验证接收到的部分公钥和伪部分私钥是否成立,若成立,则计算出用户的公钥、部分私钥以及私钥,否则停止操作;接下来将签密算法设计在椭圆曲线上,签密算法中的密文信息不包括发送者和接收者的身份信息,最后广播密文消息,只有授权接收者在验证密文消息合法的前提下,才解密密文消息获取明文消息。预期的技术效果是:第一,密钥生成中心kgc通过公开信道将用户的伪部分私钥发送给用户,用户接收后计算出部分私钥,这不仅提高了用户部分私钥安全性,而且减少了系统成本开销;第二,授权接收者在验证密文合法的前提下,解密密文消息,避免解密出无用或者不真实甚至携带病毒的明文消息,提高了安全性。
第一,在现有技术中,密钥生成中心kgc通过安全信道发送用户的部分私钥,这不仅导致系统成本开销较大,而且意味着用户部分私钥的安全性完全依赖于安全信道,如果安全信道遭到破坏,那么任何人都可以获取用户的部分私钥;从本发明的步骤四、步骤五、步骤六、步骤七、步骤八、步骤九以及步骤十可以看出,密钥生成中心kgc通过公开信道将伪部分私钥发送给用户,用户验证伪部分私钥合法后,可以计算出只有用户自己和密钥生成中心kgc知道的部分私钥,这不仅提高了用户部分私钥的安全性,而且减少了系统的成本开销;
第二,在现有技术中,授权接收者解密得到明文消息,再验证明文消息的合法性,这导致授权接收者有时会解密出无用或不真实甚至携带病毒的明文消息,从而给授权接收者带来一定的危害。从本发明的步骤三十五、步骤三十六、步骤三十七以及步骤三十八可以看出,授权接收者在验证密文合法的前提下,解密密文消息获取明文消息,有效地防止了授权接收者解密出无用或不真实甚至携带病毒的明文消息,因此,安全性好。
下面结合附图和具体实施方式对本发明作详细说明。
附图说明
图1是本发明无安全信道的无证书匿名多接收者签密方法的流程图。
具体实施方式
名词解释
kgc(keygenerationcenter):密钥生成中心,是可信的第三方,协助用户u生成私钥sku和公钥pku;
η:密钥生成中心kgc选取的系统安全参数;
p:密钥生成中心kgc选取的大素数;
fp:密钥生成中心kgc选取的阶为大素数p的有限域;
e:密钥生成中心kgc选取的有限域fp上的安全的椭圆曲线;
gp:密钥生成中心kgc选取的椭圆曲线e上的加法循环群;
p:密钥生成中心kgc选取的加法循环群gp上的生成元;
s:密钥生成中心kgc选取的系统主密钥;
ppub:密钥生成中心kgc生成的系统公钥;
∈:限定域符号,例如b∈b,就是元素b属于集合b;
zp*:基于大素数p构成的非零乘法群;
hj:密钥生成中心kgc选取的抗碰撞哈希函数,其中j=0,1,2,3,4,5,6;
a→b:定义域a到值域b的映射;
×:笛卡尔乘积,例如集合a={a,b},集合b={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)};
{0,1}*:任意长度“0”或“1”构成的串;
k:对称密钥;
ek:对称加密算法;
dk:对称解密算法;
params:系统参数;
u:用户,包括发送者s和接收者ri,i=1,2,…,n;
s:发送者;
ri:第i个接收者,i=1,2,…,n;
n:发送者s随机选取的接收者ri的数目;
idu:用户u的身份信息;
ids:发送者s的身份信息;
idi:第i个接收者ri的身份信息,i=1,2,…,n;
vu:用户u随机选取的秘密值;
vs:发送者s随机选取的秘密值;
vi:第i个接收者ri随机选取的秘密值,i=1,2,…,n;
vu:用户u的秘密值参数;
vs:发送者s的秘密值参数;
vi:第i个接收者ri的秘密值参数,i=1,2,…,n;
du:密钥生成中心kgc为用户u随机选取的整数;
ds:密钥生成中心kgc为发送者s随机选取的整数;
di:密钥生成中心kgc为第i个接收者ri随机选取的整数,i=1,2,…,n;
du:用户u的部分公钥
ds:发送者s的部分公钥
di:第i个接收者ri的部分公钥,i=1,2,…,n;
yu:用户u的部分私钥;
ys:发送者s的部分私钥;
yi:第i个接收者ri的部分私钥,i=1,2,…,n;
ru:用户u的伪部分私钥;
rs:发送者s的伪部分私钥;
ri:第i个接收者ri的伪部分私钥,i=1,2,…,n;
pku:用户u的公钥;
pks:发送者s的公钥;
pki:第i个接收者ri的公钥,i=1,2,…,n;
sku:用户u的私钥;
sks:发送者s的私钥;
ski:第i个接收者ri的私钥,i=1,2,…,n;
qi:第i个接收者ri的伪公钥,i=1,2,…,n;
w:发送者s随机选取的签密整数;
w:发送者s的签密验证份额;
fi:第i个接收者ri的签密验证份额,i=1,2,…,n;
αi:第i个接收者ri的伪身份值,i=1,2,…,n;
g:发送者s随机选取的加密整数;
g-1:发送者s随机选取的加密整数g在模大素数p下的逆元;
g:加密验证份额;
m:明文消息;
m:密文消息;
ξ:发送者s随机选取的伪密钥;
f(x):接收者身份信息混合值,其中x表示自变量;
∏:连乘操作,例如
mod:求模操作;
ai:接收者身份信息混合值f(x)的各项系数,i=0,1,…,n-1;
h:密文的有效性参数;
h0:密文的伪参数;
h′:密文的权限参数;
j:混合密文消息;
||:链接符号,例如x=0101,y=1011,则x||y=01011011;
≡:同余符号,例如:1≡3(mod2),2≡5(mod3);
z:签名参数;
z-1:签名参数z在模大素数p下的逆元;
c:签密密文。
参照图1。本发明无安全信道的无证书匿名多接收者签密方法具体步骤如下:
步骤1,生成系统参数。
密钥生成中心kgc根据系统安全参数η选取大素数p,选取阶为大素数p的有限域fp、有限域fp上的安全的椭圆曲线e以及椭圆曲线e上的加法循环群gp,选取加法循环群gp上的生成元p;密钥生成中心kgc随机选取系统主密钥s∈zp*并安全保存,然后计算系统公钥ppub=sp,并选取7个抗碰撞哈希函数,分别记为:h0:{0,1}*×gp×zp*→zp*;h1:{0,1}*×gp→zp*;h2:gp×gp→zp*;h3:gp×{0,1}*→{0,1}*;h4:{0,1}*×{0,1}*×gp×gp×zp*×...×zp*→{0,1}*;h5:zp*→zp*;h6:{0,1}*→zp*;然后密钥生成中心kgc从现有的对称加密算法中任意选取一种安全的对称加密算法ek,并选取与该对称加密算法对应的对称解密算法dk;最后,密钥生成中心kgc按照下式构造系统参数params,并公开系统参数params:
params=<p,fp,e,gp,p,ppub,ek,dk,h0,h1,h2,h3,h4,h5,h6>;
其中,η表示密钥生成中心kgc选取的系统安全参数,p表示密钥生成中心kgc选取的大素数,fp表示密钥生成中心kgc选取的阶为大素数p的有限域,e表示密钥生成中心kgc选取的有限域fp上的安全的椭圆曲线,gp表示密钥生成中心kgc选取的椭圆曲线e上的加法循环群,p表示密钥生成中心kgc选取的加法循环群gp上的生成元,s表示密钥生成中心kgc选取的系统主密钥,h0,h1,h2,h3,h4,h5,h6表示密钥生成中心kgc选取的抗碰撞哈希函数,a→b表示定义域a到值域b的映射,{0,1}*表示任意长度“0”或“1”构成的串,×表示笛卡尔乘积,zp*表示基于大素数p构成的非零乘法群,∈表示限定域符号,ppub表示密钥生成中心kgc生成的系统公钥,ek表示对称加密算法,dk表示对称解密算法,k表示对称密钥,params表示系统参数;
步骤2,发送者注册。
第一步,发送者s随机选取一个整数vs∈zp*作为秘密值,按照下式,发送者s计算自己的秘密值参数vs:
vs=vsp
其中,vs表示发送者s随机选取的秘密值,vs表示发送者s的秘密值参数;
第二步,发送者s将自己的秘密值参数vs和自己的身份信息ids通过公开信道发送给密钥生成中心kgc,密钥生成中心kgc收到发送者s的秘密值参数vs和身份信息ids后,随机选取整数ds∈zp*,按照下式计算发送者s的部分公钥ds:
ds=h0(ids,vs,ds)p
其中,ds表示密钥生成中心kgc为发送者s随机选取的整数,ds表示发送者s的部分公钥,ids表示发送者s的身份信息;
按照下式,密钥生成中心kgc计算发送者s的部分私钥ys:
ys=h0(ids,vs,ds)+s(modp)
其中,ys表示发送者s的部分私钥;
按照下式,密钥生成中心kgc计算发送者s的伪部分私钥rs:
rs=ys+h1(ids,svs)
其中,rs表示发送者s的伪部分私钥;
密钥生成中心kgc通过公开信道将发送者s的部分公钥ds和发送者s的伪部分私钥rs发送给发送者s。发送者s判断收到的部分公钥ds和伪部分私钥rs是否满足如下等式:
rsp=ds+ppub+h1(ids,vsppub)p
如果满足,则发送者s将继续执行第三步,否则,发送者s向密钥生成中心kgc报错,并退出发送者注册过程;
第三步,发送者s按照下式计算公钥pks:
pks=ds+h1(ids,vs)vs
其中,pks表示发送者s的公钥;
发送者s按照下式计算自己的部分私钥ys:
ys=rs-h1(ids,vsppub)
发送者s按照下式计算自己的私钥sks:
sks=h1(ids,pks)(ys+h1(ids,vs)vs)(modp)
其中,sks表示发送者s的私钥;
第四步,发送者s将公钥pks通过公开信道发送给密钥生成中心kgc,并由密钥生成中心kgc对外公布发送者s的公钥pks,发送者s安全保存自己的私钥sks,之后退出发送者注册过程;
步骤3,接收者注册。
第一步,接收者ri随机选取一个整数vi∈zp*作为秘密值,按照下式,接收者ri计算自己的秘密值参数vi:
vi=vip
其中,vi表示第i个接收者ri随机选取的秘密值,vi表示第i个接收者ri的秘密值参数;
第二步,接收者ri将自己的秘密值参数vi和自己的身份信息idi通过公开信道发送给密钥生成中心kgc,密钥生成中心kgc收到接收者ri的秘密值参数vi和身份信息idi后,随机选取整数di∈zp*,按照下式计算接收者ri的部分公钥di:
di=h0(idi,vi,di)p
其中,di表示密钥生成中心kgc为第i个接收者ri随机选取的整数,di表示第i个接收者ri的部分公钥;
按照下式,密钥生成中心kgc计算接收者ri的部分私钥yi:
yi=h0(idi,vi,di)+s(modp)
其中,yi表示第i个接收者ri的部分私钥,
按照下式,密钥生成中心kgc计算接收者ri的伪部分私钥ri:
ri=yi+h1(idi,svi)
其中,ri表示第i个接收者ri的伪部分私钥;
密钥生成中心kgc通过公开信道发送接收者ri的部分公钥di和伪部分私钥ri给接收者ri。接收者ri判断收到的部分公钥di和伪部分私钥ri是否满足如下等式:
rip=di+ppub+h1(idi,vippub)p
如果满足,则接收者ri将继续执行第三步,否则,接收者ri向密钥生成中心kgc报错,并退出接收者注册过程;
第三步,按照下式,接收者ri计算自己的公钥pki:
pki=di+h1(idi,vi)vi
其中,pki表示第i个接收者ri的公钥接收者ri;
按照下式计算自己的部分私钥yi:
yi=ri-h1(idi,vippub)
接收者ri按照下式计算私钥ski:
ski=h1(idi,pki)(yi+h1(idi,vi)vi)(modp)
其中,ski表示第i个接收者ri的私钥;
第四步,接收者ri将自己的公钥pki通过公开信道发送给密钥生成中心kgc,并由密钥生成中心kgc对外公布接收者ri的公钥pki,接收者ri安全保存自己的私钥ski,之后退出接收者注册过程;
步骤4,签密过程。
第一步,发送者s判断自己是否已经完成发送者注册过程并得到了自己的公钥pks和私钥sks。如果是,则发送者s执行第二步,否则发送者s执行发送者注册过程,并获取自己的公钥pks和私钥sks后,再执行第二步;
第二步,发送者s随机选取已注册的接收者ri,对每一个i=1,2,…,n,发送者s计算第i个接收者ri的伪公钥qi:
qi=pki+ppub
其中,qi表示第i个接收者ri的伪公钥,pki表示第i个接收者ri的公钥,n表示发送者s随机选取的接收者ri的数目;
发送者s随机选取签密整数w∈zp*,按照下式计算发送者s的签密验证份额w:
w=wp
其中,w表示发送者s随机选取的签密整数,w表示发送者s的签密验证份额,;
按照下式,对每一个i=1,2,…,n,计算第i个接收者ri的签密验证份额fi:
fi=wh1(idi,pki)qi
其中,fi表示第i个接收者ri的签密验证份额;
按照下式,对每一个i=1,2,…,n,发送者s计算第i个接收者ri的伪身份值αi:
αi=h2(w,fi)
其中,αi表示第i个接收者ri的伪身份值,;
发送者s随机选取加密整数g∈zp*,按照下式计算加密验证份额g:
g=gp
其中,g表示发送者s随机选取的加密整数,g表示加密验证份额;
按照下式,发送者s计算密文消息m:
其中,m表示密文消息,m表示明文消息,
发送者s随机选取整数ξ∈zp*作为伪密钥,按照下式,发送者s构造接收者身份信息混合值f(x):
其中,ξ表示发送者s随机选取的伪密钥,f(x)表示接收者身份信息混合值,x表示自变量,∏表示连乘操作,αi表示第i个接收者ri的伪身份值,a0,a1,…,an-1表示接收者身份信息混合值f(x)的各项系数;
按照下式,发送者s计算密文的有效性参数h:
h=h4(m,ids,g,w,a0,a1,...,an-1)
其中,h表示密文的有效性参数;
按照下式,发送者s计算对称密钥k:
k=h5(ξ)
其中,k表示对称密钥;
发送者s按照下式计算混合密文消息j:
j=ek(m||ids||h)
其中,j表示混合密文消息,ek表示对称加密算法,||表示链接符号;
发送者s按照下式计算密文的伪参数h0:
h0=h6(h)
表示,h0表示密文的伪参数;
发送者s计算g-1使其满足等式gg-1≡1(modp),并计算签名参数z:
z=g-1(sks+h0)(modp)
其中,g-1表示发送者s随机选取的加密整数g在模大素数p下的逆元,z表示签名参数;
第三步,发送者s将混合密文消息j、发送者s的签密验证份额w、接收者身份信息混合值f(x)的系数a0,a1,…,an-1、签名参数z作为签密密文c,并将签密密文c进行广播给接收者ri,i=1,2,…,n;
步骤5,解签密过程。
第一步,接收到签密密文c后,接收者ri首先判断自己是否已注册。如果已注册,则继续执行第二步,否则,抛弃接收到的签密密文c,并退出解签密步骤,i=1,2,…,n,其中,n表示发送者s随机选取的接收者ri的数目;
第二步,按照下式,接收者ri计算自己的签密验证份额fi:
fi=skiw
按照下式,接收者ri计算自己的伪身份值αi:
αi=h2(w,fi)
按照下式,接收者ri计算接收者身份信息混合值f(x):
f(x)=xn+an-1xn-1+...+a1x+a0
按照下式,接收者ri计算发送者s随机选取的伪密钥ξ:
ξ=f(αi)
按照下式,接收者ri计算对称密钥k:
k=h5(ξ)
按照下式,接收者ri计算密文消息m、发送者s的身份信息ids、密文的有效性参数h:
m||ids||h=dk(j)
按照下式,接收者ri计算密文的伪参数h0:
h0=h6(h)
按照下式,接收者ri计算加密验证份额g:
g=z-1(h1(ids,pks)(pks+ppub)+h0p)
其中,z-1表示签名参数z在模大素数p下的逆元;
按照下式,接收者ri计算密文的权限参数h′:
h′=h4(m,ids,g,w,a0,a1,...,an-1)
其中,h′表示密文的权限参数;
接收者ri判断密文的权限参数h′与密文的有效性参数h是否相等。若是,则说明发送者s的身份通过验证,接收者ri确定接受发送者s发送的密文消息m,并执行第三步,否则,说明发送者s的身份验证不通过,接收者ri拒绝接受发送者s发送的密文消息m,并退出解签密过程。
第三步,按照下式,接收者ri解密得到明文消息m:
其中,m表示明文消息,m表示密文消息,