区块链面临六大安全问题 安全测试方案研究迫在眉睫
近年来,区块链技术逐渐成为热门话题,其应用前景受到各国政府、科研机构和企业公司的高度重视与广泛关注。随着技术的发展,区块链应用与项目层出不穷,但其安全问题不容忽视。近年来,区块链安全事件日益增多,引发的后果较为严重,造成的经济损失数以亿计。
区块链技术可分为三个层次
狭义上讲,区块链是一种按照时间顺序将数据区块顺序相连组成链式数据结构,并以密码学方式保证不可篡改和不可伪造的分布式账本。广义上讲,区块链技术是利用块链式数据结构验证与存储数据、利用分布式节点共识算法生成和更新数据、利用密码学方式保证数据传输和访问的安全、利用自动化脚本代码组成的智能合约来编程和操作数据的一种全新分布式基础架构与计算范式。
区块链主要分为公有链、联盟链与私有链。公有链对外公开,用户无需授权即可访问区块链信息,节点可自由出入网络。联盟链仅限于联盟成员参与,区块链上的读写权限、参与记账权限按照联盟规则制定,共识过程由预先选好的节点控制。私有链则仅在私有组织使用,区块链上的读写权限、参与记账权限按私有组织规则制定。
此外,美国区块链科学家梅兰妮·斯万按照应用范围和发展阶段将区块链分为3个层次,分别为区块链1.0、2.0、3.0。
区块链1.0—数字货币:区块链1.0解决货币和支付去中心化问题,典型代表是比特币。
区块链2.0—智能合约:区块链2.0是区块链1.0的发展,支撑智能合约应用,解决市场去中心化问题,将区块链拓展到股票、债券、期货等金融领域,典型代表是以太坊平台。
区块链3.0—区块链应用延伸:区块链3.0涵盖了智能化物联网未来的各种应用场景,支持广义资产、广义交换,支持行业应用,由此构建一个大规模协作社会,其典型代表是EOS项目。但目前业界还没有一个成熟的区块链3.0平台。
随着技术的发展,也有公司率先探索区块链4.0的概念。
区块链4.0—完善生态体系:区块链4.0将区块链作为某个行业的基础设施,形成基于区块链的完善生态体系,从而构建全球价值互联网。但区块链4.0尚未在业界达成一致共识。
区块链安全问题不容忽视
目前区块链技术本身仍存在一些安全风险,应用过程中可能会引发一定的安全问题。近年来,区块链安全事件频发,造成重大经济损失。据统计,自2011年到2018年10月,全球范围内因区块链安全事件造成的损失近36亿美元。可见,区块链安全问题不容忽视。
基于业界已有研究报告,本文将区块链面临的风险与挑战分为六大方面:基础设施安全、密码算法安全、协议安全、实现安全、使用安全和系统安全。
基础设施安全:基础设施主要包括交换机和路由器等网络资源、硬盘和云盘等存储资源以及CPU和GPU等计算资源。面临的问题主要有物理安全风险、网络攻击威胁以及数据丢失和泄露等安全风险。
密码算法安全:区块链使用了大量密码算法以保证安全性。但现有的一些密码算法存在一定缺陷,使用有缺陷的密码算法会大大影响安全性。另外,随着量子技术的发展,使用不能够抵抗量子攻击的密码算法都有较大风险。
协议安全:主要指共识机制、P2P网络等存在的安全隐患,主要面临共识算法漏洞、流量攻击以及恶意节点等威胁。
实现安全:智能合约起步较晚,其风险主要来源于代码实现中的安全漏洞。此外,智能合约运行环境的安全性也是区块链安全的重要环节。
使用安全:主要指使用的智能合约、数字钱包、交易所以及应用软件等存在的安全问题。另外,区块链应用所在服务器上的恶意软件、系统的安全漏洞等都可能成为攻击者攻破区块链应用的脆弱点。
系统安全:上述基础设施、密码算法、协议、实现、使用安全漏洞与黑客攻击结合,可使区块链受到致命打击。社会工程学手段与传统攻击方法结合使区块链变得更加脆弱,有组织的攻击行为将对区块链安全造成极大危害。
区块链安全测试方案研究
各国政府、金融机构以及众多企业等纷纷进行区块链的研究和开发。各种区块链联盟、区块链协会以及各种区块链实验室也纷纷成立。区块链相关测试也愈来愈多。
2017年5月,区块链技术和应用峰会暨中国区块链开发大赛成果发布会在杭州举行,发布首个区块链标准《区块链参考架构》,并公布了参考架构的首次测试结果。同时,贵阳区块链测试中心正式挂牌并开展试运行区块链测试工作。另外,中国信息通信研究院也对太一云的区块链超导交易网络进行了性能与功能测试。2017年9月,可信区块链峰会在北京召开,公布了可信区块链标准和测评结果。2018年6月,可信区块链评测方案讨论会在北京召开,会议确定了可信区块链的测试方法与性能测试规范,并讨论了开源基准测试工作组的任务安排。
区块链测评内容可分为功能测试、性能测试、可靠性测试与安全性测试。已有测试多偏重于功能测试、性能测试与可靠性测试,本文着重讨论安全性测试,建议从以下几方面着手。
共识机制安全测试:主要测试采用的共识机制能否抵御双花攻击(同一数字货币重复使用多次)、重放攻击等常见的攻击手段,以及是否有良好的容错能力。
智能合约安全测试:主要检查智能合约是否存在常见的安全漏洞、是否可信以及是否符合规范和流程。此外,还可进行代码审计工作,在代码层次寻找可能存在的漏洞。
Web与移动客户端应用安全测试:面向终端用户的区块链项目一般都有Web或移动客户端应用程序。可检查其是否存在注入、XSS等常见Web漏洞。还可进行渗透评估测试,发现潜在的安全威胁。
身份认证与鉴别测试:对于联盟链与私有链平台,应测试身份认证与鉴别、成员管理以及审计记录等功能,防止出现越权等漏洞。
此外,还可以对激励机制及其他自有协议进行测试,尽量保证其安全性。
小结
区块链技术可有效解决传统交易模式中数据流造假行为,可被应用到金融、物联网、供应链管理等多个领域,可实现从信息互联网到价值互联网的转变。但区块链安全问题亦不可忽视,本文从技术角度分析区块链技术面临的安全风险,并探索区块链技术安全测试方案,希望为以后区块链安全测试的工作带来一定的参考意义。