Monero技术详解(一):技术方案总览

比特币创造性地密码学、博弈论、货币经济学等多种技术结合起来,形成了历史上首个真正稳定运行较长时间的去中心化货币系统。在获得了巨大成就的同时也产生了诸多后来者有待于解决的问题,其中被讨论较多的问题是公开账本上记录的交易明文信息致使的用户隐私泄漏问题。也有诸多方案来解决这一问题,Monero无非是运用密码学协议来解决该问题中表现较为出色者之一。
Monero不单使用了较为通用的区块链技术来实现账本一致性问题。并且使用较为精妙的密码学技术来解决隐私问题。技术选择有如下。
1. 一次性地址
Monero继承了比特币所使用的UTXO模型。与比特币不同的是比特币的多个UTXO的地址可能相同,这也就显示展示出资金的所有权。Monero的每个UTXO都具有不同的地址(只要交易发起者不蓄意适用相同的地址),避免展示出不同的UTXO归统一用户所有。其中所使用的技术是一次性地址。
一次性地址由发送者产生,并通过Diffie-Hellman秘密交换的方法,将私密信息交换给接收人,让接收人恢复出一次性私钥,完成UTXO所有权的转移。
2. 环签名
为了混淆资金流路线,Monero采用环签名技术。每笔真正待消费的UTXO都可以用任意数量的其他UTXO(加上真正的UTXO,共同称之为环)来混淆视听,极大地扰乱观察者的视线,让资金的追踪者无力跟踪资金的来源。
如同普通数字签名用来证明签名出自于某一特定公钥的签名人一样,环签名用于证明的签名是出自于组织的某一成员,并且不暴露该成员的真正身份。这一概念与群签名概念颇为相似,只是群签名具有额外的可公开身份功能,该功能在特定情况下可展示于真正的签名人身份。环签名则是将这一可公开身份的功能去除掉,彻底做到隐藏身份于群体(环)。
具体来说,环签名具有一下性质:
1.签名人的模糊性:如上所说,除了真正签名人之外的所有观察者,都只能确定某一签名来自于某一公开了所有公钥集合的群体,至于真正的签名人,则无法获知。Monero运用这一性质来混淆交易中资金的来源。
2.可链接性:Monero中,当一笔UTXO被消费掉等价于该UTXO对应的一次性私钥作了签名并且被矿工用其对应的一次性公钥验证通过,交易写入到账本。当同一笔UTXO被花费之后,恶意者试图对该UTXO作第二次消费尝试时,矿工需要即使的发现并剔除此交易。此时环签名的可链接性使得历史第一次消费记录与第二次消费尝试有链接关系,判定为同一UTXO,丢弃第二次消费尝试。抽象地说,如果同一个私钥对于不同的消息作了签名,那么这两签名之间的联系是可以察觉到的。
环签名技术在Monero中的作用之一是为了混淆资金的流动链路。
3. 资金数量隐藏技术
另一项需要保护的隐私数据即为交易中的资金数量。Monero运用Pederson承诺来对第三者隐藏交易的数量,使其信息论意义上完美隐藏了资金数量。并且Pederson承诺的加法同态可加性以及区间证明技术,让矿工在非明文情况下即可验证多输入-多输出交易前后资金并未非法增加。其中值得一提的是区间证明技术。在v0.13.0.4版本之前,Monero运用环签名(再一次用到环签名,但是目的不同)技术对UTXO资金数额的每个比特均作一次环签名,以此来证明UTXO中数额字段均存在于某一区间内。在v0.13.0.4及其之后的版本中,Monero运用子弹证明技术,将范围证明字段长度极大地缩短,也因此Monero链上的单笔交易费降低了约96%。
在接下来的系列中,我将分篇具体地介绍Monero其中所使用技术的细节。