代理盲签名(Proxy Blind Signature)
目录 |
代理盲签名是指代理签名和盲签名的结合,既具有代理签名的特性,又具有盲签名的特性。因而,一个好的代理盲签名方案应具有如下安全特性:
1、不可伪造性:只有指定的代理签名人能够产生有效代理盲签名,任何其他人包括原始签名人在内都不能产生有效的代理盲签名。
2、可验证性:签名接收者能够从代理盲签名中验证代理签名是否有效,并根据有效的代理签名相信原始签名人对所签消息的认同。
3、可鉴别性:任何人都可区分代理盲签名和正常的原始签名人的签名。
4、不可否认性:一旦代理签名人代替原始签名人产生了有效的代理盲签名,他就不能向任何人否认他的行为。
5、防止滥用:代理签名人的责任应当被具体确定,以确保代理密钥对只能用于创建代理盲签名。
6、盲性:所签消息对代理签名者来说是不可见的,并且签名公布后,代理人不能追踪签名。
代理盲签名是建立在代理签名理论和盲签名理论的基础上的,因此代理盲签名的构造一般要用到普通数字签名、代理签名或盲签名。代理盲签名的构造主要是以代理签名为基础,对代理签名体制进行自化,构造出代理盲签名体制,或者以己经存在的盲签名为基础,增加代理授权机制构造出代理盲签名体制。
一个完整的代理盲签名方案,一般包括密钥生成算法、授权代理算法、代理盲签名算法和签名验证算法四个算法,可设为:BPS=(BPKg, BPGr, BPSig, BPVf)、一个普通的数字签名方案一般包括三个算法:密钥生成算法、签名算法和验证算法,可表示为DS=(Ks,Sig, Vf)下面以一个普通的数字签名算法为例说明代理盲签名方案构造的一般方法,并指出构造代理盲签名应注意的问题:
假设方案的参与者有原始签名人A、代理签名人B和消息拥有者R;Xu,Yu,分别为用户U的私钥和公钥;消息的自化算法为Bli()。
1、密钥生成过程(由算法BPKg实现)
密钥生成算法BPKg同普通数字签名的密钥生成算法Ks完全一样,方案的各个参与方(原始签名人、代理签名人和消息拥有者)都按照密钥生成算法生成自己的密钥对,私钥秘密保存,公钥在系统内公布。
2、授权代理过程(由算法BPGr实现)
(l)原始签名人A选择随机数 r,利用其私钥XA、和随机数r计算出SA,并对授权书MW和SA执行签名,即S=Sig(MW ,SA),然后把签名结果S发送给代理签名人B。
(2)B收到签名消息S后,利用签名验证算法Vf验证签名的正确性,若正确,接受代理,否则,要求原始签名人重新授权或者拒绝代理。授权代理一旦成功,代理人B就通过S计算出自己的代理密钥S,并秘密保存,计算代理公钥YP并在系统内公开。
3、代理盲签名过程(由算法BPSig实现)
(1)消息拥有者R选择随机数r1,r2……rn作为自因子,并通过自化算法对要签名的消息m进行自化,即:m'=Bli(m,r1,r2……rn,r),然后把m'发送给B。
(2) B收到m’后,利用其代理私钥SP产生自消息m’的签名,即s=Sig(S_P,m' ),最后把s发送给R.
(3)消息拥有者R收到s后,利用s计算出盲签名s'。(m, m', s')就是消息m的代理盲签名。
(4)签名验证过程(由算法BPVf实现)
要证明消息m的代理盲签名的有效性,首先要验证代理是通过正确授权的,然后再通过签名验证算法BPVf验证签名的正确性。
利用普通的数字签名算法构造代理盲签名方案时要以代理签名和盲签名理论为基础,构造时要保证方案的严谨性,否则构造的代理盲签名就可能存在各种安全问题,没有实际应用的价值。因此,在设计一个代理盲签名方案时要注意以下几个问题:
(1)算法要力求简洁、高效、易实现。
(2)算法的设计要能避免各种可能的攻击,如原始签名人的攻击、签名接收者的攻击和一般性伪造攻击等。
(3)要满足签名的不可追踪性。