转自布萌
在区块链和数字货币领域,支付的匿名性是一个重要的研究分支,某些场合对于匿名性的要求存在刚需,这也造就了一批新型的电子货币,本文主要探讨环签名技术相关知识
一般我们对于支付匿名性的需要满足以下两个要求:
1.交易不可追踪:对于任何交易,无法追踪其付款方是谁
2.交易不可关联:对于向外发送的两笔交易,其他人无法证明其是否发给同一个收款人
在比特币的设计中,账本信息是完全公开的。由于交易间输入输出的关联关系,以及输出地址的确定性,可以通过图形分析等方法获得账户间的关系,从而获取用户的隐私信息。
例如,某个用户在线下进行消费,并通过比特币进行支付,那么商家事实上建立了对用户的线上(比特币地址)线下(用户身份)关联。为避免个人隐私信息的泄露,用户必须十分谨慎地对其比特币帐户地址进行管理和隔离。从这个角度来而言,比特币无法满足交易不可追踪和不可关联的条件。
而基于群签名(group signatures)基础上环签名(ring signatures)技术,提供了可行的匿名性解决办法。
环签名简介
2001年,Rivest,shamir和Tauman三位密码学家首次提出了环签名。环签名是一种简化的群签名,环签名中只有环成员没有管理者,不需要环成员间的合作。
环签名同群签名一样也是一种签名者模糊的签名方案。在环签名中不需要创建环,改变或者删除环,也不需要分配指定的密钥,无法撤销签名者的匿名性,除非签名者自己想暴露身份。环签名方案中签名者首先选定一个临时的签名者集合,集合中包括签名者。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的成员可能并不知道自己被包含在其中。
环签名没有可信中心,没有群的建立过程,对于验证者来说,签名人是完全正确匿名的。环签名提供了一种匿名泄露秘密的巧妙方法。环签名的这种无条件匿名性在对信息需要长期保护的一些特殊环境中非常有用。例如,即使RSA被攻破也必须保护匿名性的场合。
由Rivest等人提出的环签名算法示意图
通常环签名由以下几部分构成:
1、密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。
2、签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。
3、签名验证。验证者根据环签名。和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。
同时环签名必须满足以下特性:
1、无条件匿名性:攻击者无法确定签名是由环中哪个成员生成,即使在获得环成员私钥的情况下,概率也不超过1/n。
2、正确性:签名必需能被所有其他人验证。
3、不可伪造性:环中其他成员不能伪造真实签名者签名,外部攻击者即使在获得某个有效环签名的基础上,也不能为消息m伪造一个签名。
环签名过程
与一般数字签名方案类似,环签名主要包含两个基本的处理过程:
1.环签名产生(ring-sign):对于消息m,用户s使用一组公开信息(P1,P2,…,Pr)以及其个人的私有信息Ss,生成签名σ。
2.环签名验证(ring-verify):对于验证者,当其获得消息m和签名σ时,判断这个签名是否有效。
环签名产生过程如下:
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、以太坊平台增加一个类CryptoNote环签名,这样使得以太坊用户拥有类似于CryptoNote驱动的,如Monero那样的匿名能力。
2、DarkNetCoin的环签名使用了区块链上的混币服务,这种混币具有相同金额的输入,并且使用了多个别人的公钥,只知道是从这一群人中的一个发送的,但无法判断是哪一个,也无法通过金额分析来判断输入输出对。同时DarkNetCoin还支持TOR和TRR技术,引入了隐身地址。
3、Bytecoin是最早引入环签名和隐身地址的加密货币。DarkNetCoin就是在Bytecoin基础之上进行开发和创新的。Bytecoin不支持Tor,通讯未加密,无法隐匿上网地址,容易被协议监听,从而分析钱包地址和IP地址的对应关系。
4、其他几个电子货币:Moreno,与Bytecoin一样支持环签名和隐身地址,并在Bytecoin基础上发展了GPU挖矿。Boolberry来自Bytecoin,一样支持环签名和隐身地址,但不支持TOR和TRR,没有任何匿名应用。StealthCoin:通过StealthSend采用环签名。XCurrency:通讯加密,支持环签名,不支持隐身地址。
最后要专门提一下Zcash,虽然环签名可以很有效的实现匿名性,但是环签名也有一个缺点,就是环签名中依旧需要与其他用户的公钥进行混合,因此可能会遭遇恶意用户从而暴露隐私。而Zcash利用零知识证明避免了这个问题,在Zcash的设计中,就采用了一种叫做zk-SNARK的非交互式的零知识证明方式,所以Zcash是目前所有密码学货币中匿名性最好的,因此受到过市场狂热的追捧。
来源:oschina
链接:https://my.oschina.net/u/4362986/blog/3852478