返回

基于环签名的匿名投票

在密码学中,环签名是一种数字签名,其可以由每个具有密钥的一组用户的任何成员完成。因此,使用环签名签名的消息由特定人群中的某一人签署。环签名的一个安全属性是若要确定哪个组成员的密钥用于产生签名在计算上是不可行的。环签名与群签名类似,但在两个关键方面有所不同:

  1. 无法撤销单个签名的匿名性;
  2. 任何用户组都可以作为一个组使用,无需额外设置。

环签名

问题的提出

2001年,Rivest、Shamir和Tauman在How to Leak a Secret一文中提出了如下问题:

Bob是一个内阁成员,他想向记者揭露首相贪污的情况,他要使记者确信此消息来自一个内阁成员,同时又不想泄露自己的身份(保证匿名性),以免遭到首相报复。

Bob不能通过用一般的数字签名把消息传给记者,因为虽然记者会相信这个消息来自内阁成员,但同时会暴露B的身份。

Bob也不能通过一般的匿名方式把消息传给记者,因为虽然Bob的身份不会暴露,但记者不能确信消息来自一个内阁成员,没有理由相信消息是真实的。

群签名也不能解决这个问题,因为群签名的生成需要群成员的合作, 群管理者可以打开签名。如果群管理者受到首相的控制, Bob的身份就会暴露。

在此背景下,Rivest, Shamir和Tauman提出了环签名的概念,并提出一种新型的基于RSA的环签名算法,通常被视为第一个环签名算法。

环签名可以很好地解决以上问题,所有的内阁成员构成一个环,Bob把消息经过环签名后传给记者,在不暴露Bob身份的前提下记者可以通过验证环签名的正确性,确信签名来自一个内阁成员。

环签名的定义

环签名的概念是2001年Rivest,Shamir和Tauman三人提出的签名者模糊的数字签名。

在环签名生成过程中,真正的签名者任意选取一组成员(包含它自身)作为可能的签名者,用自己的私钥和其他成员的公钥对文件进行签名。签名者选取的这组成员称作环(Ring),生成的签名称作环签名(Ring Signature) .环签名主要包含以下三个算法:

密钥生成Gen(PPT算法):输入安全参数κ,为每一用户生成公私钥对(,),1 ≤ i ≤n;

签名Sign (PPT算法):输入消息m,一组公钥L={,,…,}及签名者的私钥,输出对m的签名R;

验证Verify (确定性算法):输入(m,R),输出「True」或「False」。

环签名的特点

签名者利用自己的私钥可以将签名中的一系列值首尾相连,环签名因其签名值由一定的规则组成一个环而得名;

没有群体建立过程,也无特殊的管理者;

不需要预先加入和撤出单个群体,群体的形成根据需要在签名前由签名人自己指定,是一种自组织结构;

不能追踪签名人身份,能通过验证确定签名者是其中某一人,但无人能指出具体是哪一位成员。

  • 使用某用户的私钥+其他用户公钥生成的签名信息,无法计算出是哪个用户签名
  • 外部攻击在不知道任何成员私钥的情况下,无法构造出满足验证要求的报文

环签名的安全性

正确性:按照正确的签名步骤对消息进行签名,并且传播过程签名不被篡改,则环签名满足验证等式。

无条件匿名性:攻击者即便非法获取了所有环成员的私钥,他能确定出真正签名者的概率不超过1⁄r,r是环中成员(可能的签名者)的个数。

不可伪造性:环中其他成员不能伪造真实签名者的签名,攻击者即使在获得某个有效环签名的基础上也不能以不可忽略的优势成功伪造一个新消息的合法签名。

环签名的实现

