APP下载

区块链测试技术研究

2020-09-02周鸣爱

网络空间安全 2020年7期
关键词:区块链安全测试

摘   要:区块链技术作为金融领域甚至整个互联网领域技术上的重大创新,因其具有去中心化、公开透明、不可篡改等特点,除应用于加密货币外,还被广泛用于解决各个领域的发展难题。为保障各领域应用区块链技术系统的质量,区块链测试技术受到各国政府、科研机构和企业公司的高度重视。文章从区块链的架构、特点、安全角度进行分析,以区块链测试为研究方向,目的是研究区块链测试的难点,寻求有效的区块链测试方法,希望能为区块链测试技术的发展提供参考。

关键词:区块链;安全;测试

中图分类号: TP399          文献标识码:J

Abstract: Block chain technology, as a major technology innovation in the financial field and even the entire internet field. Because of its characteristics of decentralization, openness, transparency and non-tampering, it is widely used to solve problems in various fields besides cryptocurrency.In order to ensure the quality of the system that blockchain applied in various fields, blockchain testing technology has been highly valued by governments, research institutions and enterprises. The paper analyzes the block chain from the perspective of architecture, characteristics and security. Taking block chain testing as the research direction and the purpose is to study the difficulties of block chain testing and seek for effective block chain testing methods, hoping to provide reference for the development of block chain testing technology.

Key words: block chain; safety; testing

1 引言

2008年10月31日,Satoshi Nakamoto(中本聪)在一个密码学邮件组上发表了一篇研究报告《Bitcoin:A Peer-to-Peer Electronic Cash System》,报告表明他对电子货币的新想法,阐述创建一种去中心化、Peer-to-Peer(P2P)新型交易系统的方法[1]。2009年1月比特币诞生。此后,作为比特币底层基础架构和数据加密传输的核心技术—区块链技术,因其具有去中心化、集体维护、信息不可篡改、高度透明和匿名等特点得到各国政府、大型企业及金融集团的密切关注,目前已应用于物联网、金融等多个领域,未来将成为被广泛使用的底层核心技术。

区块链技术作为随着比特币及其他加密数字货币的日益普及而逐渐兴起的重要技术,在给世界带来新机遇的同时,也带来了严峻挑战。全球区块链安全事件时有发生,区块链技术相关的系统性能、安全和质量等问题引发了热议,成为学术界和产业界所关注的焦点。因此,对区块链测试技术的研究,具有非常重要的实际意义,能够进一步推动区块链技术在各行业的应用,并为区块链测评实施提供参考。

2 区块链

区块链是一种分布式、去中心化的计算与存储架构[2],一种由共识机制、P2P的传输技术、分布式技术及密码学等信息技术组成的创新型应用模式。

狭义定义:区块链是一种多个由密码学技术产生的数据区块按照一定的时间顺序组合连接成的链状数据结构,是一种不可伪造、不可修改的分布式数据账本。

广义定义:区块链是利用块链式数据结构验证与存储数据,利用分布式节点共识算法生成和更新数据,利用密码学技术保证数据传输和访问安全,利用由自动化脚本代码组成的智能合约编程来操作数据的一种全新的分布式基础架构与计算范式[3]。

区块链按照准入规则可分为公有链、私有链和联盟链;根据权限可分为许可链和非许可链,其中公有链属于非许可鏈,私有链和联盟链属于许可链。

区块链的架构可以分六层,从下至上依次是数据层、网络层、共识层、激励层、合约层和应用层,架构模型[4]如图1所示。

区块链本质上是一种分布式数据存储技术,它的核心部分是数据层,数据层封装了数据区块、Merkle树、密码学、Hash函数、时间戳和数字签名技术。区块头和区块体组成一个数据区块,其中区块头中包含前一个区块的Hash值,可用于唯一标识该区块,同时还包含Merkle根和时间戳等,而相关交易信息则包含在区块体部分。Merkle树数据结构是区块体中交易信息的存储方式。密码学技术可以确保区块链中数据传输的安全。Hash函数在区块链中可用于快速验证、防止篡改和用于POW共识算法工作量证明等。时间戳保证了区块链中数据的不可篡改。数字签名使用了数字摘要和密码学技术,确保了传输过程中数据的完整性和交易双方身份的真实性。

区块链中数据传输的基础——网络层,该层使用P2P网络架构,通过特定的传输机制和验证机制,使链上每个节点都可公平参与记账和共识。共识层是通过共识算法使区块链中各个节点快速达成共识。激励层是将经济因素引入到区块链中的一层,该层主要作用是奖励记账节点,惩罚破环活动的节点,使整个链健康的运转下去。合约层体现了区块链的可编程性,包括封装脚本代码、智能合约和编程算法。应用层则主要用于部署区块链的各种应用。

