代理签名的研究和发展
1、引言
在现实世界里,人们经常需要将自己的某些权力委托给可靠的代理人,让代理人代表本人去行使这些权力。在这些可以委托的权力中包括人们的签名权。委托签名权的传统方法是使用印章,因为印章可以在人们之间灵活地传递。数字签名是手写签名的电子模拟,但是数字签名不能提供代理功能。
1996年,Mambo、Usuda和Okamoto提出了代理签名的概念,给出了解决这个问题的一种方法。由于代理签名在实际应用中起着重要作用,所以代理签名一提出便受到广泛关注,国内外学者对其进行了深入的探讨与研究。
2、代理签名的概念、要求
代理签名方案应满足以下六条基本性质:
不可伪造性(unforgeabmty) 除了原始签名者,只有指定的代理签名者能够代表原始签
名者产生有效代理签名。
可验证性(verifiability) 从代理签名中,验证者能够相信原始签名者认同了这份签名消
息。
不可否认(undeniability) 一旦代理签名者代替原始签名者产生了有效的代理签名,他
就不能向原始签名者否认他所签的有效代理签名。
可区分性(distinguishabmty) 任何人都可区分代理签名和正常的原始签名者的签名。
代理签名者的不符合性(proxy signer’s deviation) 代理签名者必须创建一个能检测到是代理签名的有效代理签名。
可识别性(identiflability) 原始签名者能够从代理签名中确定代理签名者的身份。
为了体现对原始签名者和代理签名者的公平性,Le、Kim和Kim对其中的一些性质给出了更强的定义:
强不可伪造性(strong unforgeability) 只有指定的代理签名者能够产生有效代理签名,原始签名者和没有被指定为代理签名者的第三方都不能产生有效代理签名。
强可识别性(strong identifiability) 任何人都能够从代理签名中确定代理签名者的身份。
强不可否认性(strong undeniability) 一旦代理签名者代替原始签名者产生了有效的代理签名,他就不能向任何人否认他所签的有效代理签名。
防止滥用(preventionofmisuse) 应该确保代理密钥对不能被用于其它目的。为了防止滥用,代理签名者的责任应当被具体确定。
按照上述性质去检查,现有的代理签名方案几乎都有缺点。因此,设计一个安全、有效、实用且具有不可否认性的代理签名方案有待进一步研究。
2、代理签名的分类
Mambo、Usuda和Okam oto把代理签名分为三大类:完全代理签名、部分代理签名和具有证书的代理签名。
完全代理签名(full delegation) 在完全代理签名中,原始签名者直接把自己的签名密钥通过安全信道发送给代理签名者,他们能产生相同的签名。由于代理签名者所产生的签名与原始签名者所产生的签名是不可区分的, 所以不能制止可能的签名滥用。完全代理签名也不具有可识别性和不可否认性。在很多情况下,原始签名者过后不得不修改他的签名密钥。因此这种签名不适用于商业应用。
部分代理签名(partial delegation) 在部分代理签名中,原始签名者使用自己的签名密钥k产生代理签名密钥s,并把s以安全的方式发送给代理签名者。出于安全考虑,要求从代理签名密钥s不能求出原始签名者的密钥k。使用这种方法有两种类型的方案:
代理非保护代理签名(proxy-unprotected proxy signature) 除了原始签名者,指定的代理签名者能够代替原始签名者产生有效代理签名。但是,没有指定为代理签名者的第三方不能产生有效代理签名。
代理保护代理签名(proxy-protected proxy signature) 只有指定的代理签名者能够代替原始签名者产生有效代理签名。但是,原始签名者和第三方都不能产生有效代理签名。
在部分代理签名中,代理签名者以s为签名密钥按普通的签名方案产生代理签名,可以使用修改的验证方程来验证代理签名的有效性。因为在验证方程中有原始签名者的公钥,所以验证者能够确信代理签名是经原始签名者授权的。人们根据不同的需要提出了各种各样的部分代理签名。例如,门限代理签名、不可否认代理签名、多重代理签名、具有接收者的代理签名、具有时戳的代理签名和具有证书的部分代理签名,极大地丰富和发展了部分代理签名。
  部分代理签名具有可区分性等性质。但在一些部分代理签名中,原始签名者也能产生代理签名,这对代理签名者来说是不公平的。这涉及不可否认问题,不可否认性是指原始签名者和代理签名者不能欺诈性地否认他产生的签名。在实践中,不可否认性是非常重要的。例如,当签名滥用发生争议时,权威机构必须确定谁是代理签名的真正签名者。因此,具有不可否认性的部分代理签名是商业应用的理想选择。
