Page 282 - 《软件学报》2021年第5期
P. 282

1506                                     Journal of Software  软件学报 Vol.32, No.5,  May 2021

                 分区.因此,解决克隆攻击的关键在于如何阻止攻击者成功实施 BGP 劫持攻击、分割攻击,所以可以考虑采用第
                 3.2 节中的 ARTEMIS 系统预防攻击者进行网络分区,从源头阻止克隆攻击.然而,ARTEMIS 系统只能在网络发
                 生异常时发现区块链网络是否发生分区,如果攻击者仅对部分关键数据进行管控而不影响其他数据的正常传
                 递,则 ARTEMIS 也无法阻止此类“无特征”的克隆攻击.此时,准备出块的区块链节点可以考虑引入基于权重的
                 节点活性检测方法,主动检测区块链网络是否发生网络分区.具体地,区块链节点可以通过随机取样的方式选取
                 区块链中已有的区块,根据其中包含的交易类型、金额、数量等特征计算出该区块生成者的权重.然后随机选
                 择节点并请求包含其心跳信息和上一区块哈希值在内的活性证明,如果该节点成功证明自身活性,则验证者累
                 计已验证节点的权重,并重复上述操作直至累计权重达到预先设置的阈值;若被选中节点未通过或未参与活性
                 检测,则证明区块链网络发生分区,应立即停止出块.尽管该方法与 ARTEMIS 无法从根本上阻止攻击者在 PoA
                 系统中实施克隆攻击,但能够在一定程度上预防并缓解克隆攻击来的危害,避免损失.
                    在非授权共识机制中,攻击者在本轮“记账权”竞争中需持有超过全网 1/2 的“筹码”,才有可能通过 51%攻击
                 主导区块链网络达成有利于自己的共识,进而实现双花攻击、历史修复攻击、卖空攻击等目的.而实际中,攻击
                 者通常很难自己拥有足够的“筹码”来实施 51%攻击,所以可能会通过各种手段获取“筹码”.为了预防 51%攻击,
                 区块链网络应该采取如下策略,阻止攻击者通过傀儡挖矿攻击、贿赂攻击等方法获取“筹码”.
                    (1)  加强区块链客户端的入侵检测能力,添加防火墙,阻止攻击者通过木马病毒入侵网络节点,盗用受害
                        节点的挖矿资源.
                    (2)  采用针对“恶意悬赏”的惩罚机制,缓解贿赂攻击带来的危害.全网节点可以对抵制恶意悬赏、恶意攻
                        击达成共识,缴纳保证金并签订智能合约.一旦出现恶意悬赏,则对举报者进行奖励,对恶意节点进行
                        惩罚,没收悬赏金额和保证金,限制其网络交易权限.
                    (3)  在 PoS 中采用新型的币龄计算方法,限制节点恶意累计币龄的行为.如:点点币通过在币龄计算方法中
                        设置节点持币时间上限的方式,限制了用户所持币龄的上限,在一定程度上阻止了 51%攻击.
                    (4)  在 PoS 中采用币龄预警、清零机制,预防 51%攻击.在记账权竞争过程中,对节点进行身份认证和权益
                        关联.若发现单节点或关联节点所持权益超过全网一半,则启动预警机制,阻止共识进程,然后清空恶
                        意节点持有的全部币龄,并处罚金.
                    尽管如此,攻击者还可能存在其他获取“筹码”的途径.为了进一步阻止 51%攻击,以太坊提出了一种计划内
                 置于 PoS 系统客户端的 Casper    [84] 机制.Casper 机制要求以太坊的矿工锁定一些以太币作为押金,为刚产生的区
                 块担保.如果投注者是诚实的,他们将获得相应的交易费用作为奖励;否则,Casper 将没收大量已投注的以太币作
                 为惩罚.显然,类似 Casper 机制的保证金奖惩机制可以很好地解决一些社会工程学问题,从而预防趋利节点发起
                 的各种攻击.如:在无利害关系攻击场景中,Casper 机制可以惩罚大部分恶意行为,提升了制造恶意分叉的代价,
                 使无利害关系攻击无法为攻击者带来收益.若矿工想参与挖矿,则他必须抵押一定数量的以太币作为押金,保证
                 自己在最长链上挖矿.若该区块被确认上链,则矿工收回保证金并获得一定的奖励.如果其他矿工尝试在多条支
                 链上挖矿来进行无利害关系攻击,则会被没收其在多条支链上的押金,这种概念叫做剑手(slasher)协议                               [85] ,即如
                 果矿工在同一个层级的分叉上同时签署了两份承诺,该矿工就会失去区块奖励,甚至被没收押金.
                    在预计算攻击场景中,攻击者可以通过预计算确定下一区块计算难度的关键在于区块生成算法中,上一区
                 块哈希值与下一区块计算难度的关联性.所以为了预防 PoS 系统中的预计算攻击,应该重新制定区块生成算法.
                 首先,可以考虑打断当前区块链计算难度与前一区块哈希值之间的联系,使得攻击者无法通过预计算控制后续
                 区块的计算难度;其次,也可以考虑增加新的计算元素,使得上一区块的哈希值不再是确定下一区块计算难度的
                 唯一因素.在长距离攻击场景中,区块链网络无法阻止攻击者伪造一条新的区块链主链,但可以通过类似
                 BlockQuick 的方式,通过增加身份认证、信誉值对比的方式限制全网节点对该链的接受度来预防长距离攻击.

                 5    区块链合约层攻击

                    合约层是区块链 2.0 技术体系的重要标志,封装了区块链的各类脚本代码、算法机制和智能合约,使区块链
   277   278   279   280   281   282   283   284   285   286   287