在区块链中既然每个人都能记录到每一笔交易或行为,那如何保证发生交易或行为人的隐私?如果说其他人收到的都是加密信息的话,对于币的交易如何判断这个币的归属呢?


这个问题问得很好。

这是区块链发展过程中的一个重大矛盾,至今仍未完全解决。即如何在所有节点都保存一份完整账本的前提下,保护链上交易者的隐私。

大方向有两个,

1是不从根本上解决因素问题,但通过各种手段让追踪成本提高,使得追踪成本过高而变得不划算。

2是从根本上加密交易过程,通过零知识证明、环形签名等方法直接从数学上保障交易匿名性。

BTC比特币,作为首个被大量接受的区块链货币,其隐私保护就是没有保护。BTC链上交易对所有人公开。并且由于上万个全节点都保存了区块账本的特性,使得链上交易完全没有可能被彻底消除。这样的设计在隐私保护上甚至弱于使用现金,给各国政府追踪链上(合法非法)交易提供了极大的便利(交易记录全球公开,并且记录一旦上链就不可能消除。秋后算账非常方便)。

对此BTC早期开发者不是没有做过努力,比如中本聪本人就引入了零钱地址机制。即每次付款后,余额都会全部转移至一个新的地址内。以此大量增加交易参与方地址数量,来增加刺探交易的成本。但目前事实证明该方法没有什么效果,反倒给用户使用带来了大量不便。

后续btc也从其他币上引入了一些成功的加密匿名方法,但这些方法里没有任何一个是默认启用的。(比如下面提到的隐秘地址需要收发双方钱包都支持)因为很少有人用,这些功能也发展不起来。

SCE FBI等机构都有自己的虚拟货币分析部门,FBI发言人甚至公开宣称过btc上追踪非法交易比现金更容易,希望有更多非法交易在btc上进行以更好的抓捕。

在认识到只靠找零机制不靠谱后,币圈2013/14/15年出现了大量更复杂隐藏手段的币,大部分采用的都是混币机制

混币机制即把几个人交易的币都混在一起,然后一起发给接收方。这样经过中间集中,没法直接获得发出方和接收方是谁。这个方法大幅提高了分析成本,但并没有从根本上解决问题。长期的多次交易,还是能从记录中以很大把握找到发出方和接收方。(这类有dash等具有一定匿名性的币)

这个问题直到2015年门罗币XMR引入环形签名机制之后才算是大致上从根本解决。

环形签名最早出现在十七世纪法国,当官员向皇帝进言有可能让皇帝不高兴的内容时,官员们会把名字围绕一个圆签在外面。这样签名就没有主次之分。可以避免皇帝一不高兴抓了发起人杀头。(但不能避免皇帝把所有签名了的人都杀了)

XMR的环形签名机制还引入了支付公钥和观察公钥,使得支付方公网不可见。

隐匿地址Stealth Addresses通过支付公钥和观察公钥,加密接收方地址,使得接收方不可见。

另外搭配RingCT机制隐藏金额,Kovri 技术隐藏交易方IP,等等的技术隐藏信息加强匿名性。

门罗币的上述机制都是默认启用的。同时由于所有交易都默认进行混币,所有人的交易都互相关联,也导致了另一些问题。比如链上如果有太多人私钥暴露,整个链的安全性都会下降。这直接导致XMR的分叉币会导向一个两败俱伤的情况。(在分叉上想要交易必然要使用私钥,一旦暴露,两条链上的安全性都会下降)。

另外,由于交易方需要持续扫描全网,XMR的交易量提升很困难。超过一定阈值会导致交易无法完成。

最后,XMR的多重加密机制导致每个交易都非常臃肿,直接限制了XMR的TPS(每秒交易量)。

XMR并不是完美的虚拟货币。

Zcash采用了一个不同的机制,是zk-SNARKs(一种零知识证明机制)。这个机制可以让交易双方发起完全加密的匿名请求,矿工在不需要解密,不需要知道双方是谁的前提下,通过零知识证明机制自动撮合加密交易处理。

尽管零知识证明在数学上没有漏洞,但zcash在实现上并没有强制开启该功能,同时由于没有工程上默认启用的增大追踪难度的混币等机制。zcash整体匿名性不如xmr,尤其是在代码出bug时,zcash上交易记录更容易被追踪。(即0day攻击下,monero的抵抗性强于zcash)

其实市场在这两个币的加密性之间已经有了对应表现,XMR的市值高于ZEC大概4倍。

上述各种机制我就不班门弄斧细讲原理了,这需要有一定密码学基础。而密码学有自身难度在这里,并不是每个人都能轻松理解。

比如下面评论就有不懂密码学瞎喷的,呵呵呵呵。


交易记录只有交易的双方知道,这样就保证了隐私。目前已经有好几个方案

1.混币器。区块链上有多个搅拌器,要转账的每个币都要经过搅拌器和许多别的币混合,这样,从混币器出来后,除了混币器节点,别人谁都不晓得这个币来自哪里。用户把一组币委托给混合器,然后从混合器中取出等价值的币。达世币(Dash)就是采用了混币器方案。

2.Zerocoin.熔铸掉你自己的加密货币(也就是所谓的零币熔铸),然后再兑换等量的做记号的新币(被称为零币取回)。这些币在没有任何交易历史的情况下出现,与新挖矿而得到币相似。零知识证明用来证明你确实烧过了加密货币,而没有透露你烧过的具体加密货币信息,因此你有权赎回等量的新币。与只是掩盖交易环节的混币不同,这种机制完全打破币的交易环节。转账交易接受方得到的币看起来完全是全新的币。

