区块链账本的公开性给区块链带来了严重的用户隐私问题,本文从技术原理和应用实践角度,结合区块链中的混币、零知识证明、多方安全计算、环签名、MimbleWimble 协议、可信计算等方面,对区块链隐私保护技术进行了介绍。
1 引言
区块链凭借其去中心化、不可篡改、全局可见等优良特性,受到了社会的广泛关注,被应用到不同的场景以解决信任问题。然而,区块链账本的公开性却引入了新的隐私问题。
目前,国内外已经有一些研究和技术方案,试图在保证交易可验证和账本安全可靠的同时,解决区块链的隐私问题。本文将从技术原理和应用实践两个方面,分别介绍区块链中的混币、零知识证明、多方安全计算、环签名、Mimbl eWimbl e协议、可信计算隐私保护解决方案。
2 区块链隐私保护解决方案
2.1 混币
混币通过简单的混淆操作,完成用户隐私保护。其将来自多个用户的多笔交易混合成单笔具有相同逻辑和多个输入输出的新交易,以隐藏每个用户每笔交易的具体信息。这种简单的混合操作隐藏了输入和输出账户与金额之间的逻辑关系,使得攻击者难以分析用户交易的规律,进而起到了隐私保护的作用。
达世(Dash)使用混币技术进行隐私保护,同时其引入链式混合技术和盲化技术,抵御主节点作恶的潜在风险。链式混合技术是指用户会选择多个主节点,其发起的交易将依次经过各个主节点进行混合,保证交易被充分混合。盲化技术则旨在防止主节点直接获取用户信息,用户在发起交易时,不是将交易发送到交易池中,而是随机选取一个主节点发送,由该主节点将这笔交易的输入输出传输到下一个主节点,进而避免之后的主节点获取到用户的信息。盲化技术通过对第一个主节点的随机选择和对之后主节点的盲化完成隐私保护。此外,达世还通过限制交易面额和限制交易时间等方式,降低交易之间的关联性,保护用户隐私。
2.2 零知识证明
零知识证明是指证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。举个简单的例子来阐述上面概念,现在存在一个问题,即如何向一个先天无法区分颜色的视觉障碍者证明世界上是有颜色的。实现的方法如下:(1)拿非常多的魔方,每个魔方具有不同的颜色排列,让视障者随机挑选一个,并向我们展示这个魔方;(2)之后我们闭上眼睛,让视障者任意交换魔方位置;(3)我们根据魔方的颜色排列挑出视障者之前选中的魔方。从视障者的角度看,我们在非常多相同的魔方中挑选出了唯一正确的魔方,而这是几乎不可能发生的,与其相信这个概率极小的事件,视障者更有理由相信“世界是有颜色的”。这一例子正是利用了非交互式零知识证明,构造并完成了一个难度极大的挑战,促使视障者相信“世界是有颜色的”这一论断。类似的,通过特定的零知识证明,用户也可以让区块链上其他用户相信“我拥有价值为v的数字资产”,而不需要公布自己的账户和所有交易历史。Ze rocash是基于零知识证明来进行隐私保护的区块链,其采用了一种称为zk-SNARKs的非交互式的零知识证明来证明某些特定的资产归自己所有。Zerocash中,用户想要发起交易,需要进行铸币和浇筑两个操作。首先,用户通过铸币过程,往池中注入一定量的资产,并向某全局列表中写入一个承诺,承诺的计算必须由一个随机生成的序列号与用户的私钥共同计算得到,用户通过zk-SNARKs可以证明自己持有计算某个承诺所需的私钥,进而证明这个承诺中规定的资产归自己所有。之后,用户可以通过浇筑过程,将一个承诺中的一份数字资产浇筑成价值不等的多份资产,每份资产都可以通过zk-SNARKs进行独立无关联的证明,用户可以灵活地发起交易,隐秘地花掉浇筑成的资产。
2.3 环签名
环签名是一种数字签名方案,环签名的思想由来已久,古时候大臣联名上书时,为避免皇帝对牵头者打击报复,大臣们会将签名排列成一个环,使得皇帝无法通过签名顺序来找到牵头者。环签名的主要原理正是将发起行为的用户隐藏至一个群体中,通过隐藏真正发起行为的用户来进行隐私保护。环签名利用了椭圆曲线和哈希函数进行一系列计算,大致过程是,用户首先用自己的私钥,通过椭圆曲线上乘法计算生成一把公钥,选取外界的一些其他用户的公钥共同构成公钥组。之后选取随机数,进行特定的迭代运算,获得环签名所需的参数。在验证环签名合法时,按照给定的顺序对参数进行特定的迭代计算,如果最终结果与某一特定值相同,则证明签名有效。门罗(Monero)使用环签名技术保护数据隐私,并且使用隐蔽地址来解决输入输出地址的关联性问题,每次进行转账时,都会根据接收者的地址产生一个新的中间地址,发送者将会把金额发送到中间地址,接收方通过用私钥检测近期区块中的每一笔交易就可以判断转账有没有发生,等到接收方希望花掉这笔钱时,根据自己的私钥与这次转账的信息计算出中间地址的私钥,用这把私钥对交易进行签名,即可花掉中间地址中包含的数字资产。需要说明的是,环签名只是进行了部分的隐私保护,真正的交易发起者依然可被确定为是环签名中所拥有的公钥中的某一个,并且可能会出现选取的公钥组中包含恶意用户的情况,导致交易被追踪到的概率大大增加。
2.4 MimbleWimble协议
MimbleWimble协议是一种支持区块链隐私保护的协议,在MimbleWimble协议下,非交易参与者无法得知交易关联、交易金额等信息。MimbleWimble协议融合了保密交易、混币、裁剪等技术,其保密交易是通过Pedersen承诺完成的,Pedersen承诺有着类似哈希函数的性质,通过明文可以很容易验证Pedersen承诺,但通过Pedersen承诺却难以获知明文,在MimbleWimble协议下,每条交易的输入输出金额都是通过Pedersen承诺而非明文的形式给出的,这保证了交易金额的隐蔽性。MimbleWimble协议校验签名以保证交易资产所有权正确性。为了保证交易金额的合法性,MimbleWimble协议利用椭圆曲线加法的同态性确定输入金额与输出金额等价,并通过一种称为Bulletproof的零知识证明技术保证输入输出金额范围合理,避免出现金额为负等情况。MimbleWimble协议还规定采用本文前述的混币技术,将一个区块中的交易混淆成一笔单一交易,完成对转账行为的混淆。MimbleWimble协议引入裁剪操作,定期将截止到当前的所有交易合并成一笔有着庞大输入与输出的交易,把过程中不需要的交易全部删除,并定期清空历史信息,在保证用户隐私的同时,也为区块链扩容提供了新的思路。总体来看,MimbleWimble协议通过将已有的技术进行组合,提供了一套完整的隐私保护机制,目前针对MimbleWimble已有一些工程实现,其中,Grin和Beam[6]两个基于MimbleWimble协议的新型区块链已经上线,为区块链的隐私问题提供了一些新的尝试。
2.5 安全多方计算
安全多方计算指在不可信的网络中,两个或多个用户能够在不泄露本方输入信息的情况下协同合作,正确地完成计算任务,最早由姚期智的“百万富翁”问题引入。安全多方计算本身就具有去中心化和计算正确性,兼具隐私保护功能,一些项目尝试将安全多方计算应用于隐私智能合约、密钥管理、随机数生成等方面,与区块链进行结合。但是,安全多方计算中的流程相对复杂,使得其性能较差,实现困难,因此难以支撑大规模的应用。
2.6 可信计算
可信计算是一种通过可信执行环境(Trusted Execution Enviroment,TEE)保护区块链隐私的硬件解决方案。现阶段TEE通常被作为CPU的一部分,用来负责密钥管理等事务。TEE为数据的输入和代码的执行提供一个安全的空间,并保证它们的隐秘性、安全性和完整性。在程序运行结束后,TEE会根据运行结果生成远程证明,验证者可以利用远程证明对程序及其执行结果进行验证。同时,TEE提供与外界隔离的执行环境,外界不能获取到TEE中的敏感信息,保证TEE中输入的隐私数据不会被泄露。在区块链的场景下,TEE支持了端到端的计算与隐私保护,所有用户的隐私数据可以不用提交到区块链上,直接在本地TEE中进行计算,计算完成后只需提交远程证明到参与共识的节点进行合法性验证,即可进行共识和完成交易上链。同时,TEE解决了节点的执行环境不可信的问题,允许区块链将一部分计算移到线下,共识的节点只需要对远程证明进行验证,无需重复执行复杂的智能合约,减少了共识过程中重复计算带来的开销,为区块链的性能问题与扩容提供了有效的解决方案。
3 结语
总而言之,目前有许多不同原理的区块链隐私问题解决方案,零知识证明、安全多方计算、MimbleWimble协议等较为完备的密码学解决方案能够近乎完美地保护隐私性,但是繁琐的、开销极大的计算过程使得这类方案的性能与可扩展性不足,难以支持大规模的应用。而混币、环签名协议等解决方案,带来的开销较小,但是对于隐私性的保护略显逊色,例如混币中的主节点将成为新的隐私安全瓶颈,用户隐私依然存在被攻击的可能。而基于可信执行环境的解决方案,可以通过硬件来兼顾正确性、隐私性与高性能,但是硬件的设计、制造成本较高,部署起来难度较大。目前所有解决方案都有其优点与局限性,我们应该为不同的应用需求选取不同的实现,并努力突破当前的局限,寻找兼顾隐私与性能的解决方案。
-END-
扫
码
关
注

