白帽汇安全研究院发布区块链安全分析报告

前 言
当今,全球信息领域的新一轮科技创新和产业变革持续深入,渗透范围越发广泛,作为研发投入最为集中、应用成效最大的信息技术,正是此次引领变革的主导力量和技术创新的竞争高地。
在此背景下,区块链作为一种分布式数据存储、点对点传输、共识机制、加密算法等技术的新型集成应用,发展势头迅猛,近年来已经成为世界各国研究讨论的焦点。其生态系统已延伸到物联网、云计算、大数据、人工智能等多个领域,应用场景也涵盖了金融、投资、监管等机构,引发了新一轮的技术创新和产业变革。
一直以来,安全问题都是信息产业的重大发展方向,随着科技技术的演变和复杂化,信息安全问题的需求日益迫切,同时也被赋予了新的内涵外延。而区块链作为一种新兴技术,安全性威胁是其迄今为止所面临的最重要的问题之一。
为全面了解和推动区块链技术和产业发展,解决区块链目前面临的安全问题,“白帽汇安全研究院”采用自主创新技术,根据区块链的数据层、网络层、共识层、扩展层和业务层的不同应用场景下的主流攻击事件进行探索,分析和总结,提出了安全加固、渗透测试、仿冒监测和合约审计四类安全解决方案,与国家安全机构、金融企业、信息安全部门、互联网巨头等建立深度合作关系,多项研究成果成功应用于漏洞预警和产品服务,最终整合编纂形成了《区块链产业安全分析报告》,并希望以此契机建立起安全可靠的区块链技术安全生态体系。
一 区块链概述
1.1 定义
区块链[1]是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,是以比特币为代表的数字加密货币体系的核心支撑技术,且可以从两个方面来进行定义:从狭义的角度上来讲,区块链是一种以时间顺序排列的链式结构数据,并通过密码学的方式来保证数据的不可篡改、不可伪造。从广义的角度来讲,区块链技术是利用块链式数据结构来存储数据、利用链式数据的前后关系来验证数据、利用分布式节点来生成数据,利用共识算法来更新数据、利用密码学来保证数据的真实性、利用由程序代码组成的智能合约保证协议的不可违约性的一种同时具备高可用、高扩展、高安全等特性的全新数据系统。
其核心优势是去中心化,能够通过运用数据加密、时间戳、分布式共识和经济激励等手段,在节点无需互相信任的分布式系统中实现基于去中心化信用的点对点交易、协调与协作,从而为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。
如下图所示,高亮的点是区块链系统中分布在全球各地的各个节点;而这些节点可以简单理解为一台服务器或服务器集群,并能够协同运转的数据库存储系统。区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器的个体都可以参与其中。
来自全球各地的开发人员在当地部署了自己的服务器,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点;一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的参与者,可以往这个系统中的任意节点进行读写操作,最后全世界所有节点会根据某种机制完成一次又一次的同步,从而实现在区块链网络中所有节点的数据完全一致。
1.2 特征
区块链技术是具有普适性的底层技术框架,可以为金融、经济、科技甚至政治等各领域带来深刻变革。在信息网络化的大背景下,当需要进行信息交换的时候,如何防止遭遇恶意欺诈,从而做出正确决策?具有去中心化、可追溯性等特征的区块链技术正好解决了此类难题,区块链的核心技术均围绕此进行展开。
1.2.1 去中心化
区块链使用分布式架构,在区块链网络中的节点同时扮演着“传播者”和“验证者”的角色,享受同等的权利、承受同等的义务,节点与节点之间可以自由通信,系统中的数据块由具有存储能力的节点共同存储。
1.2.2 开放性
区块链整体系统是开放的,除了节点的私钥以外,网络中的节点信息对所有人公开,区块链中的数据对所有人公开,区块链的源代码对所有人公开。
1.2.3 自治性
区块链采用基于预先设定好的规范或协议使得整个网络中的所有节点能够在自由、安全、无障碍的情况下的进行交互。
区块链技术将原本人与人之间”的信任转化为人对机器的信任,任何人为的行为都难以撼动机器计算的结果。
1.2.4 不可篡改性
在区块链系统中,由于使用了哈希函数以及非对称加密等先进的密码学技术,在信息经过验证后会被打包至区块中,由于区块链只做加法,所以区块链上的区块数据不可销毁。由于它是分布式的,所以单个节点对区块的修改对于整个区块链来说毫无影响,因此区块链的数据稳定性和可靠性都是极高的。
1.2.5 可追溯性
尽管区块链中的匿名性无法看到交易双方的身份信息,但区块+链的形式保存了从第一个区块开始的所有历史数据,连接的形式是后一个区块拥有前一个区块的hash值,区块链上任意一条记录都可通过链式结构追溯本源,这样从另一个方面保障了信息的安全性。
1.3 分类
基于多种应用参与方式,区块链目前主要分为公有区块链、联盟区块链和私有区块链。
1.3.1 公有区块链
公有区块链是指:世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是目前应用最广
泛的的区块链。是指像比特币区块链这样的完全去中心化的、不受任何机构控制的区块链。共识过程的参与者通过密码学技术以及内建的经济激励维护数据库的安全。
1.3.2 联盟区块链
联盟区块链是指:由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的api进行限定查询。
参与区块链的节点是事先选择好的,节点间很可能是有很好的网络连接。这样的区块链上可以采用非工作量证明的其他共识算法,比如有100家金融机构之间建立了某个区块链,规定必须67个以上的机构同意才算达成共识。
1.3.3 私有区块链
私有区块链是指存在一定的中心化控制的区块链。仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。参与的节点只有用户自己,数据的访问和使用有严格的权限管理。联盟链由于存在一定的中心化控制,所以也可以认为是属于私有链范畴。
此三种定义的主要区别如下表所示:
1.4 发展
早在1976年,bailey w. diffie、martin e. hellman两位密码学的大师发表了论文《密码学的新方向》,论文覆盖了未来几十年密码学所有的新的进展领域,包括非对称加密、椭圆曲线算法、哈希等一些手段,奠定了迄今为止整个密码学的发展方向,也对区块链的技术和比特币的诞生起到决定性作用。
在21世纪到来之际,区块链相关的领域又有了几次重大进展:首先是点对点分布式网络,1999到2001的三年时间内,napster、edonkey 2000和bittorrent分别先后出现,奠定了p2p网络计算的基础。2001年另一件重要的事情,就是nsa发布了sha-2系列算法。
2008年11月,“中本聪”发表论文《比特币:一种点对点的电子现金系统》,提出了区块链这种数据结构,区块链技术迎来了爆发式的增长和关注,技术迭代速度之快,超出任何人的想象,每隔一段时间就会有重量级事件发生,进一步助推了整个技术的发展。
二 区块链安全性
2.1 背景
安全问题一直是信息化社会的主旋律,随着区块链技术的广泛应用,随之而来的问题也越来越多,由于区块链去中心化,匿名性等一系列特点,目前在资本行业被大量使用,其中用于投资的情况也越来越多,正因为这一系列的特性与场景结合,随之而来的各类攻击也开始不断出现,从之前的区块链底层安全技术研究曝光,发展到后来越来越多的虚拟货币被盗,交易所被攻击等事件。而这些只是目前被暴露的一部分,随着区块链技术所产生的价值越来越高,所面临的攻击将持续增加。
区块链技术自身尚处于快速发展的初级阶段,面临的风险不仅来自外部实体的攻击,也有可能来自内部参与者的攻击,应对区块链技术的安全特点和缺陷,需要围绕物理、数据、应用系统、加密、风险控制等构建安全体系。与此同时,区块链技术的普及应用对保障数据存储,数据传输和数据应用等多个方面的安全和隐私保护提出了全新的要求。
随着目前所发生的一系列交易平台监守自盗、交易所遭受黑客攻击、用户账户被盗等安全事件,我们不得不承认一个事实,区块链的“安全神话”已然破灭。
由于区块链目前异常活跃,不仅推动了虚拟货币的发展,而且还加强了现有的安全解决方案,对认证机制、数据保护和基础设施的全局发展提出了全新的要求。因此,急需建立一种或多种协同安全解决方案来提升区块链整体系统的安全性能。
2.2 底层原理
以链式结构保存基础数据,多个节点参与系统运行,以一定的算法对基础数据的操作达成一致性共识。
在“中本聪”的论文中,区块链是由若干个时间顺序、包含交易信息的区块从后向前有序链接起来的数据结构,每一个区块都包含了当前区块构成时间内所有的信息,并由一个hash值进行封装和指向上一个区块。数据结构可以被视为一个垂直的栈,可形象化地描述为每一个区块就像一个箱子,每一个新的区块都堆在上一个区块之上,形成了一摞箱子,于是“高度”就可以表示区块和首区块的距离;“顶端”就是指最新的区块;区块头就像是箱子的表面,封装了内部的交易信息,并标明父系区块链的位置。每一个区块头都可以找到其父系的区块,并最终回溯到创世区块上。
由于区块头要包含“父系区块hash”的字段,所以任何父系区块的修改,都会引发子区块的改变,而子区块的改变将引起孙区块的改变,这种变化会一直传导到最新的区块,并且这种改变是没有规律的,服从“雪崩效应”,这就意味着任何人想要更改之前区块的内容,将会耗费大量的算力来运算更长的链条,即实现“51%攻击”。这对于修改者来说,成本过于高昂。此外,即使实现了“51%攻击”,也只能抹除自己的交易信息,并不能修改整个程序和参数。
因此,区块链具有如下安全特性:(1)写入数据的安全性:对于写入区块链的数据而言,在共识机制的制约之下,当全网大部分的节点或者核心的节点认可这个记录时,这个数据的
合法性和真实性才得以确保,记录才允许被永久写入区块链中。(2)读取数据的安全性:由于区块链中的数据是加密存储的,只有拥有用户私钥的节点才可以解密区块中的核心数据,进而获取区块内容。此外,区块链的共识机制是复杂的,能否确保大部分的用户能够看到一个相同的账本。(3)分布式拒绝服务(ddos)攻击抵抗:区块链的去中心化架构相比于传统的网络架构,其节点分散、无固定中心且具备冗余的特性,针对区块链的ddos攻击将会更难展开。攻击者对某个节点攻击时,即便这个节点失效,也不会影响整个区块链系统。
2.3 安全分析
目前区块链面临了诸多方面的安全挑战,主要包含以下几个方面:
(1)密码算法安全性:目前区块链基于的算法主要是公钥算法和哈希算法,其安全性来源于数学难度,相对是安全的。但是随着高性能计算和量子计算的发展和商业化,目前所有的加密算法均存在被破解的可能性,这也是区块链面临的一个威胁。
(2)协议安全性:区块链中,如果一个节点能够掌控全网51%的计算能力,就可以伪造或者篡改区块链的数据。在目前典型的电子货币的应用场景中,这是得不偿失。但是随着区块链应用范围的扩宽,攻击者为了达到某种目的,有可能实施这样的攻击。
(3)使用安全性:区块链有着无法篡改,不可伪造,计算不可逆的特点,但是必须是在私钥安全的前提之下。但是目前针对密钥的攻击层出不穷,一旦用户使用不当,造成私钥丢失,就会给区块链系统带来危险。
(4)系统安全性:在区块链的编码,以及运行的系统中,不可避免会存在很多的安全漏洞,针对这些漏洞展开的攻击日益增多,这对区块链的应用和推广带来极大的影响。
2.4 历史安全事件
尽管区块链在最底层原理方面保障了其可靠性,但目前区块链安全机制并不十分健全,攻击者主要选择保护相对薄弱的数据层、网络层、共识层、扩展层和业务层进行攻击,每年因区块链安全漏洞造成的损失高达数十亿美元。
从分析结果来看,攻击事件大致可分为四类安全事件:共识机制、智能合约、�...