总之,部分代理签名和具有证书的代理签名比完全代理签名更安全。部分代理签名与具有证书的代理签名相比具有较高的处理速度。而具有证书的代理签名可以毫无修改地使用普通签名方案来执行签名,并且可以适当地限制所要签的文件,例如,证书可以表明授权的有效期,但是,部分代理签名一般不具有这个性质。为了解决这个问题,部分代理签名要求一个
附加的代理撤销协议,通过此协议原始签名者可以撤销代理签名者的签名能力或已经产生的代理签名。具有证书的部分代理签名具有部分代理签名和具有证书的代理签名的双方的优点。一般说来,具有证书的部分代理签名提供了可接受的执行效率和合理的授权规则,例如,代理签名的有效期,原始签名者的身份,代理签名者的身份等信息。
3、几种典型的代理签名
3.1 MUO代理签名方案
1996年M.Mambo.K.Usuda和E.Okamoto提出了代理签名概念,基于E1Gamal签名体制设计了一个代理签名方案。设P是一个大素数,q是p-1的一个素因子,g是一个q阶生成元。原始签名方的私钥是xoZq,相应的公钥是yo=mod p。MUO代理签名方案包括以下过程
(1)代理授权过程:
①代理密钥的生成:原始签名方0随机选择rZq,计算:R=gr mod p,=xo+rR mod q
②代理密钥的发送:原始签名方0将(R,) 发送给代理签名方P。
③代理密钥的验证:代理签名方P检验等式。若等式成立,则(R,) 是有效的代理签名密钥。否则,拒绝接受原始签名方0的代理授权。
(2)代理签名产生过程:代理签名方P使用代理签名密钥(R,)对待签消息M签名。P采用签名算法PSigss,产生签名(M,PSigps(M,PSigps(M, ),R)。
(3)代理签名的验证过程:验证者首先计算代理签名公钥,然后运行验证算法PVrfps(,M,PSigps((M),R)若验证算法输出1,则对消息M的代理签名有效;否则,此签名无效。
MUO代理签名是一个部分代理签名,具有下列特点:方案不能给代理签名方P提供保护。原始签名方0可以产生一个代理密钥,对任意消息签名,然后声称这个签名是代理签名方P产生的。代理签名中未使用代理签名方的身份信息,这是一个非指定代理签名方的签名方案。代理签名方能够转移代理权,让其他人充当代理签名方。此方案不具有不可否认性。代理签名方直接使用原始签方产生的代理签名密钥签名。原始签名方和代理签名方之间需要安全通道。
3.2 KPW 代理签名方案
1997年s.Kim.s.Park和D.Won提出并设计了一个带有证书的部分代理签名方案。系统参数p和q与MUO代理签名方案中的参数相同。g是的生成元,h()是一个公开的单向hash函数。原始签名方0的私钥是xoZq ,相应公钥是yo=mod p。代理签名方P的私钥是xpZq,相应的公钥是yP=mod p。KPW代理签名方案包括以下内容:
(1)代理授权过程:
①代理授权生成过程:原始签名方0产生证书mw证书记载了原始签名方0的身份,代理签名方P的身份,以及其他安全要求方面的信息。原始签名方0随机选择rZq,计算:R=gr mod p
②代理授权传送过程:原始签名方0通过安全通道将(R,ps制作印章,mW )发送给代理签名方P。
③代理授权验证过程:代理签名方P检验等式。若等式成立,代理签名方P接受原始签名方0的代理授权;否则,代理签名方P拒绝原始签名方0的代理授权。
(2)代理密钥生成过程:
代理签名方P计算代理签名密钥(R,):
(3)代理签名产生过程:
代理签名方P使用代理签名密钥(R,),通过签名算法PSigps,产生消息M的代理签名(M,PSigps(M,PSigps(M, ),R,mW).
(4)代理签名验证过程:
验证者首先计算代理签名公钥,然后运行验证算法PVrfps(,M, PSigps((M, ),R, mW)。若验证算法输出1,则对消息M的代理签名有效;否则,此签名无效。
KPW代理签名方案是一个部分代理签名,且是一个指定代理签名方的签名方案,因为代理签名中使用了代理签名方的身份信息。此方案具有不可否认性。KPW代理签名方案中,原始签名方和代理签名方之间实际上不需要安全通道。
4 盲代理签名体制
4.1基本性质
盲代理签名体制(Blind Proxy SignatureScheme)是指在一个代理签名中,原始签名人在得到代理签名时,不能根据代理签名确定出代理签名人的身份的一种签名体制。盲代理签名有关广泛的应用基础。如在电子选举中利用盲代理签名可实现选举的保密性。通常盲代理签名满足如下几个性质:
(1)任何人都可以区别盲代理签名、代理签名和普通数字签名:
(2)除了代理签名人外,任何人都不能生成有效的盲代理签名:
(3)验证者可以方便地验证盲代理签名的有效性;
(4)原始签名人无法根据盲代理签名确定出代理签名人的身份;
(5)代理签名人不能否认他创立的且被认可的盲代理签名。
4.2 基于DSA变形的盲代理签名方案
假设A委托B对消息M进行盲代理签名。x是用户A的私钥,y=gx(modp)是用户A的公钥。Sign是数字签名生成算法,Ver是数字签名的验证算法,签名过程如下:
(1)委托过程
(a)A随机生成一个数kZp ,计算K=gk(modp) ,要求gcd(K,q)=1,并将K发送至B ;
(b)B随机选择Zq ,计算R=,要求gcd(R,q)=1;
(c)A计算,并将发送至B;
(d)B计算,并验证
(2)代理签名过程