5.6.4 群签名
群签名又称团体签名,由Chaum和van Heijst在1991年提出。它可以应用于群体中的任意一个成员以匿名的方式代表整个群体对消息进行签名,而签名的验证可以是公开的且可以利用单个群公钥来验证。例如,在投标过程中,所有的投标公司组成一个群,且以群签名方式对投标书进行签名,所以无法从签名上辨别出是哪家投标公司,但是当标书被选中之后,可以对签名进行验证从而辨识出是哪家公司中了标。群签名具有以下性质。
性质1:只有预先规定的群内成员才能生成合法的数字签名。
性质2:任何人都可以验证签名的有效性,但是不可能由签名识别出该签名出自哪个群内成员。
性质3:如果发生争端,无论是否有群成员的协助,都可以打开签名以追查签署文件的群成员的身份。
下面来介绍一个简单的群签名协议,该协议的实施需要一个可信的第三方,它将在密钥生成和解决纠纷时起作用。
(1)第三方产生n×m个公钥私钥对,然后分给群内每个成员,并把所有的公钥以随机的顺序公开作为群的公钥表。在此过程中,第三方记录下每个群内成员与密钥对的对应关系。
(2)当群内某一成员需要签名时,他随机从自己的m个私钥中选取一个进行签名。
(3)验证签名时,利用该群的公钥表进行验证。
(4)发生争端时,由于第三方知道密钥对和群成员的对应关系,所以它可以识别出该签名具体出自哪位成员。
例5-11 假设由两个成员X和Y组成一个群,仲裁者为每个成员产生两个公钥私钥对,即
(1)公钥e=17,模n=153,私钥为d=113;
(2)公钥e=5,模n=119,私钥为d=77;
(3)公钥e=17,模n=1 335,私钥为d=157;
(4)公钥e=3 533,模n=11 513,私钥为d=6 597;
其中成员X分配(1)和(2),成员Y分配(3)和(4)。
利用RSA公钥密码体制,若X选择发送方的公钥e=17,模n=153来发送消息m=7,则发送方的签名为
s=md mod n=7113 mod 153=24
接收方知道公钥和模,因此可以验证签名
m′=se mod n=2417 mod 153=7=m
所以签名有效。
当发生争端时,仲裁者根据公钥表可以得知,该消息的签名利用的公私钥对是(1),因此可以判定签名出自X。