本发明属于信息安全技术领域,尤其涉及一种无证书部分盲签名方法和装置。
背景技术:
盲签名是签名者在不知道签名请求者所请求消息内容情况下完成的一种签名,这种特性称为盲性。盲签名不仅具有数字签名所具有的内容完整性、交易的不可抵赖性和双方身份的真实性等性质,还可以利用盲性很好地保护用户隐私。在盲签名中签名者对签名消息一无所知,易造成签名被恶意的请求者非法使用。随后,部分盲签名的概念被提出,其将消息分为盲化部分和公共部分,因此部分盲签名在保证用户隐私的同时又对签名内容部分可控。
在基于身份的密码体制中,密钥生成中心(Key Generation Center,KGC)知道所有用户的私钥,可以伪造任何用户的签名,这种问题被称为密钥托管问题。为了解决此问题,2003年Al-Riyam和Paterson提出了无证书公钥密码学(Certificateless Public Key Cryptography,CL-PKC)的概念。具体可参见文献:Al-Riyami S S,Paterson K G.Certificateless Public Key Cryptography[J].Lecture Notes in Computer Science,2003,2894(2):452-473.以下简称文献1。在CL-PKC中,密钥生成中心为用户生成部分私钥,而用户的私钥是由部分私钥和自己随机选择的秘密值组成,从而解决密钥托管问题。将无证书公钥密码学和盲签名相结合称为无证书的盲签名(Certificateless Blind Signature,CL-BS),将CL-BS用于电子商务中既可以保护用户的隐私,又可以避免PKI中的证书管理和ID-PKC中的密钥托管问题。为了更好地应用到电子现金系统中,将无证书公钥密码学和部分盲签名相结合称为无证书的部分盲签名(Certificateless Partially Blind Signature,CL-PBS)。
现有的已经有发表相关无证书的部分盲签名的相关文献,如:
Cheng L,Wen Q.Cryptanalysis and improvement of a certificateless partially blind signature[J].IET Information Security,2015,9(6):380-386.以下简称文献2。
Zhang L,Zhang F,Qin B,et al.Corrigendum:"Provably-secure electronic cash based on certicateless partially-blind signatures"[J].Electronic Commerce Research & applications,2011,10(1):545-552.以下简称文献3。
文献2指出文献3提出的CL-PBS方案不能抵抗恶意的用户替换签名者公钥的攻击并提出了改进方案。但通过对改进方案分析,发现其并不能防恶意的用户篡改协商公共信息攻击。
技术实现要素:
本发明实施例提供一种无证书部分盲签名方法,旨在解决现有的无证书部分盲签名中协商公共信息安全性低的问题。
本发明实施例是这样实现的,一种无证书部分盲签名方法,包括:
建立一个公开系统参数params={G1,G2,P,e,g,H0,H1,H2,Ppub};其中,l为安全参数,且满足素数q>2l,{G1,+}是阶为q的循环加法群,P为群G1中的任意生成元;{G2,·}是阶为q的循环乘法群,g为生成元;双线性对映射e:G1×G1→G2,g=e(P,P)∈G2;hash函数:H1:{0,1}*→G1,KGC选取s为主密钥,Ppub=sP为公钥;
签名者提取其私钥为公钥为
签名者随机选择并计算z=H0(c)和R=rP,并把R发送给签名请求者;
签名请求者接受到R后,随机选择盲化因子并计算z=H0(c)、h′=H2(m,z,y),h=α-1(β-h′),并把h发送给签名者;
签名者接收到h后,计算并把S发送给签名请求者;
签名请求者进行脱盲工作,计算S′=αS,得到消息m和协商消息c的签名为σ=(y,h′,S′);
验证者进行签名验证。
优选地,所述建立一个公开系统参数params={G1,G2,P,l,q,e,H1,H2,H3,Ppub}的具体步骤为:
根据安全需要,确定安全系数l和素数q的大小,利用椭圆曲线构造满足双线性映射e:G1×G1→G2的循环加法群{G1,+}和循环乘法群{G2,·};
选择无碰撞杂凑函数H1:{0,1}*→G1,
从mod q的整数乘法群中随机选取一个整数s作为私钥生成中心KGC的主密钥,并计算Ppub=sP作为其对应的公钥;
公开系统参数{G1,G2,P,e,g,H0,H1,H2,Ppub},并将s作为主密钥值保存。
优选地,所述签名者提取其私钥为公钥为的具体步骤为:
输入系统参数params,签名者的身份IDB,KGC计算并把部分私钥发送给签名者;
根据系统参数params和签名者的身份IDB,签名者随机选择作为其秘密值;
根据系统参数params、签名者的身份IDB、部分私钥和秘密值得到签名者的私钥为
根据系统参数params、签名者的身份IDB和秘密值得到签名者的公钥
优选地,所述验证者进行签名验证的具体步骤包括:
验证者接收到签名者的消息-签名对(m,c,σ=(y,h′,S′));
计算z=H0(c),
验证等式h′=H2(m,z,y′)是否成立,如果是,验证者就相信(m,c,σ=(y,h′,S′))是由签名者进行有效的盲签名;
否则无效。
本发明的实施例还提供一种无证书部分盲签名装置,包括:
系统参数建立单元,用于建立公开系统参数params={G1,G2,P,e,g,H0,H1,H2,Ppub};
提取单元,用于签名者提取私钥及公钥;
承诺单元,用于随机选择并计算z=H0(c)和R=rP,并把R发送给签名请求者;
盲化单元,用于接受到R后,随机选择盲化因子并计算z=H0(c)、h′=H2(m,z,y),h=α-1(β-h′),并把h发送给签名者;
部分盲签名单元,用于接收到h后,计算并把S发送给签名请求者;
脱盲单元,用于进行脱盲工作,计算S′=αS,得到消息m和协商消息c的签名为σ=(y,h′,S′);
验证单元,用于进行签名验证。
优选地,所述系统参数建立单元包括:
构建模块,用于确定安全系数l和素数q的大小,利用椭圆曲线构造满足双线性映射e:G1×G1→G2的循环加法群{G1,+}和循环乘法群{G2,·};
函数选择模块,用于选择无碰撞杂凑函数H1:{0,1}*→G1,
密钥模块,用于从mod q的整数乘法群中随机选取一个整数s作为私钥生成中心KGC的主密钥,并计算Ppub=sP作为其对应的公钥,并公开系统参数{G1,G2,P,e,g,H0,H1,H2,Ppub},并将s作为主密钥值保存。
优选地,所述提取单元包括:
部分私钥生成模块,用于根据系统参数params,签名者的身份IDB,KGC计算并把部分私钥发送给签名者;
秘密值生成模块,用于根据系统参数params和签名者的身份IDB,随机选择作为其秘密值;
私钥模块,用于根据系统参数params、签名者的身份IDB、部分私钥和秘密值得到签名者的私钥为
公钥模块,用于根据系统参数params、签名者的身份IDB和秘密值得到签名者的公钥
优选地,所述验证单元包括:
接收模块,用于接收签名请求者发送的消息-签名对(m,c,σ=(y,h′,S′));
计算模块,用于计算z=H0(c),
验证模块,用于验证等式h′=H2(m,z,y′)是否成立,如果是,验证者就相信(m,c,σ=(y,h′,S′))是由签名者进行有效的盲签名,否则无效。
本发明的技术方案,由于由于签名者把协商信息插入到计算中,其中z=H0(c),通过证明签名方案的正确性时,签名者插入协商信息z=H0(c)不仅对应到签名请求者C进行盲化签名插入的协商信息同时也与验证等式中用到的插入协商协商信息相对应,因此,本发明的方案在协商信息篡改攻击下是安全的,有效解决了无证书部分盲签名中因协商公共信息篡改而带来的安全性问题。
附图说明
图1是本发明实施例提供的一种无证书部分盲签名方法流程示意图;
图2是本发明实施例提供的一种无证书部分盲签名方法流程简图;
图3是本发明实施例提供的一种无证书部分盲签名装置结构框图;
图4是本发明的系统参数建立单元的结构框图;
图5是本发明的提取单元的结构框图;
图6是本发明的验证单元的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了更有效的理解本发明的技术方案,我们简单描述一下上述文献2中的部分盲签名的过程:
首先建立一个建立一个公开系统参数params={G1,G2,P,l,q,e,H0,H1,H2,Ppub}。
给定安全参数l,且满足素数q>2l,{G1,+}是阶为q的循环加法群,P为群G1中的任意生成元;{G2,·}是阶为q的循环乘法群,g为生成元;双线性对映射e:G1×G1→G2,g=e(P,P)∈G2;hash函数:KGC选取s为主密钥,Ppub=sP为公钥,系统参数params={G1,G2,P,l,q,e,H0,H1,H2,Ppub}。
然后进行密钥提取算法:
部分私钥生成算法:输入系统参数params,签名者的身份IDB,KGC计算并把部分私钥发送给签名者。
设置秘密值算法:输入系统参数params和签名者的身份IDB,签名者随机选择作为其秘密值。
设置私钥算法:算法输入系统参数、签名者的身份IDB、部分私钥和秘密值输出签名者的私钥为
设置公钥算法:算法输入系统参数、签名者的身份IDB和秘密值输入签名者的公钥
然后再进行部分盲签名生成算法:
假设m为签名请求者请求签名的信息,c为签名者与签名请求者协商的公共信息,签名者用其私钥和公钥与签名请求者进行消息m和公共协商信息c签名。具体过程如下:
a)承诺。签名者随机选择并计算z=H0(c)和R=rzP,并将R发送签名请求者。
b)盲化。签名请求者接受到R后,随机选择盲化因子并计算z=H0(c),R′=γR,h=γ-1(β-h′),并把h发送给签名者。
c)部分盲签名。接受到h后,签名者只需计算并把S发送签名请求者。
d)脱盲。签名请求者计算S′=γS+αPpub。
这一系列的交互后,签名请求者得到对消息m和协商信息c的签名为σ=(R′,h′,S′)。
最后进行签名验证算法:
验证者接受到由签名者对消息m和协商信息c的签名为σ=(R′,h′,S′)后,先计算z=H0(c),最后验证等式是否成立。如果成立,则认为消息-签名对(m,c,σ=(R′,h′,S′))是签名者合法的签名。否则无效。
以上方案会产生安全攻击,具体攻击分析如下:
因为是对方案进行将协商信息c篡改为c′攻击,签名者用其私钥和公钥与签名请求者进行消息m和公共协商信息c签名,签名请求者将协商信息c篡改为c′:
a)承诺。签名者随机选择并计算z=H0(c)和R=rzP,并将R发送签名请求者。
b)盲化。签名请求者接受到R后,随机选择盲化因子计算z=H0(c),z′=H0(c′)、R′=γR,R″=z-1z′R′,h=γ-1(β-h′)和h″=zz′-1h,并把h″发送给签名者。
c)部分盲签名。接受到h″后,签名者只需计算并把S发送签名请求者。
d)脱盲。签名请求者计算S′=z-1z′S,S″=γS′+αPpub。
这一系列的交互后,签名请求者得到对消息m和协商信息c′的签名为σ=(R″,h′,S″)。
签名请求者对消息m和协商信息c′的签名为σ=(R″,h′,S″),需要计算z′=H0(c′)验证等式是否成立。如果成立,则为有效的签名,即篡改协商信息c′成功。在这个验证过程中,其实只需要验证等式是否成立;
即在未经签名者同意的前提下,签名请求者篡改公共信息后所形成的签名也能通过验证等式验证,故验证者相信σ=(R″,h′,S″)是签名者对消息m和协商消息c′的有效签名。
结合图1及图2所示,本发明的实施例提供一种无证书部分盲签名方法,包括以下步骤:
步骤S100,建立一个公开系统参数params={G1,G2,P,e,g,H0,H1,H2,Ppub};
其中,l为安全参数,且满足素数q>2l,{G1,+}是阶为q的循环加法群,P为群G1中的任意生成元;{G2,·}是阶为q的循环乘法群,g为生成元;双线性对映射e:G1×G1→G2,g=e(P,P)∈G2;hash函数:H1:{0,1}*→G1,KGC选取s为主密钥,Ppub=sP为公钥;
步骤S200,签名者提取其私钥为公钥为
步骤S300,签名者随机选择并计算z=H0(c)和R=rP,并把R发送给签名请求者;
步骤S400,签名请求者接受到R后,随机选择盲化因子并计算z=H0(c),R′=αR,h′=H2(m,z,y),h=α-1(β-h′),并把h发送给签名者;
步骤S500,签名者接收到h后,计算并把S发送给签名请求者;
步骤S600,签名请求者进行脱盲工作,计算S′=αS,得到消息m和协商消息c的签名为σ=(y,h′,S′);
步骤S700,验证者进行签名验证。
优选地,在所述步骤S100中,所述建立一个公开系统参数params={G1,G2,P,e,g,H0,H1,H2,Ppub}的具体步骤为:
步骤S110,根据安全需要,确定安全系数l和素数q的大小,利用椭圆曲线构造满足双线性映射e:G1×G1→G2的循环加法群{G1,+}和循环乘法群{G2,·};
步骤S120,选择无碰撞杂凑函数H1:{0,1}*→G1,
步骤S130,从mod q的整数乘法群中随机选取一个整数s作为私钥生成中心KGC的主密钥,并计算Ppub=sP作为其对应的公钥;
步骤S140,公开系统参数{G1,G2,P,e,g,H0,H1,H2,Ppub},并将s作为主密钥值保存。
进一步地,所述步骤S200具体包括:
步骤S210,输入系统参数params,签名者的身份IDB,KGC计算并把部分私钥发送给签名者;
步骤S220,根据系统参数params和签名者的身份IDB,签名者随机选择作为其秘密值;
步骤S230,根据系统参数params、签名者的身份IDB、部分私钥和秘密值得到签名者的私钥为
步骤S240,根据系统参数params、签名者的身份IDB和秘密值得到签名者的公钥
进一步地,所述步骤S700中,具体包括:
步骤S710,验证者接收到签名者的消息-签名对(m,c,σ=(y,h′,S′));
步骤S720,计算z=H0(c),
步骤S730,验证等式h′=H2(m,z,y′)是否成立,如果是,验证者就相信(m,c,σ=(y,h′,S′))是由签名者进行有效的盲签名;
否则无效。
由于签名者把协商信息插入到计算中,其中z=H0(c),通过证明签名方案的正确性时,发现签名者插入协商信息z=H0(c)不仅对应到签名请求者进行盲化签名插入的协商信息同时也与验证等式中用到的插入协商协商信息相对应。故本方案可以防公共协商信息篡改攻击。
如图3所示,本发明的实施例还提供一种无证书部分盲签名装置,包括:
系统参数建立单元100,用于建立公开系统参数params={G1,G2,P,e,g,H0,H1,H2,Ppub};
提取单元200,用于签名者提取私钥及公钥;
承诺单元300,用于随机选择并计算z=H0(c)和R=rP,并把R发送给签名请求者;
盲化单元400,用于接受到R后,随机选择盲化因子并计算z=H0(c)、h′=H2(m,z,y),h=α-1(β-h′),并把h发送给签名者;
部分盲签名单元500,用于接收到h后,计算并把S发送给签名请求者;
脱盲单元600,用于进行脱盲工作,计算S′=αS,得到消息m和协商消息c的签名为σ=(y,h′,S′);
验证单元700,用于进行签名验证。
如图4所示,进一步地,所述系统参数建立单元100包括:
构建模块101,用于确定安全系数l和素数q的大小,利用椭圆曲线构造满足双线性映射e:G1×G1→G2的循环加法群{G1,+}和循环乘法群{G2,·};
函数选择模块102,用于选择无碰撞杂凑函数H1:{0,1}*→G1,
密钥模块103,用于从mod q的整数乘法群中随机选取一个整数s作为私钥生成中心KGC的主密钥,并计算Ppub=sP作为其对应的公钥,并公开系统参数{G1,G2,P,e,g,H0,H1,H2,Ppub},并将s作为主密钥值保存。
如图5所示,进一步地,所述提取单元200进一步包括:
部分私钥生成模块201,用于根据系统参数params,签名者的身份IDB,KGC计算并把部分私钥发送给签名者;
秘密值生成模块202,用于根据系统参数params和签名者的身份IDB,随机选择作为其秘密值;
私钥模块203,用于根据系统参数params、签名者的身份IDB、部分私钥和秘密值得到签名者的私钥为
公钥模块204,用于根据系统参数params、签名者的身份IDB和秘密值得到签名者的公钥
如图6所示,更进一步地,所述验证单元700包括:
接收模块701,用于接收签名请求者发送的消息-签名对(m,c,σ=(y,h′,S′));
计算模块702,用于计算z=H0(c),
验证模块702,用于验证等式h′=H2(m,z,y′)是否成立,如果是,验证者就相信(m,c,σ=(y,h′,S′))是由签名者进行有效的盲签名,否则无效。
下面,将本发明中的技术方案与上述已存在的CL-PBS方案进行计算效率的比较,其中包括文献2及文献3中的方案,其中文献2是对文献3存在公钥替换攻击提出的改进方案。使用嵌入度为2的超奇异椭圆曲线E(FP):y2=x3+x,其中q=2159+217+1为160比特素数,p为满足条件p+1=12qr的512比特素数。硬件平台:CPU为CPIV 3-GHZ,512MB内存和Windows XP操作系统。表1列出密码方案中耗时大的基本单元运算效率。
表1方案中基本单元运算效率(单位为:毫秒)
表2列出了各方案中具体耗时运算的计算数量,主要比较签名者、签名请求者和验证者在方案构建过程中计算量。
表2各种方案的计算性能比较(单位:毫秒)
综上,可以明显得到本发明所构造的方案具有更高的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。