区块链隐私保护技术解析——之门罗币(monero)

一、引言

近几年勒索攻击事件频频发生,且数量逐年增加。勒索事件对各国政府机构、交易、科技、医疗、传媒、金融都产生较重的影响。2020年,全球因勒索软件造成的损失大约25万亿美元。勒索病毒幕后的黑客获得了高额的赎金,并成功兑现,这样更加剧了勒索事件的爆发。勒索软件一般采用加密货币做为赎金进行交易。加密货币由于其自身的特性-匿名性很难被第三方监管,而且难以追踪和溯源。

从2011年开始使用加密货币交易的勒索软件迅速增长,几乎每个季度都加倍增长。勒索事件中加密货币的使用成倍增加的原因在于加密货币天然的匿名性。黑客大多数使用的加密货币都是我们耳熟能详的比特币作为赎金。比特币交易结构中的地址关系如图1所示。比特币的地址和背后实体的关系不是真正意义上的匿名,而是使用了一个地址作为假名。犹如实际生活中的网名一样,只是这个网名和现实实体的关系没有记录在一个中心化的服务器上,所以不能得到网名和现实实体的关系,比特币利用这样的方式实现匿名性。

图1 比特币的交易结构

实际上根据T.Okamoto 和 K.Ohta描述的理想加密货币的标准中包含“隐私性:用户和他的购买物的关系不能被任何人追踪。”这个可以总结为两个隐私特性:

  • 不可追踪性:交易的输出和输入之间的关系不可追踪,即不能分辨交易的输出和输入之间的关系;
  • 不可链接性:交易的输入之间是等概率的,即不能分辨交易的发送者之间的关系;

比特币(Bitcoin)交易的格式和公开的账本信息造成了Bitcoin的交易是可追踪的,另外通过对区块链交易启发式聚类分析可以显示出用户地址之间的关系从提取的数据可以推断一些用户隐藏的信息[1] [2]

针对这些脆弱性,比特币论坛提出了一些解决办法,也就是混币方案其灵感来自于洗钱方法。但是混币方案的中心也有可能暴露用户的隐私。针对Bitcoin的隐私性不足,诞生了一批强匿名性的加密货币,其中具有代表性的是Bytecoin,Dash(Verge),Zerocoin,Zerocash,Monero等。黑客利用门罗币挖矿事件一直频频发生,绿盟科技的威胁捕获系统,可以监测门罗币挖矿的僵尸网络。自2017年以来,门罗币(Monero)在强匿名加密货币中的主导地位一直上升,强匿名货币的市场份额虽然小,但一直是黑客和暗网市场的宠儿。如图2所示,Monero以超过55%的市场份额位居榜首,Zcash和Dash紧随其后,市场份额大致相同,其他强匿名性加密货币大多是不知名。

图2 门罗币的市场份额

二、门罗币(Monero)介绍

针对比特币的隐私泄漏,门罗币[3]陆续采用了三种技术实现区块链的强匿名性,这三种技术是:

  • 一次性地址
  • 环签名
  • 环机密交易

这三种技术分别解决的问题是可链接性,可追踪性,交易数据隐私。并且根据密码学技术的发展对技术进行迭代更新,使得效率更高,占用的资源更少。

比特币等区块链的地址和交易结构存在脆弱性,通过对地址和交易的分析可以推断出用户的隐私信息,主要有两个方面:一个是交易之间的关联性通过区块链中的公开账本可以获得,即交易的可追踪性;另一个是通过对区块链地址的启发式聚类分析可以推断和分析出其他地址和实体的关系[1] [2],即交易的可链接性。门罗币通过上面的一次性签名解决了交易的可追踪性,通过环签名解决交易的可链接性。

2.1 门罗币的一次性地址

比特币中,一个用户一旦公布地址,那么链上关于此地址的所有交易和地址的拥有金额都可以查询,比特币实质上是将用户和区块链上的假名绑定在了一起。门罗币利用了一次性签名使得观察者不知道一个交易的接收方是谁,这样隐藏了一个交易的接收方,使得交易不能被追踪。

比特币的地址生成方式是由一个私钥通过椭圆曲线生成一个公钥,公钥通过两次hash后得到一个地址,一个企业或者店铺可以公开自己的地址进行收款服务,个人也可以把地址私下发送给要给自己转账的人,其他人可以通过交易转账到此地址。这个地址的所有交易都记录在比特币的公开账本上,任何一个全节点都可以获得这些交易数据。这个企业,商铺或者个人的交易信息就会被所有人得到,通过数据分析会泄露企业或者店铺的大量商业信息和隐私信息。