(1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。

(2)签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。

(3)签名验证。验证者根据环签名和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。

环签名与群签名的比较

管理系统:环签名中没有管理者,环中成员地位平等;群签名有一个群管理者,为群中其他成员分发密钥。

匿名性:两者都是一种个体代表群体签名的体制,达到签名者匿名的作用。环签名具有无条件匿名性,任何人都不知道真正的签名者是谁;群签名中,签名可以由群管理者打开,确定真正的签名者,保证了签名的可追踪性。

组织结构:环签名是一种自组织结构,真实签名者使用其他环成员的公钥时不需要他们的同意,环成员可以任意离开、加入;群签名中成员相对固定,群成员离开、加入群时密钥需要改变。

潜在问题

无法抵抗双重投票:使用一般的环签名,签名者成功隐身于一组人之间,难以被发现,所以单纯依靠环签名,签名者是可以做到对同一个问题发表两次不同的言论然后不被发现的。 这样反而很可能成为引起矛盾的导火索, 无论是用来不实泄密,重复虚假投票,还是在加密货币中让人头疼的重复消费同一货币(double spending)都是个无法避免的问题。

可链接环签名

为了增强交易的隐私性的同时保证其可靠性(防止double spending)。 Linkable ring signature 出现在人们眼前。 关于linkable ring signature 第一篇,也是最著名的一篇文章是 2004 年的 “linkable spontaneous anonymous group signature for ad hoc group”简称“LSAG”,地址参见https://eprint.iacr.org/2004/027.pdf

这是一篇关于环签名的可链接性的综述论文:Linked or unlinked: A systematic review of linkable ring signature schemes Journal of Systems Architecture, 2023

可链接环签名的定义

在LRS中,链接属性是通过集成到签名阶段中的特殊功能来实现的,该功能称为link tag,也称为link flag、signature image、key image和tracking mark,通常从签名者的秘钥/私钥和指定事件中计算。

链接正确性:在相同事件标识符下生成的任何两个有效签名,如果它们都是由相同的签名者生成的,就会被链接起来。

可链接环签名的特点

  • 匿名性:匿名意味着不可能从签名者群体中找出谁专门创建了它。
  • 可链接性:可链接性是指从签字中可以看出是否已经存在由同一签字人签字的另一签字,即使签字人本人没有被签字人披露。
  • 自发性:自发性意味着签名者群体中没有人在签名方面处于优势地位。与群签名不同,在群签名中,有一个知道签名者身份的“群经理”,在环签名中,每个人都是平等的。

这些功能允许在任何需要保持签名者的匿名性的地方使用签名。例如,在电子选举中。选民在不透露他/她的身份的情况下签署选定的候选人。选民只能使用一个签名,因为它们具有唯一的标识符,因此可以追踪任何重复项。

链接标签:利用签名者的私钥将链接标记绑定到签名者。使用的主要加密原语是加密哈希函数

可链接环签名的应用场景

  • 区块链和加密货币:LRS已被用于设计各种加密货币,包括CryptoNote、Monero、AEON和Bytecoin。其他LRS已应用于各种区块链驱动的应用程序。
  • 电子投票:考虑到电子投票必须是匿名的,但同时又能抵抗双重投票,LRS以其匿名性、可链接性和公共可验证性保证满足了这些特征。
  • ad-hoc网络中的身份验证:确定通信消息是否来自与身份验证机制相同的设备,LRS支持这一功能,同时保护设备免受任何去匿名化的影响。
  • 云计算:访问控制机制在云计算范例中扮演着重要的角色。LRS提供了更高的安全控制,同时保证对这些平台的匿名访问,从而允许云服务提供商(csp)在每次访问资源时链接用户,同时保证匿名。
  • 智慧城市
  • 电子商务

Fabric+基于可链接环签名的匿名投票流程

  1. 每个组织生成一对秘钥对,将公钥发送给智能合约上链保存
  2. 客户端使用自己的私钥+所有公钥生成环签名信息,将环签名的结果发送给智能合约
  3. 智能合约使用所有公钥验签,如果验证通过,则记录投票信息(使用环签名信息);验证失败,不记录投票信息
  4. 客户端可查询所有投票结果

参考文献

【区块链与密码学】第8-1讲:什么是环签名

论文笔记:可链接环签名方案的系统综述

Linkable ring signature library (github.com)

坚果 — noot

环签名go语言实现 可链接环签名

Fabric2.2 + 基于环签名的匿名投票-1

Fabric2.2 + 基于环签名的匿名投票-2

Built with Hugo
Theme Stack designed by Jimmy