发明内容
为了克服现有基于身份的环签密方法安全性差的不足,本发明提供一种具有多重安全属性的基于身份的多接收者环签密方法。该方法通过参数设置、密钥提取、匿名签密、解签密以及公开验证等步骤,在签密阶段将混合加密方法应用到签密中,利用求解对称密钥的困难问题,确保方法具有前向安全性;采用环签密和拉格朗日插值函数,将包括发送者和多个接收者的用户身份信息完全隐藏起来,有效保障了用户隐私;同时采用双线性对运算,确保同时具有公开验证性和解密公平性等多种安全属性。
本发明解决其技术问题所采用的技术方案是:一种具有多重安全属性的基于身份的多接收者环签密方法,其特点是采用以下步骤:
1.参数设置。
给定一个秘密参数k,k是一个长整数,由私钥生成中心执行下列操作:
①设G1和G2分别是阶数为q>2k的加法群和乘法群,q为大素数,P为G1的一个生成元;
②选择一个随机数P0∈RG1,并选取一个随机数s∈RZq *作为主密钥,设Ppub=sP为系统公钥;
③选择安全的对称加解密算法对(E,D);
④选择双线性映射
⑤选择六个哈希函数:下式中|M|表示将要传输的明文消息的二进制长度,
H1:{0,1}*→G1,H2:G2→{0,1}*,H3:{0,1}|M|×G1→RZq *,
H4:{0,1}|M|×G1×G1×G1×{0,1}*→RZq *,
H5:G1×G2×{0,1}|M|→{0,1}|M|,H6:{0,1}|M|×G1×G1×{0,1}*→G1;
⑥系统公开参数为
2.密钥提取。
输入用户i的身份IDi,私钥生成中心计算用户的公私钥:公钥Qi=H1(IDi)和私钥Di=sQi然后通过安全信道将私钥发送给用户;
3.匿名签密。
L'={ID'1,ID'2,…,ID'n}为实际签密者选择的n个接收者的身份集合。选择一个用户身份集合L={ID1,ID2,…,IDt},该集合中包含实际签密者的身份IDS,即IDS∈L,且输入系统公开参数params、消息M,签密者执行下列步骤:
①加密部分:
a)选择随机参数α∈RZq *,计算参数U=αP,然后计算
θ=H2(ω) ⑴
得到θ为对称密钥,计算σ1=Eθ(M),对消息进行加密;
b)使用n对数(x1,y1),(x2,y2),…,(xn,yn),构造拉格朗日函数fj(x)满足xj是fj(x)=yj的解,这里对于j=1,2,…,n都有xj=H3(ID'j),yj=α(P0+Q'j),其中Q'j为接收者ID'j的公钥;
c)对于j=1,2,…,n,计算fj(x)=Π1≤j≠j'≤n(x-xj)/(xj-xj')=τj,1+τj,2x+…+τj, nxn-1,其中τj,1,τj,2,…,τj,n∈Zq *;对于j=1,2,…,n,计算Tj=∑j'=1τj,j'yj,T=∑Tj。
②环签名部分:
a)对于非实际签密者i=1,2,…,t,i≠S,选择Ri∈RG1,计算
hi=H4(σ1,Ri,U,T,L) ⑵
b)对于实际签密者i=S,选择xS∈RZq *,计算RS=xSQS-∑i≠S(Ri+hiQi),hS=H4(σ1,RS,U,T,L),计算R=∑Ri;
c)计算
σ2=H5(R,ω,M) ⑶
S1=(xS+hS)DS ⑷
S2=αH6(σ1,R,T,L) ⑸
最后得到密文为C=<σ1,σ2,S1,S2,U,R1,…,Rt,T,T1,…,Tn,L>;
4.解签密。
输入密文C、系统公开参数params、接收者身份信息L'={ID'1,ID'2,…,ID'n},每个接收者ID'j使用自己的私钥D'j进行如下计算来解密密文C。
①计算
δj=T1+xjT2+…+(xj n-1mod q)Tn ⑹
其中xj=H3(ID'j);
②将⑹式的值代入下式,计算
通过公式⑴来还原对称密钥θ'=H2(ω'),并进行解密计算M'=Dθ'(σ1),得到一个消息值M';
③将得到的消息M'带入公式⑶中,检查σ2=H5(R,ω',M')是否成立,若成立,则认为M'=M;若不成立,则输出“⊥”,说明签名值是无效的;
5.公开验证。
接收者或者任意的第三方获得密文后,通过该算法验证发送者身份的可靠性。
①对于i=1,…,t,通过公式⑵,恢复出hi=H3(σ1,Ri,U,T,L),计算H=H6(σ1,R,T,L);
②利用⑷式、⑸式中得到的S1和S2判断⑻式、⑼式是否成立:
若⑻式、⑼式皆成立,则认为签名者身份合法、可靠,签密值具有真实性;否则认为该签密无效。
本发明的有益效果是:该方法通过参数设置、密钥提取、匿名签密、解签密以及公开验证等步骤,在签密阶段将混合加密方法应用到签密中,利用求解对称密钥的困难问题,确保方法具有前向安全性;采用环签密和拉格朗日插值函数,将包括发送者和多个接收者的用户身份信息完全隐藏起来,有效保障了用户隐私;同时采用双线性对运算,确保同时具有公开验证性和解密公平性等多种安全属性。
下面结合附图和具体实施方式对本发明作详细说明。
具体实施方式
名词解释。
PKG:私钥生成中心;
k:用户选择的秘密参数,为一个长整数;
G1:阶数为q的加法群;
G2:阶数为q的乘法群;
q:大素数,群的阶数,表示群中仅含有q个元素;
P:G1的一个生成元;
P0:加法群G1中的一个随机数;
s:整数乘法群中的一个随机数;
Zq *:模为q的整数乘法群;
Ppub:系统公钥;
(E,D):对称加解密算法对;
双线性映射;
params:参数集合;
H1:单向散列函数,可将任意长度的二进制字符串计算成阶为q的加法群中的散列值;
H2:单向散列函数,可将阶为q的加法群中的字符串计算成固定长度的二进制字符串;
H3:单向散列函数,可将明文消息字符串与阶为q的加法群中的字符串计算成固定长度的模为q的整数乘法群中散列值;
H4:单向散列函数,可将明文消息字符串与多个阶为q的加法群中的字符串以及任意长度的二进制字符串计算成固定长度的模为q的整数乘法群中散列值;
H5:单向散列函数,将明文消息字符串与阶为q的加法群、阶为q的乘法群中的字符串计算成明文消息长度的二进制字符串;
H6:单向散列函数,可将明文消息字符串与两个阶为q的加法群中的字符串以及任意长度的二进制字符串计算成固定长度的阶为q的加法群中散列值;
|M|:表示消息M的二进制长度;
IDi:用户i的身份信息,表示发送者的身份信息;
ID'j:用户j的身份信息,表示接收者的身份信息;
IDS:实际签密者的身份信息;
Qi:用户i的公钥,一般表示发送者方的公钥;
Q'j:用户j的公钥,一般表示接收者方的公钥;
Di:用户i的私钥,一般表示发送者方的私钥;
D'j:用户j的私钥,一般表示接收者方的私钥;
L:包含实际签密者的t个发送者的身份集合,包括ID1,ID2,…,IDn;
L':包含实际签密者选择的n个接收者的身份集合,包括ID'1,ID'2,…,ID'n;
M:明文消息;
α:整数乘法群中随机选择的参数;
θ:用于加解密的对称密钥;
U:计算得到的部分密文;
ω:计算得到的参数,参与计算对称密钥;
σ1:使用对称加密算法加密的消息值;
σ2:使用参数R,ω,M和第五种哈希函数计算得到的签名值,是密文的一部分;
xj:使用接收者身份信息计算得到的哈希值;
yj:使用接收者公钥等参数计算得到的参数,与xj一同共构成n对数构造拉格朗日函数;
fj(x):拉格朗日插值函数,用于隐藏接收者的身份信息;
τj,1:含有接收者信息的参数,接收者可以用该参数获得解密的关键信息;
Tj:由τj1和yj计算得到的参数,作为密文的一部分,用于隐藏接收者的身份信息;
T:所有Tj之和;
Ri:对于不是实际签密者计算时在整数乘法群中随机选择的参数;
hi:非实际签密者使用参数σ1,Ri,U,T,L,计算得到的哈希值;
xS:实际签密者计算时在整数乘法群中随机选择的参数;
RS:实际签密者计算得到的参数;
hS:实际签密者使用参数σ1,Rs,U,T,L,计算得到的哈希值;
R:包含实际签密者在内的所有发送者的参数Ri和RS之和;
S1:包含实际签密者私钥等参数计算得到的值,是密文的一部分;
S2:使用第六种哈希函数计算得到的参数值,是密文的一部分;
C:密文;
δj:使用密文计算得到的解密参数;
ω':计算对称密钥的参数;
θ':利用密文恢复的对称密钥;
M':解签密得到的明文消息;
mod:求余操作符;
∩:表示两个集合的交集,即集合中相同的部分;
表示集合为空;
⊥:表示无效的符号;
∈:表示在一个集合中选取的符号;
∈R:表示在一个集合中任意选取的符号。
下面结合图1详细描述本发明具有多重安全属性的基于身份的多接收者环签密方法的具体步骤:
1.参数设置。
给定一个秘密参数k(k是一个长整数),由PKG(Private Key Generator,私钥生成中心)执行下列操作:
①设G1和G2分别是阶数为q>2k(q为大素数)的加法群和乘法群,P为G1的一个生成元;
②选择一个P0∈RG1,随机数s∈RZq *作为主密钥,设Ppub=sP为系统公钥;
③选择安全的对称加解密算法AES;
④选择双线性映射
⑤选择六个哈希函数:下式中|M|表示将要传输的明文消息的二进制长度,H1:{0,1}*→G1,H2:G2→{0,1}*,H3:{0,1}|M|×G1→RZq *,H4:{0,1}|M|×G1×G1×G1×{0,1}*→RZq *,H5:G1×G2×{0,1}|M|→{0,1}|M|,H6:{0,1}|M|×G1×G1×{0,1}*→G1;
⑥系统公开参数为
2.密钥提取。
输入用户i的身份IDi∈{0,1}*,PKG计算用户的公私钥:公钥Qi=H1(IDi)和私钥Di=sQi然后通过安全信道将私钥发送给用户;
3.匿名签密。
L'={ID'1,ID'2,…,ID'n}为实际签密者选择的n个接收者的身份集合。选择一个用户身份集合L={ID1,ID2,…,IDt},共同构造一个发送者环,该集合中包含实际签密者的身份IDS,即IDS∈L,且两个集合中无相同元素;输入系统公开参数params、消息M,签密者执行下列步骤完成该算法:
①加密部分:
a)选择随机参数α∈RZq *,计算参数U=αP,然后计算
θ=H2(ω) ⑴
得到θ为对称密钥,通过对称加密算法AES中的加密模块来加密消息σ1=Eθ(M);
b)使用n对数(x1,y1),(x2,y2),…,(xn,yn),构造拉格朗日函数fj(x)满足xj是fj(x)=yj的解,这里对于j=1,2,…,n都有xj=H3(ID'j),yj=α(P0+Q'j),其中Q'j为接收者ID'j的公钥;
c)对于j=1,2,…,n,计算fj(x)=∏1≤j≠j'≤n(x-xj)/(xj-xj')=τj,1+τj,2x+…+τj, nxn-1,其中τj,1,τj,2,…,τj,n∈Zq *;对于j=1,2,…,n,计算Tj=∑j'=1τj,j'yj,T=∑Tj。
②环签名部分:
a)对于非实际签密者i=1,2,…,t,i≠S,选择Ri∈RG1,计算
hi=H4(σ1,Ri,U,T,L) ⑵
b)对于实际签密者i=S,选择xS∈RZq *,计算RS=xSQS-∑i≠S(Ri+hiQi),hS=H4(σ1,RS,U,T,L),计算R=∑Ri;
c)计算
σ2=H5(R,ω,M) ⑶
S1=(xS+hS)DS ⑷
S2=αH6(σ1,R,T,L) ⑸
最后得到密文为C=<σ1,σ2,S1,S2,U,R1,…,Rt,T,T1,…,Tn,L>;
4.解签密。
输入密文C、系统公开参数params、接收者身份信息L'={ID'1,ID'2,…,ID'n},每个接收者ID'j使用自己的私钥D'j进行如下计算来解密密文C。
①计算
δj=T1+xjT2+…+(xj n-1mod q)Tn ⑹
其中xj=H3(ID'j);
②将⑹式代入⑺式,计算
通过公式⑴来恢复对称密钥θ'=H2(ω'),并使用对称加密算法AES中的机密模块进行解密计算M'=Dθ'(σ1),得到一个消息值M';
③将得到的消息M'带入公式⑶中,检查σ2=H5(R,ω',M')是否成立,若该等式成立,则认为M'=M;若不成立,则输出“⊥”,说明签名值是无效的;
5.公开验证。
接收者或者任意的第三方获得密文后,通过该算法验证发送者身份的可靠性。
③对于i=1,…,t,通过公式⑵,恢复出hi=H3(σ1,Ri,U,T,L),计算H=H6(σ1,R,T,L);
④利用⑷式、⑸式中得到的S1和S2判断下面两个公式是否成立:
若⑻式、⑼式皆成立,则认为签名者身份合法、可靠,签密值具有真实性;否则认为该签密无效。通过上述签密过程,发送者和接收者之间实现了安全认证和消息的保密通信,保证了消息在不安全的局域网环境中的匿名广播。