本发明涉及一种无证书多消息多接收者签密方法,特别是涉及一种真实匿名的无证书多消息多接收者签密方法。
背景技术:
文献“周彦伟,杨波,张文政.匿名的无证书多接收者签密机制.电子学报,2016,44(8):1784-1790.”中提出了一种匿名的无证书多消息多接收者签密方法。该方法存在以下缺点:该方法密文信息中不包括接收者的身份信息,但是攻击者可以通过密文参数和公开参数判断一个身份是否为合法的接收者的身份;将签密算法设计在椭圆曲线上,但是椭圆曲线的数乘运算比较多,导致加密过程中运算效率较低;未考虑发送者的匿名性;另外接收者只需解密自己的部分,若密文遭到破坏,可能导致部分接收者可以解密,部分不能解密。
技术实现要素:
为了克服现有无证书多消息多接收者签密方法实用性差的不足,本发明提供一种真实匿名的无证书多消息多接收者签密方法。该方法的用户选择一个秘密值作为部分私钥,并用这个秘密值来计算部分公钥,然后用户将部分公钥和自己的身份信息发送给密钥生成中心kgc。密钥生成中心kgc根据收到的用户的身份信息和用户的部分公钥生成对应的部分私钥和对应的部分公钥验证参数,然后通过安全信道发送给用户。用户收到对应的部分私钥和对应的部分公钥之后,验证其合法性,若能通过验证,则继续计算出自己的公钥和私钥,并公开公钥,否则停止操作;签密过程中不仅不包含发送者和接收者的身份信息,而且对要发送的多个不同的消息进行整体加密,只有授权的接收者可以解密验证密文消息,实用性好且运算效率高。
本发明解决其技术问题所采用的技术方案是:一种真实匿名的无证书多消息多接收者签密方法,其特点是包括以下步骤:
(1)用户注册:
用户包括接收者和发送者,通过执行下列步骤获取自己的公钥和私钥。
(1a)用户随机选取一个整数严格保密并作为自己的秘密值x;
(1b)按照下式,用户计算验证份额d:
d=xp
其中,d表示用户的验证份额,x表示用户的秘密值,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(1c)用户将自己的验证份额d和自己的身份信息id发送给密钥生成中心kgc;
(1d)密钥生成中心kgc收到用户的验证份额d和身份信息id后,随机选取一个整数r,按照下式计算用户的部分私钥验证参数w:
w=rp
其中,w表示用户的部分私钥验证参数,r表示密钥生成中心kgc随机选取的整数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(1e)按照下式,密钥生成中心kgc计算用户的公钥pk:
pk=d+h0(id,d,w)w
其中,pk表示用户的公钥,d表示用户的验证份额,h0表示密钥生成中心kgc选取的密码单向哈希函数,id表示用户的身份信息,w表示用户的部分私钥验证参数;
(1f)按照下式,密钥生成中心kgc计算用户的部分私钥y:
y=s+rh0(id,d,w)
其中,y表示用户的部分私钥,s表示密钥生成中心kgc选取的密码系统主密钥,r表示密钥生成中心kgc随机选取的整数,h0表示密钥生成中心kgc选取的密码单向哈希函数,id表示用户的身份信息,d表示用户的验证份额,w表示用户的部分私钥验证参数;
(1g)密钥生成中心kgc将用户的部分私钥y和部分私钥验证参数w发送给用户;
(1h)按照下式,用户生成自己的私钥sk:
sk=(x,y)
其中,sk表示用户的私钥,x表示用户的秘密值,y表示用户的部分私钥;
(1i)用户判断收到的部分私钥y和部分私钥验证参数w是否满足如下等式,若是,则执行步骤(1j),否则,则执行步骤(1k):
yp=h0(id,d,w)p+ppub
其中,y表示用户的部分私钥,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元,h0表示密钥生成中心kgc选取的密码单向哈希函数,id表示用户的身份信息,d表示用户的验证份额,w表示用户的部分私钥验证参数,ppub表示密钥生成中心kgc生成的密码系统公钥;
(1j)密钥生成中心kgc对外公布用户的公钥pk,用户秘密保存自己的私钥sk,之后退出用户注册过程;
(1k)用户向密钥生成中心kgc报错,并退出用户注册过程;
(2)发送者签密:
(2a)发送者s判断自己是否已经执行步骤(1)的用户注册过程,并获取自己的公钥pks和私钥sks,若是,则执行步骤(2b),否则,发送者s执行步骤(1)获取自己的公钥pks和私钥sks后,执行步骤(2b);
(2b)发送者s在已注册的用户中随机选取n个作为接收者r1,r2,…,rn,其中,n表示大于0的整数;
(2c)发送者s随机选取整数t,按照下式,发送者s计算每一个接收者ri的公钥隐藏信息ki:
ki=t(pki+ppub)
其中,ki表示第i个接收者ri的公钥隐藏信息,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,t表示发送者随机选取的整数,pki表示第i个接收者ri的公钥,ppub表示密钥生成中心kgc生成的密码系统公钥;
(2d)按照下式,发送者s计算发送者的签密验证份额t:
t=tp
其中,t表示发送者的签密验证份额,t表示发送者随机选取的整数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(2e)按照下式,发送者s计算每一个接收者ri的伪身份值αi:
αi=h1(idi,ki,t)
其中,αi表示第i个接收者ri的伪身份值,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,h1表示密钥生成中心kgc选取的密码单向哈希函数,idi表示第i个接收者ri的身份信息,ki表示第i个接收者ri的公钥隐藏信息,t表示发送者的签密验证份额;
(2f)发送者s随机选取整数θ作为伪密钥后,按照下式,发送者s构造接收者身份信息混合值f(u):
其中,f(u)表示接收者身份信息混合值,u表示自变量,∏表示连乘操作,n表示发送者s在已注册的用户中随机选取的接收者的数目,i表示计数游标,αi表示第i个接收者ri的伪身份值,θ表示发送者s随机选取的伪密钥,mod表示求模操作,q表示密钥生成中心kgc选取的大素数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数;
(2g)按照下式,发送者s计算明文混合值m:
其中,m表示明文混合值,h2表示密钥生成中心kgc选取的密码单向哈希函数,αi表示第i个接收者ri的伪身份值,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,t表示发送者s的签密验证份额,||表示链接操作,h3表示密钥生成中心kgc选取的密码单向哈希函数,⊕表示逐位异或操作,mi表示要发送给第i个接收者ri的明文,i=1,2,…,n;
(2h)按照下式,发送者s计算加密消息密文v:
其中,v表示加密消息密文,ek表示密钥生成中心kgc选取的对称加密算法,h4表示密钥生成中心kgc选取的密码单向哈希函数,θ表示发送者s随机选取的伪密钥,m表示明文混合值;
(2i)按照下式,发送者s计算发送者的身份隐藏参数h:
h=h5(t,ids,m)
其中,h表示发送者s的身份隐藏参数,h5表示密钥生成中心kgc选取的密码单向哈希函数,t表示发送者s的签密验证份额,ids表示发送者s的身份信息,m表示明文混合值;
(2j)按照下式,发送者s计算发送者的身份验证参数k:
k=h6(c0,c1,…,cn-1,t,v)
其中,k表示发送者s的身份验证参数,h6表示密钥生成中心kgc选取的密码单向哈希函数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,t表示发送者s的签密验证份额,v表示加密消息密文;
(2k)按照下式,发送者s计算发送者的伪私钥w:
其中,w表示发送者s的伪私钥,k表示发送者s的身份验证参数,t表示发送者s随机选取的整数,xs表示发送者s的秘密值,ys表示发送者的部分私钥,h表示发送者s的身份隐藏参数;
(2l)按照下式,发送者s计算发送者的公钥隐藏参数u:
u=w(pks+ppub+hp)+ppub
其中,u表示发送者s的公钥隐藏参数,w表示发送者s的伪私钥,pks表示发送者s的公钥,ppub表示密钥生成中心kgc生成的系统公钥,h表示发送者s的身份隐藏参数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(2m)按照下式,发送者s计算密文有效性参数λ:
λ=h7(m,θ,c0,c1,…,cn-1,v,t,u)
其中,λ表示密文有效性参数,h7表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,θ表示发送者s随机选取的伪密钥,c0,c1,…,cn-1表示接收者的身份信息混合值f(u)的系数,v表示加密消息密文,t表示发送者s的签密验证份额,u表示发送者s的公钥隐藏参数;
(2n)发送者s将接收者的身份信息混合值f(u)的系数c0,c1,…,cn-1、发送者的签密验证份额t、加密消息密文v、发送者的公钥隐藏参数u和密文有效性参数λ构成签密密文c,并对签密密文c进行广播;
(3)接收者解签密:
每个接收者ri通过以下步骤进行解签密,其中i=1,2,…,n:
(3a)接收者ri计算发送者s的身份验证参数k:
k=h6(c0,c1,…,cn-1,t,v)
其中,k表示发送者s的身份验证参数,h6表示密钥生成中心kgc选取的密码单向哈希函数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,t表示发送者s的签密验证份额,v表示加密消息密文;
(3b)接收者ri验证下式是否相等,如果相等则执行(3c),否则退出解签密过程:
u=kt+ppub
其中,u表示发送者s的公钥隐藏参数,k表示发送者s的身份验证参数,t表示发送者s的签密验证份额,ppub表示密钥生成中心kgc生成的密码系统公钥;
(3c)按照下式,接收者ri计算公钥隐藏信息ki:
ki=(xi+yi)t
其中,ki表示第i个接收者ri的公钥隐藏信息,xi表示第i个接收者ri的秘密值,yi表示第i个接收者ri的部分私钥,t表示发送者s的签密验证份额;
(3d)按照下式,接收者ri计算伪身份值αi:
αi=h1(idi,ki,t)
其中,αi表示第i个接收者ri的伪身份值,h1表示密钥生成中心kgc选取的密码单向哈希函数,idi表示第i个接收者ri的身份信息,ki表示第i个接收者ri的公钥隐藏信息,t表示发送者s的签密验证份额;
(3e)按照下式,接收者ri计算发送者s随机选取的伪密钥θ:
θ=f(αi)
其中,θ表示发送者s随机选取的伪密钥,f(u)表示接收者的身份信息混合值,u表示自变量,αi表示第i个接收者ri的伪身份值;
(3f)按照下式,接收者ri计算明文混合值m:
其中,m表示明文混合值,dk表示密钥生成中心kgc选取的对称解密算法,h4表示密钥生成中心kgc选取的密码单向哈希函数,θ表示发送者s随机选取的伪密钥,v表示加密消息密文;
(3g)按照下式,接收者ri计算权限参数λ′:
λ′=h7(m,θ,c0,c1,…,cn-1,v,t,u)
其中,λ′表示权限参数,h7表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,θ表示发送者s随机选取的伪密钥,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,v表示加密消息密文,t表示发送者s的签密验证份额,u表示发送者s的公钥隐藏参数;
(3h)接收者判断权限参数λ′与密文有效性参数λ是否相等;若是,则执行步骤(3i),否则,解密失败,退出解签密过程;
(3i)接收者计算h2(αi,t)和h3(αi),根据h2(αi,t)找出明文混合值m中对应的h2(αi,t)||h3(αi)⊕mi,计算mi=(h2(αi)⊕mi)⊕h3(αi),并退出接收者解签密过程;
其中,h2表示密钥生成中心kgc选取的密码单向哈希函数,αi表示第i个接收者ri的伪身份值,t表示发送者s的签密验证份额,h3表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,||表示链接操作,⊕表示逐位异或操作,mi表示要发送给第i个接收者的明文。
本发明的有益效果是:该方法的用户选择一个秘密值作为部分私钥,并用这个秘密值来计算部分公钥,然后用户将部分公钥和自己的身份信息发送给密钥生成中心kgc。密钥生成中心kgc根据收到的用户的身份信息和用户的部分公钥生成对应的部分私钥和对应的部分公钥验证参数,然后通过安全信道发送给用户。用户收到对应的部分私钥和对应的部分公钥之后,验证其合法性,若能通过验证,则继续计算出自己的公钥和私钥,并公开公钥,否则停止操作;签密过程中不仅不包含发送者和接收者的身份信息,而且对要发送的多个不同的消息进行整体加密,只有授权的接收者可以解密验证密文消息,实用性好且运算效率高。
下面结合具体实施方式对本发明作详细说明。
具体实施方式
名词解释:
kgc:密钥生成中心,为可信第三方,负责产生发送者和接收者的公私钥;
λ:密钥生成中心kgc选取的安全参数;
q:密钥生成中心kgc选取的大素数;
gq:密钥生成中心kgc选取的一个有限域;
e:密钥生成中心kgc在有限域gfq上选取的一条椭圆曲线;
p:密钥生成中心kgc选取的椭圆曲线e的一个生成元;
s:密钥生成中心kgc选取的密码系统主密钥;
ppub:密钥生成中心kgc生成的密码系统公钥;
∈:限定域符号,例如a∈b,就是a属于b;
hj:密钥生成中心kgc选取的密码单向哈希函数,其中j=0,1,2,3,4,5,6,7;
a→b:定义域a到值域b的映射;
{0,1}*:任意长的“0”或“1”构成的串;
×:笛卡尔乘积;
zq*:基于大素数q构成的非零乘法群;
k:对称密钥;
ek:密钥生成中心kgc选取的对称加密算法;
dk:密钥生成中心kgc选取的对称解密算法;
params:密码系统参数;
x:用户的秘密值;
d:用户的验证份额;
id:用户的身份信息;
r:密钥生成中心kgc随机选取的整数;
w:用户的部分私钥验证参数;
pk:用户的公钥;
y:用户的部分私钥;
sk:用户的私钥;
s:发送者;
xs:发送者s的秘密值;
ds:发送者s的验证份额;
ids:发送者的身份信息;
rs:密钥生成中心kgc为发送者s随机选取的整数;
ws:发送者的部分私钥验证参数;
pks:发送者s的公钥;
ys:发送者s的部分私钥;
sks:发送者s的私钥;
n:发送者s在已注册的用户中随机选取的接收者的数目;
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;
ri:密钥生成中心kgc为接收者ri随机选取的整数,i=1,2,…,n;
wi:第i个接收者ri的部分私钥验证参数,i=1,2,…,n;
pki:第i个接收者ri的公钥,i=1,2,…,n;
yi:第i个接收者ri的部分私钥,i=1,2,…,n;
ski:第i个接收者ri的私钥,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:求模操作;
c0,c1,…,cn-1:接收者身份信息混合值f(u)的系数;
m:明文混合值;
⊕:逐位异或操作;
||:链接操作
mi:要发送给第i个接收者ri的明文;
v:加密消息密文;
h:发送者s的身份隐藏参数;
k:发送者s的身份验证参数;
w:发送者s的伪私钥;
u:发送者s的公钥隐藏参数;
λ:密文有效性参数;
c:签密密文;
λ′:权限参数。
本发明真实匿名的无证书多消息多接收者签密方法具体步骤如下:
(1)用户注册:
用户注册步骤中的用户包括接收者和发送者,均需通过执行下列步骤获取自己的公钥和私钥。
(1a)用户随机选取一个整数严格保密并作为自己的秘密值x;
(1b)按照下式,用户计算验证份额d:
d=xp
其中,d表示用户的验证份额,x表示用户的秘密值,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(1c)用户将自己的验证份额d和自己的身份信息id发送给密钥生成中心kgc;
(1d)密钥生成中心kgc收到用户的验证份额d和身份信息id后,随机选取一个整数r,按照下式计算用户的部分私钥验证参数w:
w=rp
其中,w表示用户的部分私钥验证参数,r表示密钥生成中心kgc随机选取的整数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(1e)按照下式,密钥生成中心kgc计算用户的公钥pk:
pk=d+h0(id,d,w)w
其中,pk表示用户的公钥,d表示用户的验证份额,h0表示密钥生成中心kgc选取的密码单向哈希函数,id表示用户的身份信息,w表示用户的部分私钥验证参数;
(1f)按照下式,密钥生成中心kgc计算用户的部分私钥y:
y=s+rh0(id,d,w)
其中,y表示用户的部分私钥,s表示密钥生成中心kgc选取的密码系统主密钥,r表示密钥生成中心kgc随机选取的整数,h0表示密钥生成中心kgc选取的密码单向哈希函数,id表示用户的身份信息,d表示用户的验证份额,w表示用户的部分私钥验证参数;
(1g)密钥生成中心kgc将用户的部分私钥y和部分私钥验证参数w发送给用户;
(1h)按照下式,用户生成自己的私钥sk:
sk=(x,y)
其中,sk表示用户的私钥,x表示用户的秘密值,y表示用户的部分私钥;
(1i)用户判断收到的部分私钥y和部分私钥验证参数w是否满足如下等式,若是,则执行步骤(1j),否则,则执行步骤(1k):
yp=h0(id,d,w)p+ppub
其中,y表示用户的部分私钥,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元,h0表示密钥生成中心kgc选取的密码单向哈希函数,id表示用户的身份信息,d表示用户的验证份额,w表示用户的部分私钥验证参数,ppub表示密钥生成中心kgc生成的密码系统公钥;
(1j)密钥生成中心kgc对外公布用户的公钥pk,用户秘密保存自己的私钥sk,之后退出用户注册过程;
(1k)用户向密钥生成中心kgc报错,并退出用户注册过程;
(2)发送者签密:
(2a)发送者s判断自己是否已经执行步骤(1)的用户注册过程,并获取自己的公钥pks和私钥sks,若是,则执行步骤(2b),否则,发送者s执行步骤(1)获取自己的公钥pks和私钥sks后,执行步骤(2b);
(2b)发送者s在已注册的用户中随机选取n个作为接收者r1,r2,…,rn,其中,n表示大于0的整数;
(2c)发送者s随机选取整数t,按照下式,发送者s计算每一个接收者ri的公钥隐藏信息ki:
ki=t(pki+ppub)
其中,ki表示第i个接收者ri的公钥隐藏信息,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,t表示发送者随机选取的整数,pki表示第i个接收者ri的公钥,ppub表示密钥生成中心kgc生成的密码系统公钥;
(2d)按照下式,发送者s计算发送者的签密验证份额t:
t=tp
其中,t表示发送者的签密验证份额,t表示发送者随机选取的整数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(2e)按照下式,发送者s计算每一个接收者ri的伪身份值αi:
αi=h1(idi,ki,t)
其中,αi表示第i个接收者ri的伪身份值,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,h1表示密钥生成中心kgc选取的密码单向哈希函数,idi表示第i个接收者ri的身份信息,ki表示第i个接收者ri的公钥隐藏信息,t表示发送者的签密验证份额;
(2f)发送者s随机选取整数θ作为伪密钥后,按照下式,发送者s构造接收者身份信息混合值f(u):
其中,f(u)表示接收者身份信息混合值,u表示自变量,∏表示连乘操作,n表示发送者s在已注册的用户中随机选取的接收者的数目,i表示计数游标,αi表示第i个接收者ri的伪身份值,θ表示发送者s随机选取的伪密钥,mod表示求模操作,q表示密钥生成中心kgc选取的大素数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数;
(2g)按照下式,发送者s计算明文混合值m:
m=(h2(α1,t)||h3(α1)⊕m1,...,h2(αi,t)||h3(αi)⊕mi,...,h2(αn,t)||h3(αn)⊕mn)
其中,m表示明文混合值,h2表示密钥生成中心kgc选取的密码单向哈希函数,αi表示第i个接收者ri的伪身份值,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,t表示发送者s的签密验证份额,||表示链接操作,h3表示密钥生成中心kgc选取的密码单向哈希函数,⊕表示逐位异或操作,mi表示要发送给第i个接收者ri的明文,i=1,2,…,n;
(2h)按照下式,发送者s计算加密消息密文v:
其中,v表示加密消息密文,ek表示密钥生成中心kgc选取的对称加密算法,h4表示密钥生成中心kgc选取的密码单向哈希函数,θ表示发送者s随机选取的伪密钥,m表示明文混合值;
(2i)按照下式,发送者s计算发送者的身份隐藏参数h:
h=h5(t,ids,m)
其中,h表示发送者s的身份隐藏参数,h5表示密钥生成中心kgc选取的密码单向哈希函数,t表示发送者s的签密验证份额,ids表示发送者s的身份信息,m表示明文混合值;
(2j)按照下式,发送者s计算发送者的身份验证参数k:
k=h6(c0,c1,…,cn-1,t,v)
其中,k表示发送者s的身份验证参数,h6表示密钥生成中心kgc选取的密码单向哈希函数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,t表示发送者s的签密验证份额,v表示加密消息密文;
(2k)按照下式,发送者s计算发送者的伪私钥w:
其中,w表示发送者s的伪私钥,k表示发送者s的身份验证参数,t表示发送者s随机选取的整数,xs表示发送者s的秘密值,ys表示发送者的部分私钥,h表示发送者s的身份隐藏参数;
(2l)按照下式,发送者s计算发送者的公钥隐藏参数u:
u=w(pks+ppub+hp)+ppub
其中,u表示发送者s的公钥隐藏参数,w表示发送者s的伪私钥,pks表示发送者s的公钥,ppub表示密钥生成中心kgc生成的系统公钥,h表示发送者s的身份隐藏参数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
(2m)按照下式,发送者s计算密文有效性参数λ:
λ=h7(m,θ,c0,c1,…,cn-1,v,t,u)
其中,λ表示密文有效性参数,h7表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,θ表示发送者s随机选取的伪密钥,c0,c1,…,cn-1表示接收者的身份信息混合值f(u)的系数,v表示加密消息密文,t表示发送者s的签密验证份额,u表示发送者s的公钥隐藏参数;
(2n)发送者s将接收者的身份信息混合值f(u)的系数c0,c1,…,cn-1、发送者的签密验证份额t、加密消息密文v、发送者的公钥隐藏参数u和密文有效性参数λ构成签密密文c,并对签密密文c进行广播;
(3)接收者解签密:
每个接收者ri通过以下步骤进行解签密,其中i=1,2,…,n:
(3a)接收者ri计算发送者s的身份验证参数k:
k=h6(c0,c1,…,cn-1,t,v)
其中,k表示发送者s的身份验证参数,h6表示密钥生成中心kgc选取的密码单向哈希函数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,t表示发送者s的签密验证份额,v表示加密消息密文;
(3b)接收者ri验证下式是否相等,如果相等则执行(3c),否则退出解签密过程:
u=kt+ppub
其中,u表示发送者s的公钥隐藏参数,k表示发送者s的身份验证参数,t表示发送者s的签密验证份额,ppub表示密钥生成中心kgc生成的密码系统公钥;
(3c)按照下式,接收者ri计算公钥隐藏信息ki:
ki=(xi+yi)t
其中,ki表示第i个接收者ri的公钥隐藏信息,xi表示第i个接收者ri的秘密值,yi表示第i个接收者ri的部分私钥,t表示发送者s的签密验证份额;
(3d)按照下式,接收者ri计算伪身份值αi:
αi=h1(idi,ki,t)
其中,αi表示第i个接收者ri的伪身份值,h1表示密钥生成中心kgc选取的密码单向哈希函数,idi表示第i个接收者ri的身份信息,ki表示第i个接收者ri的公钥隐藏信息,t表示发送者s的签密验证份额;
(3e)按照下式,接收者ri计算发送者s随机选取的伪密钥θ:
θ=f(αi)
其中,θ表示发送者s随机选取的伪密钥,f(u)表示接收者的身份信息混合值,u表示自变量,αi表示第i个接收者ri的伪身份值;
(3f)按照下式,接收者ri计算明文混合值m:
m=dh4(θ)(v)
其中,m表示明文混合值,dk表示密钥生成中心kgc选取的对称解密算法,h4表示密钥生成中心kgc选取的密码单向哈希函数,θ表示发送者s随机选取的伪密钥,v表示加密消息密文;
(3g)按照下式,接收者ri计算权限参数λ′:
λ′=h7(m,θ,c0,c1,…,cn-1,v,t,u)
其中,λ′表示权限参数,h7表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,θ表示发送者s随机选取的伪密钥,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,v表示加密消息密文,t表示发送者s的签密验证份额,u表示发送者s的公钥隐藏参数;
(3h)接收者判断权限参数λ′与密文有效性参数λ是否相等;若是,则执行步骤(3i),否则,解密失败,退出解签密过程;
(3i)接收者计算h2(αi,t)和h3(αi),根据h2(αi,t)找出明文混合值m中对应的h2(αi,t)||h3(αi)⊕mi,计算mi=(h2(αi)⊕mi)⊕h3(αi),并退出接收者解签密过程;
其中,h2表示密钥生成中心kgc选取的密码单向哈希函数,αi表示第i个接收者ri的伪身份值,t表示发送者s的签密验证份额,h3表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,||表示链接操作,⊕表示逐位异或操作,mi表示要发送给第i个接收者的明文。
应用实施例。
步骤1,密钥生成中心kgc生成系统参数。
密钥生成中心kgc根据系统安全参数λ选取大素数q,选取一个有限域gq,并选取一条在有限域gq上的安全椭圆曲线e,p为密钥生成中心kgc选取的椭圆曲线e的一个生成元;随机选密码系统主密钥s∈zq*并秘密保存,其中,∈表示限定域符号,zq*表示基于大素数q构成的非零乘法群;构造8个密码单向哈希函数,分别记为:
h0:{0,1}*×gq×gq→zq*;h1:{0,1}*×gq×gq→zq*;h2:gq×zq*→{0,1}*;
h3:zq*→{0,1}*;h4:zq*→{0,1}*;
h5:gq×{0,1}*×{0,1}*→zq*;h6:zq*×zq*×…×zq*×gq×gq→zq*;
h7:{0,1}*×zq*×zq*×…×zq*×{0,1}*×zq*×gq×gq→zq*;
其中,h0,h1,h2,h3,h4,h5,h6,h7表示密钥生成中心kgc构造的8个密码单向哈希函数,a→b表示定义域a到值域b的映射,{0,1}*表示任意长的“0”或“1”构成的串,gq表示密钥生成中心kgc选取的一个有限域,×表示笛卡尔乘积,zq*表示基于大素数q构成的非零乘法群;
密钥生成中心kgc从现有的对称加密算法中任意选取一种对称加密算法ek(如aes),并选取与该对称加密算法对应的对称解密算法dk;
密钥生成中心kgc构造并公开密码系统参数,密码系统参数的构造方法为:params=<gq,e,p,ppub,h0,h1,h2,h3,h4,h5,h6,h7,ek,dk>;同时密钥生成中心kgc秘密保存密码系统主密钥s。
步骤2,发送者注册。
第一步,发送者s随机选取一个整数严格保密并作为自己的秘密值xs∈zq*,发送者s计算自己的验证份额ds为:ds=xsp,其中,xs表示发送者s的秘密值,∈表示限定域符号,zq*表示基于大素数q构成的非零乘法群,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元。
第二步,发送者s将自己的验证份额ds和身份信息ids发送给密钥生成中心kgc。密钥生成中心kgc接收发送者s的验证份额vs和身份信息ids后,随机选取整数rs,按照下式计算发送者的部分私钥验证参数ws:
ws=rsp
其中,ws表示发送者s的部分私钥验证参数,rs表示密钥生成中心kgc随机选取的整数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
按照下式,密钥生成中心kgc计算发送者的公钥pks:
pks=ds+h0(ids,ds,ws)ws
其中,pks表示发送者s的公钥,ds表示发送者s的验证份额,h0表示密钥生成中心kgc选取的密码单向哈希函数,ids表示发送者s的身份信息,ws表示发送者s的部分私钥验证参数;
按照下式,密钥生成中心kgc计算发送者的部分私钥ys:
ys=s+rsh0(ids,ds,ws)
其中,ys表示发送者的部分私钥,s表示密钥生成中心kgc选取的密码系统主密钥,rs表示密钥生成中心kgc随机选取的整数,h0表示密钥生成中心kgc选取的密码单向哈希函数,ids表示发送者的身份信息,ds表示发送者的验证份额,ws表示发送者的部分私钥验证参数;
密钥生成中心kgc将发送者s的部分私钥验证参数ws和发送者s的部分私钥ys发送给发送者s。
发送者s接收自己的部分私钥验证参数ws和部分私钥ys后,按照下式,生成自己的私钥sks:
sks=(xs,ys)
其中,sks表示发送者的私钥,xs表示发送者s的秘密值,ys表示发送者s的部分私钥;
发送者s判断自己的部分私钥ys是否满足验证条件,若是,则通知密钥生成中心kgc执行本步骤的第三步,否则,向密钥生成中心kgc报错,并退出发送者注册过程。
发送者s的部分私钥ys的验证条件是指判断如下等式是否成立,若等式成立,则表示满足部分私钥ys的验证条件,若等式不成立,则表示不满足部分私钥ys的验证条件:
ysp=h0(ids,ds,ws)p+ppub
其中,ys表示发送者s的部分私钥,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元,h0表示密钥生成中心kgc选取的密码单向哈希函数,ids表示发送者s的身份信息,ds表示发送者s的验证份额,ws表示发送者s的部分公钥验证参数,ppub表示密钥生成中心kgc生成的密码系统公钥;。
第三步,密钥生成中心kgc对外公布发送者s的公钥pks,发送者s秘密保存自己的私钥sks,并退出发送者注册过程。
步骤3,接收者注册。
第一步,接收者ri随机选取xi∈zq*作为自己的秘密值,按照下式计算自己的验证份额di:
di=xip
其中,xi表示接收者ri的私钥,∈表示限定域符号,zq*表示基于大素数q构成的非零乘法群,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
第二步,接收者ri将自己的验证份额di和身份信息idi发送给密钥生成中心kgc。密钥生成中心kgc接收到接收者ri的验证份额di和身份信息idi后,随机选取整数ri,按照下式计算接收者ri的部分私钥验证参数wi:
wi=rip
其中,wi表示接收者的部分私钥验证参数,ri表示密钥生成中心kgc随机选取的整数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
按照下式,密钥生成中心kgc计算接收者ri的公钥pki:
pki=di+h0(idi,di,wi)wi
其中,pki表示发送者的公钥,di表示接收者的验证份额,h0表示密码单向哈希函数,idi表示接收者ri的身份信息,wi表示接收者的部分私钥验证参数;
按照下式,密钥生成中心kgc计算接收者ri的部分私钥yi:
yi=s+rih0(idi,di,wi)
其中,yi表示接收者ri的部分私钥,s表示密钥生成中心kgc选取的密码系统主密钥,ri表示密钥生成中心kgc随机选取的整数,h0表示密钥生成中心kgc选取的密码单向哈希函数,idi表示接收者ri的身份信息,di表示接收者ri的验证份额,wi表示接收者ri的部分私钥验证参数;
密钥生成中心kgc将接收者ri的部分私钥验证参数wi、接收者ri的部分私钥yi发送给接收者ri。
接收者s接收自己的部分私钥验证参数wi和部分私钥yi后,按照下式,生成自己的私钥ski:
ski=(xi,yi)
其中,ski表示接收者的私钥,xi表示第i个接收者ri的秘密值,yi表示接收者ri的部分私钥;
接收者ri判断自己的部分私钥ys是否满足验证条件,若是,则通知密钥生成中心kgc执行本步骤的第三步,否则,向密钥生成中心kgc报错,并退出接收者注册过程。
接收者ri的部分私钥yi的验证条件是指判断如下等式是否成立,若等式成立,则表示满足部分私钥yi的验证条件,若等式不成立,则表示不满足部分私钥yi的验证条件:
ysp=h0(ids,ds,ws)p+ppub
其中,yi表示接收者ri的部分私钥,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元,h0表示密钥生成中心kgc选取的密码单向哈希函数,idi表示接收者ri的身份信息,di表示接收者ri的验证份额,wi表示接收者ri的部分公钥验证参数,ppub表示密钥生成中心kgc生成的密码系统公钥;
第三步,密钥生成中心kgc对外公布接收者ri的公钥pki,接收者ri秘密保存自己的私钥ski,并退出接收者注册过程。
步骤4,发送者签密。
发送者s执行步骤2进行注册并获取自己的公钥pks和私钥sks之后,在步骤3已注册的用户中,随机选取n个接收者r1,r2,…,rn,并计算每一个接收者ri的公钥隐藏信息ki=t(pki+ppub)、发送者的签密验证份额t=tp和每一个接收者的伪身份值αi=h1(idi,ki,t),其中,ki表示第i个接收者ri的公钥隐藏信息,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,t表示发送者随机选取的整数,pki表示第i个接收者ri的公钥,ppub表示密钥生成中心kgc生成的密码系统公钥,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元,idi表示第i个接收者ri的身份信息。
发送者s随机选取θ∈zq*作为伪密钥,构造接收者身份信息混合值:
发送者s计算明文混合值m=(h2(α1,t)||h3(α1)⊕m1,...,h2(αi,t)||h3(αi)⊕mi,...,h2(αn,t)||h3(αn)⊕mn),其中,h2表示密钥生成中心kgc选取的密码单向哈希函数,αi表示第i个接收者ri的伪身份值,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,t表示发送者的签密验证份额,||表示链接操作,h3表示密钥生成中心kgc选取的密码单向哈希函数,⊕表示逐位异或操作,mi表示要发送给第i个接收者的明文;
发送者s计算加密消息密文
发送者s计算发送者的身份隐藏参数h=h5(t,ids,m),其中,h5表示密钥生成中心kgc选取的密码单向哈希函数,t表示发送者的签密验证份额,ids表示发送者的身份信息,m表示明文混合值;
发送者s计算发送者的身份验证参数k=h6(c0,c1,…,cn-1,t,v),其中,h6表示密钥生成中心kgc选取的密码单向哈希函数,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,t表示发送者的签密验证份额,v表示加密消息密文;
发送者s计算发送者的伪私钥
发送者s计算发送者的公钥隐藏参数u=w(pks+ppub+hp)+ppub,其中,w表示发送者s的伪私钥,pks表示发送者s的公钥,ppub表示密钥生成中心kgc生成的密码系统公钥,h表示发送者s的身份隐藏参数,p表示密钥生成中心kgc选取的椭圆曲线e的一个生成元;
发送者s计算密文有效性参数λ=h7(m,θ,c0,c1,…,cn-1,v,t,u),其中,h7表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,θ表示发送者s随机选取的伪密钥,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,v表示加密消息密文,t表示发送者s的签密验证份额,u表示发送者s的公钥隐藏参数;
发送者s将接收者身份信息混合值f(u)的系数c0,c1,…,cn-1、发送者的签密验证份额t,加密消息密文v、发送者的公钥隐藏参数u和密文有效性参数λ构成签密密文c=<c0,c1,…,cn-1,t,v,u,λ>,并对签密密文c进行广播。
步骤5,接收者解签密。
接收者ri执行步骤3进行注册并获取自己的公钥pki和私钥ski后,按照下式,接收者ri验证下式是否相等,如果相等则执行(2d),否则退出解签密过程:
u=kt+ppub
其中,u表示发送者s的公钥隐藏参数,k表示发送者s的身份验证参数,t表示发送者s的签密验证份额,ppub表示密钥生成中心kgc生成的密码系统公钥;
按照下式,接收者ri计算公钥隐藏信息ki:
ki=(xi+yi)t
其中,ki表示表示第i个接收者ri的公钥隐藏信息,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,xi表示第i个接收者ri的秘密值,yi表示第i个接收者ri的部分私钥,t表示发送者s的签密验证份额;
按照下式,接收者ri计算伪身份值αi:
αi=h1(idi,ki,t)
其中,αi表示第i个接收者ri的伪身份值,i=1,2,…,n,n表示发送者s在已注册的用户中随机选取的接收者的数目,h1表示密钥生成中心kgc选取的密码单向哈希函数,idi表示第i个接收者ri的身份信息,ki表示第i个接收者ri的公钥隐藏信息,t表示发送者s的签密验证份额;
按照下式,接收者ri计算发送者s随机选取的伪密钥θ:
θ=f(αi)
其中,θ表示发送者s随机选取的伪密钥,f(u)表示接收者身份信息混合值,u表示自变量,αi表示第i个接收者ri的伪身份值;
按照下式,接收者ri计算明文混合值m:
m=dh4(θ)(v)
其中,m表示明文混合值,dk表示对称解密算法,h4表示密钥生成中心kgc选取的密码单向哈希函数,θ表示发送者s随机选取的伪密钥,v表示加密消息密文;
按照下式,接收者ri计算权限参数λ′:
λ′=h7(m,θ,c0,c1,…,cn-1,v,t,u)
其中,λ′表示权限参数,h7表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,θ表示发送者s随机选取的伪密钥,c0,c1,…,cn-1表示接收者身份信息混合值f(u)的系数,v表示加密消息密文,t表示发送者的签密验证份额,u表示发送者s的公钥隐藏参数;
接收者判断权限参数λ′与密文有效性参数λ是否相等;若是,则继续往下执行,否则,解密失败,退出解签密过程;
接收者计算h2(αi,t)和h3(αi),根据h2(αi,t)找出明文混合值m中对应的h2(αi,t)||h3(αi)⊕mi,计算mi=(h2(α3)⊕mi)⊕h3(αi),接收者ri接受明文消息mi,并退出接收者解密过程;
其中,h2表示密钥生成中心kgc选取的密码单向哈希函数,αi表示第i个接收者ri的伪身份值,n表示发送者s在已注册的用户中随机选取的接收者的数目,i=1,2,…,n,t表示发送者的签密验证份额,h3表示密钥生成中心kgc选取的密码单向哈希函数,m表示明文混合值,||表示链接操作,⊕表示逐位异或操作,mi表示要发送给第i个接收者的明文。