区块链隐私保护(二): 网络层的隐私保护机制

  • 区块链隐私威胁

         在上篇文章区块链隐私保护(一): 交易层的隐私保护机制中,我们将区块链隐私威胁分为三个方面: 

        ·网络层的隐私威胁    

             ·恶意节点可以轻易接入网络,监听网络层的通信数据。    

             ·通道隔离机制

       ·交易层的隐私威胁  

            ·交易隐私威胁。    

            ·身份隐私威胁。

       ·应用层的隐私威胁  

            ·用户行为和区块链服务商导致的隐私泄露。

       上篇文章主要总结了交易层的隐私威胁,这里主要分析网络层的隐私威胁,应对这种威胁的有效方法就是通道隔离技术。

  • 通道隔离机制

       首先总体介绍一下通道隔离技术

扫描二维码关注公众号,回复: 14088501 查看本文章

       通道隔离机制是从网络层面对数据进行隔离,保护数据只对通道内节点可见。通过对账本进行隔离,每个节点只处理并存储自己所在通道的数据,防止攻击者访问数据,从而保护用户隐私。但是通道机制也有一定的缺陷,主要是,在区块链网络中部署通道存在一定的代价,节点创建和进出通道需要修改网络配置,灵活性比较弱。

       那么根据被隔离数据的存放位置,通道隔离技术可以分为链下通道隔离多链通道隔离两大类。

  • 链下通道隔离

        链下通道隔离主要应用于高频的小额交易,是通过在区块链上记录起始的状态,来创建通道,然后在链下进行交易,具体数据通过合约保证安全,但不公布中间交易记录在区块链上,需要中止交易的时候,再将最新的结束状态公布到区块链上,然后终止通道并销毁历史交易记录。

  • 多链通道隔离

        多链通道隔离是在特定节点之间,构建独立通信网络作为通道,每个网络的信息单独存放在对应的子账本中,非通道内节点不能访问,同一节点可以加入多条不同通道。简而言之,多链通道隔离是通过在网络层面构建子网络,实现节点通信隔离,杜绝攻击者访问隐私信息,从而保护了用户隐私。

  • 链下通道隔离

        首先介绍一下链下通道隔离技术,它的出现是为了解决区块链账本容量有限的问题,研究者尝试将小额高频交易放在链下的微支付通道进行,仅仅将通道启动和结束的信息记录到链上。         链下通道隔离技术的实现主要分为两步:首先,在两个节点之间构造链下双方支付通道;然后,通过节点间已有的双方支付通道构建支付网络。

  • 实现步骤  

        1.双方支付通道: 双方支付通道的构建是在两个地址间,构建可信的链下支付通道。首先,将资产托管到链上合约创建支付通道,然后参与双方通过对状态更新进行签名,确认进行交易,具体交易过程不需要记录到区块链上。如果某一方希望中断通道时,双方同意后,只需将最新状态发布到区块链中,并赎回最新状态对应的资产即可。

        2.构建支付网络: 如果在所有参与用户之间两两构建双方支付通道的话,这会带来巨大的存储资源的浪费,因此在双方支付通道的基础上,用户可以通过已有的双方支付通道进行支付,也就是说可以借助其他节点已有的双方支付通道进行中转,与目的节点进行交易,从而构建全体用户之间的支付网络。

  • 典型技术

       典型的链下通道隔离技术有比特币的闪电网络技术与以太坊的雷电网络技术。其中,闪电网络是基于未花费交易输出模型,也就是UTXO模型;雷电网络呢,主要基于账户余额状态模型,会更多利用链上合约机制。下面来介绍一下这两种技术。       

  • 闪电网络

       首先是闪电网络,它的核心思想呢,刚才已经提到过,就是通过建立状态通道,将部分频繁的小额交易放在链下完成,从而减轻主链的交易压力。

       所以,闪电网络的核心是建立一个安全、可行的链下支付通道,同时结合多重签名地址技术、RSMC 序列到期可撤销合约、HTLC 哈希时间锁定合约等技术完成链下支付的结算与确认,进而提高用户支付的效率。 主要是利用 RSMC 实现双方支付通道,再通过 HTLC 进一步构建支付网络。这一设计在提高比特币系统性能的同时,也隐藏了用户间的小额支付信息,保护了用户隐私。

       但是闪电网络也存在一些缺陷,主要有四点,分别是:

          ·社区对比特币的支付属性认可存在分歧

          ·比特币的小额支付场景有限

          ·安全性存在隐患

          ·闪电网络技术还未完全成熟

  • RSMC合约

       首先介绍一下闪电网络的核心技术之一——RSMC合约。

       RSMC中文名称是序列到期可撤销合约,顾名思义,是一种附带执行条件的可撤销合约。它的执行条件是本合约所在区块的高度,要比父合约所在区块的高度大一个序列数。这个序列数是合约的一个参数,可以自行设定。比如一个RSMC的序列数为1000,如果它的父交易所在区块是10000,如果这个RSMC被写在了区块10999之前,这个RSMC都不会被执行(相当于自动作废了)。为了确保这个RSMC能被执行,需要等到当前区块为11000时,在网络中广播这个RSMC。这样,RSMC所在区块的高度一定会大于11000才能执行。

       除此之外,要想让RSMC生效,必须先在比特币网络上广播其父交易,再广播其自身。比如左图,是一个RSMC例子。图中蓝色框表示仅供Bob使用的交易,而紫色框内表示仅供Alice使用的交易,绿色框为注资交易。通道的注资交易有两个输出,分别是确认交易C1a和C1b。这两个交易是互斥的,只有一个能在比特币网络上广播。这两个交易也是非对称的,不但内容不同,权属也不同,即Alice只能广播C1a,Bob只能广播C1b。每个确认交易又有两个输出,一个是普通输出,一个是RSMC合约。D1a是普通输出,Bob可以凭这个输出获得0.5个比特币;RD1a是RSMC合约,其父交易为C1a。当C1a被广播到比特币网络上,且经过1000个区块确认之后,Alice可以广播这个RSMC,从而获得其中的0.5个比特币。

  • HTLC合约

       ·哈希值锁定,确保了只有知晓最终接收方生成的密码 R 才可以解锁,并获得冻结的资产。

       ·时间锁定,即确保了转账方在一定时间内(最终接收方解锁取走比特币前)无法取走,又能保证在一段时间后如果最终接收方没有取走比特币的情况下,转账方可以拿回自己的比特币。

        如图所示,A想给C发送1 BTC,但A和C之间并没有微支付通道。但这没关系,A找到了一条经过B到达C的支付路径,这条路径由A到B, B到C这两个微支付通道串接而成。

        那么如何执行呢?首先,C生成一个秘密R并将Hash(R)发送给A,A不需要知道R。然后,A和B商定一个HTLC合约:只要B能在2天内向A出示秘密R,A会支付B 1BTC;如果B做不到这点,这笔钱2天后自动退还A。同样地,B和C商定一个HTLC合约:只要C能在1天内向B出示哈希原像R,B会支付C 1 BTC;如果C做不到这点,这笔钱到期自动退还B。

        一切就绪后,C在1天之内向B披露R,并拿到他的那份1 BTC;现在B知道了R,他只要在2天之内向A出示密码R并拿到1 BTC。

        整个过程很容易理解。如果整个闪电支付网络不收手续费的话,最终效果是A支付了1BTC,C安全地拿到1BTC,过程中的全部动作都发生在区块链之外。

  • 双方支付通道

        那么如何通过RSMC和HTLC构建双方支付通道和支付网络呢?

        首先,通过序列到期可撤销合约(RSMC)构建双向支付通道。只在合约创建和结束时,各在比特币账本上发布一次的特性,保障用户隐私。上图展示了一个具体的RSMC创建及支付过程。

        1. 托管资产阶段:用户 A 和用户 B 双方各拿出部分资产,托管到双方签名账户,这个账户的支出需要双方共同签名。此后,支付阶段中支付通道的花费不能超出所托管资产的总额。但双方不对托管交易签名,也不广播到区块链上。

        2. 构造通道阶段:用户 A 构造承诺交易C1a(commitment transaction 1a,简称 C1a)和可撤销支付交易 RD1a(revocable delivery 1a,简称 RD1a),并交给用户 B 签名。C1a 交易用于保证在用户 A 单方中止通道的情况下,Bob 能得到自己的托管资产。RD1a 用于保证用户 A 能够单方取回自己托管的资产。这个交易带有延迟设定,如果 C1a 被记录在第 n 个区块,那么RD1a 只能记录在第 n+1000 个之后的区块。Bob 对称构造承诺交易 C1b 和 RD1b,并交给 Alice 签名。双方都完成对承诺交易和可撤销支付交易的签名并交换后,合约建立完成。

        3. 支付阶段:当用户 A 想再支付 0.1 单位资产给用户 B 时,需要将 C1a 和 RD1a 代表的状态作废,用户 A构造并签名 违约补救交易BR1a(breach remedy 1a,简称 BR1a) 发送给用户B。这是为了防止在新确认交易达成后,有一方仍然广播旧交易这种情况。这种情况会造成什么后果呢?如果没有违规补救交易,之前用户A 新支付 0.1资产给用户 B,此时理想情况下达成新分配是用户A 0.4,用户B 0.6,但是用户A可以选择不广播新交易C2a,而把之前的旧交易C1a广播到比特币网络,这样用户B立即得到0.5个比特币。C1a广播完的1000个区块之后,用户A再广播RD1a,从而可以得到0.5个比特币,此时的分配情况是用户A 0.5,用户B 0.5。可以看到,用户B吃亏了,相当于用户A在这次最新交易中没有付钱。所以,违规补偿交易是用来代替旧确认交易中的RSMC,如果有一方广播了旧交易,那么交易对手方可以立即获得违规补偿交易里的所有剩余资金。在左图中,在产生新确认交易C2a,C2b的同时,生成违规补偿交易BR1a,它会使旧交易中的RD1a交易失效。如果用户A仍然选择广播旧交易中的C1a,那么,由C1a的output1,用户B立即获取了0.5比特币,再由C1a的output0,即BR1a,用户B又获得了剩余0.5个比特币。至此,RD1a已经没有意义了,因为C1a中全部比特币都已经分配完了。由此可见,在增加了违规补偿交易后,确认交易的更新安全了。对交易双方来说,要么选择广播最新的确认交易,从而关闭通道;要么什么也不广播,让通道继续运行。然后,双方按照构造通道阶段中的步骤,根据支付后的余额分配情况重新构造承诺交易 C2a、C2b 以及可撤销支付交易 RD2a、RD2b,完成状态改变。

       4. 结束阶段:当任一方用户希望结束合约时,先公布承诺交易,如果另一用户未在延迟时间中公布违约补救交易,就表示这个承诺交易为最终状态,这个用户可在延迟时间后再公布可撤销支付交易取回资产。

  • 构建支付网络

       序列到期可撤销合约RSMC只能两两构建双方支付通道,这会带来巨大的存储资源和资产的浪费,因此HTLC可在双方支付通道的基础上,帮助未建立 RSMC 的两个用户通过中间人建立交易通道 , 从而构建全体用户之间的支付网络。如图,在 AB、 BC、CD 之间分别存在 RSMC 时,AD 之间可以通过已有通道完成支付,具体过程已经在HTLC合约中介绍,这里就不再赘述。

     总结一下,闪电网络技术通过 RSMC 保障链下支付通道的资产安全性,再通过 HTLC 减少网络中所需 RSMC 的数量,增强闪电网络的扩展性。利用闪电网络技术,用户之间往来的交易数据将不会记录在区块链账本上,杜绝了账本分析攻击,极大保障了用户的账本隐私安全。

  • 主要缺陷