区块链技术作为互联网行业的一个重大创新,在功能、性能、可靠性和安全性等各个方面都需要得到保障,目前区块链安全问题在业界备受关注。

3 区块链安全问题分析

区块链安全事件时有发生,根据PeckShield提供的数据和BCSEC网站数据的统计,2018年因区块链安全事件导致的经济损失高达22.38亿美元;据Odaily 星球日报与 PeckShield 联合发布研报显示仅2019年就发生了177件区块链安全事件,造成的经济损失为76.79亿美元。因此,区块链安全问题需得到高度重视。从业界研究来看,区块链安全问题主要包括五个方面。

(1)代码安全问题

区块链项目为了使更多对区块链感兴趣的开发者参与,其代码均具有开源特性,但这会降低黑客攻击区块链的难度。例如,XVG因其代码层面的漏洞,在很短的时间内被黑客攻击损失175万美元数字货币[5]。EOS因为合约代码安全性薄弱,导致黑客多次发起DAPP攻击[6]。

(2)密码技术安全问题

区块链技术离不开密码学,但随着量子计算技术[7]的发展,在理论上,该技术可以攻克使用ECDSA、DSA、RSA等加密算法保存的信息,将会使区块链面临着很大的安全风险。

(3)智能合约安全问题

对于智能合约[8]人工干预的可能性很小,但如果编写的智能合约本身就存在问题,则受到黑客攻击的概率就会增加,可能造成不可估量的损失。此外,智能合约运行环境的安全性也会对区块链安全产生影响。由于智能合约安全问题造成重大损失的事件有很多,例如2018年4~5月,发生了BEC/SMT/EDU智能合约安全漏洞事件[9],原因是某些以太坊ERC-20智能合约存在BUG(溢出或必要校验),黑客利用该缺陷对智能合约发起攻击,导致某互联网公司损失了近9亿美元,使得BEC代币的价值几乎归零。

(4)协议安全问题

协议安全问题主要包括共识机制、区块链网络等方面的安全问题,目前常用的共识机制有PoW、PoS、DPoS及PBFT等。对于PoW当攻击者拥有全网51%以上的算力时,就可以撤销自己的交易记录,进行双重支付。对于PoS共识机制,当攻击者拥有全网51%以上的Token时,便可发生攻击,对区块链造成破环。对于PBFT,正常节点占全网2/3以上时,整个链才是安全的。由此可见,任何共识机制的安全性都是有条件的。由于协议安全问题也发生过安全事件,例如Ethereum Classic,作为全球市值最大的分叉链。分叉后ETC使用的算法一直是POW,但是全网的算力水平一直比较低,由此导致2019年1月6日出现了51%的双花攻击,共损失219500ETC,约110万美元[10]。

(5)使用时的安全问题

使用时的安全问题主要是指数字钱包及软件等可能存在的安全问题。区块链服务器也可能存在一些成为黑客攻击点的安全漏洞。例如,2018年10月26日,EosRoyale钱包遭到黑客攻击,被黑客盗取了约11000个EOS(约6万美金)[11]。

区块链安全问题可能存在于各个方面,因此对于区块链测试技术的研究迫在眉睫。

4 区块链测试

区块链在金融、物联网、供应链等领域有广阔的应用前景,但是在技术实现、标准规范等方面还存在一些不完善的地方,需进行深度研究和探索。区块链安全问题可能是目前业界最为关注的问题,但在实际各种应用场景中,区块链的功能、性能及可靠性等方面也都需得到保障,因此需加快对区块链测试技术的研究。

4.1 区块链测试的难点

区块链测试与普通系统或软件测试有很大差别,在对其研究中发现区块链测试存在三方面测试难点。

4.1.1不同类型区块链测试考虑的重点不同

区块链按准入规则目前可分为公有链、私有链和联盟链。鉴于不同类型区块链具有不同的特性,因此测试重点会有所不同。

公有链是任何用户都可接入,没有任何限制,可能包含一些具有破坏性的节点,公有链对用户身份也没有任何限制,因此测试时不必考虑对用户身份的验证。对于共识机制,不同的公有链共识机制不同,且均为多块确认,交易处理时间可能会比较长。测试时要考虑共识机制的效率和安全性,以及在某些特定的应用场景下,交易确认时间是否能够满足需求。

而对于联盟链和私有链,链上用户身份均经过认证,因此不存在恶意成员节点。在测试时需考虑对用户身份及权限的验证。对于联盟链和私有链,共识机制也会根據链的不同而不同,但是确认时间都会比较短,有的几秒就可以完成确认。一般应用于银行转账、证券交易等场景。在对其测试时需考虑共识机制的安全性,同时还需要考虑交易确认时间是否能够满足实际业务需求,私有链和联盟链一般是由单个或多个机构组成的链来完成某些特定业务,对交易确认时间要求较高。

