零知识
Monero,Zcash和Grin谁才是匿名币之王?
攻略 • hellobtc 发表了文章 • 2019-06-25 17:31
为了保护用户的隐私,基于各种技术的匿名币应运而生。存在即合理,匿名币注定会在区块链蓝图里占据重要一席。 今天,要和大家讨论的是匿名技术中三位典型的代表:门罗币(Monero),大零币(Zcash)和古灵币(Grin)。究竟谁才是匿名之王?
一、前世与今生
门罗币(Monero)于2014年4月18日主网上线。其代码从匿名币 ByteCoin 分叉而来。为什么会分叉?因为 ByteCoin 不够透明,80% 的代币被预挖,掌握在少数人手里,这也是为什么币安下架这个代币的原因之一。同时 ByteCoin 的代码质量极差引起了社区完美主义者的极度不满。
Monero 一词在世界语中代表着“货币“,该命名由社区投票选出,表达了社区希望 Monero 成为全世界通用匿名货币的初衷。Monero 采用 PoW 共识算法,到2022年5月,预计将开采出 1822.3 万枚代币(目前流通量为 1700 万枚),之后将保持每分钟发行 0.3XMR 的速度来继续激励矿工维护网络的安全。在还没有太多匿名币竞争者的蛮荒时代(2014年-2016年),Monero 在黑市越来越流行,从最初的 500 万美金市值,一路攀升到现在的 15 亿美金,涨幅高达 300 倍。
大零币(Zcash) 于2016年10月28日主网上线。其前身为 Zerocash 零协议,该协议于 2014 年创立,并由霍普金斯,麻省理工等大学实验室维护。零协议着重解决数字货币隐私的问题。Zcash 是第一个基于零协议,实现了零知识认证(Zero Knowledge Proof)的匿名币。 Zcash 由比特币代码分叉而来,因此 Zcash 许多特性和比特币相似,例如:Zcash 总量为 2100 万个,每四年减产一次等等(目前流通量为 680 万枚)。
Zcash 这个项目由一家名为 Electric Coin 的美国公司维护。在 Zcash 被开采的前四年,10%(流通量) 挖出来的币(按照 200 美金价格计算,10% 一共是 1.36 亿美金)会进到这家公司的口袋,以维持公司的经营。这也直接导致了社区的不满,出现很多 Zcash 的分叉币,例如:Horizen,Zclassic 等等。值得一提的是,Zcash 因为其慢启动的设计,即开采初期挖矿难度非常的高,一个 Zcash 曾一度达到 3000BTC 一个的天价。真是心疼当年接盘的老铁啊,这辈子应该也无法解套了。另外大零币并非强制要求链上所有的交易都是匿名的,只有当你选择使用隐地址(Shielded Address)时候,交易才会匿名。
古灵币 Grin 于2019年1月15日主网上线。Grin 采用了 MimbleWimble 协议。2016年,MimbleWimble 协议由一位化名为伏地魔的 Tom Elvis Jedusor 的程序员在 Bitcointalk 提出,主要的目的是解决比特币扩容和隐私的问题。同年10月,论坛上另一位匿名开发者发布了基于 MimbleWimble 协议的第一个项目,并命名为 Grin。Grin 除了捐赠,没有进行任何形式的融资,没有私募,lCO,也没有任何预挖。
为了稳定 Grin 的价格,Grin 发行总量没有上限,每分钟出一个块,每个区块奖励 60 枚 Grin,区块奖励将会逐渐的降低 。按照此方法计算,目前流通的 Grin 大约有 1300 万枚 Grin,一年后将会生成 3000 万枚 Grin,30 年后将会生成 10 亿枚Grin。同时 Grin 的 PoW 使用了两种算法:主要算法 Cuckatoo31+(ASIC友好) 和次要算法 Cuckatoo29(抗ASIC) ,其目的是:在主网发布初期,90% 的区块将被 Cuckatoo29(抗ASIC) 挖出,因为 Grin 开发者认为,当网络算力很小时,矿工很容易掌握大部分的算力导致网络过于中心化。当主网络稳定,算力足够大时,Grin 的挖矿方式则会慢慢切换到主要算力(ASIC友好),目的是鼓励矿机生产厂商制造 Grin 矿机,增加全网算力,提高网络的安全性。
二、匿名技术
1.门罗币:关键词: 隐地址,环签名,机密交易,Korvi
隐地址(Stealth Address)的作用是隐藏收款人的地址,保护收款人的隐私。Stealth Address 工作的原理是:每当有交易发起, 都会随机的生成一个新的收款人地址。这样做的好处是,就算有多笔交易发送给同一个人,每笔交易的交易记录都显示不同的收款地址。这让外界不可能将这些交易记录联系到同一个收款人身上,从而保护了收款人的隐私。
环签名(Ring Signature)的作用是隐藏发送人的地址,保护发送人的隐私。从 Ring Signature 字面意思可以略知一二,那就是通过一群人形成一个环(圈子),每个在环(圈子)里面的人都有相同的地位和权力,环(圈子)里的任何人都可以授权交易。如果使用环签名授权交易,从外界的交易记录来看,无法确认具体是环(圈子)里哪个人授权的交易,从而保护了发送人的隐私。
机密交易(RCT)的作用是用来隐藏交易金额。RCT 全称为 Ring Confidential Transaction,在引入 RCT 之前,门罗币要求只能把交易金额一样的交易串成一个环,比如张三手上有 20 个门罗币想给李四转账 10 个,但是当前并没有 10 的环,那么张三只能把交易拆分成 3 的环和 7 的环。在引入 RCT 之后,如果张三拥有 20 个门罗,但只想转移 10 个门罗给李四,但是RCT 要求把交易分成 10+10 两部分,一部分直接转移给李四,另外一部分转移给张三自己,从而隐藏交易信息。
Korvi 的作用是用来隐藏交易双方的 IP 地址。Korvi 不是简单的 VPN 网络 。你可以把 Korvi 理解为门罗特有的中继网络。在 Korvi 每个网络节点之间,每笔交易都会被节点自己掌握的私钥进行加密。就好比 A 给 B 发送交易,在实际的 Korvi 网络中,数据包经过的路径为A->D->E->F->C->B 。如果你想拦截翻译 AB 之间的交易信息,你需要获取A,D,E,F,C,B所有人的授权和私钥,这是非常非常困难的,因为路径一直在动态地更改。
2.大零币:关键词:zk-SNARK,零知识证明
大零币基于 zk-SNARK 协议, 采用了 零知识证明( Zero Knowledge Proof)的方式来保护用户的隐私。零知识证明即能够证明自己某种权益,但又不把相关信息泄露出去,即给外界的知识为零的一种证明方式。零知识证明需要满足三个特性:完整性,可靠性和零知识性。为了方便大家理解。大白举一个例子:
假设:张三和李四参加了币安组织的交易大赛,大赛规定:一等奖获得 200 个 BNB,二等奖获得 100 个 BNB,三等奖获得 50 个 BNB,参与奖 10 个 BNB。
实际情况:李四获得了第二名(100BNB),张三只获得了第三名(50BNB)。
问题:张三和李四想知道对方是否和自己取得了一样的成绩,因为面子问题,又不想把自己的具体获奖情况泄露给对方。
零知识证明法:
张三准备了四个信箱和四把钥匙,持有这四个信箱钥匙分别代表张三获得一等奖,二等奖,三等奖和参与奖。根据实际情况(张三获得三等奖),张三按照规定毁掉了1号,2号,4号信箱的钥匙,保留了3号信箱的钥匙。
李四准备了四封空白的信,在四封信上画微笑分别代表李四获得一等奖,二等奖,三等奖和参与奖。李四按照规定在2号信上画了一个笑脸(李四获得二等奖),并将几封信依次投入张三准备的信箱。
第二天,张三自己用钥匙打开3号信箱,查看李四投信,发现信是空白,张三便知道李四没有和自己得同样的奖,并把信归还给李四。李四收到回信后,发现信上没有笑脸,李四便知道张三和自己没有获得相同的名次。
上述过程,便是零知识证明的一个典型例子,其证明过程中没有泄露给外界任何信息。
3.古灵币:关键词:MimbleWimble
MimbleWimble 来自于《哈利波特》中的一句咒语,目的是让被施咒的人无法开口说话,保护秘密。MimbleWimble 没有采用比特币的 UTXO 模型,因此可以省略大量历史数据的中间数据,比如:A-B-C-D,可以直接压缩为A-D,从而压缩了大量数据。MimbleWimble 协议中没有地址,参与交易的双方需共同创建一个用于交易的多重签名,并用私钥验证交易。所以在MimbleWimble 中,只需要验证 2 个事情:1:该交易没有凭空产生新的币。2:交易双方拥有其私钥的所有权。
MimbleWimble 巧妙地利用了椭圆密码学(Elliptic Curve Cryptography)满足乘法交换率和结合律的特性,来引入致盲因子从而模糊交易信息,举个例子:
引入致盲因子之前交易信息为:10+5=15
引入致盲因子5之后:10*5+5*5=15*5 即 50+25=75,
等式依然成立,但只有参与了交易的双方掌握了致盲因子的私钥,才能够得将致盲因子分解出来,得到交易信息。
可以说,匿名币这三巨头的技术可谓各有千秋,那么一个项目的成功光靠技术是不行的,我们再来从其他的维度来对比一下这三个老大哥,具体见下表:
三、小结
最后我们来总结下这三个匿名币各自的优势和劣势吧:
门罗币(Monero):
优势:
1.匿名货币的鼻祖,其核心技术经过了时间的考验。
2. 背后团队完全匿名,项目完全由社区治理。
3. 知名度高,已上线大部分顶级交易所,流动性非常好。
4. 已经开采了 95% 以上,未来通货膨胀率低于 1%。
劣势:
1. 市值较高。
大零币(Zcash):
优势:
1. 第一个基于零知识证明的匿名币。
2. 背后的公司拥有充足的资金以支持项目的发展。
3. 匿名非强制性。
劣势:
1. 项目由公司主导,财务不够公开透明。2020 年之后,10% 挖矿收益将不再支付给其背后的公司,那么该公司是否还有动力继续维护该项目?还是说放任不管,归还给社区?其背后的公司是一颗大雷。
2. 目前为止,Zcash 链上只有 20% 不到的交易为匿名交易,大部分还是公开的交易!!
古灵币(Grin):
优势:
1. MimbleWimble 技术创新 :占用空间小,交易速度快。
2. 社区主导,未接受任何形式的融资 ,不涉及复杂的利益关系。
劣势:
1. Grin 因为设计,没有地址,因此用户体验不是很友好。
2. Grin 在前期通货膨胀非常严重:每个块生产 60 个 Grin,按季度减少出块奖励,第一季度通货膨胀为 400%,第二季度为 200%,第三季度为 133.3%......十年后通货膨胀仍然高达 10%。
3. Grin 没有资金上大的交易所,只能等交易所强上,比较被动。
作者:希多说币 希多 查看全部
自比特币 2009 年上线以来,其去中心化,抗通胀,低门槛等特性逐渐被大众所认可。但是,随着当今社会对个人隐私越发的重视,比特币其账本 100% 公开透明的特点也遭受诟病,一定程度上阻碍了比特币作为支付手段(灰色地带)的发展。
为了保护用户的隐私,基于各种技术的匿名币应运而生。存在即合理,匿名币注定会在区块链蓝图里占据重要一席。 今天,要和大家讨论的是匿名技术中三位典型的代表:门罗币(Monero),大零币(Zcash)和古灵币(Grin)。究竟谁才是匿名之王?
一、前世与今生
门罗币(Monero)于2014年4月18日主网上线。其代码从匿名币 ByteCoin 分叉而来。为什么会分叉?因为 ByteCoin 不够透明,80% 的代币被预挖,掌握在少数人手里,这也是为什么币安下架这个代币的原因之一。同时 ByteCoin 的代码质量极差引起了社区完美主义者的极度不满。
Monero 一词在世界语中代表着“货币“,该命名由社区投票选出,表达了社区希望 Monero 成为全世界通用匿名货币的初衷。Monero 采用 PoW 共识算法,到2022年5月,预计将开采出 1822.3 万枚代币(目前流通量为 1700 万枚),之后将保持每分钟发行 0.3XMR 的速度来继续激励矿工维护网络的安全。在还没有太多匿名币竞争者的蛮荒时代(2014年-2016年),Monero 在黑市越来越流行,从最初的 500 万美金市值,一路攀升到现在的 15 亿美金,涨幅高达 300 倍。
大零币(Zcash) 于2016年10月28日主网上线。其前身为 Zerocash 零协议,该协议于 2014 年创立,并由霍普金斯,麻省理工等大学实验室维护。零协议着重解决数字货币隐私的问题。Zcash 是第一个基于零协议,实现了零知识认证(Zero Knowledge Proof)的匿名币。 Zcash 由比特币代码分叉而来,因此 Zcash 许多特性和比特币相似,例如:Zcash 总量为 2100 万个,每四年减产一次等等(目前流通量为 680 万枚)。
Zcash 这个项目由一家名为 Electric Coin 的美国公司维护。在 Zcash 被开采的前四年,10%(流通量) 挖出来的币(按照 200 美金价格计算,10% 一共是 1.36 亿美金)会进到这家公司的口袋,以维持公司的经营。这也直接导致了社区的不满,出现很多 Zcash 的分叉币,例如:Horizen,Zclassic 等等。值得一提的是,Zcash 因为其慢启动的设计,即开采初期挖矿难度非常的高,一个 Zcash 曾一度达到 3000BTC 一个的天价。真是心疼当年接盘的老铁啊,这辈子应该也无法解套了。另外大零币并非强制要求链上所有的交易都是匿名的,只有当你选择使用隐地址(Shielded Address)时候,交易才会匿名。
古灵币 Grin 于2019年1月15日主网上线。Grin 采用了 MimbleWimble 协议。2016年,MimbleWimble 协议由一位化名为伏地魔的 Tom Elvis Jedusor 的程序员在 Bitcointalk 提出,主要的目的是解决比特币扩容和隐私的问题。同年10月,论坛上另一位匿名开发者发布了基于 MimbleWimble 协议的第一个项目,并命名为 Grin。Grin 除了捐赠,没有进行任何形式的融资,没有私募,lCO,也没有任何预挖。
为了稳定 Grin 的价格,Grin 发行总量没有上限,每分钟出一个块,每个区块奖励 60 枚 Grin,区块奖励将会逐渐的降低 。按照此方法计算,目前流通的 Grin 大约有 1300 万枚 Grin,一年后将会生成 3000 万枚 Grin,30 年后将会生成 10 亿枚Grin。同时 Grin 的 PoW 使用了两种算法:主要算法 Cuckatoo31+(ASIC友好) 和次要算法 Cuckatoo29(抗ASIC) ,其目的是:在主网发布初期,90% 的区块将被 Cuckatoo29(抗ASIC) 挖出,因为 Grin 开发者认为,当网络算力很小时,矿工很容易掌握大部分的算力导致网络过于中心化。当主网络稳定,算力足够大时,Grin 的挖矿方式则会慢慢切换到主要算力(ASIC友好),目的是鼓励矿机生产厂商制造 Grin 矿机,增加全网算力,提高网络的安全性。
二、匿名技术
1.门罗币:关键词: 隐地址,环签名,机密交易,Korvi
隐地址(Stealth Address)的作用是隐藏收款人的地址,保护收款人的隐私。Stealth Address 工作的原理是:每当有交易发起, 都会随机的生成一个新的收款人地址。这样做的好处是,就算有多笔交易发送给同一个人,每笔交易的交易记录都显示不同的收款地址。这让外界不可能将这些交易记录联系到同一个收款人身上,从而保护了收款人的隐私。
环签名(Ring Signature)的作用是隐藏发送人的地址,保护发送人的隐私。从 Ring Signature 字面意思可以略知一二,那就是通过一群人形成一个环(圈子),每个在环(圈子)里面的人都有相同的地位和权力,环(圈子)里的任何人都可以授权交易。如果使用环签名授权交易,从外界的交易记录来看,无法确认具体是环(圈子)里哪个人授权的交易,从而保护了发送人的隐私。
机密交易(RCT)的作用是用来隐藏交易金额。RCT 全称为 Ring Confidential Transaction,在引入 RCT 之前,门罗币要求只能把交易金额一样的交易串成一个环,比如张三手上有 20 个门罗币想给李四转账 10 个,但是当前并没有 10 的环,那么张三只能把交易拆分成 3 的环和 7 的环。在引入 RCT 之后,如果张三拥有 20 个门罗,但只想转移 10 个门罗给李四,但是RCT 要求把交易分成 10+10 两部分,一部分直接转移给李四,另外一部分转移给张三自己,从而隐藏交易信息。
Korvi 的作用是用来隐藏交易双方的 IP 地址。Korvi 不是简单的 VPN 网络 。你可以把 Korvi 理解为门罗特有的中继网络。在 Korvi 每个网络节点之间,每笔交易都会被节点自己掌握的私钥进行加密。就好比 A 给 B 发送交易,在实际的 Korvi 网络中,数据包经过的路径为A->D->E->F->C->B 。如果你想拦截翻译 AB 之间的交易信息,你需要获取A,D,E,F,C,B所有人的授权和私钥,这是非常非常困难的,因为路径一直在动态地更改。
2.大零币:关键词:zk-SNARK,零知识证明
大零币基于 zk-SNARK 协议, 采用了 零知识证明( Zero Knowledge Proof)的方式来保护用户的隐私。零知识证明即能够证明自己某种权益,但又不把相关信息泄露出去,即给外界的知识为零的一种证明方式。零知识证明需要满足三个特性:完整性,可靠性和零知识性。为了方便大家理解。大白举一个例子:
假设:张三和李四参加了币安组织的交易大赛,大赛规定:一等奖获得 200 个 BNB,二等奖获得 100 个 BNB,三等奖获得 50 个 BNB,参与奖 10 个 BNB。
实际情况:李四获得了第二名(100BNB),张三只获得了第三名(50BNB)。
问题:张三和李四想知道对方是否和自己取得了一样的成绩,因为面子问题,又不想把自己的具体获奖情况泄露给对方。
零知识证明法:
张三准备了四个信箱和四把钥匙,持有这四个信箱钥匙分别代表张三获得一等奖,二等奖,三等奖和参与奖。根据实际情况(张三获得三等奖),张三按照规定毁掉了1号,2号,4号信箱的钥匙,保留了3号信箱的钥匙。
李四准备了四封空白的信,在四封信上画微笑分别代表李四获得一等奖,二等奖,三等奖和参与奖。李四按照规定在2号信上画了一个笑脸(李四获得二等奖),并将几封信依次投入张三准备的信箱。
第二天,张三自己用钥匙打开3号信箱,查看李四投信,发现信是空白,张三便知道李四没有和自己得同样的奖,并把信归还给李四。李四收到回信后,发现信上没有笑脸,李四便知道张三和自己没有获得相同的名次。
上述过程,便是零知识证明的一个典型例子,其证明过程中没有泄露给外界任何信息。
3.古灵币:关键词:MimbleWimble
MimbleWimble 来自于《哈利波特》中的一句咒语,目的是让被施咒的人无法开口说话,保护秘密。MimbleWimble 没有采用比特币的 UTXO 模型,因此可以省略大量历史数据的中间数据,比如:A-B-C-D,可以直接压缩为A-D,从而压缩了大量数据。MimbleWimble 协议中没有地址,参与交易的双方需共同创建一个用于交易的多重签名,并用私钥验证交易。所以在MimbleWimble 中,只需要验证 2 个事情:1:该交易没有凭空产生新的币。2:交易双方拥有其私钥的所有权。
MimbleWimble 巧妙地利用了椭圆密码学(Elliptic Curve Cryptography)满足乘法交换率和结合律的特性,来引入致盲因子从而模糊交易信息,举个例子:
引入致盲因子之前交易信息为:10+5=15
引入致盲因子5之后:10*5+5*5=15*5 即 50+25=75,
等式依然成立,但只有参与了交易的双方掌握了致盲因子的私钥,才能够得将致盲因子分解出来,得到交易信息。
可以说,匿名币这三巨头的技术可谓各有千秋,那么一个项目的成功光靠技术是不行的,我们再来从其他的维度来对比一下这三个老大哥,具体见下表:
三、小结
最后我们来总结下这三个匿名币各自的优势和劣势吧:
门罗币(Monero):
优势:
1.匿名货币的鼻祖,其核心技术经过了时间的考验。
2. 背后团队完全匿名,项目完全由社区治理。
3. 知名度高,已上线大部分顶级交易所,流动性非常好。
4. 已经开采了 95% 以上,未来通货膨胀率低于 1%。
劣势:
1. 市值较高。
大零币(Zcash):
优势:
1. 第一个基于零知识证明的匿名币。
2. 背后的公司拥有充足的资金以支持项目的发展。
3. 匿名非强制性。
劣势:
1. 项目由公司主导,财务不够公开透明。2020 年之后,10% 挖矿收益将不再支付给其背后的公司,那么该公司是否还有动力继续维护该项目?还是说放任不管,归还给社区?其背后的公司是一颗大雷。
2. 目前为止,Zcash 链上只有 20% 不到的交易为匿名交易,大部分还是公开的交易!!
古灵币(Grin):
优势:
1. MimbleWimble 技术创新 :占用空间小,交易速度快。
2. 社区主导,未接受任何形式的融资 ,不涉及复杂的利益关系。
劣势:
1. Grin 因为设计,没有地址,因此用户体验不是很友好。
2. Grin 在前期通货膨胀非常严重:每个块生产 60 个 Grin,按季度减少出块奖励,第一季度通货膨胀为 400%,第二季度为 200%,第三季度为 133.3%......十年后通货膨胀仍然高达 10%。
3. Grin 没有资金上大的交易所,只能等交易所强上,比较被动。
作者:希多说币 希多
皆以匿名协议著称,Grin 和 ZCash 强弱对比
攻略 • grinup 发表了文章 • 2019-02-14 10:26
Grin 作为一个实践项目,它的核心协议是具有匿名属性的 MimbleWimble,它和以匿名协议著称的 ZCash 之间的比较是合理自然的。在这里,我们尝试去比较最详尽的差异,希望不会有太多的偏颇之处。注意直到现在,MimbleWimble 协议也并没有在任何地方实现,Grin 也远未准备好。在我们有一个稳定的项目发布之前,ZCash 可以说一直是赢家,我们如下的说明都是一种猜想。
Grin Wins
无需信任设置(除了创世区块,没有任何其他种类的信任设置)。
优秀的渐近缩放与实际缩放。Grin 按照 UTXO 设置进行缩放,并且一段时间后每个 UTXO 都可以变得很小(因为可以最终放弃 rangeproof)。
在 MimbleWimble 中构建交易并验证它们在计算上是微不足道的,可以很容易地在智能手机或树莓派机器上完成。另一方面,在撰写本文时,构建 ZCash 的匿名交易需要大约 4GB 的内存和大约一分钟的计算。
默认情况下,MimbleWimble 中的所有交易都是不可见的,而此时 ZCash 的大多数交易在此刻似乎都是可见交易。
仅依赖于简单且经过良好审查的加密结构和假设。
绿色代码尽可能明确和简单,使未来的审计和维护更容易。
Grin 是一个社区驱动的实践,没有「创始人奖励」。
ZCash Wins
MimbleWimble 不支持脚本编写。虽然通过脚本在比特币中引入的一些功能,仍然可以存在于 MimbleWimble 中(如 multisig 和时间锁),但是缺少通用脚本使得其更加受限。请注意,此时 ZCash 也不支持通用脚本,为何不支持也没有理论上的原因。
虽然 Grin 交易输出完全匿名,但至少在某些时段,仍然可以追踪到那些输入相关的输出。目前尚不清楚从中可以得出什么信息。
ZCash 是基于 Bitcoin Core 代码分叉实现的,这是一个非常成熟(尽管很难维护)的代码库。
ZCash 由一家资金充足的公司提供支持。
相关讨论:https://www.reddit.com/r/Mimblewimble/comments/59qulw/mimblewimble_vs_zcash/
原文链接:https://github.com/mimblewimble/grin/wiki/Grin-and-MimbleWimble-vs-ZCash_ 查看全部
本文是 Grin 代码贡献最多的开发者 Ignotus Peverell 于 2016 年 11 月 1 日发布的一篇 Grin 和 MimbleWimble 协议与 ZCash 项目的比较。
Grin 作为一个实践项目,它的核心协议是具有匿名属性的 MimbleWimble,它和以匿名协议著称的 ZCash 之间的比较是合理自然的。在这里,我们尝试去比较最详尽的差异,希望不会有太多的偏颇之处。注意直到现在,MimbleWimble 协议也并没有在任何地方实现,Grin 也远未准备好。在我们有一个稳定的项目发布之前,ZCash 可以说一直是赢家,我们如下的说明都是一种猜想。
Grin Wins
无需信任设置(除了创世区块,没有任何其他种类的信任设置)。
优秀的渐近缩放与实际缩放。Grin 按照 UTXO 设置进行缩放,并且一段时间后每个 UTXO 都可以变得很小(因为可以最终放弃 rangeproof)。
在 MimbleWimble 中构建交易并验证它们在计算上是微不足道的,可以很容易地在智能手机或树莓派机器上完成。另一方面,在撰写本文时,构建 ZCash 的匿名交易需要大约 4GB 的内存和大约一分钟的计算。
默认情况下,MimbleWimble 中的所有交易都是不可见的,而此时 ZCash 的大多数交易在此刻似乎都是可见交易。
仅依赖于简单且经过良好审查的加密结构和假设。
绿色代码尽可能明确和简单,使未来的审计和维护更容易。
Grin 是一个社区驱动的实践,没有「创始人奖励」。
ZCash Wins
MimbleWimble 不支持脚本编写。虽然通过脚本在比特币中引入的一些功能,仍然可以存在于 MimbleWimble 中(如 multisig 和时间锁),但是缺少通用脚本使得其更加受限。请注意,此时 ZCash 也不支持通用脚本,为何不支持也没有理论上的原因。
虽然 Grin 交易输出完全匿名,但至少在某些时段,仍然可以追踪到那些输入相关的输出。目前尚不清楚从中可以得出什么信息。
ZCash 是基于 Bitcoin Core 代码分叉实现的,这是一个非常成熟(尽管很难维护)的代码库。
ZCash 由一家资金充足的公司提供支持。
相关讨论:https://www.reddit.com/r/Mimblewimble/comments/59qulw/mimblewimble_vs_zcash/
原文链接:https://github.com/mimblewimble/grin/wiki/Grin-and-MimbleWimble-vs-ZCash_
中本聪没穿衣服!该全面评估区块链隐私保护了
攻略 • chainnews 发表了文章 • 2019-02-14 10:17
最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。
密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。
2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。
现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。
比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。
人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。
在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。
现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。
1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。
在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否(或有哪些)确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。
出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。
作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。
但我们的对手不理这一套。
结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。
现实世界的隐私威胁
人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。
在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。
同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。
有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。
2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:
在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。
几天后,这位经理又打专门电话再次道歉。
然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」
人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。
一个更直观的例子是 Venmo。解释下, Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。
我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。
人们不应该对任何具有这些功能的系统听之任之。
另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。
需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。
记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。
比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。
防御和失败
什么是可行的防御 ?
在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」
这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。
区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。
隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。
首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。
另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。
在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。
同样,在使用 Zerocash 原理的系统中,没有任何标识符。
我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。
诱捕式匿名(Decoy-Based Deanonymization)
假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。
监督者攻击
假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。
污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。
打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。
如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。
如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:
情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去
Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。
这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。
手电筒攻击
假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。
如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。
我在这里描述的是它应该如何工作,而不是实际如何工作。
如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。
政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。
现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。
对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。
政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。
正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。
这可能是对诱捕式系统最容易执行和最令人不安的攻击。
结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!
污染尘埃攻击
还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。
假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。
在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。
这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。
执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。
总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。
各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」
那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。
解决诱饵问题
对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」
现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。
我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。
最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。
链闻注:作者提及的两篇关于门罗币可追踪性的研究论文请见:An Empirical Analysis of Traceability in the Monero Blockchain https://arxiv.org/pdf/1704.04299/;A Traceability Analysis of Monero’s Blockchain https://eprint.iacr.org/2017/338.pdf
大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。
你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。
零知识的方法
我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在 Merkle 树中。
如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。
方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许
d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。
我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40 MB。同样,bulletproof 也越来越快。
结论
我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。
我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。
链闻注:Grin 开发团队撰文所写的该项目隐私保护概览一文,可以参见「Grin Privacy Primer」https://github.com/mimblewimble/docs/wiki/Grin-Privacy-Primer
不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。
最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。
总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。
可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。
记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。
还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。
无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。
我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。
本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。
原文:Blockchain Privacy: Equal Parts Theory and Theater
撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash
编译:詹涓 查看全部
希望那些参加了「Scaling Bitcoin」和 Devcon4 大会的中国区块链开发者还记得 Zcash 基金会董事会成员 Ian Miers 在大会上的演讲。他在演讲中大声疾呼:我们处于密码货币开发和使用的早期,我们对如何保护区块链上数据隐私的经验还很少,所以我们必须小心谨慎地评估目前所有的技术解决方案,别轻易就说「我们已经实现了隐私保护」!
最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。
密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。
2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。
现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。
比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。
人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。
在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。
现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。
1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。
在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否(或有哪些)确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。
出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。
作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。
但我们的对手不理这一套。
结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。
现实世界的隐私威胁
人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。
在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。
同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。
有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。
2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:
在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。
几天后,这位经理又打专门电话再次道歉。
然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」
人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。
一个更直观的例子是 Venmo。解释下, Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。
我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。
人们不应该对任何具有这些功能的系统听之任之。
另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。
需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。
记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。
比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。
防御和失败
什么是可行的防御 ?
在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」
这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。
区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。
隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。
首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。
另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。
在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。
同样,在使用 Zerocash 原理的系统中,没有任何标识符。
我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。
诱捕式匿名(Decoy-Based Deanonymization)
假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。
监督者攻击
假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。
污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。
打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。
如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。
如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:
情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去
Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。
这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。
手电筒攻击
假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。
如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。
我在这里描述的是它应该如何工作,而不是实际如何工作。
如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。
政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。
现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。
对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。
政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。
正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。
这可能是对诱捕式系统最容易执行和最令人不安的攻击。
结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!
污染尘埃攻击
还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。
假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。
在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。
这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。
执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。
总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。
各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」
那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。
解决诱饵问题
对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」
现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。
我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。
最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。
链闻注:作者提及的两篇关于门罗币可追踪性的研究论文请见:An Empirical Analysis of Traceability in the Monero Blockchain https://arxiv.org/pdf/1704.04299/;A Traceability Analysis of Monero’s Blockchain https://eprint.iacr.org/2017/338.pdf
大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。
你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。
零知识的方法
我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在 Merkle 树中。
如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。
方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许
d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。
我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40 MB。同样,bulletproof 也越来越快。
结论
我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。
我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。
链闻注:Grin 开发团队撰文所写的该项目隐私保护概览一文,可以参见「Grin Privacy Primer」https://github.com/mimblewimble/docs/wiki/Grin-Privacy-Primer
不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。
最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。
总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。
可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。
记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。
还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。
无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。
我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。
本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。
原文:Blockchain Privacy: Equal Parts Theory and Theater
撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash
编译:詹涓
Monero,Zcash和Grin谁才是匿名币之王?
攻略 • hellobtc 发表了文章 • 2019-06-25 17:31
为了保护用户的隐私,基于各种技术的匿名币应运而生。存在即合理,匿名币注定会在区块链蓝图里占据重要一席。 今天,要和大家讨论的是匿名技术中三位典型的代表:门罗币(Monero),大零币(Zcash)和古灵币(Grin)。究竟谁才是匿名之王?
一、前世与今生
门罗币(Monero)于2014年4月18日主网上线。其代码从匿名币 ByteCoin 分叉而来。为什么会分叉?因为 ByteCoin 不够透明,80% 的代币被预挖,掌握在少数人手里,这也是为什么币安下架这个代币的原因之一。同时 ByteCoin 的代码质量极差引起了社区完美主义者的极度不满。
Monero 一词在世界语中代表着“货币“,该命名由社区投票选出,表达了社区希望 Monero 成为全世界通用匿名货币的初衷。Monero 采用 PoW 共识算法,到2022年5月,预计将开采出 1822.3 万枚代币(目前流通量为 1700 万枚),之后将保持每分钟发行 0.3XMR 的速度来继续激励矿工维护网络的安全。在还没有太多匿名币竞争者的蛮荒时代(2014年-2016年),Monero 在黑市越来越流行,从最初的 500 万美金市值,一路攀升到现在的 15 亿美金,涨幅高达 300 倍。
大零币(Zcash) 于2016年10月28日主网上线。其前身为 Zerocash 零协议,该协议于 2014 年创立,并由霍普金斯,麻省理工等大学实验室维护。零协议着重解决数字货币隐私的问题。Zcash 是第一个基于零协议,实现了零知识认证(Zero Knowledge Proof)的匿名币。 Zcash 由比特币代码分叉而来,因此 Zcash 许多特性和比特币相似,例如:Zcash 总量为 2100 万个,每四年减产一次等等(目前流通量为 680 万枚)。
Zcash 这个项目由一家名为 Electric Coin 的美国公司维护。在 Zcash 被开采的前四年,10%(流通量) 挖出来的币(按照 200 美金价格计算,10% 一共是 1.36 亿美金)会进到这家公司的口袋,以维持公司的经营。这也直接导致了社区的不满,出现很多 Zcash 的分叉币,例如:Horizen,Zclassic 等等。值得一提的是,Zcash 因为其慢启动的设计,即开采初期挖矿难度非常的高,一个 Zcash 曾一度达到 3000BTC 一个的天价。真是心疼当年接盘的老铁啊,这辈子应该也无法解套了。另外大零币并非强制要求链上所有的交易都是匿名的,只有当你选择使用隐地址(Shielded Address)时候,交易才会匿名。
古灵币 Grin 于2019年1月15日主网上线。Grin 采用了 MimbleWimble 协议。2016年,MimbleWimble 协议由一位化名为伏地魔的 Tom Elvis Jedusor 的程序员在 Bitcointalk 提出,主要的目的是解决比特币扩容和隐私的问题。同年10月,论坛上另一位匿名开发者发布了基于 MimbleWimble 协议的第一个项目,并命名为 Grin。Grin 除了捐赠,没有进行任何形式的融资,没有私募,lCO,也没有任何预挖。
为了稳定 Grin 的价格,Grin 发行总量没有上限,每分钟出一个块,每个区块奖励 60 枚 Grin,区块奖励将会逐渐的降低 。按照此方法计算,目前流通的 Grin 大约有 1300 万枚 Grin,一年后将会生成 3000 万枚 Grin,30 年后将会生成 10 亿枚Grin。同时 Grin 的 PoW 使用了两种算法:主要算法 Cuckatoo31+(ASIC友好) 和次要算法 Cuckatoo29(抗ASIC) ,其目的是:在主网发布初期,90% 的区块将被 Cuckatoo29(抗ASIC) 挖出,因为 Grin 开发者认为,当网络算力很小时,矿工很容易掌握大部分的算力导致网络过于中心化。当主网络稳定,算力足够大时,Grin 的挖矿方式则会慢慢切换到主要算力(ASIC友好),目的是鼓励矿机生产厂商制造 Grin 矿机,增加全网算力,提高网络的安全性。
二、匿名技术
1.门罗币:关键词: 隐地址,环签名,机密交易,Korvi
隐地址(Stealth Address)的作用是隐藏收款人的地址,保护收款人的隐私。Stealth Address 工作的原理是:每当有交易发起, 都会随机的生成一个新的收款人地址。这样做的好处是,就算有多笔交易发送给同一个人,每笔交易的交易记录都显示不同的收款地址。这让外界不可能将这些交易记录联系到同一个收款人身上,从而保护了收款人的隐私。
环签名(Ring Signature)的作用是隐藏发送人的地址,保护发送人的隐私。从 Ring Signature 字面意思可以略知一二,那就是通过一群人形成一个环(圈子),每个在环(圈子)里面的人都有相同的地位和权力,环(圈子)里的任何人都可以授权交易。如果使用环签名授权交易,从外界的交易记录来看,无法确认具体是环(圈子)里哪个人授权的交易,从而保护了发送人的隐私。
机密交易(RCT)的作用是用来隐藏交易金额。RCT 全称为 Ring Confidential Transaction,在引入 RCT 之前,门罗币要求只能把交易金额一样的交易串成一个环,比如张三手上有 20 个门罗币想给李四转账 10 个,但是当前并没有 10 的环,那么张三只能把交易拆分成 3 的环和 7 的环。在引入 RCT 之后,如果张三拥有 20 个门罗,但只想转移 10 个门罗给李四,但是RCT 要求把交易分成 10+10 两部分,一部分直接转移给李四,另外一部分转移给张三自己,从而隐藏交易信息。
Korvi 的作用是用来隐藏交易双方的 IP 地址。Korvi 不是简单的 VPN 网络 。你可以把 Korvi 理解为门罗特有的中继网络。在 Korvi 每个网络节点之间,每笔交易都会被节点自己掌握的私钥进行加密。就好比 A 给 B 发送交易,在实际的 Korvi 网络中,数据包经过的路径为A->D->E->F->C->B 。如果你想拦截翻译 AB 之间的交易信息,你需要获取A,D,E,F,C,B所有人的授权和私钥,这是非常非常困难的,因为路径一直在动态地更改。
2.大零币:关键词:zk-SNARK,零知识证明
大零币基于 zk-SNARK 协议, 采用了 零知识证明( Zero Knowledge Proof)的方式来保护用户的隐私。零知识证明即能够证明自己某种权益,但又不把相关信息泄露出去,即给外界的知识为零的一种证明方式。零知识证明需要满足三个特性:完整性,可靠性和零知识性。为了方便大家理解。大白举一个例子:
假设:张三和李四参加了币安组织的交易大赛,大赛规定:一等奖获得 200 个 BNB,二等奖获得 100 个 BNB,三等奖获得 50 个 BNB,参与奖 10 个 BNB。
实际情况:李四获得了第二名(100BNB),张三只获得了第三名(50BNB)。
问题:张三和李四想知道对方是否和自己取得了一样的成绩,因为面子问题,又不想把自己的具体获奖情况泄露给对方。
零知识证明法:
张三准备了四个信箱和四把钥匙,持有这四个信箱钥匙分别代表张三获得一等奖,二等奖,三等奖和参与奖。根据实际情况(张三获得三等奖),张三按照规定毁掉了1号,2号,4号信箱的钥匙,保留了3号信箱的钥匙。
李四准备了四封空白的信,在四封信上画微笑分别代表李四获得一等奖,二等奖,三等奖和参与奖。李四按照规定在2号信上画了一个笑脸(李四获得二等奖),并将几封信依次投入张三准备的信箱。
第二天,张三自己用钥匙打开3号信箱,查看李四投信,发现信是空白,张三便知道李四没有和自己得同样的奖,并把信归还给李四。李四收到回信后,发现信上没有笑脸,李四便知道张三和自己没有获得相同的名次。
上述过程,便是零知识证明的一个典型例子,其证明过程中没有泄露给外界任何信息。
3.古灵币:关键词:MimbleWimble
MimbleWimble 来自于《哈利波特》中的一句咒语,目的是让被施咒的人无法开口说话,保护秘密。MimbleWimble 没有采用比特币的 UTXO 模型,因此可以省略大量历史数据的中间数据,比如:A-B-C-D,可以直接压缩为A-D,从而压缩了大量数据。MimbleWimble 协议中没有地址,参与交易的双方需共同创建一个用于交易的多重签名,并用私钥验证交易。所以在MimbleWimble 中,只需要验证 2 个事情:1:该交易没有凭空产生新的币。2:交易双方拥有其私钥的所有权。
MimbleWimble 巧妙地利用了椭圆密码学(Elliptic Curve Cryptography)满足乘法交换率和结合律的特性,来引入致盲因子从而模糊交易信息,举个例子:
引入致盲因子之前交易信息为:10+5=15
引入致盲因子5之后:10*5+5*5=15*5 即 50+25=75,
等式依然成立,但只有参与了交易的双方掌握了致盲因子的私钥,才能够得将致盲因子分解出来,得到交易信息。
可以说,匿名币这三巨头的技术可谓各有千秋,那么一个项目的成功光靠技术是不行的,我们再来从其他的维度来对比一下这三个老大哥,具体见下表:
三、小结
最后我们来总结下这三个匿名币各自的优势和劣势吧:
门罗币(Monero):
优势:
1.匿名货币的鼻祖,其核心技术经过了时间的考验。
2. 背后团队完全匿名,项目完全由社区治理。
3. 知名度高,已上线大部分顶级交易所,流动性非常好。
4. 已经开采了 95% 以上,未来通货膨胀率低于 1%。
劣势:
1. 市值较高。
大零币(Zcash):
优势:
1. 第一个基于零知识证明的匿名币。
2. 背后的公司拥有充足的资金以支持项目的发展。
3. 匿名非强制性。
劣势:
1. 项目由公司主导,财务不够公开透明。2020 年之后,10% 挖矿收益将不再支付给其背后的公司,那么该公司是否还有动力继续维护该项目?还是说放任不管,归还给社区?其背后的公司是一颗大雷。
2. 目前为止,Zcash 链上只有 20% 不到的交易为匿名交易,大部分还是公开的交易!!
古灵币(Grin):
优势:
1. MimbleWimble 技术创新 :占用空间小,交易速度快。
2. 社区主导,未接受任何形式的融资 ,不涉及复杂的利益关系。
劣势:
1. Grin 因为设计,没有地址,因此用户体验不是很友好。
2. Grin 在前期通货膨胀非常严重:每个块生产 60 个 Grin,按季度减少出块奖励,第一季度通货膨胀为 400%,第二季度为 200%,第三季度为 133.3%......十年后通货膨胀仍然高达 10%。
3. Grin 没有资金上大的交易所,只能等交易所强上,比较被动。
作者:希多说币 希多 查看全部
自比特币 2009 年上线以来,其去中心化,抗通胀,低门槛等特性逐渐被大众所认可。但是,随着当今社会对个人隐私越发的重视,比特币其账本 100% 公开透明的特点也遭受诟病,一定程度上阻碍了比特币作为支付手段(灰色地带)的发展。
为了保护用户的隐私,基于各种技术的匿名币应运而生。存在即合理,匿名币注定会在区块链蓝图里占据重要一席。 今天,要和大家讨论的是匿名技术中三位典型的代表:门罗币(Monero),大零币(Zcash)和古灵币(Grin)。究竟谁才是匿名之王?
一、前世与今生
门罗币(Monero)于2014年4月18日主网上线。其代码从匿名币 ByteCoin 分叉而来。为什么会分叉?因为 ByteCoin 不够透明,80% 的代币被预挖,掌握在少数人手里,这也是为什么币安下架这个代币的原因之一。同时 ByteCoin 的代码质量极差引起了社区完美主义者的极度不满。
Monero 一词在世界语中代表着“货币“,该命名由社区投票选出,表达了社区希望 Monero 成为全世界通用匿名货币的初衷。Monero 采用 PoW 共识算法,到2022年5月,预计将开采出 1822.3 万枚代币(目前流通量为 1700 万枚),之后将保持每分钟发行 0.3XMR 的速度来继续激励矿工维护网络的安全。在还没有太多匿名币竞争者的蛮荒时代(2014年-2016年),Monero 在黑市越来越流行,从最初的 500 万美金市值,一路攀升到现在的 15 亿美金,涨幅高达 300 倍。
大零币(Zcash) 于2016年10月28日主网上线。其前身为 Zerocash 零协议,该协议于 2014 年创立,并由霍普金斯,麻省理工等大学实验室维护。零协议着重解决数字货币隐私的问题。Zcash 是第一个基于零协议,实现了零知识认证(Zero Knowledge Proof)的匿名币。 Zcash 由比特币代码分叉而来,因此 Zcash 许多特性和比特币相似,例如:Zcash 总量为 2100 万个,每四年减产一次等等(目前流通量为 680 万枚)。
Zcash 这个项目由一家名为 Electric Coin 的美国公司维护。在 Zcash 被开采的前四年,10%(流通量) 挖出来的币(按照 200 美金价格计算,10% 一共是 1.36 亿美金)会进到这家公司的口袋,以维持公司的经营。这也直接导致了社区的不满,出现很多 Zcash 的分叉币,例如:Horizen,Zclassic 等等。值得一提的是,Zcash 因为其慢启动的设计,即开采初期挖矿难度非常的高,一个 Zcash 曾一度达到 3000BTC 一个的天价。真是心疼当年接盘的老铁啊,这辈子应该也无法解套了。另外大零币并非强制要求链上所有的交易都是匿名的,只有当你选择使用隐地址(Shielded Address)时候,交易才会匿名。
古灵币 Grin 于2019年1月15日主网上线。Grin 采用了 MimbleWimble 协议。2016年,MimbleWimble 协议由一位化名为伏地魔的 Tom Elvis Jedusor 的程序员在 Bitcointalk 提出,主要的目的是解决比特币扩容和隐私的问题。同年10月,论坛上另一位匿名开发者发布了基于 MimbleWimble 协议的第一个项目,并命名为 Grin。Grin 除了捐赠,没有进行任何形式的融资,没有私募,lCO,也没有任何预挖。
为了稳定 Grin 的价格,Grin 发行总量没有上限,每分钟出一个块,每个区块奖励 60 枚 Grin,区块奖励将会逐渐的降低 。按照此方法计算,目前流通的 Grin 大约有 1300 万枚 Grin,一年后将会生成 3000 万枚 Grin,30 年后将会生成 10 亿枚Grin。同时 Grin 的 PoW 使用了两种算法:主要算法 Cuckatoo31+(ASIC友好) 和次要算法 Cuckatoo29(抗ASIC) ,其目的是:在主网发布初期,90% 的区块将被 Cuckatoo29(抗ASIC) 挖出,因为 Grin 开发者认为,当网络算力很小时,矿工很容易掌握大部分的算力导致网络过于中心化。当主网络稳定,算力足够大时,Grin 的挖矿方式则会慢慢切换到主要算力(ASIC友好),目的是鼓励矿机生产厂商制造 Grin 矿机,增加全网算力,提高网络的安全性。
二、匿名技术
1.门罗币:关键词: 隐地址,环签名,机密交易,Korvi
隐地址(Stealth Address)的作用是隐藏收款人的地址,保护收款人的隐私。Stealth Address 工作的原理是:每当有交易发起, 都会随机的生成一个新的收款人地址。这样做的好处是,就算有多笔交易发送给同一个人,每笔交易的交易记录都显示不同的收款地址。这让外界不可能将这些交易记录联系到同一个收款人身上,从而保护了收款人的隐私。
环签名(Ring Signature)的作用是隐藏发送人的地址,保护发送人的隐私。从 Ring Signature 字面意思可以略知一二,那就是通过一群人形成一个环(圈子),每个在环(圈子)里面的人都有相同的地位和权力,环(圈子)里的任何人都可以授权交易。如果使用环签名授权交易,从外界的交易记录来看,无法确认具体是环(圈子)里哪个人授权的交易,从而保护了发送人的隐私。
机密交易(RCT)的作用是用来隐藏交易金额。RCT 全称为 Ring Confidential Transaction,在引入 RCT 之前,门罗币要求只能把交易金额一样的交易串成一个环,比如张三手上有 20 个门罗币想给李四转账 10 个,但是当前并没有 10 的环,那么张三只能把交易拆分成 3 的环和 7 的环。在引入 RCT 之后,如果张三拥有 20 个门罗,但只想转移 10 个门罗给李四,但是RCT 要求把交易分成 10+10 两部分,一部分直接转移给李四,另外一部分转移给张三自己,从而隐藏交易信息。
Korvi 的作用是用来隐藏交易双方的 IP 地址。Korvi 不是简单的 VPN 网络 。你可以把 Korvi 理解为门罗特有的中继网络。在 Korvi 每个网络节点之间,每笔交易都会被节点自己掌握的私钥进行加密。就好比 A 给 B 发送交易,在实际的 Korvi 网络中,数据包经过的路径为A->D->E->F->C->B 。如果你想拦截翻译 AB 之间的交易信息,你需要获取A,D,E,F,C,B所有人的授权和私钥,这是非常非常困难的,因为路径一直在动态地更改。
2.大零币:关键词:zk-SNARK,零知识证明
大零币基于 zk-SNARK 协议, 采用了 零知识证明( Zero Knowledge Proof)的方式来保护用户的隐私。零知识证明即能够证明自己某种权益,但又不把相关信息泄露出去,即给外界的知识为零的一种证明方式。零知识证明需要满足三个特性:完整性,可靠性和零知识性。为了方便大家理解。大白举一个例子:
假设:张三和李四参加了币安组织的交易大赛,大赛规定:一等奖获得 200 个 BNB,二等奖获得 100 个 BNB,三等奖获得 50 个 BNB,参与奖 10 个 BNB。
实际情况:李四获得了第二名(100BNB),张三只获得了第三名(50BNB)。
问题:张三和李四想知道对方是否和自己取得了一样的成绩,因为面子问题,又不想把自己的具体获奖情况泄露给对方。
零知识证明法:
张三准备了四个信箱和四把钥匙,持有这四个信箱钥匙分别代表张三获得一等奖,二等奖,三等奖和参与奖。根据实际情况(张三获得三等奖),张三按照规定毁掉了1号,2号,4号信箱的钥匙,保留了3号信箱的钥匙。
李四准备了四封空白的信,在四封信上画微笑分别代表李四获得一等奖,二等奖,三等奖和参与奖。李四按照规定在2号信上画了一个笑脸(李四获得二等奖),并将几封信依次投入张三准备的信箱。
第二天,张三自己用钥匙打开3号信箱,查看李四投信,发现信是空白,张三便知道李四没有和自己得同样的奖,并把信归还给李四。李四收到回信后,发现信上没有笑脸,李四便知道张三和自己没有获得相同的名次。
上述过程,便是零知识证明的一个典型例子,其证明过程中没有泄露给外界任何信息。
3.古灵币:关键词:MimbleWimble
MimbleWimble 来自于《哈利波特》中的一句咒语,目的是让被施咒的人无法开口说话,保护秘密。MimbleWimble 没有采用比特币的 UTXO 模型,因此可以省略大量历史数据的中间数据,比如:A-B-C-D,可以直接压缩为A-D,从而压缩了大量数据。MimbleWimble 协议中没有地址,参与交易的双方需共同创建一个用于交易的多重签名,并用私钥验证交易。所以在MimbleWimble 中,只需要验证 2 个事情:1:该交易没有凭空产生新的币。2:交易双方拥有其私钥的所有权。
MimbleWimble 巧妙地利用了椭圆密码学(Elliptic Curve Cryptography)满足乘法交换率和结合律的特性,来引入致盲因子从而模糊交易信息,举个例子:
引入致盲因子之前交易信息为:10+5=15
引入致盲因子5之后:10*5+5*5=15*5 即 50+25=75,
等式依然成立,但只有参与了交易的双方掌握了致盲因子的私钥,才能够得将致盲因子分解出来,得到交易信息。
可以说,匿名币这三巨头的技术可谓各有千秋,那么一个项目的成功光靠技术是不行的,我们再来从其他的维度来对比一下这三个老大哥,具体见下表:
三、小结
最后我们来总结下这三个匿名币各自的优势和劣势吧:
门罗币(Monero):
优势:
1.匿名货币的鼻祖,其核心技术经过了时间的考验。
2. 背后团队完全匿名,项目完全由社区治理。
3. 知名度高,已上线大部分顶级交易所,流动性非常好。
4. 已经开采了 95% 以上,未来通货膨胀率低于 1%。
劣势:
1. 市值较高。
大零币(Zcash):
优势:
1. 第一个基于零知识证明的匿名币。
2. 背后的公司拥有充足的资金以支持项目的发展。
3. 匿名非强制性。
劣势:
1. 项目由公司主导,财务不够公开透明。2020 年之后,10% 挖矿收益将不再支付给其背后的公司,那么该公司是否还有动力继续维护该项目?还是说放任不管,归还给社区?其背后的公司是一颗大雷。
2. 目前为止,Zcash 链上只有 20% 不到的交易为匿名交易,大部分还是公开的交易!!
古灵币(Grin):
优势:
1. MimbleWimble 技术创新 :占用空间小,交易速度快。
2. 社区主导,未接受任何形式的融资 ,不涉及复杂的利益关系。
劣势:
1. Grin 因为设计,没有地址,因此用户体验不是很友好。
2. Grin 在前期通货膨胀非常严重:每个块生产 60 个 Grin,按季度减少出块奖励,第一季度通货膨胀为 400%,第二季度为 200%,第三季度为 133.3%......十年后通货膨胀仍然高达 10%。
3. Grin 没有资金上大的交易所,只能等交易所强上,比较被动。
作者:希多说币 希多
皆以匿名协议著称,Grin 和 ZCash 强弱对比
攻略 • grinup 发表了文章 • 2019-02-14 10:26
Grin 作为一个实践项目,它的核心协议是具有匿名属性的 MimbleWimble,它和以匿名协议著称的 ZCash 之间的比较是合理自然的。在这里,我们尝试去比较最详尽的差异,希望不会有太多的偏颇之处。注意直到现在,MimbleWimble 协议也并没有在任何地方实现,Grin 也远未准备好。在我们有一个稳定的项目发布之前,ZCash 可以说一直是赢家,我们如下的说明都是一种猜想。
Grin Wins
无需信任设置(除了创世区块,没有任何其他种类的信任设置)。
优秀的渐近缩放与实际缩放。Grin 按照 UTXO 设置进行缩放,并且一段时间后每个 UTXO 都可以变得很小(因为可以最终放弃 rangeproof)。
在 MimbleWimble 中构建交易并验证它们在计算上是微不足道的,可以很容易地在智能手机或树莓派机器上完成。另一方面,在撰写本文时,构建 ZCash 的匿名交易需要大约 4GB 的内存和大约一分钟的计算。
默认情况下,MimbleWimble 中的所有交易都是不可见的,而此时 ZCash 的大多数交易在此刻似乎都是可见交易。
仅依赖于简单且经过良好审查的加密结构和假设。
绿色代码尽可能明确和简单,使未来的审计和维护更容易。
Grin 是一个社区驱动的实践,没有「创始人奖励」。
ZCash Wins
MimbleWimble 不支持脚本编写。虽然通过脚本在比特币中引入的一些功能,仍然可以存在于 MimbleWimble 中(如 multisig 和时间锁),但是缺少通用脚本使得其更加受限。请注意,此时 ZCash 也不支持通用脚本,为何不支持也没有理论上的原因。
虽然 Grin 交易输出完全匿名,但至少在某些时段,仍然可以追踪到那些输入相关的输出。目前尚不清楚从中可以得出什么信息。
ZCash 是基于 Bitcoin Core 代码分叉实现的,这是一个非常成熟(尽管很难维护)的代码库。
ZCash 由一家资金充足的公司提供支持。
相关讨论:https://www.reddit.com/r/Mimblewimble/comments/59qulw/mimblewimble_vs_zcash/
原文链接:https://github.com/mimblewimble/grin/wiki/Grin-and-MimbleWimble-vs-ZCash_ 查看全部
本文是 Grin 代码贡献最多的开发者 Ignotus Peverell 于 2016 年 11 月 1 日发布的一篇 Grin 和 MimbleWimble 协议与 ZCash 项目的比较。
Grin 作为一个实践项目,它的核心协议是具有匿名属性的 MimbleWimble,它和以匿名协议著称的 ZCash 之间的比较是合理自然的。在这里,我们尝试去比较最详尽的差异,希望不会有太多的偏颇之处。注意直到现在,MimbleWimble 协议也并没有在任何地方实现,Grin 也远未准备好。在我们有一个稳定的项目发布之前,ZCash 可以说一直是赢家,我们如下的说明都是一种猜想。
Grin Wins
无需信任设置(除了创世区块,没有任何其他种类的信任设置)。
优秀的渐近缩放与实际缩放。Grin 按照 UTXO 设置进行缩放,并且一段时间后每个 UTXO 都可以变得很小(因为可以最终放弃 rangeproof)。
在 MimbleWimble 中构建交易并验证它们在计算上是微不足道的,可以很容易地在智能手机或树莓派机器上完成。另一方面,在撰写本文时,构建 ZCash 的匿名交易需要大约 4GB 的内存和大约一分钟的计算。
默认情况下,MimbleWimble 中的所有交易都是不可见的,而此时 ZCash 的大多数交易在此刻似乎都是可见交易。
仅依赖于简单且经过良好审查的加密结构和假设。
绿色代码尽可能明确和简单,使未来的审计和维护更容易。
Grin 是一个社区驱动的实践,没有「创始人奖励」。
ZCash Wins
MimbleWimble 不支持脚本编写。虽然通过脚本在比特币中引入的一些功能,仍然可以存在于 MimbleWimble 中(如 multisig 和时间锁),但是缺少通用脚本使得其更加受限。请注意,此时 ZCash 也不支持通用脚本,为何不支持也没有理论上的原因。
虽然 Grin 交易输出完全匿名,但至少在某些时段,仍然可以追踪到那些输入相关的输出。目前尚不清楚从中可以得出什么信息。
ZCash 是基于 Bitcoin Core 代码分叉实现的,这是一个非常成熟(尽管很难维护)的代码库。
ZCash 由一家资金充足的公司提供支持。
相关讨论:https://www.reddit.com/r/Mimblewimble/comments/59qulw/mimblewimble_vs_zcash/
原文链接:https://github.com/mimblewimble/grin/wiki/Grin-and-MimbleWimble-vs-ZCash_
中本聪没穿衣服!该全面评估区块链隐私保护了
攻略 • chainnews 发表了文章 • 2019-02-14 10:17
最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。
密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。
2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。
现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。
比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。
人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。
在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。
现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。
1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。
在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否(或有哪些)确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。
出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。
作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。
但我们的对手不理这一套。
结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。
现实世界的隐私威胁
人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。
在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。
同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。
有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。
2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:
在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。
几天后,这位经理又打专门电话再次道歉。
然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」
人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。
一个更直观的例子是 Venmo。解释下, Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。
我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。
人们不应该对任何具有这些功能的系统听之任之。
另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。
需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。
记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。
比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。
防御和失败
什么是可行的防御 ?
在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」
这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。
区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。
隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。
首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。
另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。
在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。
同样,在使用 Zerocash 原理的系统中,没有任何标识符。
我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。
诱捕式匿名(Decoy-Based Deanonymization)
假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。
监督者攻击
假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。
污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。
打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。
如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。
如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:
情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去
Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。
这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。
手电筒攻击
假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。
如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。
我在这里描述的是它应该如何工作,而不是实际如何工作。
如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。
政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。
现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。
对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。
政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。
正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。
这可能是对诱捕式系统最容易执行和最令人不安的攻击。
结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!
污染尘埃攻击
还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。
假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。
在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。
这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。
执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。
总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。
各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」
那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。
解决诱饵问题
对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」
现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。
我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。
最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。
链闻注:作者提及的两篇关于门罗币可追踪性的研究论文请见:An Empirical Analysis of Traceability in the Monero Blockchain https://arxiv.org/pdf/1704.04299/;A Traceability Analysis of Monero’s Blockchain https://eprint.iacr.org/2017/338.pdf
大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。
你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。
零知识的方法
我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在 Merkle 树中。
如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。
方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许
d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。
我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40 MB。同样,bulletproof 也越来越快。
结论
我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。
我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。
链闻注:Grin 开发团队撰文所写的该项目隐私保护概览一文,可以参见「Grin Privacy Primer」https://github.com/mimblewimble/docs/wiki/Grin-Privacy-Primer
不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。
最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。
总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。
可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。
记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。
还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。
无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。
我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。
本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。
原文:Blockchain Privacy: Equal Parts Theory and Theater
撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash
编译:詹涓 查看全部
希望那些参加了「Scaling Bitcoin」和 Devcon4 大会的中国区块链开发者还记得 Zcash 基金会董事会成员 Ian Miers 在大会上的演讲。他在演讲中大声疾呼:我们处于密码货币开发和使用的早期,我们对如何保护区块链上数据隐私的经验还很少,所以我们必须小心谨慎地评估目前所有的技术解决方案,别轻易就说「我们已经实现了隐私保护」!
最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。
密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。
2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。
现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。
比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。
人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。
在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。
现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。
1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。
在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否(或有哪些)确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。
出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。
作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。
但我们的对手不理这一套。
结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。
现实世界的隐私威胁
人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。
在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。
同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。
有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。
2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:
在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。
几天后,这位经理又打专门电话再次道歉。
然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」
人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。
一个更直观的例子是 Venmo。解释下, Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。
我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。
人们不应该对任何具有这些功能的系统听之任之。
另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。
需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。
记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。
比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。
防御和失败
什么是可行的防御 ?
在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」
这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。
区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。
隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。
首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。
另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。
在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。
同样,在使用 Zerocash 原理的系统中,没有任何标识符。
我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。
诱捕式匿名(Decoy-Based Deanonymization)
假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。
监督者攻击
假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。
污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。
打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。
如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。
如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:
情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去
Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。
这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。
手电筒攻击
假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。
如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。
我在这里描述的是它应该如何工作,而不是实际如何工作。
如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。
政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。
现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。
对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。
政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。
正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。
这可能是对诱捕式系统最容易执行和最令人不安的攻击。
结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!
污染尘埃攻击
还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。
假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。
在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。
这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。
执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。
总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。
各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」
那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。
解决诱饵问题
对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」
现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。
我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。
最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。
链闻注:作者提及的两篇关于门罗币可追踪性的研究论文请见:An Empirical Analysis of Traceability in the Monero Blockchain https://arxiv.org/pdf/1704.04299/;A Traceability Analysis of Monero’s Blockchain https://eprint.iacr.org/2017/338.pdf
大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。
你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。
零知识的方法
我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在 Merkle 树中。
如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。
方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许
d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。
我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40 MB。同样,bulletproof 也越来越快。
结论
我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。
我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。
链闻注:Grin 开发团队撰文所写的该项目隐私保护概览一文,可以参见「Grin Privacy Primer」https://github.com/mimblewimble/docs/wiki/Grin-Privacy-Primer
不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。
最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。
总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。
可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。
记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。
还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。
无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。
我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。
本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。
原文:Blockchain Privacy: Equal Parts Theory and Theater
撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash
编译:詹涓
Monero,Zcash和Grin谁才是匿名币之王?
攻略 • hellobtc 发表了文章 • 2019-06-25 17:31
为了保护用户的隐私,基于各种技术的匿名币应运而生。存在即合理,匿名币注定会在区块链蓝图里占据重要一席。 今天,要和大家讨论的是匿名技术中三位典型的代表:门罗币(Monero),大零币(Zcash)和古灵币(Grin)。究竟谁才是匿名之王?
一、前世与今生
门罗币(Monero)于2014年4月18日主网上线。其代码从匿名币 ByteCoin 分叉而来。为什么会分叉?因为 ByteCoin 不够透明,80% 的代币被预挖,掌握在少数人手里,这也是为什么币安下架这个代币的原因之一。同时 ByteCoin 的代码质量极差引起了社区完美主义者的极度不满。
Monero 一词在世界语中代表着“货币“,该命名由社区投票选出,表达了社区希望 Monero 成为全世界通用匿名货币的初衷。Monero 采用 PoW 共识算法,到2022年5月,预计将开采出 1822.3 万枚代币(目前流通量为 1700 万枚),之后将保持每分钟发行 0.3XMR 的速度来继续激励矿工维护网络的安全。在还没有太多匿名币竞争者的蛮荒时代(2014年-2016年),Monero 在黑市越来越流行,从最初的 500 万美金市值,一路攀升到现在的 15 亿美金,涨幅高达 300 倍。
大零币(Zcash) 于2016年10月28日主网上线。其前身为 Zerocash 零协议,该协议于 2014 年创立,并由霍普金斯,麻省理工等大学实验室维护。零协议着重解决数字货币隐私的问题。Zcash 是第一个基于零协议,实现了零知识认证(Zero Knowledge Proof)的匿名币。 Zcash 由比特币代码分叉而来,因此 Zcash 许多特性和比特币相似,例如:Zcash 总量为 2100 万个,每四年减产一次等等(目前流通量为 680 万枚)。
Zcash 这个项目由一家名为 Electric Coin 的美国公司维护。在 Zcash 被开采的前四年,10%(流通量) 挖出来的币(按照 200 美金价格计算,10% 一共是 1.36 亿美金)会进到这家公司的口袋,以维持公司的经营。这也直接导致了社区的不满,出现很多 Zcash 的分叉币,例如:Horizen,Zclassic 等等。值得一提的是,Zcash 因为其慢启动的设计,即开采初期挖矿难度非常的高,一个 Zcash 曾一度达到 3000BTC 一个的天价。真是心疼当年接盘的老铁啊,这辈子应该也无法解套了。另外大零币并非强制要求链上所有的交易都是匿名的,只有当你选择使用隐地址(Shielded Address)时候,交易才会匿名。
古灵币 Grin 于2019年1月15日主网上线。Grin 采用了 MimbleWimble 协议。2016年,MimbleWimble 协议由一位化名为伏地魔的 Tom Elvis Jedusor 的程序员在 Bitcointalk 提出,主要的目的是解决比特币扩容和隐私的问题。同年10月,论坛上另一位匿名开发者发布了基于 MimbleWimble 协议的第一个项目,并命名为 Grin。Grin 除了捐赠,没有进行任何形式的融资,没有私募,lCO,也没有任何预挖。
为了稳定 Grin 的价格,Grin 发行总量没有上限,每分钟出一个块,每个区块奖励 60 枚 Grin,区块奖励将会逐渐的降低 。按照此方法计算,目前流通的 Grin 大约有 1300 万枚 Grin,一年后将会生成 3000 万枚 Grin,30 年后将会生成 10 亿枚Grin。同时 Grin 的 PoW 使用了两种算法:主要算法 Cuckatoo31+(ASIC友好) 和次要算法 Cuckatoo29(抗ASIC) ,其目的是:在主网发布初期,90% 的区块将被 Cuckatoo29(抗ASIC) 挖出,因为 Grin 开发者认为,当网络算力很小时,矿工很容易掌握大部分的算力导致网络过于中心化。当主网络稳定,算力足够大时,Grin 的挖矿方式则会慢慢切换到主要算力(ASIC友好),目的是鼓励矿机生产厂商制造 Grin 矿机,增加全网算力,提高网络的安全性。
二、匿名技术
1.门罗币:关键词: 隐地址,环签名,机密交易,Korvi
隐地址(Stealth Address)的作用是隐藏收款人的地址,保护收款人的隐私。Stealth Address 工作的原理是:每当有交易发起, 都会随机的生成一个新的收款人地址。这样做的好处是,就算有多笔交易发送给同一个人,每笔交易的交易记录都显示不同的收款地址。这让外界不可能将这些交易记录联系到同一个收款人身上,从而保护了收款人的隐私。
环签名(Ring Signature)的作用是隐藏发送人的地址,保护发送人的隐私。从 Ring Signature 字面意思可以略知一二,那就是通过一群人形成一个环(圈子),每个在环(圈子)里面的人都有相同的地位和权力,环(圈子)里的任何人都可以授权交易。如果使用环签名授权交易,从外界的交易记录来看,无法确认具体是环(圈子)里哪个人授权的交易,从而保护了发送人的隐私。
机密交易(RCT)的作用是用来隐藏交易金额。RCT 全称为 Ring Confidential Transaction,在引入 RCT 之前,门罗币要求只能把交易金额一样的交易串成一个环,比如张三手上有 20 个门罗币想给李四转账 10 个,但是当前并没有 10 的环,那么张三只能把交易拆分成 3 的环和 7 的环。在引入 RCT 之后,如果张三拥有 20 个门罗,但只想转移 10 个门罗给李四,但是RCT 要求把交易分成 10+10 两部分,一部分直接转移给李四,另外一部分转移给张三自己,从而隐藏交易信息。
Korvi 的作用是用来隐藏交易双方的 IP 地址。Korvi 不是简单的 VPN 网络 。你可以把 Korvi 理解为门罗特有的中继网络。在 Korvi 每个网络节点之间,每笔交易都会被节点自己掌握的私钥进行加密。就好比 A 给 B 发送交易,在实际的 Korvi 网络中,数据包经过的路径为A->D->E->F->C->B 。如果你想拦截翻译 AB 之间的交易信息,你需要获取A,D,E,F,C,B所有人的授权和私钥,这是非常非常困难的,因为路径一直在动态地更改。
2.大零币:关键词:zk-SNARK,零知识证明
大零币基于 zk-SNARK 协议, 采用了 零知识证明( Zero Knowledge Proof)的方式来保护用户的隐私。零知识证明即能够证明自己某种权益,但又不把相关信息泄露出去,即给外界的知识为零的一种证明方式。零知识证明需要满足三个特性:完整性,可靠性和零知识性。为了方便大家理解。大白举一个例子:
假设:张三和李四参加了币安组织的交易大赛,大赛规定:一等奖获得 200 个 BNB,二等奖获得 100 个 BNB,三等奖获得 50 个 BNB,参与奖 10 个 BNB。
实际情况:李四获得了第二名(100BNB),张三只获得了第三名(50BNB)。
问题:张三和李四想知道对方是否和自己取得了一样的成绩,因为面子问题,又不想把自己的具体获奖情况泄露给对方。
零知识证明法:
张三准备了四个信箱和四把钥匙,持有这四个信箱钥匙分别代表张三获得一等奖,二等奖,三等奖和参与奖。根据实际情况(张三获得三等奖),张三按照规定毁掉了1号,2号,4号信箱的钥匙,保留了3号信箱的钥匙。
李四准备了四封空白的信,在四封信上画微笑分别代表李四获得一等奖,二等奖,三等奖和参与奖。李四按照规定在2号信上画了一个笑脸(李四获得二等奖),并将几封信依次投入张三准备的信箱。
第二天,张三自己用钥匙打开3号信箱,查看李四投信,发现信是空白,张三便知道李四没有和自己得同样的奖,并把信归还给李四。李四收到回信后,发现信上没有笑脸,李四便知道张三和自己没有获得相同的名次。
上述过程,便是零知识证明的一个典型例子,其证明过程中没有泄露给外界任何信息。
3.古灵币:关键词:MimbleWimble
MimbleWimble 来自于《哈利波特》中的一句咒语,目的是让被施咒的人无法开口说话,保护秘密。MimbleWimble 没有采用比特币的 UTXO 模型,因此可以省略大量历史数据的中间数据,比如:A-B-C-D,可以直接压缩为A-D,从而压缩了大量数据。MimbleWimble 协议中没有地址,参与交易的双方需共同创建一个用于交易的多重签名,并用私钥验证交易。所以在MimbleWimble 中,只需要验证 2 个事情:1:该交易没有凭空产生新的币。2:交易双方拥有其私钥的所有权。
MimbleWimble 巧妙地利用了椭圆密码学(Elliptic Curve Cryptography)满足乘法交换率和结合律的特性,来引入致盲因子从而模糊交易信息,举个例子:
引入致盲因子之前交易信息为:10+5=15
引入致盲因子5之后:10*5+5*5=15*5 即 50+25=75,
等式依然成立,但只有参与了交易的双方掌握了致盲因子的私钥,才能够得将致盲因子分解出来,得到交易信息。
可以说,匿名币这三巨头的技术可谓各有千秋,那么一个项目的成功光靠技术是不行的,我们再来从其他的维度来对比一下这三个老大哥,具体见下表:
三、小结
最后我们来总结下这三个匿名币各自的优势和劣势吧:
门罗币(Monero):
优势:
1.匿名货币的鼻祖,其核心技术经过了时间的考验。
2. 背后团队完全匿名,项目完全由社区治理。
3. 知名度高,已上线大部分顶级交易所,流动性非常好。
4. 已经开采了 95% 以上,未来通货膨胀率低于 1%。
劣势:
1. 市值较高。
大零币(Zcash):
优势:
1. 第一个基于零知识证明的匿名币。
2. 背后的公司拥有充足的资金以支持项目的发展。
3. 匿名非强制性。
劣势:
1. 项目由公司主导,财务不够公开透明。2020 年之后,10% 挖矿收益将不再支付给其背后的公司,那么该公司是否还有动力继续维护该项目?还是说放任不管,归还给社区?其背后的公司是一颗大雷。
2. 目前为止,Zcash 链上只有 20% 不到的交易为匿名交易,大部分还是公开的交易!!
古灵币(Grin):
优势:
1. MimbleWimble 技术创新 :占用空间小,交易速度快。
2. 社区主导,未接受任何形式的融资 ,不涉及复杂的利益关系。
劣势:
1. Grin 因为设计,没有地址,因此用户体验不是很友好。
2. Grin 在前期通货膨胀非常严重:每个块生产 60 个 Grin,按季度减少出块奖励,第一季度通货膨胀为 400%,第二季度为 200%,第三季度为 133.3%......十年后通货膨胀仍然高达 10%。
3. Grin 没有资金上大的交易所,只能等交易所强上,比较被动。
作者:希多说币 希多 查看全部
自比特币 2009 年上线以来,其去中心化,抗通胀,低门槛等特性逐渐被大众所认可。但是,随着当今社会对个人隐私越发的重视,比特币其账本 100% 公开透明的特点也遭受诟病,一定程度上阻碍了比特币作为支付手段(灰色地带)的发展。
为了保护用户的隐私,基于各种技术的匿名币应运而生。存在即合理,匿名币注定会在区块链蓝图里占据重要一席。 今天,要和大家讨论的是匿名技术中三位典型的代表:门罗币(Monero),大零币(Zcash)和古灵币(Grin)。究竟谁才是匿名之王?
一、前世与今生
门罗币(Monero)于2014年4月18日主网上线。其代码从匿名币 ByteCoin 分叉而来。为什么会分叉?因为 ByteCoin 不够透明,80% 的代币被预挖,掌握在少数人手里,这也是为什么币安下架这个代币的原因之一。同时 ByteCoin 的代码质量极差引起了社区完美主义者的极度不满。
Monero 一词在世界语中代表着“货币“,该命名由社区投票选出,表达了社区希望 Monero 成为全世界通用匿名货币的初衷。Monero 采用 PoW 共识算法,到2022年5月,预计将开采出 1822.3 万枚代币(目前流通量为 1700 万枚),之后将保持每分钟发行 0.3XMR 的速度来继续激励矿工维护网络的安全。在还没有太多匿名币竞争者的蛮荒时代(2014年-2016年),Monero 在黑市越来越流行,从最初的 500 万美金市值,一路攀升到现在的 15 亿美金,涨幅高达 300 倍。
大零币(Zcash) 于2016年10月28日主网上线。其前身为 Zerocash 零协议,该协议于 2014 年创立,并由霍普金斯,麻省理工等大学实验室维护。零协议着重解决数字货币隐私的问题。Zcash 是第一个基于零协议,实现了零知识认证(Zero Knowledge Proof)的匿名币。 Zcash 由比特币代码分叉而来,因此 Zcash 许多特性和比特币相似,例如:Zcash 总量为 2100 万个,每四年减产一次等等(目前流通量为 680 万枚)。
Zcash 这个项目由一家名为 Electric Coin 的美国公司维护。在 Zcash 被开采的前四年,10%(流通量) 挖出来的币(按照 200 美金价格计算,10% 一共是 1.36 亿美金)会进到这家公司的口袋,以维持公司的经营。这也直接导致了社区的不满,出现很多 Zcash 的分叉币,例如:Horizen,Zclassic 等等。值得一提的是,Zcash 因为其慢启动的设计,即开采初期挖矿难度非常的高,一个 Zcash 曾一度达到 3000BTC 一个的天价。真是心疼当年接盘的老铁啊,这辈子应该也无法解套了。另外大零币并非强制要求链上所有的交易都是匿名的,只有当你选择使用隐地址(Shielded Address)时候,交易才会匿名。
古灵币 Grin 于2019年1月15日主网上线。Grin 采用了 MimbleWimble 协议。2016年,MimbleWimble 协议由一位化名为伏地魔的 Tom Elvis Jedusor 的程序员在 Bitcointalk 提出,主要的目的是解决比特币扩容和隐私的问题。同年10月,论坛上另一位匿名开发者发布了基于 MimbleWimble 协议的第一个项目,并命名为 Grin。Grin 除了捐赠,没有进行任何形式的融资,没有私募,lCO,也没有任何预挖。
为了稳定 Grin 的价格,Grin 发行总量没有上限,每分钟出一个块,每个区块奖励 60 枚 Grin,区块奖励将会逐渐的降低 。按照此方法计算,目前流通的 Grin 大约有 1300 万枚 Grin,一年后将会生成 3000 万枚 Grin,30 年后将会生成 10 亿枚Grin。同时 Grin 的 PoW 使用了两种算法:主要算法 Cuckatoo31+(ASIC友好) 和次要算法 Cuckatoo29(抗ASIC) ,其目的是:在主网发布初期,90% 的区块将被 Cuckatoo29(抗ASIC) 挖出,因为 Grin 开发者认为,当网络算力很小时,矿工很容易掌握大部分的算力导致网络过于中心化。当主网络稳定,算力足够大时,Grin 的挖矿方式则会慢慢切换到主要算力(ASIC友好),目的是鼓励矿机生产厂商制造 Grin 矿机,增加全网算力,提高网络的安全性。
二、匿名技术
1.门罗币:关键词: 隐地址,环签名,机密交易,Korvi
隐地址(Stealth Address)的作用是隐藏收款人的地址,保护收款人的隐私。Stealth Address 工作的原理是:每当有交易发起, 都会随机的生成一个新的收款人地址。这样做的好处是,就算有多笔交易发送给同一个人,每笔交易的交易记录都显示不同的收款地址。这让外界不可能将这些交易记录联系到同一个收款人身上,从而保护了收款人的隐私。
环签名(Ring Signature)的作用是隐藏发送人的地址,保护发送人的隐私。从 Ring Signature 字面意思可以略知一二,那就是通过一群人形成一个环(圈子),每个在环(圈子)里面的人都有相同的地位和权力,环(圈子)里的任何人都可以授权交易。如果使用环签名授权交易,从外界的交易记录来看,无法确认具体是环(圈子)里哪个人授权的交易,从而保护了发送人的隐私。
机密交易(RCT)的作用是用来隐藏交易金额。RCT 全称为 Ring Confidential Transaction,在引入 RCT 之前,门罗币要求只能把交易金额一样的交易串成一个环,比如张三手上有 20 个门罗币想给李四转账 10 个,但是当前并没有 10 的环,那么张三只能把交易拆分成 3 的环和 7 的环。在引入 RCT 之后,如果张三拥有 20 个门罗,但只想转移 10 个门罗给李四,但是RCT 要求把交易分成 10+10 两部分,一部分直接转移给李四,另外一部分转移给张三自己,从而隐藏交易信息。
Korvi 的作用是用来隐藏交易双方的 IP 地址。Korvi 不是简单的 VPN 网络 。你可以把 Korvi 理解为门罗特有的中继网络。在 Korvi 每个网络节点之间,每笔交易都会被节点自己掌握的私钥进行加密。就好比 A 给 B 发送交易,在实际的 Korvi 网络中,数据包经过的路径为A->D->E->F->C->B 。如果你想拦截翻译 AB 之间的交易信息,你需要获取A,D,E,F,C,B所有人的授权和私钥,这是非常非常困难的,因为路径一直在动态地更改。
2.大零币:关键词:zk-SNARK,零知识证明
大零币基于 zk-SNARK 协议, 采用了 零知识证明( Zero Knowledge Proof)的方式来保护用户的隐私。零知识证明即能够证明自己某种权益,但又不把相关信息泄露出去,即给外界的知识为零的一种证明方式。零知识证明需要满足三个特性:完整性,可靠性和零知识性。为了方便大家理解。大白举一个例子:
假设:张三和李四参加了币安组织的交易大赛,大赛规定:一等奖获得 200 个 BNB,二等奖获得 100 个 BNB,三等奖获得 50 个 BNB,参与奖 10 个 BNB。
实际情况:李四获得了第二名(100BNB),张三只获得了第三名(50BNB)。
问题:张三和李四想知道对方是否和自己取得了一样的成绩,因为面子问题,又不想把自己的具体获奖情况泄露给对方。
零知识证明法:
张三准备了四个信箱和四把钥匙,持有这四个信箱钥匙分别代表张三获得一等奖,二等奖,三等奖和参与奖。根据实际情况(张三获得三等奖),张三按照规定毁掉了1号,2号,4号信箱的钥匙,保留了3号信箱的钥匙。
李四准备了四封空白的信,在四封信上画微笑分别代表李四获得一等奖,二等奖,三等奖和参与奖。李四按照规定在2号信上画了一个笑脸(李四获得二等奖),并将几封信依次投入张三准备的信箱。
第二天,张三自己用钥匙打开3号信箱,查看李四投信,发现信是空白,张三便知道李四没有和自己得同样的奖,并把信归还给李四。李四收到回信后,发现信上没有笑脸,李四便知道张三和自己没有获得相同的名次。
上述过程,便是零知识证明的一个典型例子,其证明过程中没有泄露给外界任何信息。
3.古灵币:关键词:MimbleWimble
MimbleWimble 来自于《哈利波特》中的一句咒语,目的是让被施咒的人无法开口说话,保护秘密。MimbleWimble 没有采用比特币的 UTXO 模型,因此可以省略大量历史数据的中间数据,比如:A-B-C-D,可以直接压缩为A-D,从而压缩了大量数据。MimbleWimble 协议中没有地址,参与交易的双方需共同创建一个用于交易的多重签名,并用私钥验证交易。所以在MimbleWimble 中,只需要验证 2 个事情:1:该交易没有凭空产生新的币。2:交易双方拥有其私钥的所有权。
MimbleWimble 巧妙地利用了椭圆密码学(Elliptic Curve Cryptography)满足乘法交换率和结合律的特性,来引入致盲因子从而模糊交易信息,举个例子:
引入致盲因子之前交易信息为:10+5=15
引入致盲因子5之后:10*5+5*5=15*5 即 50+25=75,
等式依然成立,但只有参与了交易的双方掌握了致盲因子的私钥,才能够得将致盲因子分解出来,得到交易信息。
可以说,匿名币这三巨头的技术可谓各有千秋,那么一个项目的成功光靠技术是不行的,我们再来从其他的维度来对比一下这三个老大哥,具体见下表:
三、小结
最后我们来总结下这三个匿名币各自的优势和劣势吧:
门罗币(Monero):
优势:
1.匿名货币的鼻祖,其核心技术经过了时间的考验。
2. 背后团队完全匿名,项目完全由社区治理。
3. 知名度高,已上线大部分顶级交易所,流动性非常好。
4. 已经开采了 95% 以上,未来通货膨胀率低于 1%。
劣势:
1. 市值较高。
大零币(Zcash):
优势:
1. 第一个基于零知识证明的匿名币。
2. 背后的公司拥有充足的资金以支持项目的发展。
3. 匿名非强制性。
劣势:
1. 项目由公司主导,财务不够公开透明。2020 年之后,10% 挖矿收益将不再支付给其背后的公司,那么该公司是否还有动力继续维护该项目?还是说放任不管,归还给社区?其背后的公司是一颗大雷。
2. 目前为止,Zcash 链上只有 20% 不到的交易为匿名交易,大部分还是公开的交易!!
古灵币(Grin):
优势:
1. MimbleWimble 技术创新 :占用空间小,交易速度快。
2. 社区主导,未接受任何形式的融资 ,不涉及复杂的利益关系。
劣势:
1. Grin 因为设计,没有地址,因此用户体验不是很友好。
2. Grin 在前期通货膨胀非常严重:每个块生产 60 个 Grin,按季度减少出块奖励,第一季度通货膨胀为 400%,第二季度为 200%,第三季度为 133.3%......十年后通货膨胀仍然高达 10%。
3. Grin 没有资金上大的交易所,只能等交易所强上,比较被动。
作者:希多说币 希多
皆以匿名协议著称,Grin 和 ZCash 强弱对比
攻略 • grinup 发表了文章 • 2019-02-14 10:26
Grin 作为一个实践项目,它的核心协议是具有匿名属性的 MimbleWimble,它和以匿名协议著称的 ZCash 之间的比较是合理自然的。在这里,我们尝试去比较最详尽的差异,希望不会有太多的偏颇之处。注意直到现在,MimbleWimble 协议也并没有在任何地方实现,Grin 也远未准备好。在我们有一个稳定的项目发布之前,ZCash 可以说一直是赢家,我们如下的说明都是一种猜想。
Grin Wins
无需信任设置(除了创世区块,没有任何其他种类的信任设置)。
优秀的渐近缩放与实际缩放。Grin 按照 UTXO 设置进行缩放,并且一段时间后每个 UTXO 都可以变得很小(因为可以最终放弃 rangeproof)。
在 MimbleWimble 中构建交易并验证它们在计算上是微不足道的,可以很容易地在智能手机或树莓派机器上完成。另一方面,在撰写本文时,构建 ZCash 的匿名交易需要大约 4GB 的内存和大约一分钟的计算。
默认情况下,MimbleWimble 中的所有交易都是不可见的,而此时 ZCash 的大多数交易在此刻似乎都是可见交易。
仅依赖于简单且经过良好审查的加密结构和假设。
绿色代码尽可能明确和简单,使未来的审计和维护更容易。
Grin 是一个社区驱动的实践,没有「创始人奖励」。
ZCash Wins
MimbleWimble 不支持脚本编写。虽然通过脚本在比特币中引入的一些功能,仍然可以存在于 MimbleWimble 中(如 multisig 和时间锁),但是缺少通用脚本使得其更加受限。请注意,此时 ZCash 也不支持通用脚本,为何不支持也没有理论上的原因。
虽然 Grin 交易输出完全匿名,但至少在某些时段,仍然可以追踪到那些输入相关的输出。目前尚不清楚从中可以得出什么信息。
ZCash 是基于 Bitcoin Core 代码分叉实现的,这是一个非常成熟(尽管很难维护)的代码库。
ZCash 由一家资金充足的公司提供支持。
相关讨论:https://www.reddit.com/r/Mimblewimble/comments/59qulw/mimblewimble_vs_zcash/
原文链接:https://github.com/mimblewimble/grin/wiki/Grin-and-MimbleWimble-vs-ZCash_ 查看全部
本文是 Grin 代码贡献最多的开发者 Ignotus Peverell 于 2016 年 11 月 1 日发布的一篇 Grin 和 MimbleWimble 协议与 ZCash 项目的比较。
Grin 作为一个实践项目,它的核心协议是具有匿名属性的 MimbleWimble,它和以匿名协议著称的 ZCash 之间的比较是合理自然的。在这里,我们尝试去比较最详尽的差异,希望不会有太多的偏颇之处。注意直到现在,MimbleWimble 协议也并没有在任何地方实现,Grin 也远未准备好。在我们有一个稳定的项目发布之前,ZCash 可以说一直是赢家,我们如下的说明都是一种猜想。
Grin Wins
无需信任设置(除了创世区块,没有任何其他种类的信任设置)。
优秀的渐近缩放与实际缩放。Grin 按照 UTXO 设置进行缩放,并且一段时间后每个 UTXO 都可以变得很小(因为可以最终放弃 rangeproof)。
在 MimbleWimble 中构建交易并验证它们在计算上是微不足道的,可以很容易地在智能手机或树莓派机器上完成。另一方面,在撰写本文时,构建 ZCash 的匿名交易需要大约 4GB 的内存和大约一分钟的计算。
默认情况下,MimbleWimble 中的所有交易都是不可见的,而此时 ZCash 的大多数交易在此刻似乎都是可见交易。
仅依赖于简单且经过良好审查的加密结构和假设。
绿色代码尽可能明确和简单,使未来的审计和维护更容易。
Grin 是一个社区驱动的实践,没有「创始人奖励」。
ZCash Wins
MimbleWimble 不支持脚本编写。虽然通过脚本在比特币中引入的一些功能,仍然可以存在于 MimbleWimble 中(如 multisig 和时间锁),但是缺少通用脚本使得其更加受限。请注意,此时 ZCash 也不支持通用脚本,为何不支持也没有理论上的原因。
虽然 Grin 交易输出完全匿名,但至少在某些时段,仍然可以追踪到那些输入相关的输出。目前尚不清楚从中可以得出什么信息。
ZCash 是基于 Bitcoin Core 代码分叉实现的,这是一个非常成熟(尽管很难维护)的代码库。
ZCash 由一家资金充足的公司提供支持。
相关讨论:https://www.reddit.com/r/Mimblewimble/comments/59qulw/mimblewimble_vs_zcash/
原文链接:https://github.com/mimblewimble/grin/wiki/Grin-and-MimbleWimble-vs-ZCash_
中本聪没穿衣服!该全面评估区块链隐私保护了
攻略 • chainnews 发表了文章 • 2019-02-14 10:17
最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。
密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。
2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。
现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。
比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。
人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。
在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。
现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。
1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。
在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否(或有哪些)确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。
出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。
作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。
但我们的对手不理这一套。
结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。
现实世界的隐私威胁
人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。
在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。
同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。
有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。
2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:
在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。
几天后,这位经理又打专门电话再次道歉。
然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」
人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。
一个更直观的例子是 Venmo。解释下, Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。
我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。
人们不应该对任何具有这些功能的系统听之任之。
另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。
需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。
记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。
比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。
防御和失败
什么是可行的防御 ?
在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」
这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。
区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。
隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。
首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。
另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。
在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。
同样,在使用 Zerocash 原理的系统中,没有任何标识符。
我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。
诱捕式匿名(Decoy-Based Deanonymization)
假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。
监督者攻击
假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。
污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。
打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。
如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。
如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:
情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去
Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。
这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。
手电筒攻击
假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。
如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。
我在这里描述的是它应该如何工作,而不是实际如何工作。
如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。
政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。
现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。
对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。
政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。
正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。
这可能是对诱捕式系统最容易执行和最令人不安的攻击。
结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!
污染尘埃攻击
还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。
假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。
在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。
这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。
执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。
总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。
各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」
那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。
解决诱饵问题
对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」
现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。
我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。
最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。
链闻注:作者提及的两篇关于门罗币可追踪性的研究论文请见:An Empirical Analysis of Traceability in the Monero Blockchain https://arxiv.org/pdf/1704.04299/;A Traceability Analysis of Monero’s Blockchain https://eprint.iacr.org/2017/338.pdf
大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。
你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。
零知识的方法
我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在 Merkle 树中。
如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。
方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许
d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。
我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40 MB。同样,bulletproof 也越来越快。
结论
我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。
我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。
链闻注:Grin 开发团队撰文所写的该项目隐私保护概览一文,可以参见「Grin Privacy Primer」https://github.com/mimblewimble/docs/wiki/Grin-Privacy-Primer
不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。
最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。
总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。
可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。
记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。
还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。
无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。
我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。
本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。
原文:Blockchain Privacy: Equal Parts Theory and Theater
撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash
编译:詹涓 查看全部
希望那些参加了「Scaling Bitcoin」和 Devcon4 大会的中国区块链开发者还记得 Zcash 基金会董事会成员 Ian Miers 在大会上的演讲。他在演讲中大声疾呼:我们处于密码货币开发和使用的早期,我们对如何保护区块链上数据隐私的经验还很少,所以我们必须小心谨慎地评估目前所有的技术解决方案,别轻易就说「我们已经实现了隐私保护」!
最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。
密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。
2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。
现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。
比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。
人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。
在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。
现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。
1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。
在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否(或有哪些)确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。
出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。
作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。
但我们的对手不理这一套。
结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。
现实世界的隐私威胁
人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。
在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。
同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。
有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。
2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:
在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。
几天后,这位经理又打专门电话再次道歉。
然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」
人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。
一个更直观的例子是 Venmo。解释下, Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。
我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。
人们不应该对任何具有这些功能的系统听之任之。
另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。
需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。
记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。
比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。
防御和失败
什么是可行的防御 ?
在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」
这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。
区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。
隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。
首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。
另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。
在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。
同样,在使用 Zerocash 原理的系统中,没有任何标识符。
我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。
诱捕式匿名(Decoy-Based Deanonymization)
假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。
监督者攻击
假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。
污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。
打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。
如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。
如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:
情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去
Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。
这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。
手电筒攻击
假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。
如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。
我在这里描述的是它应该如何工作,而不是实际如何工作。
如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。
政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。
现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。
对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。
政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。
正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。
这可能是对诱捕式系统最容易执行和最令人不安的攻击。
结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!
污染尘埃攻击
还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。
假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。
在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。
这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。
执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。
总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。
各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」
那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。
解决诱饵问题
对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」
现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。
我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。
最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。
链闻注:作者提及的两篇关于门罗币可追踪性的研究论文请见:An Empirical Analysis of Traceability in the Monero Blockchain https://arxiv.org/pdf/1704.04299/;A Traceability Analysis of Monero’s Blockchain https://eprint.iacr.org/2017/338.pdf
大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。
你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。
零知识的方法
我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在 Merkle 树中。
如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。
方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许
d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。
我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40 MB。同样,bulletproof 也越来越快。
结论
我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。
我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。
链闻注:Grin 开发团队撰文所写的该项目隐私保护概览一文,可以参见「Grin Privacy Primer」https://github.com/mimblewimble/docs/wiki/Grin-Privacy-Primer
不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。
最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。
总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。
可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。
记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。
还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。
无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。
我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。
本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。
原文:Blockchain Privacy: Equal Parts Theory and Theater
撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash
编译:詹涓