1)社区对比特币的支付属性认可存在分歧

         比特币的内在价值主要表现在两个方面,一是类似于数字黄金的价值存储,二是电子现金支付工具。而社区中相当一部分用户更倾向于比特币的价值存储属性,而闪电网络作为链下扩容方式,是希望比特币可以履行电子支付货币的功能,这与很多用户的使用心态背道而驰。

2)比特币的小额支付场景有限

       闪电网络虽然通过链下扩容提高了比特币转账的交易速度,但是却没有直接提高比特币的现金支付场景。比特币如果希望成为电子支付货币,那么它必须具备货币的基本属性之一:内在价值在一段时间内相对稳定。而恰恰相反,比特币的价格常常大幅波动,并且单个币的价格也较高,从而使得用户使用比特币小额支付购买商品或者服务的整体意愿不高。        因为即使有了闪电网络加持的比特币,在小额支付场景上,依然无法和法币的方便性相比,甚至与稳定币 USDT 相比也难有竞争优势。用户很难有动力不使用方便、安全、价值稳定的法币,而用比特币去做日常的小额支付。所以,比特币的小额支付场景有限也直接导致了大家使用闪电网络来支付比特币的意愿不强。

3)安全性存在隐患

        近年来闪电网络的安全性隐患一直受大家的关注,在 2019 年8 月闪电网络开发者 Rusty Russel 就表示闪电网络软件的旧版本存在严重的漏洞,如果用户不进行更新,可能会丢失比特币。

       由于闪电网络通道内的交易均是在链下处理,并且涉及中介路由,支付双方的交易数据容易被黑客攻击而暴露。闪电网络在支付时,要求节点必须保持在线状态,如果用户在支付时,发生节点下线,将会使用户无法支付或者资金处于冻结状态。

