摘要:作为一种新兴的分布式账本技术,区块链存储着用户之间的交易记录和隐私数据,有着开放透明、交易记录无法更改、来源可追踪等特性。物联网、金融、医疗等行业纷纷结合区块链技术来解决行业痛点,所以区块链发展非常迅速,行业规模越来越大。然而,区块链上的数据对全网节点都是公开的,数据的更新操作也是透明的,这会给黑客留下攻击的空间,导致用户信息泄露。区块链本身具备的匿名性和隐私性已经无法满足用户对隐私保护的需求,这严重影响区块链的应用和推广。迫切需要保护数据隐私和用户隐私的新方案。针对区块链中存在的安全性和隐私性问题,本文从身份隐私和数据隐私保护等关键技术展开研究。
关键词:区块链技术 隐私保护 数据加密
1、引言
在现代社会,私密信息对于一个人来说是重要的隐私,对于国家来说是重要的情报。随着多年来计算机发展,计算机已经成为了我们必不可少的工具,但是我们的信息在不停的被盗取、泄露,我们越来越重视网络安全。区块链技术是一种分布式的互联网数据库技术,它的去中心化、去信任化、公开透明等特点使陌生节点之间可以在不依赖于第三方可信机构的情况下建立起点对点的可信价值传递,主要优势在于能够显著降低信任成本、提升交互效率。区块链网络中没有中心服务器,系统中的每个参与节点都持有完整的数据副本,它们共同维护着数据的完整性,能够有效避免集中式服务器单点崩溃和数据泄露的风险。
区块链系统没有中心化的机构处理与维护数据,为了使各节点快速达成共识,系统中所有交易均是公开透明的,从而带来了数据隐私泄露问题。虽然区块链中用户的地址是匿名的,但一些组织或个人通过地址跟踪用户的交易数据,分析交易规律,取得用户交易地址间的关联性,并结合网络外部信息推测用户真实身份信息。在金融领域及供应链中,区块链的公开透明特性使用户可以获取所有交易信息及物资供应信息,包括金额、合约内容等。而数据是金融机构盈利的关键点,同时也是供应链服务保密对象,竞争企业或个人通过分析交易数据获取利益,直接损害公司的利益。在物联网领域,设备间能实现点对点的交易,这种情况下区块链系统会泄露能源传输等敏感信息,从而对个人安全和国家安全造成威胁。因此,在使用区块链技术的同时,需要解决区块链存在的隐私泄露问题,保证用户的信息安全。
2、区块链隐私泄露风险高
区块链中的隐私保护问题,例如加密货币里的匿名交易、智能合约的隐私、区块链隐私保护基础设施等都是长期的研究热点。按隐私保护技术分类,零知识证明、安全多方计算、同态加密、环签名、代理重加密等,都是依靠密码学技术来实现对数据隐私的保护。而其中,零知识证明作为能实现最强匿名性的隐私保护技术,一直受到各区块链项目的重点研究和探索。从应用的角度来看,区块链技术的各大应用场景,例如加密货币、电子存证、身份识别、金融数据结算等对隐私保护的要求也越来越高。其中,加密货币是目前为止区块链技术最为成功的应用,诞生了诸如门罗币(Monero)、大零币(ZCash)、达世币(Dash)等非常优秀的隐私货币。零知识证明,作为能实现最强匿名性的隐私保护技术,一直受到这些加密货币项目的重点研究和探索。 零知识证明是由S.Goldwasser、S.Micali 和C.Rackoff在20世纪80年代初提出的。它是一种证明者能使验证者相信某个论断是正确的,同时这个证明过程不泄露任何有用的信息。零知识证明属于交互式证明系统,除了传统的完备性和可靠性必须满足之外,其特有的零知识性保证了验证者在被证明过程中无法获得证明者拥有的秘密或者任何有助于获得该秘密的其他信息。长期以来,零知识证明作为一种强安全的隐私保护技术,在理论上获得了长足的研究和发展,但是其性能参数包括需要非常多的交互证明轮数、证明的数据长度、生成时间和验证时间,常常是制约该技术获得实际应用的瓶颈。
3、区块链隐私和安全
很多时候大家说要在区块链上建立应用,比如医疗,金融,这牵扯到很多隐私性很强的信息。很多人对隐私和安全存在误解,大家讲区块链是很安全的,他们就觉得区块链也可以保护隐私,但其实这两者是完全分开的。区块链的安全是说区块链是一个分布式的系统,那么在每一个节点可能是恶意的,它可能不按照规则来做事情的情况下,区块链的架构可以使得在这种分布式系统,虽然某一个节点是不可信的,但是整个的系统可以保证它一定的规则。所以在这种情况下讲的是它的安全性。但这种安全性跟隐私保护其实是没有关系的。现在的区块链上的大多数数据和智能合约都是公开的,其实没有任何隐私保护。所以大多数区块链可能很重视安全性,但其实是没有任何隐私保护的。
隐私保护是个很复杂的问题,涉及到我们要在很敏感的数据上做计算。比如现在的区块链,没有任何隐私保护,在一个节点做计算的时候,因为数据都是公开的,计算过程中就会被泄露。区块链本身内部存在一些冲突,一方面它是去中心化的,从理论的角度来说确实会有一些低效,所以对区块链应用来说本身有一些劣势;但同时就因为它是去中心化的,跟中心化相比,去中心化的信任模式有很大优势。
4、区块链隐私保护技术
其实远在比特币之前,就有一种古老的交易形式可以实现对隐私性非常好的保护:交易双方将钱藏到袖子里达成交易,这样即使其他人目睹了这笔交易,也无法得知交易的金额等隐私信息。但是直接将这样的思路照搬到区块链里并不容易。因为在一个公开的账本里,每一笔交易的合法性需要得到其他人的验证,以确保交易的发起方确实授权了这笔交易,并且这笔交易没有造成恶性通货膨胀。怎么样能既把一笔交易的具体信息“藏到袖子里”,同时又允许其他人验证交易的合法性呢?
4.1匿名支付
在提高隐私和加密数字货币的可互换性时,最大的挑战是,无法做到加密整个区块链。在以比特币为基础的加密数字货币体系内,能看到哪些输出未发送,哪些已发送,通常将其称为UTXO(Unspent Transaction Output),全称是未花费的交易输出。这让每个用户在公共帐本中都可充当诚实交易保证者的角色。比特币的协议是在不依赖第三方参与的前提下设计的,即便是在没有第三方的参与前提下,也能通过公共区块链随时读取用户信息以实现审计,这是至关重要的。EIDchain的目标是在不失去这些要素的前提下,提高保密性和可互换性,同时我们坚信,这是成功创建数字货币的关键。我们还进行了一系列的改进,例如去中心化、使用链接实现强匿名、相同面值和被动先进的混币技术。我们能让数字货币本身具备完全可互换的能力。可互换性是金钱的属性,决定数字货币的各单位都要保持平等。当你以通货的形式接收资金时,资金不应该保留之前用户的使用记录,或者用户能很轻易地撇清之前的使用历史,从而做到所有数字货币是平等的。与此同时,任何用户在不影响他人隐私的情况下,保证公共账本的每笔交易都是真实的。为了提高可互换性和保持公共区块链的诚实性,我们提议使用先进的非信任制去中心化混币技术,为了保持通货的可互换性,这项服务直接整合到这个数字货币体系中,对于每个用户而言都可容易和安全使用。
4.2交易金额隐藏机制
区块链是按照时间顺序排列的数据区块链式结构,本质上是通过去中心化的方式用密码学实现各个环节安全性的防篡改分布式数据库。区块链具有去中心化、防篡改、匿名性、公开可验证、可溯源、代码开源等特点。目前,在绝大多数区块链平台中,任何节点都可以访问区块链上的所有数据,所以区块链隐私安全问题显得尤为突出,成为区块链领域的重要研究课题。当前区块链隐私技术主要围绕基于区块链的可验证计算、区块链数据隐私、区块链交易地址隐藏和区块链交易金额隐藏等方面展开研究。首先,由于区块链、安全多方计算和可验证同态秘密分享都为了解决不可信群体之间如何协同工作的问题,所以区块链与安全多方计算和可验证同态秘密分享的结合具有先天优势。绝大多数现有的同态秘密分享和安全多方计算存在通信轮数多和通信量大的问题。然而,在区块链环境下,多轮通信和大量的通信数据势必导致算法本身和区块链平台运行效率的降低。除此之外,由于区块链中的节点是不可信的,大量的通信数据将给节点带来繁重的验证负担。因此,研究低轮通信的同态可验证秘密分享与安全多方计算对基于区块链的可验证计算具有重要意义。其次,现有基于区块链的应用中普遍存在泄露数据隐私和难以支持同态计算的问题。因此,研究安全高效且支持同态计算的去中心化外包计算机制可有效解决区块链应用系统中难以支持同态计算和隐私泄露的问题。最后,按照记账方式,区块链可以分为基于UTXO的区块链和基于账户的区块链。由于基于账户区块链中矿工需要实时更新动态变化的余额,所以区块链的交易金额隐藏机制具有一定困难性。因此,目前提供金额隐藏功能的区块链平台都是基于UTXO的区块链,而基于账户的区块链平台均以明文方式记录所有交易。所以,研究区块链交易金额隐藏机制可以弥补现有区块链技术中心缺少交易金额隐藏机制的不足。
4.3保密交易协议
在介绍保密交易前,我们先了解下比特币的UTXO(未花费的交易输出)的交易模型。
UTXO是一个很抽像的概念,可以简单把它理解为,一个装有不定数额法币,但仅可使用一次的大信封。在这个大信封中,它内部可能装有一分钱,但也可能有一万元。无论如何,系统设定这个信封的使用条件都是一经拆封,将不可再继续使用。在转账交易中,已支付矿工手续费和交易金额后,一般情况下会存在找零的情况,因此每笔交易,均会产生两个新的交易输出UTXO:1)接收方的交易金额;2)转账方的找零。
下面我们用实例来阐明这个交易过程。
假如 Alice 需要给 Bob 转账1美元,传统的交易过程将做出如下记录: Alice:-1 美元,Bob:+1 美元。但在比特币中则不相同,BTC的交易由发送方构造一组输入和一组输出结构而成。因此,比特币的工作原理如下:Alice 希望向 Bob 发送 1 BTC,该网络并不是单纯从Alice的钱包中扣除一个比特币,而是会先从您的钱包中找出能用于支付交易金额和矿工打包手续费(假定0.1 BTC)需要的一组输入的UTXOs,然后再生成一组新的交易输出的UTXOs(Alice的找零和Bob接收的交易金额)。此刻,假如已找到 > 1.1 BTC 的有如下三个UTXOs:
UTXO 1: 0.1 BTC
UTXO 2: 0.25 BTC
UTXO 3: 0.8 BTC
共 1.15 BTC
有了这三个UTXO构成三个输入后,然后再生成两个交易输出:
1)Bob接收:1 BTC
2)Alice找零:0.05 BTC
最后为矿工的手续费:0.1 BTC
交易完成后,Alice的这三个UTXOs将会被花掉,那么意味着这三个信封将不可再继续使用,然后产生两个新的UTXOs即两个未拆封的大信封:
1)Bob的大信封:收入1 BTC;
2)Alice的大信封:找零0.05 BTC。
在比特币网络中,要完成一笔交易,需要使用私钥的签名算法去解锁所有的输入,并创建公钥输出脚本,其中,ECDSA签名无法多重签名,每操作一个输入和输出都会附带相应的代价,而后续我们要说的施诺尔签名(Schnorr)则解决此问题,无论是更小的占用区块的字节空间,还是速度的优化,以及更可观的多重聚合签名的优势,都是ECDSA无法比拟的。
保密交易(Confidential Transaction,也称 CT),Confidential Transaction 的核心思想是以派德森承诺方案(Pedersen Commitments)将交易金额隐藏起来,在保证隐私的同时,它还必须具备可验证。并且为了追求性能和效率、多重签名以及未来更多的扩展性,我们采用了施诺尔签名完成交易的签名技术。保密交易其核心为ECC的公私钥原理,它具备加法的同态加密特性,再给合施诺尔多重签名算法共同完成。
在这里,派德森承诺代表了所有的输入和输出的交易金额v它的一个公钥。这个公钥是怎么来的呢?
首先,为了将金额v(我们称这个v为私钥)转换为公钥,它需要与一个ECC椭圆曲线群上的一个发生器点(公钥生成元)相乘才能转换完成,在这里我们提供了几个相应的公钥生成元:
1)首先是金额v的生成元H点
2)为了防止暴力破解,我们增加了随机数r,那么因此就有随机数的公钥生成元G点
因此,一个完整的承诺式子为: r * G + v * H。
因为r的出现,这令转账者和接收者都拥有各自不同的r_s和r_r,这就将导致了其结果必然不等于0,这不符合零知识证明算法的结果。为了确保等式两边平衡,我们增加了一个excess value(余数),这个余数,可以看成是整笔交易的私钥:
excess_value * G = kernel_excess即整笔交易的公钥。任何一笔交易必须满足:sum(outputs) – sum(inputs) = kernel_excess这个条件。
为了进一步增加隐匿性,从而完善整个保密交易,我们还为式子增加了一个偏移值(offset)。它的主要作用为了解决通过kernel_excess从整个区块的输入输出中找到对应的交易的输入输出,为了消除这种关联性,我们才在每笔交易增加了一个offset,使得式子变成如下:
offset * G = kernel_offset,
kernel_excess + kernel_offset = sum(inputs_commitments) - sum(outputs_commitments)
在打包区块时,将整个块的所有交易的kernel_offset全部加起来成为一个总的kernel_offsets,这个总的kernel_offsets可以验证区块内交易的合法,又可以隐藏个别交易的kernel_offset,消除关联性,这就是CoinJoin要做的事。
好了,交易的基本已完成,最后一步,为了避免交易金额产生负数,不能凭空捏造,我们在每一个输出(新的UTXO)都相应的增加了一个范围证明——防弹协议(Bulletproofs)证明金额的整型范围为0-264-1。因为每一个输出都得附带一个防弹协议,对于区块上的数据而言是相当宝贵的,也因为我们对防弹协议进行了算法优化,做了一个量化级的字节优化。当只有一个防弹协议时,它需占用区块的674字节,但后面每增加一个,字节数仅增加64个字节!因此,正常情况下,一般的一笔交易仅有2个输出(找零和交易金额),那么字节数仅为738,再加上输入占用相当小的空间,没有交易地址和脚本,再加上一个非常小的用于保存手续费和用于扩展性的kernel,这样一来,我们已严格的对每一笔交易所占用的空间控制到很小,这样一来,一个1MB大小的区块,那么将能容纳至少1000+笔交易。
因为每个交易输出都须携带一个防弹证明,为了进一步优化区块在网络中同步,我们还对已花费的UTXO进行了相应的裁剪,这样一来,可大大减少同步需要的时间消耗。
4.4蒲公英协议(Dandelion Spreading Protocol)
蒲公英协议的主要目的同样是为了改善比特币交易的隐私性,要知道比特币交易传播并不能很好地隐藏交易的来源,每当进行一笔交易时,它就会向全网的节点公开,因此人们可以追根溯源至初始节点。而蒲公英是一种新的交易广播机制,其目标是混淆比特币交易的IP地址。 与蒲公英的花瓣所包含的茎干(Stem)和绒毛(fluff)一样,蒲公英协议分为两个阶段广播到网络:“茎干”阶段(交易被混淆);“绒毛”阶段(广播出去)。“茎干”阶段每个节点将交易传达到单个随机选择的对等节点。以某个固定的概率为准,交易会转入为“绒毛”模式,之后再使用普通的广播进行传达,此时将其映射回原始节点变得极具挑战性,因为初始阶段的随机节点被混淆了,这可以防止监视节点使用蒲公英将交易映射回原始地址。EIDchain 的交易广播便是采用了蒲公英协议,从而很好地隐藏了发送方的原始IP。
图2蒲公英协议
4.5去中心化的混币机制
去中心化混币方案的混币过程通过混币协议实现,不需要第三方节点参与。最早的去中心化混币方案是由Gregory Maxwell在比特币论坛上提出的CoinJoin机制。CoinJoin机制核心思想是通过将多个交易合并成一个交易的方法 ,隐藏交易双方输入输出的对应关系。如图4所示,当一笔交易中只有一个输入地址与一个输出地址时,攻击者可以直接观察到交易双方的关联关系,而在CoinJoin机制下若干笔单输入一单输出交易被合并为一笔多输入一多输出交易,交易的双方由两个单独的地址变为两个地址的集合。对于一个多输入一多输出交易,潜在攻击者无法通过观察交易信息确认输入和输出之间的对应关系。一般情况下,CoinJoin机制需要第三方服务器撮合所有混币申请方进行签名。CoinJoin交易中,每个用户独立分散地完成签名,只有提供了所有签名并进行合并,交易才能被判定合法 ,并被网络接收。这种去中心化的混币机制免除了第三方服务提供者的参与,混币过程是在所有混币用户的共同参与下完成的,从而有效避免了第三方盗窃与泄露混币信息的风险。CoinJoin是去中心化混币机制的基础,其思想被运用在多种匿名比特币协议中。
图3 去中心化的混币交易机制
4.6范围证明和多重签名技术
在前面的保密交易协议中,我们已介绍了EID chain中的防弹协议技术和施诺尔签名技术,因此就不多赘述。
4.7 具有扩展性的交易池技术
在EIDchain链上的每笔交易,它都没有交易地址。我们使用了一种交易池的技术,巧妙的去掉了钱包的交易地址。这个交易池在每一个节点上都会进行维护。具体技术表现为:每一个钱包上线后都会把它所有的交易通道发给节点请求交易订阅,一旦下线后将自动取消订阅。这个交易池的设计,为未来带来更多的生态扩展性。
5、未来应用场景
隐私保护是现实世界中个人与组织都强烈需求的,尤其在数字世界。本文的主要贡献在于在区块链交易金额隐私方面,结合范围证明、Pedersen承诺和零知识证明等密码技术,提出了区块链交易金额隐藏机制,包括匿名币建账过程和匿名币支付过程。该机制是首次实现区块链交易金额隐藏功能的机制,弥补了现有区块链技术中心缺少交易金额隐藏机制的不足。以实时、安全、可验证的方式隐藏了转账金额与用户余额。研究应用区块链技术将隐私数据区块化、结构去中心化、信息等级化和智能合约管理,建立立体化和全生命周期的保护模型,及去信任的新管理机制,解决防范隐私泄露、防篡改、证据溯源等隐私保护需求。
5.1财务合法隐私
财务隐私合法使用案例的范围很⼴,世界上发生的大多数交易都需要财务隐私,数字世界相关账户的资产和交易的隐私数据通过区块链上存储的交易记录暴露在所有人面前是不合理的。在现实世界中,我们遇到的与财务隐私相关的棘手问题可能是这样的:一家公司想要保护一个不让竞争对手知道的供应链信息,一个人不想被公众知道她正在向破产律师或离婚律师支付的咨询费用,一个富有的人不希望让潜在的犯罪分子了解他的行踪,不同商品的买卖双方希望避免交易被他们之间的中间商公司切断。同时,对于那些投资银行、对冲基金和其他(证券、债券、衍生工具)交易类型的金融实体,如果其他人可以弄清楚他们的仓位或交易意图,那么这些信息的暴露会使交易执行者处于劣势,从而影响的他们盈利能力。 然而在智能合约中,完整的财务行为序列都会通过网络传播并记录在区块链上,所以是公开透明的,由于他们的金融交易(例如保险合同或股票交易)是高度机密的,多人之间基于某些条款的细节产生的交易原本可能需要当事人的信息保护,现在却由于区块链的公开透明性而无法做到。 所以,这对那些不想被人知道自己财务状况的个人和企业来说,缺乏隐私保护反而是区块链广泛采用去中心化智能合约的主要障碍,隐私保护技术的匮乏已经成为去中心化应用普及落地的瓶颈,故而相关领域的技术发展进程也备受公众关注。
5.2供应链体系
区块链可以解决供应链体系上下游交易凭证和溯源的难题,简化了供应链中⼼企业管理的难度,并给上下游企业的融资提供了相应的解决⽅案。但是,价格、货物等敏感数据上链的话又会让企业泄露商业机密,这对以往的区块链来说是极大的难题,现在通过解决区块链隐私加密等问题,则可以完全解决商业机密暴露的难题,同时,让参与各⽅能够享受到应⽤区块链系统带来的效益提升。
5.3企业管理
区块链技术是去信任化,将其应用在物联网隐私保护中必将引起管理机制变革,即从中心化管理变成去中心化或者是弱中心了,系统管理人员等内部人员泄露隐私的机会大大减少。同时,对于任何的业务操作和交易行为,区块链都会按时间顺序记录,而且防篡改,证据可溯源,无需第三方监管,减少客户、企业及第三方泄露隐私信息的机会。在管理中不是加强节点的限制措施,而是加强共识机制和激励机制的设计,吸引更多节点加入。提高节点之间相互制约平衡的同时,增强运算能力和存储能力,节约更多成本。
6、结语
一般来说,个人数据和敏感数据不应该被第三方所信任,因为第三方容易受到攻击和误用。未来,当全球人类的信息数据都在区块链上来存储的时候,这一点显得更为重要。本文从区块链技术出发,尝试使用技术组合的方案实现隐私性。我们在比特币概念以及其他隐私币的基础上进行了一系列的改进,由此诞生出一个去中心化的,且具备更强匿名性的加密数字货币网络,旨在打造一个可无限扩展又安全的隐私价值网络。
参考文献
[1] J Zarrin,LA Rui,JP Barraca.Resource discovery for distributed computing systems: A comprehensive survey[J].Journal of Parallel and Distributed Computing,2018(113):1-45.
[2] M0NAC0 J V.Identifying Bitcoin users by transaction be havior [C]// The SPIEDSS,ApriI 20-25,2015,Baltimore,USA.Baltimore:SPIE,2015.
[3] [27] Maxwell, Gregory. CoinJoin: bitcoin privacy for the real world, 2013: 1-13.
[4] ANTONOPOULOS A M.Mastering bitcoin:unlocking digital cryp-to-currencies[M].O’Reilly Media,Inc.2014:25-36.
[5] MILLER A, BENTOV I, KUMARESAN R, et al. Sprites: payment channels that go faster than lightning[J]. 2017:1-23.
[6] ZHANG Y, WEN J. The IoT electric business model: using blockchain
technology for the Internet of things[J]. Peer-to-Peer Networking and
Applications, 2017, 10(4): 983-994.
[7] VALENTA L, ROWAN B. Blindcoin: blinded, accountable mixes for bitcoin[C]//International Conference on Financial Cryptography and Data Security. Springer, Berlin, Heidelberg, 2015: 112-126.