文|李伟志
一般我们对于支付匿名性的需要满足以下两个要求:
1.交易不可追踪:对于任何交易,无法追踪其付款方是谁
2.交易不可关联:对于向外发送的两笔交易,其他人无法证明其是否发给同一个收款人
在比特币的设计中,账本信息是完全公开的。由于交易间输入输出的关联关系,以及输出地址的确定性,可以通过图形分析等方法获得账户间的关系,从而获取用户的隐私信息。
例如,某个用户在线下进行消费,并通过比特币进行支付,那么商家事实上建立了对用户的线上(比特币地址)线下(用户身份)关联。为避免个人隐私信息的泄露,用户必须十分谨慎地对其比特币帐户地址进行管理和隔离。从这个角度来而言,比特币无法满足交易不可追踪和不可关联的条件。
而基于群签名(group signatures)基础上环签名(ring signatures)技术,提供了可行的匿名性解决办法。环签名是一种特殊的群签名,没有可信中心,没有群的建立过程,对于验证者来说,签名人是完全正确匿名的。环签名提供了一种匿名泄露秘密的巧妙方法。环签名的这种无条件匿名性在对信息需要长期保护的一些特殊环境中非常有用。例如,即使RSA被攻破也必须保护匿名性的场合。
环签名定义
假定有 n 个用户,每一个用户 拥有一个公钥 和与之对应的私钥 。环签名是一个能够实现签名者无条件匿名的签名方案,它主要由下述算法组成:
1)生成Gen。一个概率多项式时间(PPT)算法,输入为安全参数k,输出为公钥和私钥。这里假定 Gen 为每一个用户 ,产生一个公钥 和私钥 ,并且不同用户的公私钥可能来自不同的公钥体制,如有的来自RSA,有的来自DL。
2)签名Sign。一个PPT 算法,在输入消息m和 n 个环成员的公钥 L={ y1 , y2 ,?, yn }以及其中一个成员的私钥xs 后,对消息 m产生一个签名 R,其中R 中的某个参数根据一定的规则呈环状。
3)验证Verify。一个确定性算法,在输入(m,R)后,若R 为m 的环签名则输出“True”,否则为“False”。
环签名因为其签名隐含的某个参数按照一定的规则组成环状而得名。而在之后提出的许多方案中不要求签名的构成结构成环形,只要签名的形成满足自发性、匿名性和群特性,也称之为环签名。
环签名具体产生过程
1.生成对称加密算法的密钥k = h(m),h是一个哈希算法(例如SHA),m是需签名的消息。
2.在Z∈[0, 2^b]范围内随机选择一个v值。
3.选择一组随机值xi作为签名环中单向陷门函数的输入,计算yi = gi(xi)
4.计算Ck,v(y1,y2,…yr)= v,计算签名者的陷门函数输入xs,令ys= gs(xs)。由于签名者控制自己的私钥,所以可以很方便地求得xs= gs-1(ys)。此时,计算的输入和输出形成一个“环”。
5.组成最终的环签名:(P1,P2,…,Pr;v;x1,x2,…,xr)
环签名具体验证过程
当验证者获取到环签名的时候,验证过程如下:
1.根据x1,x2,…,xr,以及陷门函数g1,g2,…,gr(通过公钥来推导),计算yi = gi(xi)。
2.计算对称加密的密钥k = h(m)。
3.计算Ck,v(y1,y2,…yr),并验证其结果是否等于v。
环签名具体特性
1、正确性:如果按照正确的签名步骤对消息进行签名,并且在传播过程中签名没被篡改,那么环签名满足签名验证等式。
2、无条件匿名性:攻击者即使非法获取了所有可能签名者的私钥,他能确定出真正的签名者的概率不超过1/N,这里N为所有可能签名者的个数。
3、不可伪造性:外部攻击在不知道任何成员私钥的情况下,即使能从一个产生环签名的随机预言者那里得到任何消息m的签名,他成功伪造一个合法签名的概率也是可以忽略的
环签名的发展
环签名的发展经历了以下三个阶段:
2001-2002年,以Rivest提出的环签名定义为标志,这一阶段的工作主要是参考Rivest的方案,而提出的签名方案。
由Rivest等人提出的环签名算法示意图
2003-2004年,经过两年对环签名的概念和模型的认识与理解后,许多密码界专业人士开始对环签名进行深入研究。由此,在这一阶段引出了许多新的环签名方案,及其一些新的环签名思想。这一阶段是环签名发展的关键时期。2005年到现在,在这个阶段业界人士更加注重对环签名的安全性、效率及其实用性等方面进行研究。除了涌现出许多安全高效的环签名方案之外,许多密码界人士,将环签名与其他特殊数字签名方案相结合提出了许多新的环签名方案,如代理环签名、向前安全性的环签名等,与此同时还对环签名进行功能扩展,出现了许多实用性较强的环签名方案。在这个阶段,业界更加注重了对环签名的实用性的研究。
环签名分类
根据环签名所拥有的不同属性将环签名分为4类:
(1)门限环签名
(2)关联环签名
(3)可撤销匿名性的环签名
(4)可否认的环签名
作者简介:李伟志,职场作家、职业生涯咨询师