C-L签名即为Camenisch-Lysyanskaya签名,由作者的名字命名,于2001年提出。原论文《A Signature Scheme with Efficient Protocols》,链接:https://link.springer.com/chapter/10.1007%2F3-540-36413-7_20
C-L签名可用于群签名或聚合签名的场景中,可以提高签名的匿名性,并降低签名的计算复杂度。C-L签名也是一种适用于零知识证明的签名方案,能够对一组数据进行签名,并且能够体现这些被证明组件的关系。这样的性质恰好与零知识证明所需的性质契合。
介绍C-L签名之前,首先需要介绍双线性群的概念。
设和
是阶为素数
的乘法循环群,
是
的一个生成元。双线性群是满足下列性质的一个映射
:
- 双线性性。对任意的
,有
。
- 非退化性。
。
- 可计算性。对所有的
,存在有效的算法计算
与大多签名机制类似,C-L签名包括三个步骤:KeyGen,Sign和Verify。
密钥生成算法:设
为阶素数
(长度为
bit)的双线性群,
。随机选择
,
,输出私钥
,公钥
。
签名算法:输入消息
和私钥
,选择一个随机数
,计算
,
,输出签名
。
验证算法:输入消息M的签名
,利用公钥进行验证。如果
,并且
,则输出1,否则输出0。
Why it works?
因为
因此,
类似地,
因此,
为了签名一组消息,其中
,
为该组消息中最长消息的长度,即消息空间的二进制串长度,任何消息均在
上。强RSA的模为
,其中
为安全素数,模的长度为
。在二次剩余群
中随机选择元素
作为公钥,
作为私钥,随机选择
,其中
且
,
,这里
为一个安全参数。计算
满足
,所得三元组
为消息
的CL签名。
验证签名是,须要验证:
;
。
满足以上条件,则签名验证通过。