3.zk-Snark.是基于零知识证明的一种改良,交易验证者可以在不知道交易的信息的情况下验证交易合法


这个问题详细解释起来可以很复杂,我试著简化一下,只讲解其中密码学涉及的大质数分解。更详细的请自己查。我们来举个例子:

假设有一个"删债币",我的钱存在地址:」100,003,220,005,757「。

100,003,220,005,757是由两个数相乘得来的。其中:

  • 小的那个数是我的密码;
  • 大的那个数的后三位是这个地址的余额;
  • 其他的数字代表其他信息。

你能破解我的密码和金额么?

如果我要花掉这笔钱,必须要给"删债币"取款机提供这个一个密码,机器只要做这件事儿:

  • 我给机器提供密码:*******
  • 100,003,220,005,757 ÷ ******* = X
  • X是一个整数并且大于*******,如果不是,密码不对。
  • X的后三位是多少,把钱吐给我。

具体密码是多少,金额是多少,请看评论区。

在这个例子中:

  1. 取款机的代码是公开的。
  2. 账户地址的信息也是公开的。
  3. 我作为拥有这笔钱的人随时可以把这笔钱取出来。
  4. 你无法取走这笔钱,但我可以给你证明我有这笔钱(评论区提供密码证明)。
  5. 其他任何人跟你一样,都无法证明他们有这笔钱。


其他人基本上是针对一些利用密码学工具来保护数据隐私的方案来讲解的,主要包括了环签名、同态、零知识证明等。这些方法往往会在效率、易懂性、实现难度等方面表现有所降低。

除此之外,还有一些从工程角度来解决该问题的,如以太坊的状态通道通过将小额、高频交易放到链外进行,这样只有初始状态和最终状态为交易无关方所知,而中间状态只能被交易参与方所掌握;另外,还有如ChinaLedger提出的CCP(中央对手方)方案,增加了一个第三方,将交易的记账与有效性验证分开;以及达世币所使用的混币机制等。显然,这些方案从简单、易用性出发,因此在隐私保护方面有所妥协。从目前来看,隐私保护只有在效率与安全性等方面有一个较好的平衡点时,才能更好地帮助区块链技术发挥更大的价值。


Monero隐匿地址是通过DH交换实现的,Monero把DH中间结果作为隐匿地址展示给别人。下面以接收方Alice、发送方Bob为例参考:

Alice:产生两个随机数 [公式] 作为私钥,计算出公钥 [公式]

Bob:

  • 产生随机数 [公式]
  • 计算一次性公钥 [公式]
  • 计算DH中间结果 [公式]
  • 将上述结果附加在交易中,使用P作为收款地址构造交易锁定脚本

Alice:

  • 持续监控网路中产生的新交易,提取出每一个交易的 [公式] 栏位
  • [公式]
  • 使用自己持有的随机数 [公式] ,计算 [公式] 是否和 [公式] 相等
  • (是不是感觉弱爆了,非常低效)
  • 当发现[公式] 时,Alice便可以通过 [公式] 计算出 [公式] 对应的私钥了
  • Alice便可以花费看似随机的地址里的币了

https://cryptonote.org/whitepaper.pdf?

cryptonote.org

Monero启用Ring CT后还可以隐藏交易金额,其基础版本来自于nullc的Confidential Transaction,基本思想就是把比特币的校验规则 [公式] 中具体金额隐藏,只返回对比结果的正确性。

具体做法直接看nullc的文章和Ring CT paper

https://people.xiph.org/~greg/confidential_values.txt?

people.xiph.org

https://eprint.iacr.org/2015/1098.pdf?

eprint.iacr.org

Zcash主要是运用了可验证计算里的Pinocchio协议,提供Hash运算、Merkle树修改状态的证明,并且不公开输入。

具体的抽空写,不知道比Monero高到哪里去了。

市值又不能证明什么,EOS当前还是空气,市值排名还在Monero前面呢。


前面的门罗和zcash的例子讲的不错了。环签名我觉得也只是在理论上有用,因为如果签的人少他可以通过追踪大量的交易来做排除法,签的人多了效率感人

这个道理来看门罗和zcash涨不起来

现在比较能用的办法就是hash上链

hash上链的意义在于,我和谁谁做了一笔交易,其实其他人不用知道比特币之所以慢,就是因为他要所有人都要验证交易事实上隔壁村的王二狗有多少钱与我何干?只要王二狗和我交易的时候,出示他的财产证明,我上链一看,哟是真的,就可以了这个证明可以是一大串交易的结果,我可以验也可以不验,看场合,小额交易买杯咖啡就不用了,就像现在免密支付一样所以回到人类社会的发展,其实区块链目前还在人类的村落时代,还只是刚刚开始

如果你是直接持有的私钥,而不是通过交易所去购买的数字货币(代持私钥),那么其实不存在这个问题,因为区块链的账户地址不是记录的用户姓名等信息,而是一个哈希字元串,只要你不公开的把自己和这个哈希字元串关联在一起(比如写一篇文章 让别人给你的这个地址打赏),木有人知道交易的对象是谁


zcash提供了一种解决你提到的问题的方案。泛泛地说,交易是本身是加密的,其他用户通过零知识证明协议来验证交易是否合法。所有者有创造一个交易必须的秘密信息,只有他能生成合法的交易。所以这个币只能他用。


推荐阅读:
相关文章