图3 比特币地址生成

门罗币采用一次性地址来解决上面比特币出现的信息泄漏来加强隐私保护的,门罗的的椭圆曲线参数选择的ED25519,每一个使用者生成两个私钥(SK1,SK2),并生成私钥对应的公钥(PK1,PK2),此公钥对就是门罗币使用者的公开地址。一个门罗币的使用者公布一对公钥(PK1,PK2),一个发送者要发送一笔交易到地址(PK1,PK2)上,发送者首先生成一个随机随机数r,利用随机数和PK1相乘得到一个椭圆点(r*PK1),计算(Addri=hash(r*PK1)G+PK2), 发送者付款到地址Addri,并附带一个参数(R=r*G),图4示例了门罗币一次性地址(Addri)的生成过程,门罗币公布的地址(PK1,PK2)不在区块链账本上显示,而且出了拥有私钥的使用者,其他任何节点不能得到一个地址(Addri)是否属于(PK1,PK2)。只有拥有PK1的私钥才能推算一个地址是否属于(PK1,PK2)。接收者如果能通过私钥计算出一笔交易的地址(Addri),那么这笔交易属于接收者的。

图4 门罗币的地址生成

门罗币的一次性地址和比特币的普通地址相比,比特币地址犹如一个使用者使用了一个假名,任何人都可以得到这个假名(地址)的交易信息。而门罗币收款则是每一次交易使用一次性假名,且每个假名都是使用了单向函数和DH交互协议生成,使得除了私钥拥有者外其他人无法获得假名之间的关系。这样一个全节点即不知道账户之间的关系,更无从得到一个账户的资产。图5示例了比特币地址和门罗币地址的对比。门罗币使用一次性地址解决了区块链公的可追踪性,加强了隐私保护。

图5 比特币地址和门罗币地址对比

2.2 门罗币的环签名

环签名是在十七世纪的时候,法国群臣向国王进谏时,为了不让国王追查到是由谁带头签名上书的,于是他们发明出了一种环形签名的方式,所有人的姓名按环形排列,自然的隐藏了签名顺序,从而做到无法追查源头。

比特币只是每个数字货币拥有者使用地址对应的私钥进行签名即可花费地址上的数字资产,但是门罗币利用了环签名,用一组地址作为输入,其中只有一个地址的数字资产进行花费,其他的地址是随机从区块链上选择的,区块链分析者不能通过任何签名数据和区块链上数据分辨出花费数字资产。图6显示比特币的签名和门罗币环签名的对比。从感官上可以看到比特币和门罗币两种签名方式的不同。

图6 比特币签名 VS. 门罗币环签名

密码学中的环签名是由群签名演变而来,即一个群组中的任何群组成员的签名,可以通过一个群组的公钥验证通过。但是无法追踪签名者是群组中的哪一个成员。门罗币使用的环签名技术是一种可链接环签名,即同一个成员签名两次是可链接的。针对区块链交易的可链接性门罗币通过环签名使得交易的输入方有几个输入干扰地址,从而分析者不能区分一笔交易的发送方是哪一个地址的输入,交易的输入干扰地址和真实的地址不可区分,且等概率。

2.2.1 环签名算法

门罗币在刚发行时采用的环签名算法[4],由(GEN,SIG,VER,LNK)组成:

环签名的详细算法见图7,2017年门罗币把最初的环签名算法替换为可链接的环签名[5]技术升级了门罗币的环签名,此次环签名的改进使得签名大小减小了一半,同时使得区块链存储花费降低了接近一半。2020年门罗币的环签名采用了紧凑型可链接环签名方案使得交易的大小减小约25%交易验证速度提高20%。

图7 门罗币环签名算法

2.3 门罗币的交易结构

一般区块链如比特币或者以太坊的交易结构”From A to B m amount ” ,例如比特币交易结构示意图如图8所示。A和B分别是发送者和接收者的地址。而门罗币的交易结构中使用了一次性地址把B的信息隐藏了,只有发送者和接收者知道交易的接收地址和实际B公布的公钥(PK1,PK2)的对应关系,从而使得其他所有记账节点无法知道接收者是谁;门罗币还使用了环签名混淆了A的信息,A选择一些门罗币中的一些交易输出结合自己要花费的交易作为交易输入,然后混合后的集合作为一个群组,利用环签名算法使得其他所有人无法分辨时哪一个输入花费的。外面看来门罗币的交易结构如同”From {A1,A2,A3,……,An} to X m amount ”图9是门罗币交易结构的示意图。发送者每次转账给同一个接收者时,接收者的地址也不相同,并且发送者也对自己的输入做了混淆。