由此可见,不同类型的区块链测试的重点不同,因此测试方案的复杂性会比较高。

4.1.2区块链故障种类多且复杂

(1)节点宕机故障

节点宕机故障区块链节点位于不同的物理环境中,可能会出现一个或几个节点宕机的情况,这种情况下需测试节点宕机对整条链的影响及其恢复后再加入到链中信息同步的问题。而普通的系统或软件节点宕机故障测试则考虑的是备机能否及时替换的问题。

(2)共识机制故障

共识机制故障问题是传统系统测试不会出现的问题。在区块链中不同的链会采用不同的共识机制,而针对不同的共识机制需要制定不同的测试方案。例如,POW当算力超过全网50%时,就会对链造成破坏。大部分的共识机制不出现故障都是有条件的。而共识机制故障,会导致链的服务失效,严重的将造成重大经济损失。因此测试时,需根据不同的共识机制设计不同的测试方案。

(3)安全方面的故障

安全方面的故障是最为严重,也是最为复杂的故障,有和普通系统相一致的底层代码安全性、密码算法安全性,也有普通系统测试未涉及到的共识机制安全性、智能合约安全性、数字钱包安全性等。

4.1.3 系统边界不明确

普通软件,不论是客户端/服务器模式的系统,还是独立的应用程序,系统边界都很明确。可通过浏览器直接测试。然而,区块链完全是一个去中心化的分布式网络,可能会跨越多个不同国家、数据中心、运营商,无明确系统边界。因此,区块链测试不仅要测试某个API、某个DAPP,还需考虑节点间的测试,在实施测试时难度系数增加。

4.2 区块链测试类型的选择

在实际测试中,可根据对区块链产品测试目的不同,选择不同类型的区块链测试。

(1)若目的是对区块链产品进行评估、检测,则需进行系统测试。

(2)若目的是对区块链产品进行成果鉴定、基金申请,做鉴定测试即可。

(3)若目的通过对比,选出一条各方面指标都比较好的区块链产品,则需做对比测试。

(4)若目的是为检测区块链产品是否达成某种预期的效果则需进行验收测试。

4.3 区块链测试重点

区块链测试点较多,经调研分析,测试重点主要包括八个部分。

(1)数据处理基本功能测试:查询总区块数、区块的平均生成时间、对某个区块的业务数量进行查询、某个区块上业务的详细信息及业务溯源等信息的查询。

(2)节点管理功能测试:节点的增加、删除、节点间数据同步、节点及其接口的访问权限管理。

(3)用户的身份认证:注册、修改及冻结等。

(4)共识机制有效性测试:是否会发生双花、是否达成相互信任的共识等。

(5)加密算法的测试:区块链对加密算法的支持,以及链上信息的存储和加密传输。

(6)容错性的测试:新增节点对整条区块链的影响,某个节点宕机对整条区块链的影响或者调整某个节点对整条区块链的影响。

(7)对于支持智能合约的区块链,需要对其智能合约进行测试:测试智能合约对查询、更新、冻结等功能的支持,

(8)性能方面的测试:包括吞吐率的测试、TPS、交易确认时延、节点宕机恢复效率等。

4.4 区块链测试工具

4.4.1 Caliper性能测试工具

Caliper是一款区块链性能测试工具,可实现对不同区块链性能的实时跟踪,得到一系列的测试结果,并生成测试报告。目前,支持的测试指标有交易成功率、交易吞吐量TPS、交易延迟及CPU、内存、网络IO的资源消耗。用户可使用事先定义好的测试用例测试不同区块链的性能,包括交易成功率以及在进行一些操作时CPU等资源的消耗情况。该测试工具的应用层(Application Layer)中包含对典型区块链方案实施的测试,对于测试的配置文件,用来对后端区块链网络和测试参数进行定义,这些可直接用于对区块链系统性能进行测试。适配层(Adaptation Layer)可实现和不同区块链的集成,将区块链系统集成到Caliper框架中,每个适配器都可通过相应的区块链SDK或RESTful API实现相应的‘Caliper Blockchain NBIs。接口和核心层(Interface & Core Layer)包括了Caliper核心函数,并为Up-applications提供了NBI(North Bound Interfaces),包括四种NBIs:区块链操作接口、资源监控器、性能分析器、报告生成器。

目前,Caliper支持对 Hyperledger Iroha、Hylerledger Sawtooth和Hyperleger Fabric的分析,后续会提供对更多区块链测试分析的支持。

4.4.2 JMeter压力测试工具

