本发明属于信息安全技术领域,特别是指一种区块链代理盲签名生成方法。
背景技术:
随着网络技术的不断发展,数字签名被广泛应用。数字签名能够验证数据来源以及信息的完整性、真实性和签名的不可否认性,可以解决网络中伪造、抵赖、冒充和篡改等问题,也是目前应用最普遍、技术最成熟、可操作性最强的一种电子签名技术。但在一些如电子选举等特定场景下,当原始签名人在无法进行签名时,需要授权给代理人进行签名,而消息的拥有者不想让代理人知道消息的具体内容,签名者也只想让别人知道他签署过这条消息。在这种保护隐私需求的促进下,代理盲签名方案应运而生。
区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、可追溯、集体维护、公开透明等特点,这些特点保证了区块链的“诚实”与“透明”。也正是基于这些特点,区块链拥有丰富的应用场景。然而,在一些特定区块链应用场景下,如去中心化的电子选举等,需要保证匿名性,同时还需要在用户无法操作时能成功授权给代理者进行操作,以此来保障应用的正常运行。但是,现有技术中还缺乏这样的方法。
技术实现要素:
有鉴于此,本发明提出一种区块链代理盲签名生成方法,其能够在原始签名者无法签名时授权给代理签名者,同时保证代理签名者不知道签名的内容。
为了实现上述目的,本发明采用的技术方案为:
一种区块链代理盲签名生成方法,包括以下步骤:
s1.系统初始化:
(101)证书颁发机构选择阶为素数q的加法循环群
(102)给定安全参数k,证书颁发机构选择四个哈希函数
其中,
(103)密钥生成中心公开系统参数:
s2.密钥生成:
用户随机选择一个数
s3.授权:
原始签名者计算给代理签名者的授权qw:
qw=(so h1(mw,idp,qp))-1p1,
其中,mw为授权书,idp是代理签名者的身份信息;
s4.授权验证与代理盲签名密钥生成:
代理签名者验证等式e(p1,p2)=e(qw,h1(mw,,idp,qp)p2 qo;若等式成立,则接受该授权,并计算dop=spqw;
s5.代理盲签名生成:
(501)签名者产生随机数
(502)用户收到r后,随机选择α,
v′=α-1(v β)
并将v′发送给代理签名者;其中,m为待签名消息,||表示字符串拼接,
(503)代理签名者收到v′后,计算s′=(r v′)dop,并将s′发送给用户;
(504)用户收到s′后,计算出签名值s=αs′ βp1,并输出待签名消息m的签名(s,v,mw);
s6.签名验证:
验证者计算
和
判断等式
本发明采用上述技术方案所取得的有益效果在于:
1、目前的大部分带消息恢复的代理盲签名不具备签名的不可追踪性,代理签名者可以通过签名过程中传输的中间值,确定本次签名的用户信息,即代理签名者保留这些数据就能够确定这次签名是哪次签署的。而本发明能完成原始签名者对代理签名者的成功授权,同时使用盲因子对原始消息进行盲化,以及破坏签名与中间值之间的线性关系,使得用户能得到正确签名,验证者能恢复出原始消息并成功验证签名,但代理签名者无法知道原始消息,以此保证本方法的盲性和不可额追踪性。
2、本发明在区块链应用系统中引入代理盲签名实现授权与混淆服务,既可提供对不当行为的审计凭证,又可以保障原始消息对代理者不可见,从而保证用户的合法匿名性。
总之,本发明为一种适用于区块链应用的带消息恢复的代理盲签名生成方法,其在签名过程中使用盲因子破坏最终签名消息与中间值的线性关系,从而保证了本发明盲签名方案的盲性和不可追踪性。
附图说明
图1为本发明实施例中代理盲签名生成方法的签名流程示意图。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案做进一步的详细描述。
如图1所示,一种区块链代理盲签名生成方法,该方法由原始签名者orignalsigner,代理签名者proxysigner和用户user共同执行,在签名过程中,原始签名者orignalsigner首先对代理签名者proxysigner进行授权,授权成功之后,用户user对消息进行盲化,代理签名者proxysigner对盲化后的消息进行签名,然后用户user输出签名,最后验证者verifier在验证签名是否正确的同时可以恢复出原始消息。其包括以下步骤:
系统初始化:
该步骤由证书颁发机构ca执行,主要是生成整个代理盲签名方案的系统参数。具体方式为:
·给定安全参数k,ca选择四个哈希函数
·ca选择阶为素数q的加法循环
·密钥生成中心kgc公开系统参数:
密钥生成:
该步骤由用户user执行,用于用户生成自己的公私钥对。具体方式为:
·用户随机选择一个数
授权:
该步骤由原始签名者orignalsigner执行,用于生成给代理签名者proxysigner的授权qw。具体方式为:
·原始签名者orignalsigner计算qw=(so h1(mw,idp,qp))-1p1,其中,mw相当于授权书。
授权验证与代理盲签名密钥生成:
该步骤由代理签名者proxysigner执行,用于验证授权qw,若验证通过,则接受该授权。具体方式为:
·代理签名者proxysigner验证等式
e(p1,p2)=e(qw,h1(mw,,idp,qp)p2 qo。若等式成立,则接受该授权。
·代理签名者proxysigner计算dop=spqw
代理盲签名生成:
该步骤主要是生成待签名消息m的签名(s,v,mw)。在生成签名的过程中,用户user使用盲因子对消息m进行盲化,然后代理签名者proxysigner对盲化的消息签名,用户user的签名(s,v,mw)。具体方式为:
·签名者signer产生随机数
·用户收到r后,随机选择
v′=α-1(v β)
并将v′发送给代理签名者proxysigner;
·代理签名者proxysigner收到v′后,计算s′=(r v′)dop,并将s′发送给用户user;
·用户user收到s′后,计算出签名值s=αs′ βp1,并输出签名(s,v,mw)。
签名验证:
该步骤主要用于验证者verifier验证消息m签名(s,v,mw)的合法性。具体方式为:
·验证者verifier计算
和
判断等式
本发明由原始签名者、代理签名者和用户共同执行,在签名过程中,原始签名者首先对代理签名者进行授权,授权成功之后,用户对消息进行盲化,代理签名者对盲化后的消息进行签名,然后用户输出签名,最后验证者在验证签名是否正确的同时可以恢复出原始消息。
本发明能完成原始签名者对代理签名者的成功授权,同时使用盲因子对原始消息进行盲化,以及破坏签名与中间值之间的线性关系,使得用户能得到正确签名,验证者能恢复出原始消息并成功验证签名,但代理签名者无法知道原始消息,以此保证本发明方案的盲性和不可额追踪性。
1.一种区块链代理盲签名生成方法,其特征在于,包括以下步骤:
s1.系统初始化:
(101)证书颁发机构选择阶为素数q的加法循环群
(102)给定安全参数k,证书颁发机构选择四个哈希函数
(103)密钥生成中心公开系统参数:
s2.密钥生成:
用户随机选择一个数
s3.授权:
原始签名者计算给代理签名者的授权qw:
qw=(so h1(mw,idp,qp))-1p1,
其中,mw为授权书,idp是代理签名者的身份信息;
s4.授权验证与代理盲签名密钥生成:
代理签名者验证等式e(p1,p2)=e(qw,h1(mw,,idp,qp)p2 qo;若等式成立,则接受该授权,并计算dop=spqw;
s5.代理盲签名生成:
(501)签名者产生随机数
(502)用户收到r后,随机选择α,
v′=α-1(v β)
并将v′发送给代理签名者;其中,m为待签名消息,||表示字符串拼接,
(503)代理签名者收到v′后,计算s′=(r v′)dop,并将s′发送给用户;
(504)用户收到s′后,计算出签名值s=αs′ βp1,并输出待签名消息m的签名(s,v,mw);
s6.签名验证:
验证者计算
和
判断等式