图8 比特币交易结构
图9 门罗币交易结构

门罗币也是UTXO式的记账方法,是否可以实现多输入和多输出呢?答案式肯定的。多输入是通过把环签名的密钥使用密钥向量替代来实现的,对应的环签名所有参数都是以向量的形式展现出来,即可完成多输入的环签名交易。输出则是对于每一个地址利用发送者产生的随机数对接收者的地址进行随机化。

2.4 环机密交易

环机密交易的主要目的是隐藏交易的金额,使得其他节点不能查看转账的交易金额,同时保证节点对交易的公开可验证性。从而进一步提高了门罗币的隐私性。简单地说,每一个未花费交易UTXO的数值都被一个同态承诺替代这个值。因为这个值我们映射到一个有限环上,而不是原来的无限整数环上,所以需要额外的添加一个范围证明,用来防止溢出攻击。

机密交易隐藏金额方式的基本思想是使用了Pedersen承诺[6],一种加法同态承诺。交易费是交易的输入总和减去输出总和。交易的费用是一个大于0的数,所以设定了一个范围[0,2n-1],承诺交易费用的范围在设定的范围内。承诺本身的特性绑定性隐藏性很好的满足了对交易的绑定和对交易金额的隐匿。

对于范围的证明采用了基于环签名的算法实现对承诺的证明。

门罗币对此承诺做了一些小的修改,修改为范围证明承诺,承诺输入总和减去输出总和在一个[0,2n-1]的一个范围内。但是对于有限环中的数值-1,依然是一个大整数,所以把一个数用m进制表示出来:fee=v0+v1m+…+vn-1mn-1是一个m进制的表达式每个vi的范围为[0,m-1],然后对每个位上的值vimi进行承诺.利用密钥向量组结构的环签名完成了范围证明,环签名验证通过即表明发送者对数值的承诺正确,交易的输入总额大于等于输出总额。

图10 门罗币的机密交易

三、门罗币的技术路线

  • 2014年,门罗币基于CryptoNote协议开发上线,主要技术是一次性地址和环签名的应用;
  • 2016年,门罗币采用环机密交易,将交易金额隐匿进一步加强隐匿性;
  • 2018年,门罗币在协议中整合了Bulletproof机制,这是一种非交互式零知识证明,使得手续费降低了90%多;
  • 2020年,门罗币对环签名进行升级,采用了简洁可链接自发性匿名群组CLSAG(Concise Linkable Spontaneous Anonymous Group)签名方案,进一步减少交易大小和交易验证速度。

四、结论

门罗币最重要的3个技术分别是一次性地址,环签名技术,环机密交易。一次性地址是使用经典的非交互式的DH协议来实现的;环签名技术这几年发展迅速,使得签名大小和验证速度都得到了很大的改善;环机密交易是采用了同态承诺和环签名实现范围证明,保证了交易金额的隐匿性和公开可验证性。

门罗币作为强匿名加密货币中市场占有率最高的加密货币,通过分析其匿名技术可以对于其他需要进行隐私保护的产品或者方案提供一些参考价值。并对暗网和黑客事件中使用门罗币的情报追踪技术提供一个技术支持。

参考文献

[1] Ermilov, D., M. Panov, and Y. Yanovich. Automatic Bitcoin Address Clustering. in IEEE International Conference on Machine Learning & Applications. 2017.

[2] Frwis, M., et al., Safeguarding the evidential value of forensic cryptocurrency investigations. Forensic Science International Digital Investigation, 2020: p. 200902.

[3] CryptoNote v 2.0[J]. https://cryptonote.org/whitepaper.pdf  2013.

[4] Traceable Ring Signature[J]. IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, 2008, 91(1):p.83-93.

[5] Liu J K ,  Wei V K ,  Wong D S . Linkable Spontaneous Anonymous Group Signature for Ad Hoc Groups[C]// Australasian Conference on Information Security and Privacy. Springer-Verlag, 2004.

[6] Pedersen, T.P. Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing. 1992. Berlin, Heidelberg: Springer Berlin Heidelberg.

版权声明

本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author

Leave Comment