区块链 隐私交易

admin
admin 2020年05月06日
  • 在其它设备中阅读本文章

区块链的一个重要特点是公开性,也就是说,任何人都可以从链上把整个区块的数据拉取下来,虽然包括比特币等区块链项目都采用的匿名交易,但是通过对数据地址和相关 IP 的分析,仍然大概率发现交易的双方。而相当一部分交易是不需要或者说不希望让别人知道交易细节,特别是交易的对象。
因此,增加了隐私交易的区块链技术就应运而生,其中,主流隐私交易方案有以下几种:

  1. 门罗 (monero):门罗币主要是是采用签名来保护隐私性。
  2. 达世 (Dash),他使用的是混币技术保证隐私性。
  3. 零(Zcash):主要使用 snark 库来实现零知识明,达到保护隐私的目的。

一、以环签名为代表的门罗

门罗主要使用以下三种技术:

  • 环签名,用于隐藏交易发起人。系统在交易发生时会同时伪造多个交易,这些交易发起人地位相同。
  • 混淆地址,用于隐藏交易接受者。转账资金会发送到接收方公钥生成的临时地址,然后接收方用私钥检索临时地址列表中的所有权。
  • 环加密,用于隐藏真实金额。钱包在转账时会给转账金额加上随机数,网络会利用这个加上随机数的值进行验证交易金额。

为了理解环签名是什么,它是如何保护了发送者隐私。让我们从现实生活中的一个案例谈起,当你要给某个人发送支票时,是不要需要签名?但是,也正因如此,看到这个支票的任何人(和知道你的签名是什么样的人)就会知道你就是那个发送人。现假设,你从街上随机选择 4 个人。把你的签名和这四个人进行混合得到一个独一无二的签名。这样就没有人能够发现这是否真的是你的签名。这就是环签名本质上的工作方式。
在门罗中:Alice 发送 1000XMR(XMR 即门罗币)给 Bob,系统会如何使用环签名来隐藏她的身份?首先,Alice 会确认她的“ring size(环大小)”。ring size 是取自区块链的随机 UTXO,它等于 Alice 的输出值,即 1000XMR。ring size 越大,交易越大,继而交易费越高。然后,她用 private spend key 对 UTXO 进行签名,并发给到区块链。另一点要注意的是,Alice 不需要向之前交易的所有者发送请求来使用这些 UTXO。那么,假设 Alice 选择的 ring size 为 5 ,也就是说 4 个 decoy output(诱骗输出)和它自己的 UTXO,从外面看起来就像这样:
decoy.jpeg

在一个环签名交易中,任意一个 decoy 就像真实 UTXO 一样,因为任何不相关的第三方(包括矿工)都无法知道发送方是谁。
环签名的缺点是,仍然有办法被攻破,而导致隐私交易达不到隐私的目的。在相关资料上,有一个签名的私钥可追踪,那么就会使隐私性受到威胁。另外 CoyptoNote 本身是有漏洞的,门罗币曾经遭到过一次子集网络划分的攻击。

二、以混币为代表的 Dash

达世币有三种转账方式:

  • 是像比特币一样的普通转账。
  • 是即时交易。不需要矿工打包确认,就可以确认交易,几乎可以实现秒到。
  • 是匿名交易。从区块链上看不到是谁和谁进行了转账。

达世币中除了普通节点之外,还有一种节点叫“主节点”。主节点可以提供一系列服务,如:匿名交易和即时支付。如果有用户发起了匿名交易,它的申请会发送到相关的主节点上,然后主节点根据情况,把多个申请者的交易进行混合,也就是混币(一般来说,是三笔交易一起进行。)网上有一个例子,一桌人把自己的钱都放在桌上,混在一起,然后再分别拿回相应面值的钱,这样就不知道你手里的钱到底是谁的了,这就是混币。混币后,网络就不知道究竟谁转账给了谁。
达世币的优势在于,它可以比较容易的实现隐私性,不需要额外的新的算法,即使在混币的过程中会有性能损失,从理论上讲还是可以忍受的。
达世币的混币池交易,从理论上讲是安全的,但实际上,混币的过程也有很多漏洞,首先,混币为了能够更好的隐藏交易,一般是中心化部署的,很容易受到攻击,容易产生单节点信息泄露。另外,如果用户在交易时没有及时清理 Cookie,很可能通过技术手段寻找到相关的信息。

三、以零知识证明为代表的 Zcash

Zcash 具有两种地址:

  • t-address:基于 UTXO 的地址,实现与 BTC 一样的交易逻辑
  • z-address:与隐私地址关联的交易,由密码学保证其地址值,转移数量无法被追溯和泄露。

Zcash 交易有四种方式:

  • t-address->t-address:交易模式与 BTC 相同,公开透明
  • t-address->z-address:交易输入透明可查询,交易输出地址无法从链上查询,可用做将可追溯的 token 加密,使其从该笔交易开始具有不可追溯性。
  • z-address->t-address:交易输出地址与金额透明可查询,交易输入无法追溯。
  • z-address->z-address:交易输入与输出均加密不可追溯,交易数量不可追溯。

