一、环签名的概念
1.问题的提出
①一般的数字签名会暴露成员身份。②一般的匿名方式不能确定来自成员。 ③ 群签名中,如果群管理者被控制,成员的身份会被暴露。
在传统的数字签名中,签名者使用自己的私钥对消息进行签名,然后其他人可以使用签名者的公钥验证签名的有效性。但是,这种方法会暴露签名者的身份信息。
环签名通过引入"环"的概念来解决这个问题。环签名包含一个签名者和一组其他成员的公钥,这个公钥集合形成了一个环。当一个人使用环中的某个成员的私钥来签名时,其他人可以使用该成员的公钥和环签名来验证签名的有效性,但无法确定具体是哪个成员进行了签名。
在环签名中,签名者使用自己的私钥和环中其他成员的公钥来生成环签名,而不是使用其他成员的私钥。生成环签名的过程如下:
- 签名者选择一个或多个其他成员的公钥,这些公钥形成一个环。(相当于一串钥匙)
- 签名者使用自己的私钥对消息进行签名。
- 签名者将自己的签名与环中其他成员的公钥进行组合或计算,生成环签名。
具体的组合或计算方式可能因使用的具体环签名方案而有所不同。在环签名方案中,这种组合或计算的方式是为了确保环签名的有效性和匿名性。
因此,公钥在环签名中的作用是确保签名的有效性,并为匿名性提供支持。签名者仅使用自己的私钥进行签名,而不需要获取环中其他成员的私钥。
2.环签名的过程与子算法
- 密钥生成Gen(PPT算法):输入安全参数
,为每一用户
生成公私钥对
,
- 签名Sign(PPT算法):输入消息
,一组公钥
以及签名者的私钥
,输出对于消息m的环签名
;
- 验证Verify(确定性算法):输入
,输出“True”或者“False”。
wiki上的过程解释:https://en.wikipedia.org/wiki/Ring_signature
环签名之所以被称为"环"签名,是因为签名者与其他成员的公钥形成了一个环状结构,实现了签名者的匿名性和签名验证的有效性。
3.环签名的特点
- 签名者利用自己的私钥可以将签名中的一系列值首尾相连,环签名 因其签名值由一定的规则组成一个环而得名;
- 没有群体建立过程,也无特殊的管理者
- 不需要预先加入和撤出单个群体,群体的形成根据需要在签名前由 签名人自己指定,是一种自组织结构;
- 不能追踪签名人身份,能通过验证确定签名者是其中某一人,但无 人能指出具体是哪一位成员.
4.环签名的安全性
- 正确性:按照正确的签名步骤对消息进行签名,并且传播过程签名不被篡改,则环签名满足 验证等式;
- 无条件匿名性:攻击者即便非法获取了所有环成员的私钥,他能确定出真正签名者的概率不 超过
,𝑟是环中成员(可能的签名者)的个数;
- 不可伪造性:环中其他成员不能伪造真实签名者的签名,攻击者即使在获得某个有效环签名 的基础上也不能以不可忽略的优势成功伪造一个新消息的合法签名
5.环签名和群签名的比较
- 管理系统:环签名中没有管理者,环中成员地位平等;群签名有一个群管理者,为群中其 他成员分发密钥;
- 两者都是一种个体代表群体签名的体制,达到签名者匿名的作用.环签名具有无条 件匿名性,任何人都不知道真正的签名者是谁;群签名中,签名可以由群管理者打开,确 定真正的签名者,保证了签名的可追踪性
- 环签名是一种自组织结构,真实签名者使用其他环成员的公钥时不需要他们的 同意,环成员可以任意离开、加入;群签名中成员相对固定,群成员离开、加入群时密钥 需要改变
二、3个经典的环签名算法
1.RST环签名算法(第一个环签名算法)
(1)Preliminaries
- 单向陷门函数的定义:给定𝑥,可以较容易的计算
,而给定𝑦,计算满足
的𝑥即计算
是困难的. 但若得到对应的陷门𝑡(一个额外的参数,通过使用陷门,加密者可以使用单向函数对信息进行加密,而解密者则使用相应的陷门对加密后的信息进行解密),计算
是容易的。
- 基于RSA算法的陷门函数
- 组合函数及其性质
性质:
① 对每个输入进行排列:对于每个s,固定y_i,组合函数为y_s到z的一一映射。
②单一输入有效可解:给定z和y_i,可有效解得y_s,满足C_k,v(y_1,y_2...)=z
③没有陷门输入不可求。如果敌手不能求得任一陷门函数g_1, g_2, g_3,...,g_r的逆,则求解满足组合函数的等式是不可行的。
(2)算法描述
2.AOS环签名算法
3.ZK环签名算法