群签名方案是一种类似于数字签名的密码原语,其目的在于允许用户代表群签名消息,并在该群内保持匿名。也就是说,看到签名的人可以用公钥验证该消息是由该群成员发送的,但不知道是哪一个。同时,用户不能滥用这种匿名行为,因为群管理员可以通过使用秘密信息(密钥)来消除(恶意)用户的匿名性。例如,大公司里的雇员可以使用群签名方案对消息进行签名,其中验证者知道消息是由他们公司里的雇员签名的就足够了,不需要知道是由哪个特定雇员签名的;该方案的另一个应用:通过识别卡(keycard)认证进入受限区域,在受限区域中不适合跟踪单个成员的移动,但必须确保只有该群的成员才能进入。
群签名方案的关键是“群管理员”,它负责添加群成员,并能够在发生争议时揭示签名者身份。在一些系统中,添加成员和撤销签名匿名性的责任被分开,并分别赋予给群管理员和撤销管理员。虽然学术界已经提出了许多群签名方案,但所有方案都应该满足基本的安全性要求
历史
1991年,Chaum 和 Heyst首次提出群签名的概念。从那时起,越来越多的协议被引入,并在这个模型上加入了类似于数字签名的非伪造性的概念,当然也包括更具体的概念,如废除。直到Bellare,Micciancio和Warinschi才提出了一个更精确的正式模型,这个模型如今被用于群签名方案的工程实现
定义
群签名方案实现一般由下列四个可行的算法组成:初始化,签名,验证和打开。
初始化过程:系统参数选取,输入安全参数λ和N,返回公钥gpk和私钥gsk以及私钥对\mathsf{gsk}[d],对应于用户d的私钥和打开密钥ok。
签名过程: 输入密钥\mathsf{gsk}[d]和消息m,返回签名σ。
验证过程: 以公钥gpk和消息m,签名σ作为输入,以布尔值返回验证结果
打开过程: 以打开密钥 ok,消息m,签名 σ作为输入,返回用户身份d或者错误结果错误。
真实的消息签名的验证将返回true,如下所示:
\forall m, (gpk, gsk) \gets Init(\lambda, N) : \mathsf{Verify}\left( gpk, m, \mathsf{Sign}(\mathsf{gsk}[d], m) \right) = \mathsf{true}
安全性要求
- 完整性: 群成员的有效签名始终验证正确,无效签名则始终验证失败。
- 不可伪造性: 只有群成员才能创建有效的群签名。
- 匿名性: 给定一个群签名后,如果没有群管理员的密钥,则无法确定签名者的身份,至少在计算上是不可行的。
- 可跟踪性: 给定任何有效的签名,群管理员应该能够确定签名者的身份。 (这也暗示了只有群管理员才能破坏其匿名性)
- 不关联性: 给定两个消息及其签名,我们无法判断签名是否来自同一签名者。
- 无框架: 即使所有其他群成员相互串通(包括和管理员串通),他们也不能为非群成员伪造签名。
- 不可伪造的跟踪验证: 撤销管理员不能错误地指责签名者创建了他本没有创建的签名。
- 抗合谋攻击: 即使所有群成员相互串通,他们也不能产生一个合法的不能被跟踪的群签名。
最新研究
目前最新的群签名方案技术包括:ACJT 2000、BBS04和BS04(在CCS中)。(非完整列表)
Boneh,Boyen和Shacham于2004年发表的 短群签名 描述了一种基于双线性映射的新型群签名方案。。
参考文献
扩展阅读
*
*
*
*
*
评论 (0)