Zcash 使用了零知识证明算法 zk-SNARKS。简单的来说,零知识证明就是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

例如 A 要向 B 证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有 2 个方法:

  1. A 把钥匙出示给 B,B 用这把钥匙打开该房间的锁,从而证明 A 拥有该房间的正确的钥匙。
  2. B 确定该房间内有某一物体,A 用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给 B,从而证明自己确实拥有该房间的钥匙.
    后面这个方法属于零知识证明。好处在于在整个证明的过程中,B 始终不能看到钥匙的样子,从而避免了钥匙的泄露。
    例如 Alice 转 1 个 ZEC 给 Bob。这个例子中有涉及到的角色有转账双方 Alice 和 Bob,以及验证人(矿工)。首先是 Alice 和 Bob 都有了一张支票,这两张“支票”都是有效的。Alice 的支票开始就存在于整个 ZCash 网络,Bob 的支票在生成后也会被广播到全网。为了隐藏交易者信息,要对两张支票进行加密处理,可以通过拥有者的私钥解密。
    同时,因为资产只能有一份,所有矿工手里还有一个作废列表。Alice 要同时广播自己的“发票代号”,录入作废列表中。发票代号也是加密的。所以矿工们能看到的信息其实是这样的。其中 Alice 的支票是原先存在的,Alice 的支票代号 r1 和 Bob 的支票是在交易过程中被 Alice 广播的。
    矿工们能获取的信息相当有限,但是这并不影响对矿工对交易有效性的判断。矿工拿到 Alice 给的支票代号 r1,去作废列表中检索,假如作废列表中已经存在 r1,则证明 r1 所对应的的支票早已失效;若作废列表中并不存在 r1,则证明 r1 对应的支票仍旧有效,此时矿工把 r1 录入作废列表中,把新生成的支票录入支票列表中。所以记账的过程就是对原有支票登记失效,并存入现有支票票的过程。
    在这个过程中,我们不难发现,每笔交易矿工能接收到的东西只有一个发票代号,和一张新的发票,而且这两样东西都是被加密的。所以矿工并不知道转账双方是谁,也不知道转账金额是多少。

四、总结

上述三种隐私交易机制设计,基本代表了区块链中主流隐私交易的实现方式。本文简单介绍了隐私交易的算法原理,在交易的隐私性上,zk-SNARKS>= 环签名 > 混币,在算法的简洁程度上,混币 > 环签名 >zk-SNARKS。零知识证明系统是 1989 年由 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在《交互证据系统的知识复杂性》(The Knowledge Complexity of Interactive Proof Systems)论文中首次提出的。在 2013 年第一次被应用于区块链系统中,目前,包括 CMU,MIT,John Hopkins 等顶尖研究机构在该领域成立了专门的团体和机构进行算法研究,同时包括以太坊,Quorum 等在内的众多技术社区都在积极探索零知识证明的创新和应用。
最后,零知识证明和密码学所提供的隐私和保密性,在某种程度上是叠加的,它在社会中的作用取决于你如何衡量它。对于希望保护个人资料的个人或保护商业秘密的公司,它是一种权利,给那些不想伤害它的机构一种义务,就像那些享有言论自由的人被恳求不要用它来伤害他人一样。对政府而言(理想情况下),它是一种责任,因为涉及到大多数公民的权利,公民希望并相信,政府将用一种方式既允许我们保护自己的隐私,又保护我们免受恶意行为者滥用隐私的侵害;然而在现实中,我们知道这种情况在今天是不可能存在的。
尽管如此,密码学的目标在这两个领域都是存在的,这样一个社会才能真正实现自由:自由地保护信息的隐私,同时又不用担心滥用隐私造成伤害。考虑到密码学在过去几个世纪的历史,伴随着日新月异数学和科学进展,密码学可以能帮助世界实现这样的目标,这一期望也终将实现。

五、参考链接

达世(DASH)
官网:https://www.dash.org/zh-hans
文档:https://docs.dash.org/zh_CN/stable
白皮书:https://github.com/dashpay/dash/wiki/Whitepaper_zh_cn
项目地址:https://github.com/dashpay
隐私交易解决方案:混币,多笔交易(金额相同)通过中心服务器混合成一笔交易。

门罗 (monero)
官网:https://www.getmonero.org/zh-cn/
隐私详解:https://learnblockchain.cn/article/1123
项目地址:https://github.com/monero-project
隐私交易解决方案:环签名,用于隐藏交易发起人。混淆地址,用于隐藏交易接受者。环加密,用于隐藏真实金额。

超零 (SERO)
官网:https://sero.cash/cn/
wiki:https://wiki.sero.cash/index-zh.html
白皮书:https://sero.cash/SERO_CHS_V2.0.pdf
项目地址:https://github.com/sero-cash
区块浏览器:http://cn.seroscan.com