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

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

                                身份验证和身份关联分析,对申请多个身份的用户征收费用,提高攻击者通过申请多个身份
                                实施女巫攻击的攻击成本,在一定程度上缓解女巫攻击.
                            (b)  在 PoS 系统中,币龄累计攻击为攻击者提升自身记账权竞争的成功率提供了可能,而币龄的
                                定义是 PoS 系统运行的基础,所以废除币龄定义方式的解决方案不具备可行性.因此,PoS 区
                                块链系统应该引入币龄预警、清零机制(详见第 4.3 节)作为补充,通过对用户节点所持币龄
                                的上限进行限制,从而缓解币龄累计攻击带来的安全威胁.
                            (c)  在 PoW+PoS 系统中,应对区块计算方式进行调正,避免当前区块的哈希值单独且直接影响
                                下一区块的生成难度,从而阻止预计算攻击.
                            (d)  新区块链系统应避免使用与已有系统相同的架构和共识算法,尽可能通过专机专用的方式
                                避免算力通用的问题,从根本上解决通用挖矿攻击.若无法避免,则该系统应在客户端内置
                                Casper 协议,以此缓解通用挖矿攻击带来的安全威胁.
                            (e)  设计新共识算法时,可以考虑引入如信用、评分等机制,以支持基于非代币的 Casper 协议,
                                解决代币类 Casper 协议中用户因为缴纳保证金过多而影响正常交易的问题,在不影响用户
                                交易的情况下,预防各种社会工程学攻击.
                        ③  有序的交易机制:在区块链网络中,应结合基于信誉等非代币系统的奖惩机制规范用户节点的交
                            易行为.以基于信誉系统的奖惩机制为例,攻击者可能通过恶意悬赏的方式贿赂矿工沿着指定的
                            方向挖矿,也可能通过提高交易 Gas 值的方式促使矿工提前打包指定交易.因此,针对贿赂攻击和
                            交易顺序依赖攻击中的恶意悬赏,矿工可以搜集证据并举报攻击者.一旦成功,举报者可以获得全
                            部的悬赏金和定量的信誉值提升,攻击者悬赏交易作废,信誉值降低,直至无法参与区块链交易.
                            此外,矿工也可以通过举报实施交易延迟攻击和重放攻击的攻击者来获取更高的信誉值,缓解用
                            户恶意交易行为带来的安全隐患.
                    (3)  设备系统安全:区块链网络涉及诸多设备,如互联网终端、合约虚拟机、矿机等.尽管这些设备用途不
                        同,但面临的安全威胁大多一致,所以可以采用以下方法来保证区块链设备的系统安全性.
                        ①  避免使用可能存在单点登陆漏洞、逃逸漏洞等软件漏洞的设备和客户端软件.开发商应在产品开
                            发阶段使用规范的编程逻辑开发相关软件,并在出厂销售前对产品的安全性进行全方位的测试
                            与评估.用户节点在使用相关产品时,也应对其进行安全性评估,避免使用存在安全问题的产品.
                        ②  为设备构建安全的防御层.首先,使用 DoS攻击防火墙,保证设备系统在 DoS攻击下的可用性和稳
                            健性;其次,合理管理系统 API 接口,实现细粒度的访问控制,预防 API 接口攻击.同时限制单位时
                            间内其他节点的访问频率和 API 接口(数据)的被访问频率,从访问者和被访问者两个角度实现对
                            穷举攻击的全面防御.
                    (4)  智能合约安全:智能合约的安全隐患主要包括合约代码漏洞和合约调用漏洞.
                         ①  首先,开发者在编写智能合约时应注重严谨的编程逻辑,避免合约代码出现整数溢出、时间戳依
                            赖等常见代码漏洞(详见第 5.3 节).在部署智能合约前,用户应对智能合约进行代码审计,评估智
                            能合约的安全性.
                         ②  其次,对于合约调用类攻击(调用深度攻击、重入攻击),开发者可以在编写智能合约时对合约的调
                            用次数进行限制,例如设置智能合约调用次数超过限定深度时,智能合约按照前一次的参数输入
                            运行,避免智能合约由于超限的调用次数导致的合约调用失败.
                         ③  此外,在合约进行调用时应严格执行返回参数验证的过程,从而预防重入攻击和由调用深度攻击
                            导致的误操作异常攻击.
                    (5)  用户行为安全:用户在区块链网络中的不良行为习惯可能导致其面临隐私信息泄露和资产被盗的风
                        险,因此,健全的用户行为规范是区块链安全防御体系的重要一环.首先,用户节点在设置账户口令时
                        应避免使用弱口令,同时避免在多个网站使用相同的账号和口令,预防攻击者发起的弱口令攻击和撞
   289   290   291   292   293   294   295   296   297   298   299