4.6 团体签名

    David Chaum在[330]中提出了下述问题:

    一个公司有几台计算机,每台都连在局域网上。公司的每个部门有它自己的打印机(也连在局域网上),并且只有本部门的人员才被允许使用他们部门的打印机。因此,打印前,必须使打印机确信用户是在那个部门工作的。同时,公司想保密,不可以暴露用户的姓名。然而,如果有人在当天结束时发现打印机用得太频繁,主管者必须能够找出谁滥用了那台打印机,并给他一个帐单。

    对这个问题的解决方法称为团体签名。它具有以下特性:

        ——只有该团体内的成员能对消息签名;

        ——签名的接收者能够证实消息是该团体的有效签名。

        ——签名的接收者不能决定是该团体内哪一个成员签的名;

        ——在出现争议时,签名能够被“打开”, 以揭示签名者的身份。

具有可信仲裁者的团体签名

    本协议使用可信仲裁者:

        (1)Trent生成一大批公开密钥/私钥密钥对,并且给团体内每个成员一个不同的唯一私钥表。在任何表中密钥都是不同的(如果团体内有n个成员,每个成员得到m个密钥对,那么总共有n*m个密钥对)。

        (2)Trent以随机顺序公开该团体所用的公开密钥主表。Trent保持一个哪些密钥属于谁的秘密记录。

        (3)当团体内成员想对一个文件签名时,他从自己的密钥表中随机选取一个密钥。

        (4)当有人想验证签名是否属于该团体时,只需查找对应公开钥主表并验证签名。

        (5)当争议发生时,Trent知道哪个公钥对应于哪个成员。

    这个协议的问题在于需要可信的一方。Trent知道每个人的私钥因而能够伪造签名。而且,m必须足够长以避免试图分析出每个成员用的哪些密钥。

    Chaum在论文中列举了许多别的协议[330],其中有些协议Trent不能够伪造签名,而另一些协议甚至不需要Trent。另一个协议[348]不仅隐藏了签名者的身份,而且允许新成员加入团体内。在[1230]中还描述了另一个协议。