区块链安全测试方案研究
2018-02-13
倪 平 中国信息通信研究院泰尔系统实验室工程师
曹 元 中国信息通信研究院泰尔系统实验室工程师
1 区块链技术简介
近年来,区块链逐渐成为研究热点。通过分布式数据存储、点对点传输、共识机制、加密算法等技术,区块链提供了一种在不可信网络中进行信息与价值传递交换的可信通道,可有效解决传统交易模式过程中的数据流造假行为。因其独特的信任建立机制,区块链技术可被应用到金融、物联网、智能制造以及供应链管理等多个领域,可实现从现在的信息互联网到价值互联网的转变。
区块链技术通过建立一个多方共同维护且不可被篡改的数据库来记录过去的所有交易记录和历史数据。所有的数据以区块为单位产生和存储。区块之间按照时间顺序、结合密码学算法构成链式数据结构。所有区块数据都是分布式存储且公开透明的。参与到区块链系统上的节点,可能不属于同一组织,彼此无需信用;通过共识机制选出记账节点,由该节点决定最新区块的数据,其他节点共同参与最新区块数据的验证、存储和维护,每个参与维护的节点都能获得一份完整记录的拷贝。新区块的创建通常需要得到全网多数(数量取决于不同的共识机制)节点的确认,并向各节点广播实现全网同步,数据一经确认,就难以删除和更改,只能进行授权查询操作。
区块链主要分为公有链、联盟链与私有链。公有链对外公开,用户无需授权即可访问读取区块链信息。节点可自由出入网络。任何人都可以发送交易并被确认,参与共识过程。因此,公有链是真正意义上的完全去中心化的区块链。比特币和以太坊等是公有链的典型代表。联盟链仅限于联盟成员参与,区块链上的读写权限、参与记账权限按照联盟规则来制定,共识过程由预先选好的节点控制。联盟链网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入。联盟链平台应提供成员管理、认证、授权、监控、审计等安全管理功能。典型代表有40多家银行参与的区块链联盟R3和Linux基金会支持的超级账本项目。私有链则仅在私有组织使用,区块链上的读写权限、参与记账权限按私有组织规则制定。私有链的应用场景一般是企业内部应用,如数据库管理、审计等。私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击。
此外,美国区块链科学研究所创始人梅兰妮·斯万在《区块链:新经济蓝图及导图》一书中,按照应用范围和发展阶段将区块链分为3个层次:
区块链1.0——数字货币:区块链1.0支撑虚拟货币应用,解决货币和支付去中心化问题,典型代表是比特币,其主要创新是创建了一套去中心化的、公开透明的交易记录总账——其数据库由所有的网络节点共享,由“矿工”更新,全民维护。
区块链2.0——智能合约:区块链2.0是区块链1.0的发展,核心理念是把区块链作为一个可编程的分布式信用基础设施,支撑智能合约应用,解决市场的去中心化问题,使得区块链从最初的货币体系可以拓展到股权、债权和产权的登记、转让,证券和金融合约的交易、执行,以及博彩和防伪等金融领域。典型代表是以太坊平台。
区块链3.0——区块链应用延伸:区块链3.0的概念,已经超越货币、金融范围的区块链应用,涵盖了智能化物联网未来的各种应用场景,特别是在政府、医疗、工业、文化和艺术领域的应用,支持广义资产、广义交换,支持行业应用,由此构建一个大规模协作社会。EOS、Cosmos等是较为人知的区块链3.0项目,但目前业界还没有一个成熟的区块链3.0平台。
随着基于HashNet数据结构的区块链技术的发展,也有公司率先探索区块链4.0的概念。
区块链4.0——完善生态体系:区块链4.0将区块链作为某个行业的基础设施,形成基于区块链的完善生态体系,从而构建全球价值互联网。但区块链4.0尚未在业界达成一致共识。
2 区块链技术面临的安全风险
目前,区块链技术本身仍存在一些安全风险,技术应用过程中可能会引发一些不容忽视的安全问题,近年来,针对区块链核心机制的漏洞利用、DoS攻击等安全事件频发,造成重大经济损失。据BCSEC(区块链安全网,https://bcsec.org/)统计,自2011年到2018年10月,全球范围内因区块链安全事件造成的损失近36亿美元。
区块链安全事件日益增多,主要有以下3类:
(1)区块链自身机制安全问题,包括智能合约问题与51%攻击问题。2018年5月,比特币黄金(BTG)遭遇51%双花攻击,损失1860万美元。当月,EOS智能合约也被曝出存在严重安全漏洞,攻击者可利用漏洞控制和接管其上运行的所有节点。
(2)区块链生态安全问题,包括交易所被攻击,矿池、网站等被DDoS以及钱包被DNS劫持等风险。2016年8月,全球最大的比特币交易所之一Bitfinex因多重签名漏洞导致12万个比特币(约6800万美元)的损失。同年10月,以太坊遭到大量DoS攻击,影响网络正常运行。2017年7月,以太坊多重签名钱包Parity1.5及以上版本出现安全漏洞,15万个以太坊ETH被盗。2018年1月,日本最大的数字加密货币交易所Coincheck被盗走价值5.34亿美元的NEM。2018年3月,号称世界第二大交易所的“币安”被黑客攻击,大量用户账户被盗。2018年6月,韩国数字加密货币交易所Coinrail被攻击,损失超过5000万美元。
(3)使用者安全问题,包括个人账号钱包被盗与个人被欺诈、钓鱼、遭遇病毒木马等问题。2017年7月1日,中原油田某小区居民价值280万美元的188.31个比特币被盗。油田警方几个月后将位于上海的窃贼戴某抓获。2017年10月,东莞一名imToken用户发现100多个ETH(以太坊币)被盗,最终确认是身边的朋友盗取他的数字加密货币。
因此,区块链安全问题不容忽视。基于研究已发布的白皮书,本文从安全技术角度将区块链面临的风险与挑战分为6个方面:基础设施安全、密码算法安全、协议安全、实现安全、使用安全和系统安全。
(1)基础设施安全。区块链基础设施主要包括交换机、路由器等网络资源、硬盘和云盘等存储资源以及CPU、GPU等计算资源,为系统提供正常运行所需的操作环境和硬件设施,是区块链系统的基础支持。其面临的安全风险主要有:
●物理安全风险:主要指基础设施物理设备自身以及所处环境的安全风险,如交换机、路由器等网络设备存在高危漏洞导致被未经授权的访问和入侵,或者存放基础设施设备的物理运行、访问环境中存在的安全风险。
●网络攻击威胁:主要指传统的网络安全风险,包括利用网络设备软硬件漏洞进行攻击、DNS污染、路由广播劫持、DDoS攻击、木马病毒攻击等。
●数据丢失和泄露:主要指区块链数据或存储区块链数据的文件发生丢失或泄露的风险,主要包括对数据或数据文件进行破坏、窃取,或因失误操作、设备故障、操作系统故障、管理不规范等导致的数据丢失和泄露,以及线上和线下数据存储不一致等问题。
(2)密码算法安全。密码学是网络安全的基石,在区块链中也使用了大量密码学知识来保证其安全性。但现有的一些密码算法自身存在一定的缺陷,如DES加密算法因密钥长度短易被暴力破解。使用有缺陷或易被破解的密码算法会大大影响区块链的安全。以比特币为例,每个数据区块都会使用SHA256计算一个哈希值。在现阶段,该算法是安全的。由于SHA1和MD5已经被密码学者找到碰撞,所以不应选取这两个算法作为区块链中的哈希算法。此外,比特币使用椭圆曲线数字签名算法ECDSA来确保交易的完整性。比特币采用的是Koblitz曲线(secp256k1)而非美国国家标准与技术研究院(NIST)推荐的secp256r1。虽然当前并无证据,但有分析认为secp256r1有可能是被NIST静心挑选出的带后门的椭圆曲线,而比特币在无形中避开了这一风险。另外,随着量子技术的发展,研究人员发现椭圆曲线密码并不能抵抗量子攻击。当量子计算机与量子攻击成为现实时,所有不能够抵抗量子攻击的密码算法都存在较大风险,需要被替换。
(3)协议安全。主要指共识机制、P2P网络等存在的安全隐患。此类风险主要由区块链技术协议机制中存在的潜在安全缺陷引发,包括共识算法漏洞、流量攻击以及恶意节点的威胁等。
(4)实现安全。区块链2.0的核心是智能合约或称可编程合约,由于智能合约的应用起步较晚,大量开发人员尚缺乏对智能合约的安全编码能力,其风险主要来源于代码实现中的安全漏洞。360代码卫士团队盘点的目前常见的智能合约安全漏洞主要包括整数溢出、越权访问、拒绝服务、逻辑错误、信息泄露和函数误用等漏洞。由于智能合约的基石是代码,伴随代码技术的演化,开发人员编码质量参差,未来将可能出现更多的安全隐患。此外,智能合约运行环境的安全性也是区块链安全的重要环节。目前,部分区块链项目会设计并使用自己的虚拟机环境,如以太坊的EVM,一旦在运行环境中存在虚拟机自身安全漏洞,或验证、控制等机制不完善等,攻击者可通过部署恶意智能合约代码,扰乱正常业务秩序,消耗整个系统中的网络、存储和计算资源,进而引发各类安全威胁。
(5)使用安全。主要指使用的智能合约、数字钱包、交易所、应用软件以及服务器等存在的安全问题。智能合约等应用允许自主无条件提交代码、消息等操作容易产生漏洞,可被攻击者利用。交易所的存在,容易出现区块链资产、用户隐私信息监守自盗的问题。数字钱包主要存在3方面的安全隐患:设计缺陷、数字钱包中包含恶意代码、电脑与手机丢失或损坏导致的丢失资产。此外,一些开源区块链应用软件中存在大量安全漏洞。2016年10月,国家互联网应急中心发布的《开源软件源代码安全漏洞分析报告——区块链专题》报告中指出,在25款主流区块链开源软件中存在746个高危漏洞、3497个中危漏洞,可能导致系统运行异常、崩溃,或实现越权访问、窃取私密信息等严重后果。另外,区块链应用所在服务器上的恶意软件、系统的安全漏洞、配置不当的安全管理策略等都可能成为攻击者攻破区块链应用的脆弱点。
(6)系统安全。上述基础设施、密码算法、协议、实现、使用安全漏洞与黑客攻击结合,容易使区块链受到致命的打击。社会工程学手段与传统攻击方法结合使区块链变得更加脆弱,有组织的攻击行为将对区块链安全造成极大的危害,譬如攻击者可采用社会工程学方法欺骗用户,同时利用病毒、木马等传统攻击手段窃取用户账号,进而利用合法用户账号登录系统进行一系列非法操作。2018年3月7日,虚拟货币交易所币安的大量用户账户被窃取,攻击者利用被盗账户登录后,通过大量抛售等金融手段做高自己持有的虚拟货币种类价格,随后卖空离场实现获利。
3 区块链安全测试方案研究
区块链作为一种战略性、颠覆性技术受到各方热烈关注。各国政府、大型金融机构、企业集团、以及众多初创公司都纷纷投入了大量资源对区块链进行研究和开发。与此同时,各种区块链联盟、区块链协会、以及各大校企合作区块链实验室也纷纷成立。与区块链相关的测试也越来越多。
2017年5月16日,区块链技术和应用峰会暨中国区块链开发大赛成果发布会在杭州举行,首个区块链标准《区块链参考架构》正式发布。同时大会还公布了参考架构的首次测试结果,众安科技、乐视链服、瑞卓喜投、分布信息科技与趣链科技成为首批通过测试的公司。测试从功能性、安全性等维度,对智能合约、节点管理、拜占庭容错、数字加密和签名等进行测试,检验其是否符合《区块链参考架构》中的功能架构的要求。
2017年5月,贵州市大数据发展工作领导小组办公室对贵阳区块链测试中心正式授牌。依托于贵阳区块链测试中心建设的区块链测试平台,现已开展试运行。该中心主要由电子五所提供技术和人员的支持,并对外提供区块链测评服务。
2017年5月,中国信息通信研究院对北京太一云科技有限公司的区块链超导交易网络进行了测试,验证了超导网络产品的完整性、扩展性与高频交易性能等能力。测试主要包含功能测试和性能测试两个部分。功能测试主要测试连接、交易、结算等常见基本功能,并对各种边界条件进行了测试。同时,对超导网络的扩展性进行了测试,包含任意节点的加入、离开、跨多个节点的穿透交易等。性能测试则在10台物理服务器上进行了小规模的性能测试,并基于公有云环境进行大规模测性能测试。测试中,超导网络持续运行1h,完成了4亿笔交易,每秒链外交易数接近11万笔。同年9月19日,由中国信息通信研究院主办、数据中心联盟承办、中国支付清算协会金融科技专业委员会和中国物流与采购联合会区块链应用分会支持的“2017可信区块链峰会”在北京召开,会上公布了可信区块链标准和测评结果。据了解,可信区块链预测试基于数据中心联盟可信区块链标准,该标准是国内首个可信区块链标准,设立了涵盖功能、技术、安全、性能等14个评价指标和54项评测点。腾讯财付通、复杂美、布比、博晨、太一云、杭州趣链、智链ChainNova、中兴、联动优势等九家企业的产品通过了本轮预评测。
2018年6月28日,可信区块链评测方案讨论会在中国信息通信研究院召开。会议确定了可信区块链的测试方法,确定了可信区块链性能测试规范,细化了可信区块链测试的信息披露项,并对开源基准测试工作组的任务安排进行了讨论。随着评测方案的定稿,测试工作将于后续正式启动。
根据区块链测评内容,大体上可分为功能测试、性能测试、安全性测试、可靠性测试4大类。以上测试多偏重于功能测试、性能测试与可靠性测试,本文着重讨论区块链安全性测试方案。基于以上技术总结与风险分析,本文建议区块链安全测试从以下几方面着手:
(1)网络设备安全测试:网络基础设施是区块链平台的基础。对路由器、交换机等网络设备进行已知漏洞扫描、安全功能检查、配置核查以及未知漏洞挖掘,可大大降低来自区块链平台底层的安全威胁。此项测试主要针对交易所或提供区块链底层平台服务的运营商等组织机构。
(2)数据安全测试:该项测试主要检查区块链数据或文件是否加密存储与传输,以及采用的加密算法是否容易被破解,降低信息泄露或被窃取的风险。此外,还需要检查数据备份功能是否完善,减少数据文件被破坏无法恢复造成的影响。
(3)密码安全测试:密码学是网络安全的基石。此项测试主要检查被测区块链系统采用的密码算法是否安全,降低加密数据被破解或签名被伪造的概率。另外,还可以测试被测系统是否支持国密算法。常用的测试手段包括查阅技术开发文档、询问程序开发人员以及审计代码等。
(4)P2P网络机制安全测试:公有链允许任意节点或客户端加入。对公有链,该项测试主要验证被测区块链系统采用的P2P网络机制是否支持抵御DDoS攻击、女巫攻击以及日蚀攻击等常见的攻击手段。对于联盟链与私有链,该项则侧重验证采用的P2P网络机制是否采用加密传输,以及如何确保客户端与节点之间的信任。
(5)共识机制安全测试:共识算法目的是实现分布式场景下全网各节点数据的一致性和正确性。该测试项主要验证被测区块链系统是否可以防止双花攻击(DoubleSpendingAttacks,指同一个数字货币可以花费一次以上)或重放攻击(对于PoS、DPoS以及PBFT等确定性算法无双花攻击漏洞)、分叉攻击、女巫攻击、贿赂攻击、预计算攻击与自私挖矿等常见的攻击手段,以及是否有良好的容错能力。
(6)智能合约安全测试:智能合约是区块链2.0的核心,用数字来定义承诺,如果逻辑不够严谨,则很容易留下隐患。该项测试目的是检查智能合约代码中是否有常见的安全漏洞、智能合约是否可信以及智能合约是否符合规范和流程。着重检查的漏洞有:整数溢出漏洞、越权访问漏洞、拒绝服务漏洞、逻辑错误漏洞、信息泄露漏洞以及函数误用等漏洞。如厂商允许,还可以进行代码审计测试工作,在代码层次寻找可能存在的漏洞。
(7)Web与移动客户端应用安全测试:面向终端用户的区块链项目一般都会有Web或者移动客户端应用程序。可依据开放式Web应用程序安全项目OWASP TOP10提出的Web应用系统面临的最严重的风险进行测试:注入、失效的身份认证、敏感信息泄露、XML外部实体(XXE)、失效的访问控制、安全配置错误、跨站脚本(XSS)、不安全的反序列化、使用含有已知漏洞的组件、不足的日志记录和监控等(引用OWASPTOP10 2017内容)。必要时还可以模拟黑客攻击,进行渗透评估测试,发现潜在的漏洞与威胁。
(8)身份认证与鉴别测试:联盟链仅限于联盟成员参与,私有链则仅在私有组织使用。因此联盟链与私有链平台应提供成员管理、认证、授权、监控、审计等安全管理功能。所以对于联盟链与私有链平台,应进行身份认证与鉴别、成员管理以及审计记录等安全功能测试,防止出现非授权访问与读写区块链数据的情况。
此外,还可以对区块链系统激励机制以及其他自由协议进行黑盒测试或白盒测试,尽量保证其安全性。
4 结束语
区块链技术蓬勃发展,可被应用到金融、物联网、智能制造、供应链管理、数据存证及资产交易等多个领域,可为云计算、大数据、移动互联网等新一代信息技术的发展带来新的机遇。但区块链安全问题亦不可忽视,本文从技术角度分析区块链技术面临的安全风险,并探索区块链技术安全测试方案,希望为以后区块链安全测试的研究带来一定的参考意义。