4)闪电网络技术还未完全成熟

       闪电网络目前还存在许多需要解决的问题,比如节点掉线、路由设计、节点中心化、安全性、隐私暴露等,所提出的技术解决方案如瞭望塔 Watchtowers、原子多路径支付 Atomic Multi-Path Payments、潜交换 Submarine Swaps、中微子协议 Neutrino等还要等待落地验证。

  • 雷电网络

         闪电网络为解决比特币拥堵而生,以太坊也有自己的“闪电网络”,它的名字叫雷电网络。甚至,以太坊除了雷电网络,还有其他类似的技术。我们可以把闪电网络、雷电网络及其他类似技术,统称为“状态通道技术”。雷电网络借鉴了闪电网络的技术理念,关键技术也和闪电网络一致,包括RSMC、HTLC等技术。但雷电网络结合以太坊的特点也有一些自身的设计特色,基于以太坊的智能合约机制,提供更加便捷的链下支付通道。雷电网络同样分为构建双方支付通道和多方支付网络两部分,简化了闪电网络中RSMC(序列到期可撤销合约)和HTLC(哈希时间锁定合约)的实现方式。

      ·设计特色

           ·智能合约

           ·组合锁

      ·实现步骤

          ·双方支付通道(智能合约)

          ·构建支付网络(组合锁)

     ·主要缺陷

         ·离线问题

         ·路径查找问题

  • 双方支付通道

      雷电网络中的支付通道主要分为合约构建、余额证明、链下支付、合约撤销几个阶段:

      合约构建阶段,由参与者为特定通道创建智能合约,并发布到区块链账本上;

      余额证明阶段,通道中的交易双方通过向合约账户进行转账,作为资产抵押,此后,通道中的交易额度不能超过证明的资产数量,这是为了保证交易双方有偿还债务的能力,完成证明后,

      到达链下支付阶段中,交易双方根据合约规定的格式,通过更新交易状态,来签署新的余额证明完成链下支付,每一次的状态消息都附加上递增的序列号。闪电网络中每次记录的是新的余额状态,而雷电网络中记录的是更新的资产变化。

      当某一方希望中断支付通道时,停止签名新的状态消息,将当前的状态消息发送给智能合约。在一定时间内,如果合约没有收到序列号更大的状态消息,那么进行合约撤销,根据最新接受的状态消息返回资产到各参与者账户。

      如图所示,第 1 步,用户 B 向用户 A 先支付 3 个币;第 2 步,用户 A 向用户 B 支付 1 个币;之后,用户 A 尝试使用第 1 步的余额证明关闭通道,在限定时间内用户 B 提供新的余额证明,保证最终余额分配是按照最新状态进行。

  • 多方支付通道

        闪电网络还有一个问题,就是 HTLC 存在中间用户与收款用户合谋,损害付款用户资产安全性的风险,比如HTLC合约的秘密R一般由收款人设置,然后将R的哈希值提供给付款人。但是这样做存在一定的问题,在转账中,如果A想临时改变路径,不想通过B转账。或者B离线,无法转账,A不得不改变路径。更改路径后,在上次的HTLC合约到期之前,B和C有合谋的可能,也就是说在C从新路径拿到代币后,C向B透露R,使A在旧路径被锁定的代币转给B,造成损失。

        而雷电网络开发者考虑为锁设置由三个锁组成的组合锁,解决此问题。包括:

        (1)重试哈希锁(retry hashlock)。重试哈希锁的secret由付款人提供,可能会被付款人重新生成。重新生成一般是付款人想改变路径。

        (2)收据哈希锁(receipt hashlock)。收据哈希锁的secret由收款人提供。

        (3)时间锁(time lock),用于由付款人控制的锁到期时间。

        在到期前要解锁这笔转账,就需要重试哈希锁和收据哈希锁的两个secret,可称之为secretR和secretE。

        改造后,以A通过B中介转账给C为例,新的转账方式是:

        (1)收款人B发送收据哈希锁给A,自己保留收据哈希锁的secretE。

        (2)付款人A使用收据哈希锁和自己的重试哈希锁构造给B的转账,A自己保留secretR。

        (3)B按照同样的锁向C构建转账。

        (4)A确认以上转账构造完毕后,向C提供secretR。

        (5)C拥有secretR和secretE,向B出示,解锁转账,获得代币。B也获知了两个secret,向A出示,解锁转账,获得代币。

      这样做的好处是,只要A不提供secretR,C不能在转账中途向转账中介B提供secret,使A遭受资金损失。

  • 主要缺陷

       然后再来说一下雷电网络的主要缺陷。

        第一个是离线问题:闪电网络结束通道时,双方可以签名构造一笔交易把多重签名地址里的币分了,好聚好散。但在雷电网络里,双方的每一次雷电交易,都需要双方签名,只不过每次的序列号会增加,最后结束通道时,双方也只有一个办法,那就是其中一个将最新序列号的信息提交到智能合约,然后通过智能合约分币(因为它不能像闪电通道一样,双方签名就可以直接发起链上交易)。 现在问题来了,假如最后一笔雷电交易是A转币给B,但A却将倒数第二笔交易的信息提交给合约,那A就会拿了B的币。为了避免这个问题,信息广播后,会设置一段锁定时间,如果锁定时间到期,B没有提供更新的信息,那么就按A提交的信息分币。但如果B正好掉线了,明明有更新的信息,但就是没办法提交呢?那就没办法了。所以,这是使用雷电网络时的一大风险,要务必保持在线。

       第二个问题是路径查找问题。用户数量的增长会造成路径选择路由的困难,以及路径长度增加会导致部分用户离线带来更严重的后果。

       以上两个问题也有比较方便的解决办法,那就是支付中心。通过若干个和大量节点保持通道的支付中心,可以大量节省路径查找的问题,以及减少转账中介离线的可能,因为支付中心处于经济激励考虑会时常在线。但是仍无法解决支付中心在普通节点离线时,关闭通道的风险。此外,也有支付中心的管理风险。因为如果支付中心在同一时刻因为某种原因,关闭所有通道,对链上区块的GAS消耗是很大的,可能造成拥堵。

  • 多链通道隔离

         上面介绍的闪电网络和雷电网络都是属于链下通道隔离。而多链通道隔离技术在同一区块链系统中维护多个区块链账本,其中,不同节点群体维护特定子区块链,通过设置访问控制机制保障子区块链数据隐私安全。目前较为成熟的多链通道技术主要为 HyperLedger Fabric 项目的通道技术,通道技术主要通过在不同团队的内部节点间分别独立构建区块链,保护内部数据的隐私安全.相当于将同一区块链账本拆分为多个分片进行维护,各分片只负责维护不同的账户信息以及事务数据,不需要验证全局的账本信息.在必要情况下,分片之间需要进行通信.多通道技术在不同节点间构建互相隔离的通道,维护各自的独立账本,不同通道之间不需要进行通信,因此更强地保护用户隐私数据。

        在实际的应用场景中,不同节点具有不同的链下身份,需要完成不同的业务需求,因而会根据业务组成不同的团队进行合作.为了保护同一团队内部节点间的隐私数据,多通道技术通过在不同团队的内部节点间分别独立构建区块链,维护账本数据,保护内部数据的隐私安全.多通道技术主要包含这三个机制:

        ·身份管理: 管理各节点身份授权及认证机制,持有不同身份的节点拥有相应权限。

        ·通道管理: 管理通道建立、维护、销毁的整个生命周期。

        ·事务管理: 管理通道内事务的发布、排序、记录等操作。      

        通道隔离技术在网络层面进行消息隔离,通过限制消息的传播范围保护用户隐私.在非许可链系统中,区块链账本对所有节点公开,因此,通道主要以链下通道的形式存在,用户通过构建链下通道保护账本数据隐私,同时,利用公有链账本记录通道的开启和结束保护交易安全.而在许可链系统中,主要采用传统的授权与认证技术,由于存在访问权限的设计与管理,网络配置有了更多的选择,通常采用多链机制,根据应用需要构建不同的子区块链。

猜你喜欢

转载自blog.csdn.net/qq_35739903/article/details/117330305