JMeter是由Apache组织开发的压力测试工具,最初只是用于对Web应用测试,之后逐渐扩展到其他测试领域,可用来测试动态和静态资源,例如数据库、服务器、CGI脚本和小程序等。此外,还可对网络、服务器或模拟高负载的情况。对于区块链的压力测试,可以利用JMeter测试不同压力下,区块链TPS、节点故障恢复效率、交易确认时延等性能。另外,JMeter还可以做功能或回归测试,通过创建设有断言的脚本,返回期望的结果。

JMeter组件主要由测试计划、模拟并发请求的线程组、收集测试结果的监听器、定义JMeter发送请求行为逻辑的逻辑控制器、判断请求结果是否为所期望结果的断言、维护Sampler的配置原件、处理生成请求之前和之后工作的前置处理器和后置处理器、定义请求延时间隔的定时器組成。

Jmeter支持的脚本生成方式有直接导入通过Badboy录制的脚本、手动编写测试用例和直接使用JMeter录制脚本。

4.4.3 NMap端口扫描工具

NMap即Network Mapper,是一款Linux下的网络嗅探和扫描工具包。NMap通常用于扫描开放端口、发现网络服务、探测主机是否在线、管理服务升级计划等。Nmap作为使用原始IP数据包工具,能够快速地准确检测网络中有哪些主机,主机上有哪些服务,什么版本的包过滤防火墙正在被使用等。在区块链网络中,NMap用于检测链上节点是否正常运行,所在网络是否安全,敏感端口是关闭等问题,一旦出现安全问题,可通过路由进行故障排查。

4.4.4 Wireshark抓包分析工具

Wireshark是一款跨平台的网络封包分析工具,主要用于分析、排查网络问题和网络入侵。Wireshark利用WinPCAP作为接口,直接与网卡数据报文交互。一般用于解析网络链接、数据发送结果、流量统统计和一些常见的应用层问题。在区块链测试中可用于对共识算法分析测试、交易分析测试等数据包分析。如在某个节点发起交易,形成区块,使用Wireshark对其他节点的IP地址进行抓包,通过分析数据包,分析交易过程与使用的共识算法对比,以检测其实际流程与共识算法流程是否相一致。

5 结束语

本文首先介绍了区块链相关概念,分析了区块链目前存在的问题,研究了区块链测试的难点、重点、测试类型的选择及目前可用的几款区块链测试工具,希望能为区块链测评技术的发展提供参考。区块链技术目前仍处在发展初期,区块链测试技术也是在探索中发展,测试方法及测试工具还需不断完善,以提高区块链产品质量,进而推动区块链行业的健康快速发展。

参考文献

[1] 楊保华,陈昌.区块链原理、设计与应用[M].北京:机械工业出版社,2018.5-7.

[2] 闫莺,郑凯,郭众鑫.以太坊技术详解与实战[M].北京:机械工业出版社,2018.

[3] 工信部.中国区块链技术和应用发展白皮书(2016)[EB/OL]. https://www.jianshu.com/p/6ac84516a4c5 2018.05.22/2019.05.20

[4] 袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016.42(4):481-494.

[5] 超级盾.Verge再遭黑客攻击,损失近175万美元[EL/OB]. https://kuaibao.qq.com/s/20180528A1KGTC00?refer=cp_1026 2018.05.28/2019.05.30

[6] 火星财经.2019年区块链安全时间总结,全球损失超60亿美元[EL/OB]. https://baijiahao.baidu.com/s?id=1653256084343427367&wfr=spider&for=pc.2019.12.28/2020.02.10

[7] 杨保华,陈昌.区块链原理、设计与应用[M].北京:机械工业出版社,2018.70-71.

[8] 黄连金,等.区块链安全技术指南[M]. 北京:机械工业出版社,2018.52-90.

[9] 区块链兄弟.ERC20合约整数溢出安全流动案例技术分析[EL/OB]. https://baijiahao.baidu.com/s?id=1598863813860238774&wfr=spider&for=pc.2018.04.27/2019.05.30

[10] 星球日报.一二月区块链安全事件盘点[EL/OB]. https://baijiahao.baidu.com/s?id=1626069087170114827&wfr=spider&for=pc 2019.02.21/2019.05.30.

[11] Apatheticco.基于EOS的dApp EosRoyale遭到攻击,被盗1.1万枚EOS[EL/OB]. https://www.8btc.com/article/300799 2018.10.31/2019.06.04

[12] 王继辉.区块链与智能合约图谱分析[J].网络空间安全, 2019,10(11):1-6+25.

作者简介:

周鸣爱(1988-),女,汉族,河北张家口人,河北工程大学,硕士,赛迪研究院网络安全研究所,工程师;主要研究方向和关注领域:区块链、计算机软件、网络安全。

猜你喜欢

区块链安全测试
心理测试
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
基于区块链技术的数字货币与传统货币辨析
用“区块链”助推中企走出去
心理小测试
测试
小测试:你对电子邮件上瘾了吗?