tokenpocket官方苹果app下载安卓|区块链技术的风险和安全中最大的问题是什么

作者: tokenpocket官方苹果app下载安卓
2024-03-16 01:20:42

区块链的风险与防范 - 腾讯云开发者社区-腾讯云

风险与防范 - 腾讯云开发者社区-腾讯云腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册区块链的风险与防范文章来源:infoqCECBC区块链专委会摘 要:区块链技术与实体经济深度融合,正在成为促进我国数字经济发展和数字化转型的新动能,但是区块链技术本身仍存在一定风险,区块链技术应用中也会产生一定的风险。借助社会系统理论,将区块链技术风险分为技术风险与应用风险。技术风险主要是共识机制存在漏洞,智能合约仍有困境,密钥丢失危机,跨链技术瓶颈等;应用风险包括全网传播造成冗余,链前数据难以保真,隐私泄露,信息安全,技术滥用,匿名交易难以追责,秩序重构引发混乱等。区块链风险对监督提出了严峻挑战,政府可从加强技术研发、完善技术标准和规范、修订相关的法律法规、完善监管、加大人才培养等角度加强对区块链技术应用的引导与规制,探索建立适应区块链技术规范应用的共识机制和安全保障体系。关键词:区块链;技术风险;应用风险;区块链风险防范一引言区块链是一个分布式数字账本,是系列技术组合创新系统,是一种新型基础设施。作为一种去中心化的基础架构与分布式的计算范式,区块链技术的集成应用已成为技术革新与产业变革的突破口。2015 年以来,我国对区块链技术及其应用场景进行研究和探索,比如,金融领域对区块链技术难点、业务场景、风险管理、行业标准、行业影响和监管问题开展研究。经过市场规范和政策调整,在金融、交通运输、物流、版权保护等领域的需求牵引下,区块链行业市场规模不断发展,整体技术架构趋于稳定。截至 2020 年上半年,经工商部门登记注册的相关区块链企业 4 万余家,其中仅 2020 年上半年就有 8129 家;区块链产业链分布以金融应用、解决方案、区块链开放服务平台(Blackchain as a Service,即 BaaS)为主,其次是供应链应用、数据服务、媒体社区和基础协议,信息安全、智能合约方面占比较少。我国高度重视区块链技术及其应用的发展、探索、引导和规范。国务院及组成部门、地方政府出台区块链相关指导政策,涉及食品安全、数字货币、贸易、政务管理、交通等方面,积极推动区块链技术研发、标准规范制定和应用场景探索。在《“十三五”国家信息化规划》中,将区块链作为驱动网络空间从人人互联向万物互联演进的新技术之一。2019 年 10 月 24 日,在集体学习时指出,要把区块链作为核心技术自主创新的重要突破口,加强对区块链安全风险的研究和分析,探索建立适应区块链技术机制的安全保障体系,加快推动区块链技术和产业创新发展,积极推进区块链和经济社会融合发展。此后,全国各地高度肯定区块链的价值,将区块链视为数字经济的关键基石和经济换道超车的新赛道,加快了技术研发和产业化应用步伐。区块链的作用毋庸置疑,区块链的价值在于将技术集成应用到经济发展、民生改善和社会治理等领域。任何技术都不是万能的,区块链亦如此:在技术层面,区块链本身因技术不成熟而存在技术漏洞;在法学层面,区块链存在被滥用或者与相关政策环境不匹配带来的风险;在经济学层面,由于区块链的物理性能不高而存在经济功能短板。区块链风险分布广泛且危险性高,理性认识区块链风险及其防范,对于区块链产业发展和发挥区块链应有的作用至关重要。当前,国内外关于区块链的研究,主要关注区块链的技术开发和应用,关于区块链风险的文献相对较少或是浅尝辄止,主要表现在研究文献有限、概念界定不清、缺乏系统深入研究框架等。基于以上问题,本文将界定区块链风险,分析区块链风险的产生与传导机制,研究区块链风险防范,最后提出政策建议。二区块链风险的概念、内涵与特点区块链的技术和应用尚处于起步阶段,把握区块链技术发展态势与应用方向,推动区块链与金融、经济、政务和社会治理深度融合,必须正确认识和防范区块链风险。界定区块链技术风险,是本文研究区块链风险及其防范的出发点。(一)区块链风险的界定目前研究主要从信息技术、法学、经济学 3 个不同层面界定区块链的风险。从整体上来看,目前在对区块链风险的研究文献中,技术和法学两个领域研究得比较多,而经济学领域研究的文献不多;对区块链技术风险的概念的界定与类型的划分较为模糊与碎片化。对于区块链风险的概念没有清晰的界定,在描述风险时也多从信息学、经济学、法学其中的一个方面对区块链技术风险进行细分与进一步的阐述。当前对区块链风险的描述和研究有利于完善与夯实理论基础,但是有一个缺陷:对区块链风险的机制缺乏整体性、系统性的分析。本文借助于社会技术系统理论,对区块链风险进行界定和分类。以特里斯特(E.L.Trist)为代表的社会技术系统理论认为,组织是由技术系统和社会系统两个相互关联的子系统组成,只有两个系统同时优化才能达到经济系统最优化。该理论适用于分析新技术嵌入社会系统后,对组织者、使用者、社会规则等带来的风险。以托马斯·休斯(Thomas P. Hughes)为代表的“技术二社会系统”思想也强调技术与社会的整体性,反对将技术与社会进行简单的二元划分,认为技术决定论和技术的社会建构论都无法充分理解技术与社会的复杂关系。纵观技术发展史,技术要素与社会要素是互动的,两者会形成联结和耦合的关系,并非对立和分立的关系。社会技术系统理论强调技术与社会相互作用的整体性与系统性,对于我们深入分析区块链风险及其传导机制具有重要的借鉴和参考作用。从技术扩散到社会应用的路径,区块链技术不仅可以通过对交易商品进行认证、促进脱媒、提高运营效率,从而影响商业模式的价值主张、价值创造、价值交付、价值捕获和价值传播,还会与其他社会要素重新整合,影响社会系统的其他领域,并且辐射政府、社会组织、个人群体等在内的全社会各个阶层。因此,不能孤立地从社会系统中的某个子系统来研究区块链风险,而应该将之置于整个社会系统中进行研究,这将有利于全面准确地把握风险。综上,从技术系统与社会系统的视角出发,我们可以进一步挖掘区块链技术风险的技术系统风险与社会系统风险的内涵。所以,本文认为,区块链风险是基于区块链技术及其应用过程中的成本或收益的不确定性。区块链风险可以分为两类:技术系统本身风险和社会应用系统风险。前者是指区块链技术自身的风险;后者是指区块链技术在应用场景中的风险。(二)区块链风险的内涵1. 区块链技术自身的风险,涉及区块链系统所涉及的技术领域与架构设计。区块链技术涉及分布式系统、密码学、计算机学等众多技术领域,包括数据层、网络层、共识层、激励层、合约层和应用层共 6 个层级的体系架构,区块链系统的数据、共识机制、智能合约等重要构成部分就封存在对应的层级中。区块链技术本身的风险是区块链涉及的技术领域与机制设计中本身存在的漏洞与矛盾点,抑或是目前有待完善和进步的技术带来的缺陷,诸如区块链的智能合约问题、共识机制问题等等。按照区块链的层级结构来划分,区块链技术自身的风险主要包括共识机制漏洞、智能合约困境和密钥丢失危机 3 个部分。这类风险暴露的是因为区块链技术不成熟所造成的、可能无法广泛应用和高效应用的短板,直指区块链的未来发展潜力。区块链技术本身的风险在短时间内无法解决,只有不断推动区块链机制的完善与技术革新才能逐步消弭。技术会在“消弭现有风险→出现新风险→再次消弭现有风险”的周而复始中不断得到完善。2. 区块链技术在应用场景中的风险,是区块链技术在实际应用中出现的安全隐患。与业务应用相关联,它随着信息技术的发展、应用领域的延伸以及社会管控程度的提高而逐渐显现,并对使用区块链应用场景的消费者与投资者造成损失。它主要包括区块链的可扩展性问题、链前数据真实性问题、隐私泄露问题、虚拟代币犯罪问题、应用标准不一问题、权责追溯问题、监管法规滞后问题、体系冲突问题等方面。比如,区块链技术与金融、政务、版权、供应链等多个领域的深度融合,不可避免地会涉及投资人、参与者、普通消费者与国家等多方利益,应用风险将会造成诸多社会问题及对社会秩序的冲击。当前的风险防范的理念与手段,在区块链应用场景中已经不再具有适用性和有效性,需要建立一个新的风险防范框架,以解决这一新兴技术在各种应用场景中提出的法律问题与社会问题。(三)区块链风险的特点1. 涉及范围更广。得益于区块链优越的信息储存与证明功能,区块链的应用远远不只局限于虚拟货币的交易,而是涉及经济体中所有的部门。除此之外,区块链技术与大数据、云计算、人工智能等其他新兴技术的交叉与融合,使区块链技术牢牢把握着数字时代创新的钥匙,其应用场景以“三环扩散”的水中涟漪形态扩散到社会中的各个领域。2. 监管难度更大。相较于传统的风险监管,区块链技术风险监管的对象、技术要求和风险特点都有变化。从监管对象来说,区块链的监管是面向去中心化的、在全球范围内广泛分布的、存储完全相同的分类账目的各网络节点;从监管技术来看,区块链的分布式加密的特点,无法完全或者大部分依靠人力进行监管,因而对监管技术提出了新的要求;从监管体制来说,现有监管体制必须革新,因为区块链风险构成更复杂,风险传递更迅速,区块链的优势与风险往往只有一墙之隔,如何把握创新与监管的边界也是一大难题。三区块链技术本身的风险区块链技术本身的风险源自区块链技术不成熟和区块链机制设计。区块链是技术集成式创新,区块链系统的共识机制、智能合约、数据管理这些核心设计是区块链技术系统风险的最大来源,机制设计中本身存在漏洞与矛盾点。区块链技术本身的风险主要有 3 类:共识机制漏洞、智能合约困境、秘钥丢失危机。1. 共识机制漏洞。共识是区块链设计的核心,也是区块链能够满足去中心化设计的关键所在,但它的运作通常由简单的多数投票机制组成,这些机制可能容易受到游说者或特别活跃贡献者的影响,这既会威胁用户利益,也会破坏节点之间的公平原则。目前,区块链常见的共识机制主要有工作量证明机制(PoW)、股份授权证明机制(DPoS)、权益证明机制(PoS)等。攻击者通过对不同机制的漏洞设计相应的攻击手段,以获取非法收益。例如,针对权益证明机制的 51%算力攻击可以使矿机联合形成矿池,垄断采矿权、计费权和分配权,通过篡改账本信息来控制交易运作,影响区块链的生态安全,甚至波及货币体系。2. 智能合约困境。智能合约是去中心化的区块链系统的核心设计,智能合约实际上是正确执行公开指定程序的共识协议,它通过预先编写好的程序代码,使网络中的节点按照合约制定的运行规则行事。但是,智能合约“智能”却非“全能”,目前任何一个智能合约的设计都会存在开发者编程语言不当、程序结构不完善等一些安全漏洞,所以智能合约的应用常常无法达到预期效果。如果主体的治理和信任完全依赖于代码库,攻击者就可以利用智能合约的设计漏洞,在代码允许内“合法”获利,会造成难以估计的损失。例如,在针对“以太坊分布式自治组织”(DAO)的攻击事件中,就是黑客攻击了智能合约中的漏洞,造成了高达 6 000 万美元的损失。在区块链实施和执行智能合约的过程中,还可能出现因认知不足而造成损失。用户对智能合约的法律理解和覆盖范围不清楚,法律代码能否精准、有效地转换为智能合约也存在疑问。3. 密钥丢失危机。区块链技术运用密码学原理中非对称的加密技术来生成与储存密钥,但是这种技术并非无懈可击。密钥可能遭到病毒和恶意软件的入侵,如果将密钥储存在非加密文件或通过电子邮件、短信等非加密中介传输,则密钥可能会因受到损害而落入他人手中。基于托管类钱包,一旦密钥被盗,无法通过一般途径寻回与重置,用户就会丧失该密钥所保管的资产的控制权,对方可以使用这个密钥合法访问密钥保护的资产,从而给密钥所有者造成巨大财产损失;基于非托管类钱包,用户也有可能因为遗忘私钥的助记词而导致数字资产被永久性封存。除以上 3 类技术风险外,目前此跨链技术还面临一些困难和挑战,如跨链交易的延迟性问题,跨链之间发起的分布式拒绝服务攻击(Distributed Denial of Service,简称 DDoS)问题,跨链交易中目的链的死循环问题,母链出现交叉的问题,网络拓扑结构里激励制度的优化,网络拓扑结构中链与链连接处的安全问题,等等。不突破跨链技术瓶颈,就无法解决区块链的网络互通问题,无法保障不同业务场景衔接过程中事务与事务之间的完整性和一致性,无法实现区块链去中心化的价值及信任体系。因此,研究者们开始寻求在不同区块链间进行通信和价值交换的技术突破。目前有 3 种常见的异构链跨链实现技术为哈希锁定、公证人机制和侧链/中继技术,以及波卡(Polkadot)、区块链互联网(Cosmos)、链中链(Plasma)等几种主要使用侧链/中继技术的主流的跨链项目。例如,波卡就是一个不同区块链网络之间的异构跨链协议,以该协议为基础,部署了 Kusama、开放式跨金融应用平台(Acala Network)、StaFi、Zenlink 等生态项目。据波卡生态项目网站显示,截至目前,波卡生态应用数量已经达到 405 个,涵盖包括底层技术、钱包、预言机、非同质化代币(NFT)、以太坊分布式自治组织、智能合约、桥接器、去中心化金融(DeFi)、物联网和游戏等多个领域。四区块链应用场景中的风险区块链技术与不同场景的结合是区块链风险在社会系统中的体现。这类风险主要涉及两个方面:一是对用户个体造成的风险,二是对传统体系的挑战。前者是从微观层面考察用户的隐私保护和资产安全等问题;后者则是从宏观层面考察由于区块链技术的加入对原有的经济体系与社会生活的造成的冲击与不稳定。区块链的技术缺陷通过应用场景放大,既影响区块链技术应用于实践的广度、深度与长久性,也将因区块链应用场景的风险给经济、社会带来损失。目前区块链应用中暴露出来的风险主要表现为以下 6 个方面:1. 全网传播造成冗余。链上数据全网传播会造成数据冗余,加剧参与节点在信息存储、同步等方面的负担,可能导致系统性能和运行效率下降。这主要涉及区块链的可扩展性问题。可扩展性指区块链技术在处理输出时,能够满足目标吞吐量水平,同时最小化系统组件等待另一个系统组件执行任务时的时间间隔或延迟的能力。在更新或更改数据库中的某些记录时,需要将新的数据附加在原有数据库中,以保证数据无法在传输和交互过程中被篡改,维持数据的一致性与准确性,这将呈倍数消耗剩余的存储容量。要求区块链系统节点的有一个比较大的数据容量,以保证区块链的稳定运行。区块数据长期的积累与冗余会超过节点可以负荷的最大限度,导致节点无法容纳。当所有的节点中有节点发生不稳定或者停止运作的情况,会给市场带来极大的不确定性,甚至造成经济损失。机构主体在提供网络服务的过程中,会将数据全网同步传播,因此将处理和存储大量的数据,这也增加了他们的计算工作量,耗费区块链算力,使处理交易的速度变慢。例如,联盟链超级帐本(Hyperledger Fabric)能达到每秒处理 2 000 个事务,但是都远低于现有数据库处理能力。目前许多企业和行业都因为区块链的交易处理速度缓慢而放弃应用区块链这一技术,从而限制了区块链的大规模应用与推行。另外,区块链技术的可扩展性还会遭到黑客的恶意攻击。针对区块链的可扩展性存在的限制,有攻击者发起分布式拒绝服务攻击,即通过发送大量的垃圾信息堵塞目标节点,使该存储节点超负荷运载,从而阻止区块链的用户从中获取有用信息,给用户带来损失。2. 数据虚假与隐私泄露风险。区块链数据的不可篡改的特性是一把“双刃剑”,如果上链前的数据真实性、合法性有问题,区块链会将错就错。比如,有研究表明,比特币区块链中大约 2.51 亿笔交易中有 1.4%携带任意数据,尽管大部分数据是无害的,然而,仍然有少量的非法或不适当内容,这会使参与者面临风险。目前还缺乏有效的技术可以检测上链前数据是否真实、合法,因此,当一个虚假或者恶意的信息被写入系统,这个信息将在节点的复制与传输中传递至整个区块链,给所有链上用户带来风险。保护个人数据隐私和商业秘密是区块链行业稳健发展的基础,然而,区块链系统面临着安全和隐私方面的严峻风险。区块链系统中的隐私分为两部分,即交易隐私和身份隐私。身份隐私表示与用户身份有关的信息;交易隐私是指存储在区块的字符串中的交易数据。虽然区块链的底层技术是基于非对称加密和哈希算法的密码学原理来对数据进行保护,但是这通常针对的是存储在块中的交易数据。区块链技术的交互需求与各个节点的安全性的不一致造成了区块链系统对于用户的身份隐私保护存在疏漏。例如,可以通过监视元数据以获取区块链网络上任何公共地址的活动相关的活动类型和信息,如果监测时间足够长,就可以汇编信息,“追溯”参与交易的各方。通过大数据分析技术,也可以轻易找到公钥,然后通过交易时间、交易对手、公开银行信息等确定公钥的拥有者。随着区块链技术的更多扩展和广泛应用以及接入节点的成倍增加,隐私泄露风险也成倍增加,一旦发生隐私泄露的情况,会造成经济损失与生活不便。3. 技术滥用与衍生活动滋生犯罪。基于区块链技术的加密货币及衍生品是如今犯罪行为频发的领域。比如,以比特币为代表的分散化的加密货币体系已经成为一个全球性的货币体系,存在被不法分子滥用的风险。区块链技术的特性是加密货币交易风险突显的原因:一是区块链将比特币的交易置于一个去中心化的系统中,交易时无须核验身份信息,也缺乏第三方的有效监管,因此,不法分子很有可能会运用加密货币及其衍生品从事逃税、洗钱、敲诈勒索、毒品和武器交易、恐怖分子融资等非法行为;二是由于区块链节点的分散性,跨国监管执法的难度较大,这些活动常以跨境支付为载体,在法律监管难度较大、力度较弱的地方,从事违法犯罪活动。此外,凭借区块链代币进行投机以及非法集资的行为近年来也屡见不鲜,极大地危害了用户与投资者的资产安全,对金融稳定、货币稳定、社会稳定构成威胁。4. 标准规范和法律法规滞后。不同的区块链缺乏统一的应用标准,在区块链应用时存在跨链的可用性风险。目前主流的跨链技术有公证人机制、哈希时间锁定和侧链/中继链 3 种,但都存在孤块问题、长程攻击问题、多链数据同步超时问题、跨链重放攻击问题、升级兼容性问题等等。一方面,在同一领域的应用中,不同的企业选择不同的区块链技术提供商,用户使用区块链时受到的约束不同,会给用户造成诸多不便,造成业务的低效率;另一方面,各公司之间数据无法互通,可能会形成众多的新的数据孤岛,无法真正达到区块链所设想的数据互联互通、透明共享的目的。面对区块链风险的挑战,监管层难以准确捕捉到新技术给市场基础设施、用户和整个社会带来的所有风险。当前监管体系面临两个困境:一是监管规则无法适应区块链的发展。分布式账户是跨区域、跨国界的,因为应用场景产生的风险无法受到现有国际监管规则的约束,而且跨国监管和执法的难度远比以前大,比如,各国对区块链资产、智能合约监管等既存在不同态度又存在规则空白。二是区块链去中心化与现有中心化的监管模式存在矛盾,法律与代码需要协调,区块链的“自治”与当前监管方式需要统筹。各国政府和行业正在探索形成协同监管体制,制定新的监管规则,以解决区块链系统中的治理和监管问题。5. 匿名交易难以追责。区块链的匿名交易的机制,使交易者忽视其他交易参与者身份的真实性,隐藏真实身份的代码增加了穿透式监管的难度。这会使数据安全和保密的责任置于分散的多方,给区块链应用中发生的安全事件和犯罪行为源头的追溯与管制带来的新挑战。如果没有行之有效的责任落实体系,将损害消费者和投资者权益。6. 秩序重构引发混乱。区块链技术是具有颠覆性潜力的新兴突破性技术,有可能从生产关系的层面改变经济主体之间交互,必将对原有的经济与社会秩序产生“创造性破坏”。在区块链提供的技术制度框架下,数字经济时代的信任关系将重建,个体与个体、社会关系和国际关系有可能基于区块链技术的应用被重构,智能合约有可能代替传统合约,区块链预言机给未来带来巨大想象空间。区块链系统的机制设计会重塑原有金融体系的运作模式,打破原有的组织边界、产业结构和市场秩序,引发商业体系的革命性变化。比如,加密货币可能改变整个货币系统,重新定义货币体系的运作方式。如果不能及时有效地应对区块链带来的秩序重构,市场与社会秩序会陷入混乱,动摇公众对政府的信心。区块链应用不能出现凯文·凯利笔下“失控”的结局,而应该引领人类走向一个信任、繁荣、有序的世界。五区块链风险的传导机制区块链风险形成后,传导的链条是什么呢?1. 区块链风险的传导渠道。区块链技术链内的风险传导以其“链”为渠道。区块链这种按照生成时间的顺序将数据区块以前序区块的哈希字段(Prev-block Hash)为哈希指针链接合成的一种链式数据结构,为风险的传导构建了一个通路。各分布式的权利平等的节点间有两种基本的数据传播方式,即单点传播和多点传播。产生于区块链内的风险点,可以经由对等节点间的这种互联互通,辐散式地传递至区块链的任意一个节点,进而危及整个区块链系统的安全。区块链的技术风险如何传导至区块链系统外,则要归因于区块链与实际应用场景的融合。技术系统与社会系统的交互对接,即区块链技术应用于不同场景,为风险传导到社会系统中构建了另一个通路。在社会系统中,区块链风险也是以“链”为渠道,并在应用场景中将风险放大。2. 区块链风险的传导载体。区块链技术系统风险的传导以数据与执行代码为载体。区块内封存的执行代码,如共识机制、智能合约,也是区块链技术系统风险的主要的传导载体。由于共识机制、智能合约是区块链中无须第三方信任而传递信息、达成交易的代码设计,如果代码设计有漏洞或者是有恶意病毒,那么运用这套代码设计的区块链内的所有节点就会遭遇风险。侵入者以区块链系统中某个脆弱的节点为切入点进入区块链网络中,进行隐私信息窃取、非法交易以及网络攻击。同样地,这些风险附在传导载体上,从技术系统经由传导渠道传递至社会系统中。区块链在社会系统中的风险的传播载体以数据和信息为主。区块主体一般包含信息列表,在资产交易中为交易信息,在物联终端体现为需要存储的数据。这些数据与信息通过加密的哈希算法与密钥在节点间传输,成为风险传导的良好载体。攻击者的虚假信息、病毒代码的写入,随着信息传播到达别的节点。给风险随着节点的数据经过区块链传播到整个区块链的节点,风险在传导中不断放大,借助应用场景传导入社会系统后,风险在社会系统的影响倍增。不同于区块链的技术风险,应用场景风险可以通过完善规则和强化措施进行防范与控制。可见,区块链风险的传导机制是:技术系统中区块链共识机制的漏洞、合约设计的主观缺漏、密钥丢失等问题会形成风险点,以执行代码或者数据为载体,传导至整个区块链系统的其余节点中;当这个风险无法被区块链内部技术系统消化或遏制,就会随着载体继续传导到社会系统中,在应用场景中进一步放大风险,失去信任机制的作用,造成个人和社会的资产损失,影响社会系统的正常运转。由于技术进步是一个长期过程,区块链的技术风险在短期内无法消弭,并直接影响到区块链技术的推广与使用。因而,从应用场景入手防范区块链风险至关重要。六防范区块链风险的政策建议全球数字化浪潮中,离不开区块链技术的发展和应用,而区块链技术与应用场景的需求有一定的差距,与区块链技术相伴而生的多重风险,在应用场景中也尚未建立行之有效的风险防范体系。防范区块链风险必须牢牢把握创新这个牛鼻子,技术创新与风险防范体系创新并行并举,积极探索符合本国国情和法律体系的区块链风险防范与治理方案,是使区块链技术效用最大化的必由之路。“我国在区块链基础性能、安全保护、跨链互操作等方面还有差距,核心算法亟待突破,人才缺口问题突出,在技术可靠性、安全性、标准化建设等方面还有不足,必须坚定信心、迎头赶上。”积极推动区块链技术多领域、多场景应用,建立安全可控的区块链产业生态,建议政府、企业和社会深度合作,从以下 4 个方面加强对区块链技术研发和应用的引导与规制。1. 加强技术研发和应用场景中的改进。未来区块链技术研发的重点应该在 4 个方面:一是改进共识机制,从被委托人不遵守规则时对委托人赔偿、结合可验证随机函数(VRF)与下一代比特币(Bitcoin-NG)、结合可验证随机函数与网络分片技术、基于高效上卷方法(Rollup)等方向,建立具有完善的奖惩制度且高容量、高效率的共识机制。二是不断调整和完善智能合约,加强必要的代码安全分析和代码审计工作,建立智能合约代码对法律条文转化的审查标准。三是完善密钥管理,比如,使用鼠标生成生物特征的原理,结合内容中立网络(Content Neutrality Network,即 CNN)训练分类模型作为连续认证的手段来解决区块链钱包中私钥的安全存储问题;利用用户移动设备信息和一次性密码(One-Time Passwork,即 OTP)技巧的新的基于用户认证法的分块链账户恢复字符串安全的管理体系,克服现有账户恢复字符串管理方式存在的问题。四是巩固并下沉区块链底层结构,同时做好上级层次的解构工作,将第一层(Layer 1)上的共识、智能合约等功能解构、分离开来,将区块链复杂结构简单化,稀释加密生态的经济主权,使各个部分的功能更为明晰,更便于管理。2. 推动区块链技术与新一代信息技术深度融合,并在融合中不断优化与迭代,防范区块链应用场景中的风险。比如,吸收量子科技的成果探索解决跨链数据的交互性难题,运用零知识证明机制将隐私技术与验证技术结合,通过零知识技术及其算法,防范隐私泄露的问题。再比如,将分层属性加密与线性秘密共享相结合,基于可搜索属性加密的区块链数据隐私保护控制方案,解决传统区块链交易中的隐私暴露问题及向区块链网络提交私钥和访问结构的安全风险。加强国际合作,完善区块链产业链,推动产业区块链的共创,推动区块链产业的高价值维度延伸,搭建智能化、生态化、分布式的商业模式与新型产业格局。3. 完善技术标准和规范,修订相关的法律法规。针对目前的相关监管政策多为行政规范性文件,且很多文件属于风险爆发后的补救性措施,区块链的规制可以从技术的标准规范和应用场景的法律法规两个层面进行。按照基础标准、业务和应用、过程和方法、可信和互操作、信息安全等区块链标准规范体系,政府要为企业、行业协会、社会团体、研究机构和用户等多方主体参与标准规范制定创造条件,研制出适合区块链应用的标准,抢占区块链国际话语权。立法机构应借助科研机构、社会智库和技术公司的力量,密切跟踪区块链技术和应用的发展,基于现有的各个层级的相关法律法规及规范性文件,及时推动相关立法。4. 审慎监管区块链技术创新及应用。一是建立弹性监管体系,体现风险相称的原则,放缓熵增速度。对于目前市场风险较高的领域,监管严格要求;而在创新潜力较大、风险较小的领域,监管要求要相对放松;在合法合规范围内,给予区块链应用发展充分的自由,激发区块链技术的创新活力。二是基于功能监管创新监管方式,严惩监管套利行为。例如,设计一个非侵入式的监管方案,定时定点收集节点数据以及时发现风险;提高交易监管检测技术,推动智能监管,“以链治链”;功能监管与行为监管相结合,形成一个更加统一的裁判规则。实现技术监管与政策监管双轮驱动,推动链下治理与链上治理相结合,发挥链上治理的透明、高效、可溯源的优势的同时,重视链下治理的整合与协同作用。三是建立中国版区块链产业“监管沙盒”机制,探索“包容性监管”和“分级监管”。根据“十四五”期间我国加快数字化发展的需要,在准入标准、应用技术、退出机制等方面,支持各地在金融科技、数字供应链、数字政务等领域出台“监管沙盒”实施方案。四是加强对区块链金融的国际监督和管理,加强国际合作,建立一个统一的全球监管体系,以消除跨国犯罪,等等。总之,风险防范是为了促进创新发展,区块链在发展和应用中还会不断出现新的风险,风险防范永远在路上。比如,在各国推出法定数字货币过程中对加密货币的监管措施是否需要调整?如何协调不同国家的区块链标准规范和监管规则?如何实现区块链链上治理与链下治理协同?如何把握好区块链“去中心化”的度?这些都是需要持续探讨的问题。所有问题的解决都需要人才,区块链发展需要人才,区块链风险防范更需要人才。人才培养和培训是我国区块链发展的关键,有了高端人才才能在自主创新和原始创新方面出成果,才能完善区块链技术的存储容量、共识机制、智能合约,搭建稳定、高效、互联互通的区块链应用平台,把握发展主动权,不断提升区块链技术应用的国际话语权和规则制定权。本文载于《陕西师范大学学报(哲学社会科学版)》2021 年第 3 期专题“法学研究”。发表于: 2021-07-152021-07-15 12:51:30本文为 InfoQ 中文站特供稿件首发地址:https://www.infoq.cn/article/7b0cbca47c11d64882a5a4d11如有侵权,请联系 cloudcommunity@tencent.com 删除。DDoS会危害关键基础设施吗?“安全加”认为媒体搞错了方向 APT攻击才是杀手锏ddos的防范SFHFKeychainUtils.iOS钥匙串.ARC兼容0分享分享快讯到朋友圈分享快讯到 QQ分享快讯到微博复制快讯链接到剪贴板上一篇:What's JVM-垃圾收集器与内存分配策略下一篇:深入学习WebSockets概念和实践相关快讯李晓艺:区块链技术应用前景与展望2018-08-09区块链技术发展现状与展望2018-06-13区块链2019-09-122018银行春招笔试高频考点—区块链2018-04-03区块链虽热,风险不得不了解2018-07-10区块链技术为共享经济增潜能2018-01-27大智能时代 区块链2018-10-23区块链风又起?2018-03-16区块链的本质和技术应用2018-07-11火龙果财经:区块链的分层与结构分别都是什么?2019-04-24区块链虽热 风险不得不了解2018-07-11区块链技术与共享经济2018-01-27区块链原理,设计与应用的学习笔记2018-07-28区块链技术在金融领域的四大风险2018-09-03区块链技术的安全风险2018-11-13干货抢先知 ISC2018区块链与安全论坛议题详情大揭秘2018-09-04区块链行业应用前景及未来2018-07-10区块链面临的几大风险2018-07-11区块链的架构2018-08-13区块链,工业应用安全守护者?2018-03-30扫码添加站长 进交流群领取专属 10元无门槛券私享最新 技术干货社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号1101080202028

2021|区块链安全性问题与挑战 - 知乎

2021|区块链安全性问题与挑战 - 知乎切换模式写文章登录/注册2021|区块链安全性问题与挑战元宇宙见闻元宇宙一线见闻导语近年来,由于大众对于比特币及其它加密货币的兴趣爆炸式增长,区块链技术越来越受到关注,有关区块链技术的讨论愈演愈烈,它已经在逐渐改变人们的生活方式,并且持续在某些领域造成影响。伴随而来的也有质疑以及对区块链安全问题的思考。虽然区块链的技术特点可以给我们带来更可靠和方便的服务,但这种创新技术背后的安全问题和其面临的挑战也是我们需要关注的一个重要话题。区块链是过去10年最伟大的技术发展之一。作为一种通用技术,区块链技术的集成应用逐渐成为新的技术革新和产业变革的重要驱动力量,世界各国纷纷加快区块链相关技术战略部署、研发应用和落地推广,探索区块链在各行业领域的应用模式,抢占技术发展先机。区块链技术不仅仅是单一的一种技术,而是包含密码学、数学、算法和经济模型,结合点对点网络,使用分布式共识算法来解决传统分布式数据库同步问题,一体化的多领域基础设施建设。随着各种应用落地,区块链数字资产引发的安全问题总体呈上升趋势,数字货币犯罪五花八门,盗币、诈骗、非法集资、洗钱、暗网非法交易、犯罪等案件频发,各种原因造成的「黑天鹅」事件层出不穷。一、区块链技术日益重要我们可以简单将区块链理解为——是一个分布在全球各地、能够协同运转的数据库存储系统。区别于传统数据库运作——读写与权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器节点的人都可以参与其中。区块链允许快速轻松地处理交易数据,这使得它在各种在线投资市场中越来越受欢迎。此外,它还提供了一些重要的安全预防措施。区块链中的任何区块都很难被更改,这有助于防止欺诈。每个区块中内置的识别代码允许轻松跟踪交易数据。二、区块链生态安全事故频发因为区块链如此受欢迎(并且因为它通常用于交易环境),它已成为黑客和其他网络犯罪分子的诱人目标。随着这种流行度的增加,出现了许多区块链安全性问题。7月11日,跨链桥项目Chainswap发布推文表示遭到黑客攻击,在该跨链桥部署智能合约的超20个项目代币都遭遇黑客盗取,总损失价值400万美元。这已经是该项目于7月内遭受的第二次攻击继Chainswap遭受攻击之后,7月12日,跨链桥项目Anyswap新推出的V3跨链流动性池也遭到黑客攻击,总计损失超过787万美元。6月,BSC生态系的DeFi协议Impossible Finance遭遇闪电贷攻击,这已是自5月以来,BSC生态系统中发生的第九起闪电贷攻击事件8月12日,加密孵化机构DAO Maker发布公告宣布遭受黑客攻击,总计被盗走700万美元,有5521名用户受影响。9月12日,雪崩协议(Avalanche)上 Zabu Finance 项目遭受闪电贷攻击……数据显示,2020年,DeFi安全攻击事件60起,损失2.5亿美元,2021年仅半年,攻击事件总数已逼近去年整年,而损失金额已超去年3倍多。慢雾区块链被黑事件档案库统计数据显示,2021年上半年,整个区块链生态共发生78起较为著名的安全事件,涉及DeFi安全50起,钱包安全2起,公链安全3起,交易所安全6起,其他安全相关17起。其中,以太坊上27起,币安智能链(BSC)上22起,Polygon上2起,火币生态链(HECO)、波卡生态、EOS上各1起,总损失金额超17亿美元。经慢雾AML对涉事资金追踪分析发现,约60%的资金被攻击者转入混币平台,约30%的资金被转入交易所。三、区块链主要安全问题像任何系统一样,区块链也有弱点,以下是与区块链相关的最紧迫的安全问题:1. 区块链端点漏洞虽然区块链被吹捧为几乎“不可破解”,但我们需要注意到的是,大多数区块链交易的端点安全性要差得多。例如,比特币交易或投资的结果可能是将大量比特币存入“热钱包”或虚拟储蓄账户,这些钱包账户可能不像区块链中的实际区块那样防黑客。为了促进区块链交易,可能会招募多个第三方供应商。例如一些支出处理器、智能合约和区块链支付平台。通常,这些第三方区块链供应商在他们自己的应用程序和网站上的安全性相对较弱,这可能为黑客敞开大门。3. 可扩展性问题公链面临“不可能三角模型”、“根特别多,没长叶子的市场”的困境,极大的限制了区块链技术的商业落地进程。目前,区块链公链多达百种“比特币、以太坊、EOS、比原链、多数公链为发币设计,基于实体经济业务进行的公链极为稀少。区块链技术商业落地严重滞后,区块链行业成了根特别多,没长叶子的市场。3. 监管问题区块链缺乏明显的监管标准,政治因素可能会影响其执行和发展。基于区块链的货币是去中心化和国际化的,这意味着政府控制的货币本质上可能会变得不那么有价值。因此,一些国家政府正在努力对区块链引入更严格的法规。他们希望在它威胁到国家经济或变得更强大之前控制它。作为区块链安全性的众多问题之一,这可能会推迟该技术的广泛采用。4. 测试不足虽然区块链历来用于加密货币交易,但它越来越多地用于其他领域。问题在于非加密货币应用程序中使用的编码往往未经测试且具有高度实验性,这意味着黑客也许能够找到并利用漏洞。5. 技术的复杂性这是一个很难从头开始创建的系统。一个小小的失误,整个系统都可能受到损害。当然,这不是系统本身的缺陷,而是执行的缺陷。同样,技术的复杂性使得普通人更难以理解。因此,大多数人可能无法正确理解系统的风险和功能。6.网络的大小要让区块链发挥作用,至少需要数百个——最好是数千个节点协同工作。这使得区块链系统在增长的早期阶段特别容易受到攻击,也容易出现腐败问题。例如:如果单个用户控制系统上51%的节点,那么他们有可能完全控制其结果。在只有20个节点的规模上,这并非不可能。。7.网络的速度和效率区块链的设计也可能会损害其以合适的速率处理交易的能力。如果系统在开发可以支持它的基础设施之前变得过于复杂或需求过多,则可能会导致数据存储和交易速度问题。这会对其他有效的系统产生负面影响,这就是为什么它会列为区块链安全问题的原因。8.区块链交易使用公钥和私钥这些密钥几乎不可能自行破解,但网络犯罪分子可以通过更传统、更简单的方式获得这些密钥。例如:如果将密钥存储在不安全的平台上,黑客就可以轻松地获得它们。如果有人找到用户的电子邮件密码,将可以访问整个收件箱。同样,如果有人找到用户的区块链密钥,他们可以在区块链上冒充该用户,这是区块链安全性需要思考的主要问题之一。四、展望后区块链世界任何系统都有一些漏洞,区块链也不例外。这里要记住的关键是,绝大多数区块链安全漏洞都与人为错误有关。当正确执行和保护时,区块链是透明且防篡改的。而且,这与技术所能达到的“安全”差不多。这样做,使得人们能够利用好这些好处而不必担心区块链安全性问题。总之,区块链技术具有可靠的信息交互、完整的数据存储、可信的节点认证等安全性优势,因而为网络安全提供一种崭新的安全防护思路和模式,将传统网络边界式防护转变成全网络节点参与的安全防护新模式,通过分布式的节点共识机制来抵抗恶意节点的攻击,在网络安全领域具有极大的应用潜力。只是,现阶段区块链技术还不够成熟,区块链系统仍然存在许多安全隐患和漏洞,而且硬件设施落后也是现阶段的一个难点,因此在下一步区块链应用推进中,关键是要加强基础设施的建设,以及加强区块链的监管和安全技术的研究和实践,推动区块链应用的稳步发展,充分发挥区块链技术的安全优势,有效提升网络安全防护水平,才能更有效的使区块链市场良性发展。发布于 2021-10-09 11:54区块链技术​赞同​​添加评论​分享​喜欢​收藏​申请

区块链公链应用的典型安全问题综述

区块链公链应用的典型安全问题综述

  软件学报  2022, Vol. 33 Issue (1): 324-355

  PDF    

引用本文

魏松杰, 吕伟龙, 李莎莎. 区块链公链应用的典型安全问题综述[J]. 软件学报, 2022, 33(1): 324-355. http://www.jos.org.cn/1000-9825/6280.htm

  

Wei SJ, Lü WL, Li SS. Overview on Typical Security Problems in Public Blockchain Applications[J]. Journal of Software, 2022, 33(1): 324-355(in Chinese). http://www.jos.org.cn/1000-9825/6280.htm  

区块链公链应用的典型安全问题综述

魏松杰

,

吕伟龙

,

李莎莎

    

南京理工大学 计算机科学与工程学院, 江苏 南京 210094

收稿时间: 2020-03-05; 修改时间: 2020-05-07; 采用时间: 2020-12-04; jos在线出版时间: 2021-01-15

基金项目: 国家自然科学基金(61802186, 61472189); 国家重点研发计划(2020YFB1804604)

作者简介:

(1977-), 男, 博士, 副教授, CCF高级会员, 主要研究领域为网络安全, 区块链技术;(1996-), 男, 硕士, CCF学生会员, 主要研究领域为区块链技术, 密码学, 网络安全;(1997-), 女, 硕士, 主要研究领域为分布式系统, 任务调度.

通讯作者:

吕伟龙, E-mail:

118106043462@njust.edu.cn.

摘要: 区块链作为互联网金融的颠覆性创新技术, 吸引学术研究和工程应用领域广泛关注, 并被持续推广应用到各种行业领域中. 以公有链为代表的区块链系统具有弱中心化、信任共识、平台开放、系统自治、用户匿名、数据完整等特点, 在缺乏集中可信的分布式场景中实现可信数据管理和价值交易. 但区块链作为新兴信息技术, 由于自身机制和周边设施不够完善、用户安全观念不够成熟等原因, 也面临安全威胁和挑战. 本文首先介绍了区块链技术, 回顾其面临的安全风险; 其次以比特币和以太坊两个典型系统为例, 剖析了针对面向代币交易和应用的区块链系统的各类安全威胁以及应对方法; 接着分析了钱包交易所等区块链周边设施和区块链用户的安全隐患; 最后对文中安全问题进行了分类总结, 提出可行技术线路和防御方法, 展望当前区块链安全的研究热点和发展趋势.

关键词:

区块链    公链安全    攻击流程    防御策略    共识安全    

Overview on Typical Security Problems in Public Blockchain Applications

WEI Song-Jie

,

LÜ Wei-Long

,

LI Sha-Sha

    

School of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing 210094, China

Abstract: Originated as Internet financial technology, blockchain is prevailing in many application scenarios and attracting attentions from both academia and industry. Typical blockchain systems are characterized with decentralization, trustworthiness, openness, autonomy, anonymity, and immutability, which brings trustworthiness for data management and value exchange in distributed computation environment without centralized trust authority. However, blockchain is still developing as a continuously evolving new technique. Its mechanisms, peripheral facilities, and user maturity in security are yet to be optimized, resulting in various security threats and frequent security incidents. This paper first overviews the blockchain technology and its potential security vulnerabilities when being used for token transaction and exchange. Then the mostly-seen security problems are enumerated and analyzed with Bitcoin and Ethereum as two sample systems. The security problems encountered by blockchain peripheral facilities and users are presented, and their root causes are probed. Finally, the surveyed problems are categorized and the possible countermeasures or defenses are proposed to address them. Promising research areas and technology evolving directions are briefly covered for the future.

Key words:

blockchain    public chain security    attack procedure    defense strategy    consensus security    

1 绪 论

1.1 区块链介绍

自中本聪在《比特币: 点对点的电子现金系统》一文中首次提出区块链架构至今, 历经10年光阴. 10年间, 区块链技术飞速发展, 广泛应用于各个领域. 从比特币、莱特币等加密货币的区块链1.0时代, 到以太坊、超级账本等支持智能合约的平台的区块链2.0时代, 再到目前面向去中心化应用DApp服务的百花齐放, 区块链经历了数次技术迭代[1,2]. 近些年来, 区块链与金融、农业、能源、公益、医疗等领域深度结合, 市场上出现大量与区块链相关的应用, 众多学者也投身于区块链的研究之中. 区块链技术无疑成为当前最热门的技术之一. 但目前区块链技术和应用方兴未艾, 多数处于试验阶段, 安全漏洞和攻击事件层出不穷, 给用户与区块链服务提供商带来了不小的经济损失, 因此区块链的安全问题受到了各方的广泛关注. 同时, 区块链智能合约一旦在分布式、去中心化网络中部署, 就难以修改, 这种特性一方面防止了数据操纵, 有利于建立起基于广泛分布共识的信任机制; 但另一方面, 当面对安全攻击时, 该特性也阻碍了区块链系统建立起有效的纠正机制, 难以有效及时的挽回损失[3,4].

本文在调研过程中, 发现大多数区块链的安全问题是由于系统自身设计缺陷或是规则漏洞而引起的, 少数区块链安全攻击的对象主要包括交易所、数字钱包、矿池矿场以及区块链用户, 而交易所、数字钱包和矿池矿场可归类为区块链周边设施. 因此本文将所有公有区块链安全问题分为3类, 即区块链自身系统、区块链周边设施和区块链用户, 依次在第2、3、4节综述并分析它们各自面临的安全问题. 本文重点讨论区块链作为分布式系统应用时面临的安全威胁, 并不涉及对底层通信、P2P对等网络、加密算法、数据存储等传统系统和网络安全问题的讨论. 全文讨论的安全问题总览如图1所示.

图 1

Fig. 1

Fig. 1 Overview of blockchain security problems

图 1 区块链安全问题总览

1.2 区块链典型安全事件回顾

(1) 2017年7月Parity多重签名钱包被盗事件

Parity是目前使用最广泛的以太坊钱包之一. 本次事件主要是由于智能合约代码编写不严谨导致的, 约有时价3000万美元的15万以太币(ETH)被盗. 攻击造成了ETH从235美元暴跌至196美元左右. 事后人们逐渐认识到智能合约的编写必须遵守严格的安全规范或模式, 智能合约部署前最好先由专业的机构进行安全审计[5].

(2) 2018年11月EOS.win游戏合约遭受随机数攻击事件

EOS是一种为商用分布式应用(DApp)设计的区块链操作系统, EOS.win是在该平台下实现的竞猜游戏. 在EOS.win的智能合约中, 随机数的生成与开奖序号有关, 且智能合约内联调用失败会导致状态信息回滚. 攻击者先是在同一时间控制多个合约账户同时实施小额投注, 以试探随机数生成规律. 在掌握一定规律后, 攻击者再进行多笔大额投注, 以更高的概率赢得奖金并快速套现, 2018年11月12日短短一分钟内攻击者获利超过9000个EOS币, 导致EOS.win参与用户的大量流失. 该事件给DApp开发者以警醒——在没有做好充分的安全保障前, 不要轻易上线DApp, 保护好诚实用户的资金才能更好的留住用户[6].

(3) 2019年1月ETC遭受51%攻击事件

在全球最大的智能合约漏洞事件The DAO[7]发生后, 以太坊分裂成ETC和ETH两大阵营. 2019年1月7日, 多家机构和交易所接连预警和确认, 加密数字货币ETC遭遇51%攻击, 造成54200个ETC、约27万美元的损失. 此次攻击产生的根本原因是ETC市值缩水, 网络算力降低, 攻击者通过短期租用算力的方式获得共识主导能力. 这次事件给所有基于工作量证明共识机制的区块链敲响了警钟——虽然在一般的攻击场景中, 51%攻击的成本高、收益率低, 但对于小规模区块链系统来说, 攻击者可以通过租借、挪用算力的方式, 短瞬间获得大量算力, 从而进行51%攻击.

2 区块链自身安全问题

2.1 区块链1.0的安全问题——以比特币为例

本文中区块链1.0的安全问题, 主要是指以比特币为代表的数字加密货币区块链系统的安全风险和漏洞, 这类区块链通常只能进行与转账、汇款和数字化支付相关的操作, 缺少智能合约的部署运行能力. 有些区块链攻击虽然从时间上来说, 是在区块链2.0时期被提出的, 但由于其主要是在数字加密货币区块链中实施的, 因此也被分类在区块链1.0的安全问题中.

需要指出的是, 本文虽然结合区块链技术的发展过程, 将攻击分为1.0时代、2.0时代等, 但以以太坊等为代表的区块链2.0技术完全基于最初区块链的“分布式系统+P2P网络+密码学”基础架构发展而成, 只是在共识机制、节点管理、智能合约、算法选择等方面进行了扩展和创新. 因此本节所讨论的安全问题, 实际上也适用于2.0时代中采用同样设计或者具有同样漏洞的区块链系统.

本节将以比特币为例, 逐一例举这类攻击的攻击形式, 分析其攻击原理, 总结可能的防范方法.

比特币是一种采用区块链架构的加密数字货币, 比特币使用P2P网络众多节点组成的分布式账本进行确认与记账操作, 并用密码学技术进行加密, 以确保货币流通各个环节的安全性[8]. 比特币架构中, 每一个区块包含区块头和区块体两部分. 区块头包含数据和父区块地址, 区块体主要包含交易详情和交易计数. 比特币引入了工作量证明(PoW)工作机制、UTXO和Merkletree等数据结构、SHA-256椭圆曲线加密算法, 以确保攻击者需要面临极高难度才能对比特币区块链进行破解[9].

比特币的区块结构如图2所示.

比特币作为区块链的第一个应用, 其将P2P动态组网、基于密码学的分布式账本、共识机制等成熟技术进行组合, 保证了比特币系统的可用性、机密性和完整性. 但比特币并非完美, 有些设定反而给系统带来了安全隐患[10,11]. 下面依次介绍典型攻击及其防范方法.

2.1.1 双花攻击(double spending attack)

双花攻击, 顾名思义就是将同一笔数字货币花费多次的攻击[12-14]. 双花攻击包含以下4个步骤.

① 攻击者的地址1发起一笔向受害者转账数字货币的交易A;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者转账现金或是发送商品;

③ 攻击者的地址1发起一笔向其地址2转账数字货币的交易B, 该交易的交易金额为攻击者地址1中的数字货币总数, 由于交易A与交易B冲突, 因此区块链产生分叉;

④ 攻击者运用各种手段, 使包含交易B的链的长度超过包含交易A的链, 根据最长链原则, 交易B被认为有效, 而交易A被认为无效, 攻击者攻击成功[15].

双花攻击的实现流程如图3所示.

图 2

Fig. 2

Fig. 2 Bitcoinblock structure

图 2 比特币区块结构

图 3

Fig. 3

Fig. 3 Procedure of double spending attack

图 3 双花攻击实现流程

双花攻击具体有以下5种攻击实施方式.

(1) 51%攻击(51% Attack)

51%攻击是一种在掌握绝对算力优势的情况下, 把已经花出的数字货币重新收回或多次利用的攻击方式, 主要针对基于工作量证明(PoW)共识机制的区块链[16-18].

51%攻击一般分为4步.

① 攻击者发起一笔交易A, 将一定量的数字加密货币转账给受害者;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者移交等值的财物;

③ 攻击者在拿到财物后, 从交易A之前区块开始制造分叉, 利用>51%的算力优势在该分叉链上进行挖矿;

④ 当分叉链长度超过原主链时, 根据最长链原则成为新主链, 原主链上的交易A无效, 攻击成功[19].

51%攻击的实现流程如图4所示.

图 4

Fig. 4

Fig. 4 Procedure of 51% attack

图 4 51%攻击实现流程

由于PoW共识机制的特性, 理论上无法通过技术层面阻止51%攻击的产生. 因此在设计比特币系统时, 中本聪利用经济学原理来减少51%攻击出现的可能——获得全网算力优势的代价极度昂贵, 而花费极高成本实施的双花攻击会造成信任崩溃, 使得数字货币严重贬值, 这对于攻击者而言得不偿失[9]. 相反, 在拥有51%算力的情况下, 进行诚实挖矿所获得的收益要更多[20].

防范方法: 保持算力分散. 51%攻击能够成功实施的根本原因是算力过分集中, 在PoW共识机制下只要存在算力中心化, 所有区块链都无法完全避免51%攻击.

虽然实施51%攻击的成本极高, 攻击者缺乏经济层面的动机, 但实际生活中51%攻击还是有可能发生的. 在小型山寨币中, 获得全网算力优势的代价相对较小, 攻击者可以在实施51%攻击后, 退出系统快速变现, 从而牟取暴利.

为了降低攻击难度或者节省成本, 攻击者有以下3种低成本的51%攻击方法.

1) 贿赂攻击(bribe attack)

贿赂攻击是一种在非协作选择模型上(比如无信任基础区块链)的攻击, 攻击者通过额外经济奖励收购挖矿算力, 使得自己所掌握的算力短期内超过51%, 从而对区块链进行51%攻击[21-23].

贿赂攻击一般分为5步.

① 攻击者发起一笔交易A, 将一定量的数字加密货币转账给受害者;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者移交等值的财物;

③ 攻击者在网络中宣称将提供额外奖励给在目前相对较长但不包含交易A的次主链上工作的矿工, 以鼓动其他矿工违背共识, 在非主链上进行工作;

④ 当次主链足够长时, 攻击者通过加大奖励力度, 促使次主链的长度在短时间内超过原主链的长度;

⑤ 当次主链成功超越原主链长度后, 次主链成为最长链, 根据共识, 其他矿工承认次主链为新主链, 原主链中的交易A因为回滚而无效[24].

贿赂攻击的实现流程如图5所示.

防范方法: 可以在区块链挖矿机制设计中引入保证金和惩罚措施. 当矿工做出不利于区块链的决策时, 会受到处罚并失去抵押在链上的保证金. 这种惩罚措施变相提高了攻击者的贿赂成本, 使得贿赂攻击更难发生.

图 5

Fig. 5

Fig. 5 Procedure of bribe attack

图 5 贿赂攻击实现流程

2) 币龄累计攻击(coin age accumulation attack)

币龄累计攻击主要实施在基于“PoW+PoS”(工作量证明+权益证明)混合共识机制的区块链上. 在这种混合共识机制中, 某一地址拥有的数字加密货币越多、持币时间越长, 该地址的挖矿难度就越低, 因此更容易挖到新区块. 根据这种特性, 攻击者在持有一定量的币足够长时间后, 就可以获得接近51%算力, 从而发动51%攻击[25-27]. 例如, 在点点币(peercoin)初始版本中, 其挖矿算法公式为:

$ H\left(H\left({B}_{\rm{prev}}\right),A,t\right)\leqslant balance\left(A\right)\times m\times Age\left(coins\right) $

其中,

$ H\left(\right) $

为某种哈希函数、

${B}_{\rm{prev}}$

为上一个区块的数据、

$ A $

为某个账户、

$ t $

为时间戳、

$ balance\left(A\right) $

为账户

$ A $

的余额、

$ m $

为某个极小的实数, 其由哈希函数的性质决定、

$ Age\left(coins\right) $

为币龄.

显然, 攻击者可以利用币龄使得自己更容易发动51%攻击[28].

防范方法: 区块链设计者可以对单个地址的持币数量和币龄的最大值进行限制. 当某个地址的币龄已经达到预先设定的最大值时, 系统自动进行清算, 即清空币龄并给予数字货币奖励或是直接停止币龄的增长.

3) 通用挖矿攻击(general mining attack)

通用挖矿攻击的攻击目标是那些和已有币种的架构和共识相同或相似但还未形成挖矿规模的币种, 尤其是主流币种的山寨分叉币. 由于这些山寨币和某些主流币架构和共识算法相同, 主流币的矿机可以直接用来开采山寨币. 攻击者通过挪用大量主流币矿机, 轻松获得山寨币51%算力, 从而进行51%攻击, 之后攻击者只需将攻击成果变现, 再返回主流币继续挖矿即可. 由于攻击者只是短期持有山寨币, 因此攻击导致信任崩溃而引起的山寨币贬值对攻击者没有任何影响, 换句话说, 这种通用挖矿攻击对于攻击者而言成本低廉, 极易实施.

防范方法: 区块链设计者在设计新币种时应尽量避免与其他主流区块链的架构和共识算法冲突. 新的币种使用新的共识算法和架构或是在已有算法上进行调整可以有效的减少其他币带来的影响[29].

(2) 芬尼攻击(finney attack)

芬尼攻击是一种通过控制区块的广播时间来实现双花的攻击, 攻击目标为接受0确认的商家[30-32]. 芬尼攻击一般分为6步.

① 攻击者的地址1发起一笔向其地址2转账数字货币的交易A, 该交易的交易金额为攻击者地址1中的数字货币总数;

② 攻击者参与挖矿, 无需51%算力, 也最终能在某个时刻挖到包含交易A的区块X;

③ 挖到区块X后, 攻击者不立刻进行广播, 先将该区块扣在自己手中;

④ 攻击者发起交易B, 将地址1中的数字货币转账给接受0确认的受害者;

⑤ 在交易B广播后, 受害者移交等值的财物给攻击者;

⑥ 攻击者拿到财物后立刻广播之前的区块X, 由于交易A先于交易B, 攻击者转账给受害者的交易B会因为攻击者地址1中的币不足而无效, 攻击成功[33].

芬尼攻击的实现流程如图6所示.

图 6

Fig. 6

Fig. 6 Procedure of Finney attack

图 6 芬尼攻击实现流程

防范方法: 拒绝0确认交付. 在PoW共识下, 一般等待6个确认就能保证交易在最长链上不会失效.

(3) 种族攻击(race attack)

种族攻击和芬尼攻击一样, 也是针对接受0确认的商家的攻击. 与芬尼攻击不同, 种族攻击主要是通过控制矿工费来实现双花[34,35].

种族攻击一般分为4步.

① 攻击者的地址1发起一笔转账给接受0确认的受害者数字货币的交易A, 手续费设定为少量;

② 攻击者的地址1发起一笔向其地址2转账数字货币的交易B, 该交易的交易金额为攻击者地址1中的数字货币总数, 手续费设定为大量;

③ 在交易A广播后, 受害者将财物移交给攻击者;

④ 矿工们会优先为手续费高的交易打包, 因此交易B先被打包到主链上. 交易A则会因为攻击者地址1中的币不足而导致失败, 攻击成功[36].

种族攻击的实现流程如图7所示.

图 7

Fig. 7

Fig. 7 Procedure of race attack

图 7 种族攻击实现流程

防范方法: 区块链商家拒绝0确认交付. 在PoW共识下, 一般等待6个确认就能保证交易在最长链上, 交易几乎不会失效.

(4) 边界网关劫持攻击(BGP hijacking attack)

边界网关协议(border gateway protocol)是一种在TCP上运行的自治系统路由协议, 用于生成IP数据包转发规则. 攻击者可以利用BGP劫持来拦截区块链的网络流量, 阻碍广泛共识的达成[37-40].

边界网关劫持攻击一般分为4步:

① 攻击者劫持BGP, 将区块链网络中的节点划分成多个无法互相通信的分割组, 每个分割组中的节点只能在组内对主链达成共识, 一段时间后区块链产生多条分叉;

② 攻击者分别在各个分叉上花费数字货币, 在各个交易完成后, 攻击者获得多笔现金;

③ 攻击者停止劫持BGP, 各子组节点之间恢复通信;

④ 全网节点进行共识, 恢复通信后的最长链成为主链, 其他分叉链中的交易被回滚而无效, 攻击成功[41].

边界网关劫持攻击的实现流程如图8所示.

图 8

Fig. 8

Fig. 8 Procedure of BGP hijacking attack

图 8 边界网关劫持攻击实现流程

防范方法: 区块链拥有者可以不使用互联网服务提供商提供的中心化网络, 转而搭建针对区块链专用的去中心化网络, 以减少攻击者仅仅通过劫持少量节点就能对区块链造成巨大影响的可能.

(5) 重放攻击(replay attack)

软件系统在实际应用中需要升级更新, 区块链也是如此. 但区块链系统内所有节点需要对区块链中的各种协议达成共识, 随着协议的版本更新, 不同节点上运行的协议可能出现差异, 致使其执行的规则不尽相同, 从而导致区块链出现分叉. 分叉主要分为软分叉和硬分叉. 在区块链中, 未升级的节点称为旧节点, 已升级的节点称为新节点. 软分叉是指新节点无法接受旧节点产生的全部或部分区块而产生的临时性分叉, 但由于新节点具有较大的算力, 旧节点产生的区块将没有机会得到认可, 最终新旧节点会对主链问题达成共识. 硬分叉则是指旧节点无法接受新节点产生的全部或部分区块而产生的永久性分叉, 尽管旧节点具备的算力较小, 但新旧节点始终都在维护自己认可的链. 重放攻击往往出现在存在硬分叉的区块链中, 例如BTC和BCC、ETC和ETH[42]. 由于硬分叉两条链中的数据结构、交易格式、地址和私钥算法相同, 所以一条链上的交易数据在另一条链上也有极大可能也是合法的. 攻击者只需抓取一条链上的交易数据, 再复制到另一条链上广播, 即可发动重放攻击[43].

重放攻击一般分为4步.

① 假设链1和链2是某个区块链出现硬分叉后产生的两条链. 攻击者在链1中向受害者提出充值数字货币的请求, 并发起一笔向受害者转账的交易A;

② 一段时间后, 攻击者提出取回该笔数字货币的请求. 受害者同意后, 在链1中发起一笔向攻击者转账的交易B;

③ 攻击者在网络中抓取交易B的数据并广播到链2上;

④ 由于交易B的私钥签名、地址、余额信息等数据在两条链上都合法, 两条链上的矿工都认可这笔交易并将其打包到各自的链上, 最终攻击者在两条链上都获得了受害者的数字货币, 攻击成功[44].

重放攻击的实现流程如图9所示.

图 9

Fig. 9

Fig. 9 Procedure of replay attack

图 9 重放攻击实现流程

防范方法: 区块链设计者可以在区块链产生硬分叉时对分叉链的代码进行适度修改, 使得分叉链和主链之间的交易数据不通用, 从而避免同一笔交易在两条链上都合法.

2.1.2 空块攻击(empty block attack)

实施空块攻击的攻击者在挖到新区块后, 拒绝将网络中的交易打包到区块. 攻击者挖出的区块中除了挖矿奖励交易外, 没有任何其他交易, 这将导致区块链交易确认时间延长, 区块链活性被降低. 在比特币挖矿的早期, 矿工们还没有加入矿池合作挖矿, 计算随机数和打包交易都需要自己完成, 由于打包空块的速度比打包非空块的速度快, 且出块奖励远大于手续费, 所以矿工们更愿意打包空块来换取出块奖励, 因此导致大量空块产生[45-47].

防范方式: 区块链设计者可以设计共识, 使矿工的收益与块中的交易数目挂钩, 打包的块中的交易越多, 矿工的奖励就越高; 使矿工的挖矿难度与块中的交易数目挂钩, 根据打包的块中的交易数目略微减少矿工的挖矿难度, 使得包含交易多的块更容易被挖出, 从而激励矿工们打包更多的交易.

2.1.3 削弱攻击(undercutting attack)

PoW共识中, 矿工的奖励由出块奖励和交易费两部分组成, 且单个区块的出块奖励随时间越来越少. 在PoW共识后期, 出块奖励趋近于0时, 矿工的奖励仅仅只有交易费部分, 此时, 攻击者为了自己的利益很有可能不在最长链上挖矿, 而是选择制造分叉, 以获得更多的交易费. 这种攻击除了会导致恶意分叉破坏共识, 同时也会因为矿工们出于对利益(交易费)和成本(电费等)的权衡, 导致交易被恶意堆积, 影响区块链活性[48,49].

削弱攻击原理如图10所示.

防范方法: 区块链设计者在设计共识时, 可以永久保留出块奖励, 并将奖励控制在一个合理的范围内. 虽然这样会带来些许通货膨胀, 但可以很大程度上的减少削弱攻击对区块链的影响, 从而带来区块链的稳定.

图 10

Fig. 10

Fig. 10 Principle of undercutting attack

图 10 削弱攻击原理

2.1.4 无利害关系攻击(nothing at stake attack)

在早期的PoS (权益证明)共识机制中, 节点只会因为创建和验证区块得到奖励, 而不会因为任何不当的行为而得到惩罚, 并且在PoS共识下, 挖矿不消耗任何资源. 这就导致了当区块链中出现分叉时, 无论这个分叉是偶然出现还是恶意节点故意制造的, 对于其他节点来说, 它们最优的策略是在每一条分叉上都进行挖矿, 这样无论最后哪条链胜出, 它们都会得到奖励. 对于区块链来说, 无利害关系攻击会导致多条分叉并驾齐驱, 链中节点无法对主链达成共识, 极大的影响区块链的可用性[50-53].

无利害关系攻击一般分为4步.

① 攻击者故意在主链制造分叉, 或等待主链偶然产生分叉;

② 其他矿工感知到分叉的存在, 按照最优的挖矿策略, 他们会在每一条分叉上进行挖矿;

③ 随着时间的推移, 每条分叉链的长度都有所增加且有很高的概率长度相似, 并且在分叉链长度增长的过程中, 它们有很大的可能产生新分叉;

④ 由于分叉的状态一直持续, 且分叉越来越多, 全网节点无法对主链达成共识, 攻击成功.

无利害关系攻击的实现流程如图11所示.

图 11

Fig. 11

Fig. 11 Procedure of nothing at stake attack

图 11 无利害关系攻击实现流程

防范方法: 区块链设计者将保证金和惩罚措施加入到PoS共识中, 防止节点在多条分叉上工作. 节点在创建和验证区块前, 必须缴纳保证金, 当节点在相同高度创建或者验证大于等于两个区块时, 则被认为参与无利害关系攻击, 系统将扣除其保证金[54,55].

2.1.5 长程攻击(long range attack)

在PoW共识中, 如果攻击者要篡改某区块的历史, 需要在这个区块前制造一条分叉链, 并且让其长度超过主链长度. 但由于PoW共识的特性, 攻击者制造一条超过主链的分叉链需要大量的算力, 且分叉链长度越长, 分叉链超过主链的难度越高, 这就在导致了在PoW共识下, 攻击者只能对短程的区块进行修改; 而在PoS共识下, 延长分叉链只需要权益, 即币的数量和币龄, 因此, 攻击者可以较为轻松的篡改成百上千个区块之前的历史区块, 实现长程攻击[56-59]. 长程攻击有3种攻击策略.

(1) 简单攻击(simple attack)

在PoS共识的一轮验证周期中, 系统根据每个节点权益的大小, 加权随机挑选验证者. 攻击者若想篡改某一历史区块, 其需要从该区块的父区块位置开始, 制造分叉链并进行秘密验证, 值得注意的是, 由于该分叉链没有公开, 所以除了攻击者验证的块外没有其他验证者验证的块. 为了超越主链长度, 攻击者必须伪造时间戳以便提前生成区块, 一旦分叉链长度超过主链, 攻击者就发布自己的分叉链, 从而达成修改区块历史的目的.

简单攻击的原理如图12所示.

图 12

Fig. 12

Fig. 12 Principle of simple attack

图 12 简单攻击原理

防范方法: 由于此种攻击较为简单, 因此区块链设计者只需在共识中加入时间戳验证机制, 就可以防止攻击者伪造时间戳从而提前生成区块完成攻击; 也可以设置移动检查点(moving checkpoint), 即仅允许区块链尾端的X个区块被重组, 来缩小攻击者可修改历史的区块数目.

(2) 变节攻击(posterior corruption attack)

显然, 简单攻击的攻击效率不高, 攻击者如果想要在相同时间内生成更多的块, 他就需要更多的权益. 除了让自己地址里的权益增加外, 攻击者还可以利用其他地址里的权利, 例如B的地址, 哪怕在攻击者进行攻击时B地址内的权益已经清空了, 只要B的地址内在攻击者需要的历史时刻下有大量的权益, 攻击者在获得该地址的私钥后, 就可以利用自己和B的权益进行变节攻击[60].

变节攻击原理如图13所示.

图 13

Fig. 13

Fig. 13 Principle of posterior corruption attack

图 13 变节攻击原理

防范方法: 区块链用户可以利用密钥进化技术(key-evolving cryptography)和可信执行环境(trusted execution environments)来保护自己密钥不被攻击者利用或盗取; 区块链设计者可以设置移动检查点来缩小攻击者可修改历史的区块数目.

(3) 权益流损攻击(stake bleeding attack)

攻击者若想使自己分叉链的长度更快超越主链, 除了使分叉链更快的出块, 也可以干扰主链的出块速度, 例如当攻击者在主链上被选举为区块验证者时, 其可以放弃该区块的验证以降低主链的出块速度; 同时, 攻击者可以从主链上复制交易并放在分叉链上广播, 以增加其在分叉链上的权益占比, 从而加快分叉链的出块速度[61-63].

权益流损攻击原理如图14所示.

图 14

Fig. 14

Fig. 14 Principle of stake bleeding attack

图 14 权益流损攻击原理

防范方法: 区块链设计者可以通过设置移动检查点缩小攻击者可修改历史的区块数目; 也可以利用充裕法则(plenitude rule)分析分叉链上自分叉产生时的区块密度变化情况, 实时检测区块链上是否存在权益流损攻击, 以及时做出应对.

2.1.6 粉尘攻击(dust attack)

粉尘攻击是指用大量交易额极小、毫无价值的垃圾交易占据区块空间, 从而导致正常的交易无法被处理, 造成区块堵塞的攻击. 攻击者通过发起很多交易额极小但手续费较高的交易, 使得矿工优先处理这些交易, 从而达到堵塞区块链的目的; 攻击者也可以利用矿池, 打包无意义的交易, 使得区块链拥堵, 阻碍正常交易被打包[64,65].

防范方式: 区块链设计者指定规则使矿工们达成共识, 不打包交易额极小的交易. 从经济学角度看, 打包更多有意义的交易能够使区块链本身更有价值, 币值也会相应提升, 每个矿工都能从中获利[66].

2.1.7 女巫攻击(sybil attack)

女巫攻击主要针对的是采用拜占庭容错(BFT)协议而非PoW机制的区块链. 攻击者通过创建多个身份节点破坏区块链网络的信任基础和冗余策略, 操控区块链选举投票[67-70].

女巫攻击原理如图15所示.

图 15

Fig. 15

Fig. 15 Principle of sybil attack

图 15 女巫攻击原理

防范方式: 区块链设计者可以在区块链系统中加入身份认证机制. 只有获得可信的第三方节点或是获得当前网络中大多数可靠节点的认证后, 新的节点才能加入区块链.

2.1.8 日蚀攻击(eclipse attack)

日蚀攻击是一种由多个傀儡节点发起的针对区块链网络层面的攻击, 攻击者利用傀儡节点修改受害者节点的节点表并阻止受害者节点接收和发送消息, 从而达到隔离受害者节点的目的. 攻击者通过隔离受害者节点, 征用受害者的挖矿能力进行双花攻击或私自挖矿, 也可以诱使受害者在交易完成前将现金或货物发给攻击者[71-73]. 需要注意的是, 比特币等典型区块链中每个节点拥有两个节点表, NEW TABLE存储了节点知晓但还未连接过的其他节点IP; TRIED TABLE存储了曾经连接过但现在可能没有建立连接的其他节点IP. 攻击者需要利用傀儡节点IP或无效IP填满两个节点表, 才能达到隔离节点的目的[74].

日蚀攻击一般分为3步.

① 攻击者控制多个傀儡节点向受害者节点进行大量、持续的TCP连接, 受害者节点将傀儡节点IP存入自己的TRIED TABLE中;

② 完成TCP连接后, 傀儡节点发送大量无效的IP或是其他傀儡节点IP, 受害者节点将这些IP存入自己的NEW TABLE中;

③ 攻击者等待受害者节点重启, 重启后, 受害者节点会从两个节点表中选择进行连接的节点, 由于受害者节点的两个表中只有无效节点IP和傀儡节点IP, 因此只能连接上攻击者的傀儡节点. 攻击者完成对受害者节点的隔离, 攻击完成[75-77].

日蚀攻击的实现流程如图16所示.

图 16

Fig. 16

Fig. 16 Procedure of eclipse attack

图 16 日蚀攻击实现流程

防范方法: 区块链设计者修改节点连接规则. 利用随机性或是加入噪声的方法使攻击者无法轻松的通过控制受害者节点的节点表发起日蚀攻击; 或是在删除较旧IP之前, 先测试该IP能否连接上, 只有在连接失败时, 才将此地址从表中删除; 也可以新增两个额外的外部连接, 用于测试新的IP是否可以连接, 只有在连接成功时, 才将新地址加入表中, 以此防止攻击者用无效地址填充节点表等.

2.2 区块链2.0的安全问题——以以太坊智能合约为例

以太坊作为区块链2.0最广为接受的代表, 提供一个可以在区块链上部署、运行智能合约的底层平台, 它采用智能合约—以太虚拟机的架构, 主链代币称为以太币(ETH).

以太坊智能合约的协商和确认是在区块链存储的应用程序上进行的. 这些合约程序的优点是验证和执行过程去中心化, 但去中心化使得审查非常困难. 智能合约的总体目标是能够满足普通的合约条件, 最小化恶意或意外事件发生的可能性, 并降低成本. 智能合约的运行原理如图17所示.

图 17

Fig. 17

Fig. 17 Principle of smart contract operation

图 17 智能合约运行原理

以太坊虚拟机是以太坊中智能合约的运行环境, 它是以太坊项目中的主要创新点之一. 以太坊虚拟机是图灵完备的256位虚拟机, 在给定存储和计算资源的情况下, 以太坊虚拟机能够解决任何可计算的问题[78].

在以太坊上部署智能合约需要花费字节费Gas. Gas是以太坊为了防止恶意用户部署无限循环运行的合约, 而要求用户为所部署合约的每一步支付的费用, 智能合约的逻辑越复杂, 花费的Gas就越多. Gas价格是指花费每个Gas所需要的以太币的数量, 可由用户自行调整[79].

以太坊智能合约的开发语言是Solidity编程语言, Solidity是一种语法类似JavaScript的高级语言. 由于以太坊虚拟机不会额外的对智能合约的执行进行限制, 为了保证安全, 需要智能合约自身具有完整确定性[80,81].

比特币通过引入PoW共识来规避少数人的恶意行为, 平均出块时间10分钟, 共识中临时性分叉所产生的孤块最终会被抛弃. 而以太坊出块时间缩短至15秒, 分叉频繁发生. 因此以太坊在设计中引入了GHOST协议, 以权重最高的子树作为合法主链, 同时对产生或发现孤块的矿工予以奖励, 鼓励分叉的及时合并[82].

比特币与以太坊的主链结构和选择方式如图18所示, 同样的情况下, 比特币系统将认为0←1A←2A←3A←4A←5A为合法主链, 而以太坊系统认为0←1B←2C←3C←4B为合法主链.

图 18

Fig. 18

Fig. 18 Choosing legal chain in Bitcoin and Ethereum

图 18 比特币和以太坊的合法链选择

以太坊也是区块链技术的一种实现, 所以第2.1节内的大部分攻击都能在以太坊中实施, 这里不再赘述, 本节将介绍几种特别针对以太坊及其智能合约的攻击, 代表了区块链2.0面临的典型安全风险.

2.2.1 平衡攻击(balance attack)

平衡攻击的目的是阻止新交易被确认. 其利用了以太坊出块时间短的特点, 结合GHOST协议对以太坊系统进行破坏. 攻击者将以太坊上的诚实节点分为多个算力均等的子组, 通过延迟多个子组间的网络通讯, 使以太坊产生多条“势均力敌”的分叉. 攻击者使用自身的算力平衡这些分叉间微小的差距, 从而破坏共识机制, 阻止新交易被确认[83-85].

平衡攻击一般分为4步.

① 攻击者将诚实矿工隔离成多个算力接近的子组, 确保“自身算力+任意子组算力>任意子组的算力”;

② 攻击者通过延迟子组间的网络通信, 使区块链产生多条分叉, 每个子组都会选择不同子树进行区块打包;

③ 攻击者在每个分叉都进行区块打包, 并将自己打包好的区块隐藏起来, 不进行广播;

④ 攻击者时刻关注每个子组的本地视图, 若在某个子组的本地视图中, 有其他子树的权重要超过该子组原先选择的子树时, 攻击者将自己已经打包好的区块广播, 以确保多个子组无法就最重子树达成共识.

平衡攻击的实现流程如图19所示.

图 19

Fig. 19

Fig. 19 Procedure of balance attack

图 19 平衡攻击实现流程

防范方法: 区块链设计者可以加入区块权重机制至GHOST协议中, 使不同区块对最重子树共识的影响度不同, 主要有两种方案: 由于攻击者打包好区块后不会立刻广播, 可以设置区块权重与时间成反比, 加大攻击者利用隐藏的区块平衡各个子树权重的难度; 根据系统“历史树图结构”, 实时检测是否受到攻击, 设置检测到攻击前生成的普通区块权重为1, 检测到攻击后生成的区块中1/x个特殊区块的权重为x(x>>1), 其余特殊区块的权重为0, 相当于在检测到攻击时提高挖矿的难度, 降低出块速度, 优先保证系统的安全性[86].

2.2.2 漏洞攻击(vulnerability attack)

漏洞攻击是以太坊智能合约最主要的安全风险. 以太坊智能合约威胁较高的漏洞有整数溢出漏洞、可重入漏洞、交易顺序依赖问题、时间戳依赖问题、深度调用问题等[87].

(1) 整数溢出攻击(integer overflow attack)

在程序语言中, 整数类型变量有最大值和最小值, 一旦在运算、转换等过程中超过这个值, 就会出现溢出的情况, 而以太坊智能合约实质上是一种用Solidity语言编写的程序代码, 也存在溢出问题. 智能合约中的余额常用无符号整数表示, 在编写智能合约时如果不加注意就会给攻击者可乘之机. 攻击者只需将自己的余额减去一个比该余额大1的值, 即可让自己的余额变成最大值[88].

(2) 可重入攻击(reentrancy attack)

在以太坊中, 当智能合约A调用智能合约B时, A会等待B的调用结束后再继续运行. 因此攻击者可以在智能合约A调用智能合约B时, 在B被调用的函数中加入回调语句——“使A调用B的代码”, 从而发起可重入攻击[89].

典型的可重入攻击一般分为4步.

① 智能合约A向智能合约B发出提现请求;

② B向A转账, 并调用A的回调函数;

③ A的回调函数继续提出“A向B发起提现请求”, 两个合约进入互相调用的循环;

④ 当Gas用完或是受害者账户余额被耗光时, 攻击结束.

可重入攻击的实现流程如图20所示.

图 20

Fig. 20

Fig. 20 Procedure of reentrancy attack

图 20 可重入攻击流程

(3) 交易顺序依赖攻击(transaction-ordering dependence attack)

在以太坊中, 智能合约的执行结果随当前交易处理顺序的改变而改变. 智能合约被矿工打包到一个区块内需要一定的时间, 攻击者如果在打包完成前监听到网络中智能合约调用, 那么他就可以发布自己的调用或新合约来改变当前的合约状态. 这种攻击方式称为交易顺序依赖攻击[90].

交易顺序依赖攻击一般分为4步.

① 攻击者发布一个悬赏合约A, 悬赏金较高;

② 等待有应征者完成悬赏任务;

③ 在验证节点还未确认悬赏任务成功前, 发布一个将A中悬赏金额调低的智能合约B, 并设置较高的Gas费;

④ 验证节点会先验证高费率的智能合约B, 导致应征者收到的赏金变低, 攻击完成.

交易顺序依赖攻击的实现流程如图21所示.

图 21

Fig. 21

Fig. 21 Procedure of transaction-ordering dependence attack

图 21 交易顺序依赖攻击流程

(4) 时间戳依赖攻击(timestamp dependence attack)

在区块链中, 每个区块都拥有一个时间戳, 而这个时间戳通常是矿工用本地时间设定的. 由于某些智能合约的触发条件依赖于时间戳, 如果攻击者挖到包含该智能合约的区块就可以设定利于自己的时间戳, 从而发动时间戳依赖攻击[91].

(5) 调用深度攻击(call depth attack)

调用深度攻击可以让智能合约里的任何调用失败, 即使这些调用是完全正确且可信的. 在合约虚拟机中, 智能合约互相调用的深度会有一个阀值, 一旦调用栈的深度到达阀值, 再调用的函数及其子调用都会失败. 攻击者可以通过控制调用深度, 使得某些如转账、余额清零等关键操作无法进行[92].

防范方式: 对于区块链程序员来说, 养成良好的编程习惯, 理清程序逻辑可以有效的减少漏洞的产生; 对于区块链公司来说, 做好智能合约的安全审计工作, 可以聘请专业的审计公司进行服务, 挖掘智能合约漏洞并进行修复.

3 区块链周边安全问题

正如上文所述, 区块链设计者在设计区块链机制时, 常会出现一些技术漏洞, 给攻击者以可乘之机, 危害区块链系统安全. 但攻击者除了可以利用区块链系统本身设计或实现上的漏洞攻击区块链外, 还可以通过攻击区块链的周边设施, 例如交易所、数字钱包、矿池/矿场等, 来牟取钱财或私利. 这类安全风险并不是由于区块链技术本身的设计缺陷, 或者区块链系统的部署实施, 而是由于区块链应用开发、软件工具、实践过程中缺乏必要的安全考虑或措施所造成的.

下面例举3种用于加密货币的区块链周边服务或软硬件周边设施所面临的安全问题.

3.1 交易所面临的安全问题

交易所掌握着众多用户的多种数字加密货币, 是攻击者可以通过较小代价获取极大利益的地方, 交易所被攻击的事件层出不穷[93,94], 主要有以下几种.

3.1.1 分布式拒绝服务攻击(distributed denial of service attack)

交易所遭遇的拒绝服务攻击多数是分布式拒绝服务(DDoS)攻击. 攻击者通过大量傀儡机向目标发送合法的请求以占用大量网络资源, 从而瘫痪目标网络, 使合法用户无法获得服务的响应[95-97]. 分布式拒绝服务攻击一般分为4步.

① 攻击者搜集受害交易所网络以及主机的相关情报;

② 攻击者根据收集到情报, 准备一定数量的傀儡机以及适合的攻击手段;

③ 攻击者通过控制所有傀儡机向受害交易所发送海量合法请求, 导致交易所大量的网络资源被占用;

④ 受害交易所最终无法处理海量的请求, 导致网络瘫痪, 其他合法用户的请求无法被响应[98].

分布式拒绝服务攻击的实现流程如图22所示.

防范方法: 交易所应做好预警工作, 开启防火墙并实时监控网络中的流量状况; 被DDoS攻击时关闭不必要服务的端口并对所有流量进行流量识别, 从而清洗攻击流量.

3.1.2 账户盗窃攻击(account theft attack)

在区块链交易系统中, 盗窃用户账户是常见攻击之一. 由于交易所是中心化机构, 存放了大量用户的账户信息, 所以对于攻击者而言, 入侵交易所来获得大量账号、密码、私钥等是一种性价比较高的方式[99], 其基本攻击流程如下.

① 攻击者黑进交易所后, 获得大量账号和密码;

② 将账户内的加密货币进行抛售, 以引起大量加密货币下跌;

③ 市场恐慌性抛售后, 攻击者大量买入低价币, 使其币值飞速上涨, 从而场外套现获利.

防范方法: 区块链用户应选择对恶意攻击免疫能力较强的交易系统; 交易所应评估自身基础设施的安全性能, 采取相应安全防御策略; 交易所还可以实时备份数据, 并提高相关人员的安全意识.

3.1.3 交易延展性攻击(transaction malleability attack)

交易延展性是指在区块链中, 交易ID (TXID)在矿工确认之前是可以被修改的. 攻击者可以利用这个特性, 向交易所发动交易延展性攻击[100,101].

交易延展性攻击一般分为4步.

① 攻击者将数字货币存入交易所中;

② 攻击者向交易所申请取回数字货币, 交易所同意该申请并在网络中广播向攻击者转币的交易A;

③ 攻击者截获交易A, 利用交易延展性修改交易A中签名的编码格式得到交易B, 使得交易ID产生变化的同时签名仍有效. 攻击者再将通过交易延展性得到的交易B放到网络中广播;

④ 攻击者用交易A的交易ID向交易所投诉, 声称自己没收到数字货币. 交易所利用交易A的交易ID查询是否有转账给攻击者的交易. 由于交易A被截获, 网络中不存在交易A, 交易所会误认为转账失败并再次转币给攻击者, 至此, 攻击者会获得两份数字货币.

交易延展性攻击的实现流程如图23所示.

图 22

Fig. 22

Fig. 22 Procedure of DDoS attack

图 22 分布式拒绝服务攻击实现流程

图 23

Fig. 23

Fig. 23 Procedure of transaction malleability attack

图 23 交易延展性攻击实现流程

防范方式: 区块链设计者可以利用隔离见证技术, 使攻击者无法通过修改签名格式, 在改变TXID的情况下不影响签名的合法性[102].

3.2 数字钱包面临的安全问题

加密数字货币的归属权是由一对数字密钥决定的, 某地址与该地址对应的私钥存在一定的数学联系, 拥有私钥的人便能获得对应地址的数字加密货币的处置权. 数字钱包本质上是一种软件, 其存储了区块链上的某些地址以及这些地址对应的私钥. 加密数字货币钱包主要分为在线钱包和离线钱包两种[103].

在线钱包也称热钱包, 是一种在使用的过程中, 必须保持联网状态的钱包, 这类钱包通常以在线钱包和交易平台钱包等形式出现. 在使用在线钱包交易数字加密货币时, 外界可以通过互联网访问到存储私钥的位置, 因此在线钱包容易受到黑客的攻击.

离线钱包也称冷钱包, 是一种一直处于非联网状态的钱包, 这类钱包依靠不联网的硬件设备运行, 外界一般无法通过网络访问到其存储私钥的位置, 因此可以有效避免黑客攻击或中木马病毒等情况造成的损失. 但其也可能因为硬件设计存在问题, 导致漏洞产生, 留下一定的隐患[104].

数字钱包面临的安全问题主要为私钥窃取攻击(private key theft attack), 攻击者通过黑入联网的在线钱包、篡改官方钱包并诱导用户下载等方式, 获取用户地址私钥, 实现私钥窃取攻击.

防范方式: 大多数情况下, 离线钱包相较在线钱包而言不易受到攻击, 因此区块链用户应使用安全性更高的离线钱包防止攻击者入侵; 数字钱包的设计者不应急于发布硬件产品, 应在产品安全性评估合格后再发售. 另外, 数字钱包的设计者在发布自己软件产品的同时, 应留下软件的散列值, 并督促用户在下载前检查散列值是否与软件匹配, 防止攻击者篡改在线钱包软件.

3.3 矿池/矿场面临的安全问题

矿池/矿场作为PoW区块链网络算力的主要来源, 若其自身基础安全防护措施考虑不周, 则会引起高危安全风险. 大规模的矿池/矿场常使用远程管理系统以便管理, 由于这些系统的远程管理机制可能不健全, 或是由于矿池/矿场对远程管理系统不够重视, 使得攻击者利用这些薄弱点, 对矿池/矿场进行攻击. 恶意挖矿策略也是矿池/矿场面临的安全问题之一, 攻击者通过恶意策略抢夺或是单纯的损害诚实矿池/矿场的利益[105].

3.3.1 自私挖矿攻击(selfish mining attack)

自私挖矿攻击是一种针对基于PoW共识的区块链的恶意挖矿策略. 实施自私挖矿攻击的恶意矿池在挖到新区块时, 不会立即发布新区块, 而是根据自私挖矿策略决定是发布该块还是继续在自私分叉上挖矿. 当自私分叉长度超过公共链长度时, 若恶意矿池公开分叉链, 则原公共链包含的所有数据将会回滚, 区块链用户将损失回滚部分的数字货币收入, 诚实矿池也将损失原主链上的出块奖励. 自私挖矿攻击同时会导致在诚实矿池中工作的矿工为了获得“超额”的挖矿奖励, 转而加入恶意矿池进行工作, 诚实矿池的算力逐步被蚕食[106-109].

自私挖矿攻击一般分为3步.

① 攻击者在最长链上挖矿, 并在合适的时候创建自私分叉;

② 攻击者实时监测网络中新区块的发布情况, 根据最新的发布情况执行对应的策略;

③ 若攻击者挖到新区块, 攻击者则不发布该块而是在该块后继续自私挖矿, 转到步骤②; 若诚实矿池挖到新区块且分叉链长度比主链短, 攻击者则放弃私链, 转到步骤①; 若诚实矿池挖到新区块且分叉链长度和主链相同, 攻击者则立刻发布分叉链, 这种情况下, 攻击者的分叉链仍有一定几率被全网认可, 转到步骤①; 若诚实矿池诚实矿池挖到新区块且分叉链长度−主链长度>1, 攻击者则继续在分叉链上挖矿, 转到②; 若诚实矿池挖到新区块且分叉链长度−主链长度=1, 攻击者则立刻发布分叉链, 转到步骤①[110].

自私挖矿攻击的实现流程如图24所示.

防范方式: 改进挖矿规则. 当矿工收到两个及以上的相同长度的分支时, 他必须传播所有分支并随机选择一个分支, 在其后继续挖矿, 从而增大恶意矿池进行自私挖矿的成本[111].

3.3.2 跳池攻击(pool hopping attack)

矿池聚集了众多矿工的算力, 在矿池中, 一般根据算力大小给矿池内参与挖矿的矿工结算收益, 结算模式有很多, 例如Proportional模式、PPS模式、PPLNS模式等. 如果矿池使用的是Proportional模式付给矿工报酬, 矿工很有可能为了自己的利益向矿池发动跳池攻击. 在Proportional模式下, 从矿池挖到上个区块到挖到当前区块的时间被称为一个挖矿周期, 每个矿工的区块奖励与一个挖矿周期内其有效工作量证明(share)所占全部有效工作量的百分比成正比. 因此矿工们收益最高的策略是当当前挖矿周期长度到达一个阀值后, 跳槽到另一个才发现新区块、挖矿周期较短的矿池重新开始挖矿[112-115].

图 24

Fig. 24

Fig. 24 Procedure of selfish mining attack

图 24 自私挖矿攻击实现流程

防范方式: 矿池应采用更优的收益结算模式, 如PPS模式或PPLNS模式, 防止矿工为了自身利益最大化, 进行跳池攻击.

3.3.3 扣块攻击(withholding block attack)

扣块攻击是指恶意矿工在挖到新区块后不向矿池提交, 而是直接丢弃该区块, 从而减少矿池收入的攻击. 这种攻击同时损害了恶意矿工和矿池的利益, 但矿池损失的要比恶意矿工损失的更多. 扣块攻击并不是完全无利可图的, 如果矿池是按PPS模式, 即:

矿工的收益=矿池用于奖励矿工的总币量×某个矿工提供的算力/当前网络难度.

付给矿工报酬, 恶意矿工即使不提交区块也可以领到一定报酬; 如果矿池是按PPLNS模式, 即:

矿工的收益=矿池用于奖励矿工的总币量×出块时该名矿工提交的有效工作量证明在总有效提交中占比.

付给矿工报酬, 矿池的竞争对手可以通过派出恶意矿工加入该矿池进行扣块攻击, 使该矿池整体收益下降, 从而促使受害者矿池的矿工跳槽到新矿池工作[116-118].

防范方式: 矿池可以偶尔向手下的矿工进行突击检查, 提供解决方案已知的任务, 诱使恶意矿工落入陷阱并找出他们[119]; 或是更改挖矿算法使得矿工无法验证得到的有效工作量证明(share)是否是符合区块解, 从而无法将精确挑选出符合区块解的答案, 将其丢弃.

4 区块链用户面临的安全问题

攻击者除了可以攻击区块链自身与区块链周边设施外, 还可以攻击区块链用户. 但与区块链自身机制与区块链周边设施不同的是, 区块链设计者没有在用户层面设计过多复杂的机制, 因此区块链用户所遇的安全问题通常为网络安全领域中的通用攻击. 以下介绍3种用户面临的典型安全问题.

4.1 社会工程学攻击(social engineering attack)

近些年来, 社会工程学攻击[120,121]开始流行起来. 欺诈者通过冒充官方人员或权威人士, 向区块链用户索取一定量的数字加密货币, 甚至直接索要私钥. 区块链用户如果不及时确认对方身份就极易上当受骗, 因而遭受损失.

防范方法: 用户应在透露重要信息前及时确认对方身份; 同时应当妥善保管私钥, 切勿将私钥透露给其他人, 谨防欺诈.

4.2 中间人攻击(man-in-the-middle attack)

中间人攻击是一种较为传统的网络攻击手段, 攻击者能够在通信双方毫不知情的情况下, 通过拦截网络通信数据, 对数据进行嗅探和篡改[122,123]. 区块链本身对中间人攻击具有一定的免疫力, 但在数字货币场外交易中——例如在场外交易平台中进行货币交易, 中间人攻击仍是一种可行的攻击方式. 中间人攻击一般分为6步.

① 受害者发出与卖家进行交易的申请, 攻击者截获受害者的通信数据;

② 攻击者将受害者通信数据里的公钥换成自己的公钥并发给卖家;

③ 卖家同意交易, 并把自己区块链中的地址等交易信息发送给受害者;

④ 攻击者截获卖家发出的通信数据, 并把收款地址改成自己区块链中的地址, 并用受害者公钥加密, 再把篡改后的通信数据给受害者;

⑤ 受害者收到攻击者篡改后的通信数据后, 将数字货币转至攻击者的地址;

⑥ 攻击者收到了受害者的数字货币, 但卖家没收到, 因此交易失败. 受害者白白损失了该笔数字货币.

中间人攻击的实现流程如图25所示.

图 25

Fig. 25

Fig. 25 Procedure of man-in-the-middle attack

图 25 中间人攻击实现流程

防范方式: 用户应在通信过程中引入数字证书技术. 用户可以通过可靠的数字证书认证机构认证对方身份, 确保自己是在和正确的通信者进行消息交换, 防止攻击者拦截并篡改消息[124].

4.3 撞库攻击(credential stuffing attack)

安全意识不高的用户常常会在其他网站使用与交易平台相同或相似的账户密码. 一旦这些账户密码被泄露或者被窃取, 攻击者就可以利用这些账号和密码, 在区块链交易平台上进行撞库攻击[125].

撞库攻击一般分为4步.

① 拖库: 攻击者搜寻受害网站, 通过社会工程手段(收买管理员、钓鱼等)或者技术手段(Web漏洞、服务器漏洞、配置错误等)取得该网站的访问权限;

② 洗库: 攻击者对受害网站的数据库进行信息筛选, 得到所需数据, 若数据库中的数据被加密则使用破解技术破解;

③ 撞库: 攻击者对得到的数据进行整理, 选择出账户密码数据;

④ 尝试: 攻击者用得到的账户和密码在区块链交易平台上进行尝试, 同时利用这些账户和密码为攻击其他网站做准备, 转到①[126].

撞库攻击的实现流程如图26所示.

防范方式: 用户不应在多个网站上设置同一个密码; 对于重要的账户, 要使用高强度的密码防止被破解; 不要将密码保存在公共设备上, 防止被泄露.

图 26

Fig. 26

Fig. 26 Procedure of credential stuffing attack

图 26 撞库攻击实现流程

5 区块链安全问题分类与总结

针对区块链技术在数字货币交易等应用领域, 前文介绍了多种典型的安全问题和攻击方法, 本节将对这些问题按照区块链系统的层次架构进行分类并总结.

5.1 区块链层次架构介绍

一个典型的区块链系统一般分为6层, 从上到下分别为应用层、合约层、激励层、共识层、网络层、数据层, 如图27所示. 每层各司其职又互相协作, 最终实现一个去中心化的协作系统和信任机制.

图 27

Fig. 27

Fig. 27 Layered architecture of blockchain applicationsystem

图 27 区块链应用系统的层次结构

(1) 数据层: 数据层描述了区块链的数据结构与相关的加密技术, 实现数据的去中心化存储、完整性与合法性校验、可追溯性与不可篡改性保证等功能.

(2) 网络层: 网络层主要通过分布式组网机制、数据传播机制、数据验证机制, 搭建区块链网络中各个节点之间信息交流的桥梁.

(3) 共识层: 共识层采用了各种共识算法, 例如工作量证明(PoW)、权益证明(PoS)、股份授权证明(DPoS)等, 使区块链系统中的高度分散的节点能够快速且正确地针对区块数据的有效性达成共识.

(4) 激励层: 激励层为区块链提供了激励措施, 使各个节点实现自身利益最大化的个体理性行为与保障区块链系统安全有效的总体目标相一致.

(5) 合约层: 合约层封装了区块链的各类脚本代码、算法和智能合约, 是灵活编程和操作区块链系统的基础.

(6)应用层: 应用层封装了区块链的各种应用场景和案例, 支持数字货币交易、去中心化应用等(DApp), 实现可编程货币、可编程金融、可编程社会[127].

5.2 安全问题分类

下面对本文所述全部36种安全问题综合区块链基本架构进行分类, 并分析每种攻击所依赖的共识以及攻击实施难度, 区块链安全问题分类如表1所示. 需要说明的是, 在表中, 若某层级被勾选, 则说明该攻击会使该层级的某些功能失效或出错. 例如, 边界网关劫持攻击通过拦截区块链网络流量, 阻止广泛共识的达成, 由于其破坏了网络层的节点通信能力, 同时也破坏了共识层的共识过程, 因此网络层和共识层被勾选; 空块攻击通过拒绝打包交易到区块中, 用不合法的手段获得更多的出块奖励, 由于其既破坏了激励规则又阻碍了区块链记录合法交易, 因此数据层和激励层被勾选.

表 1(Table 1)

Table 1 Classification of blockchain security problem

表 1 区块链安全问题分类

安全问题

被攻击的区块链层级

依赖哪种

特定共识

实施

难度

数据层

网络层

共识层

激励层

合约层

应用层

双花攻击

不限

较低

51%攻击

PoW

较高

贿赂攻击

PoW

较低

币龄累计攻击

PoW+PoS

较低

通用挖矿攻击

PoW

芬尼攻击

不限

较低

种族攻击

不限

较低

边界网关劫持攻击

不限

较高

重放攻击

不限

较低

空块攻击

PoW

削弱攻击

PoW

无利害关系攻击

PoS

长程攻击

PoS

较高

简单攻击

PoS

变节攻击

PoS

较高

权益流损攻击

PoS

较高

粉尘攻击

不限

较低

女巫攻击

BFT

较低

日蚀攻击

不限

平衡攻击

PoW

漏洞攻击

不限

较低

整数溢出攻击

不限

可重入攻击

不限

交易顺序依赖攻击

不限

较低

时间戳依赖攻击

不限

较低

调用深度攻击

不限

DDoS攻击

不限

较低

账户盗窃攻击

不限

较低

交易延展性攻击

不限

较低

私钥窃取攻击

不限

自私挖矿攻击

PoW

较高

跳池攻击

PoW

较低

扣块攻击

PoW

社会工程学攻击

不限

Table 1 Classification of blockchain security problem

表 1 区块链安全问题分类

根据安全问题分布图28, 不难发现, 大多数攻击针对的是区块链的共识层, 因此设计一种漏洞较少、安全性较高的共识机制是区块链安全领域的研究重点; 另外, 大部分区块链攻击具有通用性, 其执行不依赖于特定的共识机制, 即在大部分区块链应用系统中均能实施. 因此, 区块链的设计者们可以参考本文所述防范方法, 或是借鉴其他设计者的经验教训, 从而设计出安全可靠的区块链系统. 除了通用的攻击方式外, 针对PoW共识机制的区块链攻击较多, 这是由于PoW作为当前最主流区块链共识算法, 被深入研究并频繁实践. 研究针对PoW共识的攻击对攻击者而言收益较高, 但这不代表其他共识算法足够安全, 区块链的拥有者和用户仍需要保持一定警惕性, 制定合理的应急策略, 以便在遭遇攻击时尽可能的减少损失.

图 28

Fig. 28

Fig. 28 Distribution of security problems in blockchain application systems

图 28 区块链应用系统的安全问题分布

为了粗略评估各攻击的安全风险程度, 本文将攻击实施难度分为四类. 难度低代表成功实施该类攻击几乎不需要攻击者投入成本, 也不依赖苛刻的时机, 可行性较高. 如通用挖矿攻击, 攻击者只需要从主流币处调来矿机, 并花费少量电费, 就可以对山寨币进行攻击. 再例如整数溢出攻击、调用深度攻击, 攻击者只需知晓智能合约的整数范围、调用深度, 并花费少量交易费, 就可以轻松的发起攻击. 难度较低代表成功实施该类攻击需要攻击者投入一定的成本或是需要等待特定的时机, 可行性适中. 如贿赂攻击、币龄累积攻击, 攻击者需要投入一定的成本用于贿赂矿工或是进行币龄积累, 才能成功完成攻击. 再例如时间戳依赖攻击、交易延展性攻击, 攻击者需要监听或者拦截到特定的交易, 才能成功实施攻击. 难度较高代表成功实施该类攻击需要攻击者投入大量成本或是需要等待较为苛刻的时机, 可行性较低. 如51%攻击, 攻击者需要全网超过51%的算力才能成功完成攻击, 想要在大型链中获得51%算力, 需要投入大量的成本. 再例如, 自私挖矿攻击, 攻击者首先需要一定算力, 同时也需要连续挖到几个区块后, 才能成功实施攻击. 难度高代表成功实施该类攻击需要攻击者投入极大成本并且需要苛刻的时机, 难以实施. 如日蚀攻击, 攻击者需要大量傀儡机尝试与受害节点进行连接, 从而恶意填充受害节点的节点表, 该步骤时间较长, 并且需要等待受害节点自己重启, 这种重启不受攻击者控制, 可控性差. 再例如平衡攻击, 攻击者首先需要知晓全网节点的网络状态, 并将所有诚实节点划分成多个算力几乎均等的子组, 并切断各个子组间的通信, 到该步骤为止已经需要相当大的成本了, 之后还需要不断监控各个子组的本地视图, 并在必要的时刻将自己已经挖好的区块广播, 在此过程中, 各个子组间的通信仍要被切断, 因此, 该攻击的实施难度非常高.

5.3 当前研究方向与最新进展

由于区块链仍处于发展状态, 自身机制、周边设施、用户安全意识都不够成熟, 基础架构的每个层次都易受到攻击. 当前, 世界各地的研究者从攻防两侧提出了很多有用的攻击、防御策略, 本节将以区块链架构的6个层次为划分, 分别介绍当前区块链安全方向的研究方向与最新进展, 供读者参考.

(1) 数据层

① 应对量子计算的挑战: 现阶段大多数区块链底层的加密算法是椭圆曲线算法, 但椭圆曲线算法不是一种抗量子攻击算法, 易受到未来的量子攻击的威胁. Shahid等人提出了一种新的一次性签名(OTS)算法, 该算法对量子计算有一定的抵抗性, 且与现有的所有OTS方案相比, 该方案的密钥和签名大小都是最小的[128].

② 保护隐私: 区块链上的智能合约允许节点们在没有可信第三方参与或监督的情况下进行可信交易, 但由于智能合约内可能存在隐私信息, 且智能合约需要在参与节点上运行, 这会导致某节点的隐私被其他节点知晓. 在数字加密货币区块链中常使用零知识证明技术以保证用户使用数字货币时不透露自己的身份, 但零知识证明技术仍存在一些问题, 例如只能保证2个当事方参与交易却不泄露自己的隐私信息. Wan等人提出了一种用于认证数据的零知识证明方案, 它将零知识证明技术与数字签名技术有效结合, 保证了智能合约的数据保密性和真实性[129]. Harris等人提出了一种基于共识的秘密共享协议, 该协议允许多个当事方参与交易, 并且不会泄露任何个人隐私信息[130].

(2) 网络层

网络入侵检测系统: 入侵检测系统常通过自动识别并过滤异常活动, 来保护网络和系统免受意外攻击, 以增强网络的安全性. 在区块链中, 大量攻击是通过网络层攻击区块链本身, 如日蚀攻击, 分割攻击等. 为此Signorini等人设计了一种针对于区块链系统的异常检测工具, 它允许区块链网络的对等节点通过共享历史的攻击信息来抵御日蚀攻击[131].

(3) 共识层

① 避免互操作场景下中的双花攻击: 双花攻击是区块链中非常典型的攻击之一, 单一区块链中的双花攻击已经被深入研究过, 但在跨链技术日渐成熟的现在, 交易常常由多个区块链协作完成, 这种互操作场景下的双花攻击研究较少. Sai等人提出使用中立的观察者来监视跨多个链的交易, 并设计了一种协议消除互操作场景下的双花攻击[132].

② 研究双花攻击的变种攻击: 传统的双花攻击有51%攻击、贿赂攻击、种族攻击等, 大量学者已经对这些攻击进行过研究, 但双花攻击仍存在新的变种. Zhang等人介绍了一种新的联合攻击形式——基于女巫攻击的比特币双花攻击, 并提出了两种解决该攻击的防御方案[133].

(4) 激励层

① 避免跳池攻击: 跳池攻击是一种矿工通过寻找并采用最佳的跳槽策略, 使得自己利益最大化的过程, 现在较为流行的矿池收益结算模式是PPLNS, 但这种模式仍存在一些问题. Zolotavkin等人利用博弈论模型分析了PPLNS结算模式下的跳池攻击, 并给出了避免跳池攻击的方案[134].

② 扣块攻击的最优策略与解决方案: 在矿池间的竞争中, 扣块攻击是较为常见的破坏手段, 使用多少算力攻击其他矿池能带来最大的收益成为恶意矿池所面临的一个重要决策问题. Qin等人提出了恶意矿池最佳扣块策略, 并给出了攻击成功条件[135]. Kaci等人提出了一种新的区块链架构, 用于管理矿池、矿工的信誉, 该架构允许矿池接受可信的矿工, 矿工也可以对矿池进行评估, 从而建立起矿池和矿工之间的信任, 减少扣块攻击出现的可能[136].

(5) 合约层

① 智能合约漏洞检测: 智能合约经常由于程序员的不良编程习惯和疏忽大意, 产生一些安全漏洞. 攻击者如果找到这些漏洞就可以对使用这些合约的受害者进行攻击. Gao等人提出了一种自学习智能合约特性的方案, 该方案可进行合约重复代码检测、合约错误检测和合约验证[137]. Wang等人提出了一种基于机器学习的智能合约漏洞检测方法, 该方法从智能合约的简化操作代码中提取二元特征, 并利用五种机器学习算法和两种采样算法构建了漏洞检测模型[138]. Samreen等人提出了一个动、静态分析相结合的智能合约检测框架, 来检测Etalum中的可重入漏洞[139].

② 智能合约代码修复: 现有的智能合约安全分析工具侧重于漏洞检测, 但很少考虑智能合约代码的修复问题. Zhang等人提出了一种智能合约代码自动修复系统, 该系统可以对智能合约字节码进行修正, 并帮助开发者发布智能合约[140].

(6) 应用层

为金融安全提供可靠的调查模型. 由于区块链消除了交易对可信第三方的需求同时具有匿名性, 某些不法分子会利用基于区块链的数字加密货币进行洗钱等违法操作. Wu等人提出了一种基于扩展的安全Petri网的比特币交易网络分析方法, 该方法利用Petri网的结构特征和动态语义来定义比特币交易的静态与动态特征, 用于分析和查找与非法交易相关的可疑地址[141].

总体而言, 近些年国内外学者针对区块链各个层级的研究都取得了丰硕的研究成果. 从研究趋势上看, 针对数据层、共识层和合约层的研究数量不断上升, 逐渐成为当前区块链安全领域的研究重点. 根据区块链应用需求和现有的研究成果, 本文认为在区块链安全领域, 未来研究将向隐私安全、智能合约安全和跨链技术安全3个方向发展.

隐私安全: 当前区块链隐私安全方向的研究重点是为用户提供一套隐私保护方案. 现有方案主要利用零知识证明、安全多方计算、同态加密等技术, 在区块链账本公开透明的前提下增加匿名性, 最大程度地确保区块链用户的个人隐私安全. 一方面, 零知识证明等技术的引入, 为区块链系统添加了额外的操作流程和步骤, 势必会带来不小的时空代价, 导致区块链的可用性和可拓展性大大降低; 另一方面, 匿名程度的上升必然会使违规交易追踪与监管面临严峻的挑战. 因此, 如何在匿名性与交易性能、匿名性与监管难度间取得合理平衡将成为区块链隐私安全领域的研究重点.

智能合约安全: 当前智能合约安全的研究重点主要为智能合约漏洞检测与修复. 现有的漏洞检测方案可以针对智能合约中的简单漏洞进行检测并提供审计报告, 部分降低了智能合约开发者出错的可能和人工审计成本. 但由于智能合约版本更新换代较快, 各个平台采用的智能合约底层框架不尽相同, 现有方案很难为所有平台所有版本的智能合约提供漏洞检测服务, 因此设计一种通用性强的智能合约漏洞检测工具是未来研究方向之一. 除了漏洞检测, 未来还可以通过研究标准化的智能合约编写工具以及智能合约漏洞自动修复工具来减少智能合约的安全风险. 另外, 站在智能合约设计者的角度, 为预防在复杂合约的编程过程中可能出现的安全漏洞以及因此而带来的风险, 设计一种“图灵完备”的安全脚本智能合约语言也是可以考虑的方案之一.

跨链技术安全: 跨链技术作为增加区块链可拓展性和解决不同公链/侧链之间交易困难问题的核心技术, 愈发被工业级和学术界重视. 现有关于跨链技术的研究大多停留在如何更好的实现跨链交互上, 很少考虑到跨链技术带来的潜在安全威胁. 跨链场景下的攻击模型以及防御方案将是未来的研究方向之一. 未来研究者们可以从区块链传统攻击模型在跨链场景下的新实现以及针对跨链场景的新攻击模型两个方面考虑, 逐步完善跨链技术的安全性.

6 结 语

区块链技术自问世以来, 不断演化发展, 一直作为学术研究、企业应用、政府监管、民间投资的热点和争议而存在. 目前方案成熟、效果明显、应用广泛的区块链应用领域还当属数字货币交易. 由于区块链技术问世较晚、还处于技术的快速迭代完善时期, 其面临的安全风险和威胁攻击多种多样, 针对区块链公链应用的安全事件频繁发生. 本文首先回顾了近几年发生的针对典型的区块链数据服务、交易平台的安全事件; 接着, 列举并分析了区块链自身机制、区块链周边设施、区块链用户所面临的36种安全问题, 同时给出了每种安全风险的有效防范策略建议; 最后结合区块链系统层次结构, 对本文提及的安全问题进行分类并做出总结. 希望能给区块链安全的研究者、技术创新应用者、区块链开发者提供研究参考资料和安全评估视野, 促进区块链的健康发展.

参考文献

[1]

Crosby M, Pattanayak P, Verma S, Kalyanaraman V. Blockchain technology: Beyond Bitcoin. Applied Innovation Review, 2016, 2: 6-19.

http://doi.acm.org/10.1145/2994581

[2]

Liu AD, Du XH, Wang N, Li SZ. Research progress of blockchain technology and its application in information security. Ruan Jian Xue Bao/Journal of Software, 2018, 29(7): 2092–2115 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5589.htm

[3]

Lin IC, Liao TC. A survey of blockchain security issues and challenges. International Journal of Network Security, 2017, 19(5): 653-659.

[doi:10.6633/IJNS.201709.19(5).01]

[4]

Gao WC, Hatcher WG, Yu W. A survey of blockchain: Techniques, applications, and challenges. In: Proc. of the 27th Int’l Conf. on Computer Communication and Networks. Hangzhou: IEEE, 2018. 1–11. [doi: 10.1109/ICCCN.2018.8487348]

[5]

Destefanis G, Marchesi M, Ortu M, Tonelli R, Bracciali A, Hierons R. Smart contracts vulnerabilities: A call for blockchain software engineering? In: Proc. of 2018 Int’l Workshop on Blockchain Oriented Software Engineering. Campobasso: IEEE, 2018. 19–25. [doi: 10.1109/IWBOSE.2018.8327567]

[6]

Huang YH, Wang HY, Wu L, Tyson G, Luo XP, Zhang R, Liu XZ, Huang G, Jiang XX. Characterizing eosio blockchain. arXiv: 2002.05369, 2020.

[7]

Mehar MI, Shier CL, Giambattista A, Gong E, Fletcher G, Sanayhie R, Kim HM, Laskowski M. Understanding a revolutionary and flawed grand experiment in blockchain: The DAO attack. Journal of Cases on Information Technology (JCIT), 2019, 21(1): 19-32.

[doi:10.4018/JCIT.2019010102]

[8]

Zou J, Zhang HN, Tang Y, Li L, Liu TX, Chen H. Blockchain Technical Guidelines. Beijing: China Machine Press, 2016. 109–219 (in Chinese).

[9]

Nakamoto S. Bitcoin: A Peer-to-Peer Electronic Cash System. Bitcoin White Paper, 2008.

[10]

Tomov YK. Bitcoin: Evolution of blockchain technology. In: Proc. of the 2019 IEEE XXVIII Int’l Scientific Conf. Electronics. Sozopol: IEEE, 2019. 1–4. [doi: 10.1109/ET.2019.8878322]

[11]

Bonneau J, Miller A, Clark J, Narayanan A, Kroll JA, Felten EW. Sok: Research perspectives and challenges for Bitcoin and cryptocurrencies. In: Proc. of the 2015 IEEE Symp. on Security and Privacy. San Jose: IEEE, 2015. 104–121. [doi: 10.1109/SP.2015.14]

[12]

Shalini S, Santhi H. A survey on various attacks in Bitcoin and cryptocurrency. In: Proc. of the 2019 Int’l Conf. on Communication and Signal Processing. Chennai: IEEE, 2019. 220–224. [doi: 10.1109/ICCSP.2019.8697996]

[13]

Jang J, Lee HN. Profitable double-spending attacks. Applied Sciences, 2020, 10(23): 8477.

[doi:10.3390/app10238477]

[14]

Pérez-Solà C, Delgado-Segura S, Navarro-Arribas G, Herrera-Joancomartí J. Double-spending prevention for Bitcoin zero-confirmation Trans.. Int’l Journal of Information Security, 2019, 18(4): 451-463.

[doi:10.1007/s10207-018-0422-4]

[15]

Rosenfeld M. Analysis of hashrate-based double spending. arXiv: 1402.2009, 2014.

[16]

Houy N. It will cost you nothing to ‘kill’ a proof-of-stake crypto-currency. Economics Bulletin, 2014, 34(2): 1038-1044.

[doi:10.2139/ssrn.2393940]

[17]

Shanaev S, Shuraeva A, Vasenin M, Kuznetsov M. Cryptocurrency value and 51% attacks: Evidence from event studies. The Journal of Alternative Investments, 2019, 22(3): 65-77.

[doi:10.2139/ssrn.3290016]

[18]

Liu ZY, Luong NC, Wang WB, Niyato D, Wang P, Liang YC, Kim DI. A survey on blockchain: A game theoretical perspective. IEEE Access, 2019, 7: 47615-47643.

[doi:10.1109/ACCESS.2019.2909924]

[19]

Yang XL, Chen Y, Chen XH. Effective scheme against 51% attack on proof-of-work blockchain with history weighted information. In: Proc. of 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 261–265. [doi: 10.1109/Blockchain.2019.00041]

[20]

Li XQ, Jiang P, Chen T, Luo XP, Wen QY. A survey on the security of blockchain systems. Future Generation Computer Systems, 2020, 107: 841-853.

[doi:10.1016/j.future.2017.08.020]

[21]

Bentov I, Gabizon A, Mizrahi A. Cryptocurrencies without proof of work. In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 142–157. [doi: 10.1007/978-3-662-53357-4_10]

[22]

Bonneau J. Why buy when you can rent? In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 19–26. [doi: 10.1007/978-3-662-53357-4_2]

[23]

Gao S, Li ZC, Peng Z, Xiao B. Power adjusting and bribery racing: Novel mining attacks in the Bitcoin system. In: Proc. of the 2019 ACM SIGSAC Conf. on Computer and Communications Security. London: ACM, 2019. 833–850. [doi: 10.1145/3319535.3354203]

[24]

Kothapalli A, Cordi C. 2016. A bribery framework using smartcontracts.

[25]

Vasin P. Blackcoin’s Proof-of-Stake Protocol v2. 2014. https://blackcoin.co/blackcoin-pos-protocol-v2-whitepaper.pdf

[26]

Averin A, Averina O. Review of blockchain technology vulnerabilities and blockchain-System attacks. In: Proc. of 2019 Int’l Multi-Conf. on Industrial Engineering and Modern Technologies. Vladivostok: IEEE, 2019. 1–6. [doi: 10.1109/FarEastCon.2019.8934243]

[27]

Niya SR, Stiller B. BAZO: A proof-of-stake (PoS) based blockchain. Technical Report, Zurich: University of Zurich, 2019.

[28]

Bachmann S. Proof of stake for Bazo [Bachelor Thesis]. Zurich: University of Zurich, 2018.

[29]

Shrivas MK, Dean TY, Brunda SS. The disruptive blockchain security threats and threat categorization. In: Proc. of the 1st Int’l Conf. on Power, Control and Computing Technologies. Raipur: IEEE, 2020. 327–338.[doi: 10.1109/ICPC2T48082.2020.9071475]

[30]

Georgiadis E, Zeilberger D. A combinatorial-probabilistic analysis of Bitcoin attacks. Journal of Difference Equations and Applications, 2019, 25(1): 56-63.

[doi:10.1080/10236198.2018.1555247]

[31]

Grunspan C, Pérez-Marco R. On profitability of Nakamoto double spend. Probability in the Engineering and Informational Sciences, 2021, 1-15.

[doi:10.1017/S026996482100005X]

[32]

Kaushik A, Choudhary A, Ektare C, Thomas D, Akram S. Blockchain—literature survey. In: Proc. of the 2nd IEEE Int’l Conf. on Recent Trends in Electronics, Information & Communication Technology. Bangalore: IEEE, 2017. 2145–2148.[doi: 10.1109/RTEICT.2017.8256979]

[33]

Joshi J, Mathew R. A survey on attacks of bitcoin. In: Proc. of the Int’l Conf. on Computer Networks, Big data and IoT. Cham: Springer, 2018. 953–959. [doi: 10.1007/978-3-030-24643-3_113]

[34]

Lei M. Exploiting Bitcoin’s topology for double-spend attacks [Bachelor Thesis]. Zürich: ETH Zürich, 2015.

[35]

Maroufi M, Abdolee R, Tazekand BM. On the convergence of blockchain and Internet of Things (IoT) technologies. arXiv: 1904.01936, 2019.

[36]

Bajaj AS, Tyagi L, Arora P. Blockchain and decentralized applications. BTP Report, New Delhi: Indraprastha Institute of Information Technology, 2018.

[37]

Ekparinya P, Gramoli V, Jourjon G. Double-spending risk quantification in private, consortium and public Ethereum blockchains. arXiv: 1805.05004, 2018.

[38]

Nguyen TSL, Jourjon G, Potop-Butucaru M, Thai KL. Impact of network delays on Hyperledger Fabric. In: Proc. of the IEEE INFOCOM 2019-IEEE Conf. on Computer Communications Workshops. Paris: IEEE, 2019. 222–227. [doi: 10.1109/INFCOMW.2019.8845168]

[39]

Saad M, Cook V, Nguyen L, Thai MT, Mohaisen A. Partitioning attacks on Bitcoin: Colliding space, time, and logic. In: Proc. of 2019 IEEE 39th Int’l Conf on Distributed Computing Systems. Dallas: IEEE, 2019. 1175–1187. [doi: 10.1109/ICDCS.2019.00119]

[40]

Tran M, Choi I, Moon GJ, Vu AV, Kang MS. A stealthier partitioning attack against Bitcoin peer-to-peer network. In: Proc. of the 2020 IEEE Symp. on Security and Privacy. San Francisco: IEEE, 2020. 496–511. [doi: 10.1109/SP40000.2020.00027]

[41]

Apostolaki M, Zohar A, Vanbever L. Hijacking Bitcoin: Routing attacks on cryptocurrencies. In: Proc. of the 2017 IEEE Symp. on Security and Privacy. San Jose: IEEE, 2017. 375–392.[doi: 10.1109/SP.2017.29]

[42]

Wang J, Chen GL. Overview on blockchain fork in bitcoin. Communications Technology, 2018, 51(1): 149-155(in Chinese with English abstract).

[doi:10.3969/j.issn.1002-0802.2018.01.027]

[43]

Dasgupta D, Shrein JM, Gupta KD. A survey of blockchain from security perspective. Journal of Banking and Financial Technology, 2019, 3(1): 1-17.

[doi:10.1007/s42786-018-00002-6]

[44]

McCorry P, Heilman E, Miller A. Atomically trading with roger: Gambling on the success of a hardfork. In: Garcia-Alfaro J, Navarro-Arribas G, Hartenstein H, Herrera-Joancomartí J, eds. Data Privacy Management, Cryptocurrencies and Blockchain Technology. Cham: Springer, 2017. 334–353. [doi: 10.1007/978-3-319-67816-0_19]

[45]

Eyal I, Gencer AE, Sirer EG, Van Renesse R. Bitcoin-NG: A scalable blockchain protocol. In: Proc. of the 13th USENIX Symp. on Networked Systems Design and Implementation. Berkeley: USENIX, 2016. 45–59.

[46]

Eskandari S, Moosavi S, Clark J. SoK: Transparent dishonesty: Front-running attacks on blockchain. In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 170–189. [doi: 10.1007/978-3-030-43725-1_13]

[47]

Sina A. Investigating the Bitcoin blockchain through the analysis of empty blocks [MS. Thesis]. Venice: Università Ca'Foscari Venezia, 2019.

[48]

Zhou DL, Ruan N, Jia WJ. A robust throughput scheme for Bitcoin network without block reward. In: Proc. of the 21st IEEE Int’l Conf. on High Performance Computing and Communications; the 17th IEEE Int’l Conf. on Smart City; the 5th IEEE Int’l Conf. on Data Science and Systems. Zhangjiajie: IEEE, 2019. 706–713. [doi: 10.1109/HPCC/SmartCity/DSS.2019.00105]

[49]

Mannan GS. Security of blockchain: An investigation and analysis of mining attacks on Bitcoin [MS. Thesis]. Edgbaston: University of Birmingham, 2017.

[50]

Nguyen CT, Hoang DT, Nguyen DN, Niyato D, Nguyen HT, Dutkiewicz E. Proof-of-stake consensus mechanisms for future blockchain networks: Fundamentals, applications and opportunities. IEEE Access, 2019, 7: 85727-85745.

[doi:10.1109/ACCESS.2019.2925010]

[51]

Saleh F. Blockchain without waste: Proof-of-stake. Review of Financial Studies, 2021, 34: 1156-1190.

[doi:10.2139/ssrn.3183935]

[52]

Gupta S, Sadoghi M. Blockchain transaction processing. In: Sakr S, Zomaya A, eds. Encyclopedia of Big Data Technologies. Cham: Springer, 2019. [doi: 10.1007/978-3-319-63962-8_333-1]

[53]

Daian P, Pass R, Shi E. Snow white: Robustly reconfigurable consensus and applications to provably secure proof of stake. In: Proc. of the 23rd Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 23–41. [doi: 10.1007/978-3-030-32101-7_2]

[54]

Baliga A. Understanding blockchain consensus models. Persistent Systems, 2017, 2017(4): 1-14.

[55]

Jain A, Arora S, Shukla Y, Patil T, Sawant-Patil S. Proof of stake with casper the friendly finality gadget protocol for fair validation consensus in Ethereum. Int’l Journal of Scientific Research in Computer Science, Engineering and Information Technology, 2018, 3(3): 291-298.

[56]

Cohen B, Pietrzak K. The Chia network blockchain. Chia Network White Paper, 2019.

[57]

Fanti G, Kogan L, Oh S, Ruan K, Viswanath P, Wang GR. Compounding of wealth in proof-of-stake cryptocurrencies. In: Proc. of the 23rd Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 42–61. [doi: 10.1007/978-3-030-32101-7_3]

[58]

Sayeed S, Marco-Gisbert H. Assessing blockchain consensus and security mechanisms against the 51% attack. Applied Sciences, 2019, 9(9): 1788.

[doi:10.3390/app9091788]

[59]

Roelen E, Modeneis T. A Technical Description of the Smilo Platform. Rotterdam, Netherlands: Smilo Foundation, 2019.

[60]

Deirmentzoglou E, Papakyriakopoulos G, Patsakis C. A survey on long-range attacks for proof of stake protocols. IEEE Access, 2019, 7: 28712-28725.

[doi:10.1109/ACCESS.2019.2901858]

[61]

AlMallohi IAI, Alotaibi ASM, Alghafees R, Azam F, Khan ZS. Multivariable based checkpoints to mitigate the long range attack in proof-of-stake based blockchains. In: Proc. of the 3rd Int’l Conf. on High Performance Compilation, Computing and Communications. Xi’an: ACM, 2019. 118–122. [doi: 10.1145/3318265.3318289]

[62]

Zhang S, Lee JH. Eclipse-based stake-bleeding attacks in PoS blockchain systems. In: Proc. of the 2019 ACM Int’l Symp. on Blockchain and Secure Critical Infrastructure. Auckland: ACM, 2019. 67–72. [doi: 10.1145/3327960.3332391]

[63]

Homoliak I, Venugopalan S, Hum Q, Szalachowski P. A security reference architecture for blockchains. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 390–397. [doi: 10.1109/Blockchain.2019.00060]

[64]

Saad M, Njilla L, Kamhoua C, Kim J, Nyang D, Mohaisen A. Mempool optimization for defending against DDoS attacks in PoW-based blockchain systems. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain and Cryptocurrency. Seoul: IEEE, 2019. 285–292. [doi: 10.1109/BLOC.2019.8751476]

[65]

Saad M, Spaulding J, Njilla L, Kamhoua C, Shetty S, Nyang D, Mohaisen A. Exploring the attack surface of blockchain: A systematic overview. arXiv: 1904.03487, 2019.

[66]

Bradbury D. The problem with Bitcoin. Computer Fraud & Security, 2013, 2013(11): 5-8.

[doi:10.1016/S1361-3723(13)70101-5]

[67]

Douceur JR. The Sybil attack. In: Proc. of the 1st Int’l Workshop on Peer-to-Peer Systems. Cambridge: Springer, 2002. 251–260. [doi: 10.1007/3-540-45748-8_24]

[68]

Dinger J, Hartenstein H. Defending the Sybil attack in P2P networks: Taxonomy, challenges, and a proposal for self-registration. In: Proc. of the 1st Int’l Conf. on Availability, Reliability and Security. Vienna: IEEE, 2006. 756–763. [doi: 10.1109/ARES.2006.45]

[69]

Swathi P, Modi C, Patel D. Preventing Sybil attack in blockchain using distributed behavior monitoring of miners. In: Proc. of the 10th Int’l Conf. on Computing, Communication and Networking Technologies. Kanpur: IEEE, 2019. 1–6. [doi: 10.1109/ICCCNT45670.2019.8944507]

[70]

Rahmadika S, Ramdania DR, Harika M. A blockchain approach for the future renewable energy transaction. Journal of Physics: Conf. Series, 2019, 1175(1): 012122.

[doi:10.1088/1742-6596/1175/1/012122]

[71]

Wüst K, Gervais A. Ethereum eclipse attacks. ETH Zurich, 2016.

[72]

Wang SL, Wang CY, Hu Q. Corking by forking: Vulnerability analysis of blockchain. In: Proc. of the IEEE INFOCOM 2019-IEEE Conf. on Computer Communications. Paris: IEEE, 2019. 829–837. [doi: 10.1109/INFOCOM.2019.8737490]

[73]

Aoki Y, Shudo K. Proximity neighbor selection in blockchain networks. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 52–58. [doi: 10.1109/Blockchain.2019.00016]

[74]

Heilman E, Kendler A, Zohar A, Goldberg S. Eclipse attacks on Bitcoin’s peer-to-peer network. In: Proc. of the 24th USENIX Security Symp. Washington: USENIX, 2015. 129–144.

[75]

Gervais A, Karame GO, Wüst K, Glykantzis V, Ritzdorf H, Capkun S. On the security and performance of proof of work blockchains. In: Proc. of the 2016 ACM SIGSAC Conf. on Computer and Communications Security. Vienna: ACM, 2016. 3–16. [doi: 10.1145/2976749.2978341]

[76]

Wang K, Kim HS. FastChain: Scaling blockchain system with informed neighbor selection. In: Proc. of 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 376–383. [doi: 10.1109/Blockchain.2019.00058]

[77]

Ajayi O, Cherian M, Saadawi T. Secured cyber-attack signatures distribution using blockchain technology. In: Proc. of 2019 IEEE Int’l Conf. on Computational Science and Engineering (CSE) and IEEE Int’l Conf. on Embedded and Ubiquitous Computing (EUC). New York: IEEE, 2019. 482–488. [doi: 10.1109/CSE/EUC.2019.00095]

[78]

Qian WN, Shao QF, Zhu YC, Jin CQ, Zhou AY. Research problems and methods in blockchain and trusted data management. Ruan Jian Xue Bao/Journal of Software, 2018, 29(1): 150–159 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5434.htm

[79]

Canessane RA, Srinivasan N, Beuria A, Singh A, Kumar BM. Decentralised applications using Ethereum blockchain. In: Proc. of the 5th Int’l Conf. on Science Technology Engineering and Mathematics. Chennai: IEEE, 2019. 14–15. [doi: 10.1109/ICONSTEM.2019.8918887]

[80]

Buterin V. A next-generation smart contract and decentralized application platform. Ethereum White Paper, 2014, 3(37): 1-36.

http://lapis.epfl.ch/files/content/sites/lapis/files/VETU/VETU_SH_17/articles/Ethereum_white_paper-a_next_generation_smart_contract_and_decentralized_application_platform-vitalik-buterin.pdf

[81]

Wood G. Ethereum: A secure decentralised generalised transaction ledger. Ethereum Project Yellow Paper, 2014, 151: 1-32.

[82]

Vujičić D, Jagodić D, Ranđić S. Blockchain technology, Bitcoin, and Ethereum: A brief overview. In: Proc. of the 17th Int’l Symp. INFOTEH-JAHORINA. East Sarajevo: IEEE, 2018. 1–6. [doi: 10.1109/INFOTEH.2018.8345547]

[83]

Wei PW, Yuan Q, Zheng YL. Security of the blockchain against long delay attack. In: Proc. of the 24th Int’l Conf. on the Theory and Application of Cryptology and Information Security. Brisbane: Springer, 2018. 250–275. [doi: 10.1007/978-3-030-03332-3_10]

[84]

Gramoli V. From blockchain consensus back to byzantine consensus. Future Generation Computer Systems, 2020, 107: 760-769.

[doi:10.1016/j.future.2017.09.023]

[85]

Natoli C, Gramoli V. The balance attack against proof-of-work blockchains: The R3 testbed as an example. arXiv: 1612.09426, 2016.

[86]

Natoli C, Gramoli V. The balance attack or why forkable blockchains are ill-suited for consortium. In: Proc. of the 47th Annual IEEE/IFIP Int’l Conf. on Dependable Systems and Networks. Denver: IEEE, 2017. 579–590. [doi: 10.1109/DSN.2017.44]

[87]

Gupta BC. Analysis of Ethereum smart contracts-A security perspective [MS. Thesis]. Kanpur: Indian Institute of Technology Kanpur, 2019.

[88]

Grech N, Kong M, Jurisevic A, Brent L, Scholz B, Smaragdakis Y. MadMax: Surviving out-of-gas conditions in Ethereum smart contracts. Proc. of the ACM on Programming Languages, 2018, 2(OOPSLA): 116.

[doi:10.1145/3276486]

[89]

Atzei N, Bartoletti M, Cimoli T. A survey of attacks on Ethereum smart contracts (SOK). In: Proc. of the 6th Int’l Conf. on Principles of Security and Trust. Uppsala: Springer, 2017. 164–186. [doi: 10.1007/978-3-662-54455-6_8]

[90]

Luu L, Chu DH, Olickel H, Saxena P, Hobor A. Making smart contracts smarter. In: Proc. of the 2016 ACM SIGSAC Conf. on Computer and Communications Security. Vienna: ACM, 2016. 254–269. [doi: 10.1145/2976749.2978309]

[91]

Wang S, Yuan Y, Wang X, Li JJ, Qin R, Wang FY. An overview of smart contract: Architecture, applications, and future trends. In: Proc. of the 2018 IEEE Intelligent Vehicles Symp. Changshu: IEEE, 2018. 108–113. [doi: 10.1109/IVS.2018.8500488]

[92]

Delmolino K, Arnett M, Kosba A, Miller A, Shi E. Step by step towards creating a safe smart contract: Lessons and insights from a cryptocurrency lab. In: Proc. of the 2016 Int’l Conf. on Financial Cryptography and Data Security. Berlin: Springer, 2016. 79–94. [doi: 10.1007/978-3-662-53357-4_6]

[93]

Decker C, Guthrie J, Seidel J, Wattenhofer R. Making Bitcoin exchanges transparent. In: Proc. of the 20th European Symp. on Research in Computer Security. Vienna: Springer, 2015. 561–576. [doi: 10.1007/978-3-319-24177-7_28]

[94]

Chuen DLK. Handbook of Digital Currency: Bitcoin, Innovation, Financial Instruments, and Big Data. London: Academic Press, 2015. 5–185.

[95]

Vasek M, Thornton M, Moore T. Empirical analysis of denial-of-service attacks in the Bitcoin ecosystem. In: Proc. of the 2014 Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2014. 57–71. [doi: 10.1007/978-3-662-44774-1_5]

[96]

Huynh TT, Nguyen TD, Tan H. A survey on security and privacy issues of blockchain technology. In: Proc. of the 2019 Int’l Conf. on System Science and Engineering. Dong Hoi: IEEE, 2019. 362–367. [doi: 10.1109/ICSSE.2019.8823094]

[97]

Feng Q, He DB, Zeadally S, Khan MK, Kumar N. A survey on privacy protection in blockchain system. Journal of Network and Computer Applications, 2019, 126: 45-58.

[doi:10.1016/j.jnca.2018.10.020]

[98]

Naoumov N, Ross K. Exploiting P2P systems for DDoS attacks. In: Proc. of the 1st Int’l Conf. on Scalable Information Systems. Hong Kong: ACM, 2006. 47–52. [doi: 10.1145/1146847.1146894]

[99]

Moore T. The promise and perils of digital currencies. Int’l Journal of Critical Infrastructure Protection, 2013, 6(3−4): 147-149.

[doi:10.1016/j.ijcip.2013.08.002]

[100]

Zhao YL. Practical aggregate signature from general elliptic curves, and applications to blockchain. In: Proc. of the 2019 ACM Asia Conf. on Computer and Communications Security. Auckland: ACM, 2019. 529–538. [doi: 10.1145/3321705.3329826]

[101]

Decker C, Wattenhofer R. Bitcoin transaction malleability and MtGox. In: Proc. of the 19th European Symp. on Research in Computer Security. Wroclaw: Springer, 2014. 313–326. [doi: 10.1007/978-3-319-11212-1_18]

[102]

Zhao YL. Aggregation of gamma-signatures and applications to Bitcoin. Cryptology ePrint Archive, 2018.

[103]

Vyas CA, Lunagaria M. Security concerns and issues for bitcoin. In: IJCA Proc. on National Conf. cum Workshop on Bioinformatics and Computational Biology. 2014. 10–12.

[104]

Gennaro R, Goldfeder S, Narayanan A. Threshold-optimal DSA/ECDSA signatures and an application to Bitcoin wallet security. In: Proc. of the 14th Int’l Conf. on Applied Cryptography and Network Security. Guildford: Springer, 2016. 156–174. [doi: 10.1007/978-3-319-39555-5_9]

[105]

Lewenberg Y, Bachrach Y, Sompolinsky Y, Zohar A, Rosenschein JS. Bitcoin mining pools: A cooperative game theoretic analysis. In: Proc. of the 2015 Int’l Conf. on Autonomous Agents and Multiagent Systems. Istanbul: Int’l Foundation for Autonomous Agents and Multiagent Systems, 2015. 919–927.

[106]

Sapirshtein A, Sompolinsky Y, Zohar A. Optimal selfish mining strategies in Bitcoin. In: Proc. of the 20th Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 515–532. [doi: 10.1007/978-3-662-54970-4_30]

[107]

Courtois NT, Bahack L. On subversive miner strategies and block withholding attack in Bitcoin digital currency. arXiv: 1402.1718, 2014.

[108]

Saad M, Njilla L, Kamhoua C, Mohaisen A. Countering selfish mining in blockchains. In: Proc. of the 2019 Int’l Conf. on Computing, Networking and Communications. Honolulu: IEEE, 2019. 360–364. [doi: 10.1109/ICCNC.2019.8685577]

[109]

Grunspan C, Pérez-Marco R. Bitcoin selfish mining and dyck words. arXiv: 1902.01513, 2019.

[110]

Bai QL, Zhou XY, Wang X, Xu YD, Wang X, Kong QS. A deep dive into blockchain selfish mining. In: ICC 2019–2019 IEEE Int’l Conf. on Communications. Shanghai: IEEE, 2019. 1–6. [doi: 10.1109/ICC.2019.8761240]

[111]

Eyal I, Sirer EG. Majority is not enough: Bitcoin mining is vulnerable. In: Proc. of the 18th Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2014. 436–454. [doi: 10.1007/978-3-662-45472-5_28]

[112]

Qin R, Yuan Y, Wang S, Wang FY. Economic issues in Bitcoin mining and blockchain research. In: Proc. of the 2018 IEEE Intelligent Vehicles Symp. (IV). Changshu: IEEE, 2018. 268–273. [doi: 10.1109/IVS.2018.8500377]

[113]

Liu KY, Ohsawa Y. Auction based rewards distribution method in pool mining. In: Proc. of the 2019 Int’l Electronics Communication Conf.. Okinawa: ACM, 2019. 103–110. [doi: 10.1145/3343147.3343162]

[114]

Singh SK, Salim MM, Cho M, Cha J, Pan Y, Park JH. Smart contract-based pool hopping attack prevention for blockchain networks. Symmetry, 2019, 11(7): 941.

[doi:10.3390/sym11070941]

[115]

Shi HW, Wang SL, Hu Q, Cheng XZ, Zhang JS, Yu JG. Hopping-proof and fee-free pooled mining in blockchain. arXiv: 1912.11575, 2019.

[116]

Bag S, Ruj S, Sakurai K. Bitcoin block withholding attack: Analysis and mitigation. IEEE Trans. on Information Forensics and Security, 2017, 12(8): 1967-1978.

[doi:10.1109/TIFS.2016.2623588]

[117]

Chang SY, Park Y, Wuthier S, Chen CW. Uncle-block attack: Blockchain mining threat beyond block withholding for rational and uncooperative miners. In: Proc. of the 17th Int’l Conf. on Applied Cryptography and Network Security. Bogota: Springer, 2019. 241–258. [doi: 10.1007/978-3-030-21568-2_12]

[118]

Vokerla RR, Shanmugam B, Azam S, Karim A, De Boer F, Jonkman M, Faisal F. An overview of blockchain applications and attacks. In: Proc. of the 2019 Int’l Conf. on Vision Towards Emerging Trends in Communication and Networking. Vellore: IEEE, 2019. 1–6. [doi: 10.1109/ViTECoN.2019.8899450]

[119]

Rosenfeld M. Analysis of Bitcoin pooled mining reward systems. arXiv: 1112.4980, 2011.

[120]

Barber S, Boyen X, Shi E, Uzun E. Bitter to better—How to make Bitcoin a better currency. In: Proc. of the 16th Int’l Conf. on Financial Cryptography and Data Security. Kralendijk: Springer, 2012. 399–414. [doi: 10.1007/978-3-642-32946-3_29]

[121]

Canelón J, Huerta E, Incera J, Ryan T. A cybersecurity control framework for blockchain ecosystems. The Int’l Journal of Digital Accounting Research, 2019, 19: 103-144.

[doi:10.4192/1577-8517-v19_5]

[122]

Stephen R, Alex A. A review on blockchain security. IOP Conference Series: Materials Science and Engineering, 2018, 396: 012030.

[doi:10.1088/1757-899X/396/1/012030]

[123]

Herbert J, Litchfield A. A novel method for decentralised peer-to-peer software license validation using cryptocurrency blockchain technology. In: Proc. of the 38th Australasian Computer Science Conf. (ACSC 2015). Sydney: CRPIT, 2015. 27–30.

[124]

Gangan S. A review of man-in-the-middle attacks. arXiv: 1504.02115, 2015.

[125]

Wang KC, Reiter MK. How to end password reuse on the web. In: Network and Distributed Systems Security. San Diego: NDSS, 2019.

[126]

Glazier W, Dhiman M. Automation attacks at scale-credential exploitation. 2017.

[127]

Yuan Y, Wang FY. Blockchain and cryptocurrencies: Model, techniques, and applications. IEEE Trans. on Systems, Man, and Cybernetics: Systems, 2018, 48(9): 1421-1428.

[doi:10.1109/TSMC.2018.2854904]

[128]

Shahid F, Ahmad I, Imran M, Shoaib M. Novel one time signatures (NOTS): A compact post-quantum digital signature scheme. IEEE Access, 2020, 8: 15895-15906.

[doi:10.1109/ACCESS.2020.2966259]

[129]

Wan ZG, Guan ZS, Zhou Y, Ren K. zk-AuthFeed: How to feed authenticated data into smart contract with zero knowledge. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 83–90. [doi: 10.1109/Blockchain.2019.00020]

[130]

Harris CG. Consensus-based secret sharing in blockchain smart contracts. In: Proc. of the 2019 Int’l Workshop on Big Data and Information Security. Bali: IEEE, 2019. 79–84. [doi: 10.1109/IWBIS.2019.8935853]

[131]

Signorini M, Pontecorvi M, Kanoun W, Di Pietro R. ADvISE: Anomaly detection tool for blockchain systEms. In: Proc. of the 2018 IEEE World Congress on Services. San Francisco: IEEE, 2018. 65–66. [doi: 10.1109/SERVICES.2018.00046]

[132]

Sai K, Tipper D. Disincentivizing double spend attacks across interoperable blockchains. In: Proc. of the 1st IEEE Int’l Conf. on Trust, Privacy and Security in Intelligent Systems and Applications. Los Angeles: IEEE, 2019. 36–45. [doi: 10.1109/TPS-ISA48467.2019.00014]

[133]

Zhang SJ, Lee JH. Mitigations on sybil-based double-spend attacks in Bitcoin. IEEE Consumer Electronics Magazine, 2020.

[doi:10.1109/MCE.2020.2988031]

[134]

Zolotavkin Y, Garcia J. Incentives for stable mining in pay per last N shares pools. In: Proc. of the 2019 IFIP Networking Conf. (IFIP Networking). Warsaw: IEEE, 2019. 1–9. [doi: 10.23919/IFIPNetworking.2019.8816835]

[135]

Qin R, Yuan Y, Wang FY. Optimal block withholding strategies for blockchain mining pools. IEEE Trans. on Computational Social Systems, 2020, 7(3): 709-717.

[doi:10.1109/TCSS.2020.2991097]

[136]

Kaci A, Rachedi A. PoolCoin: Toward a distributed trust model for miners’ reputation management in blockchain. In: Proc. of the 17th IEEE Annual Consumer Communications & Networking Conf. (CCNC). Las Vegas: IEEE, 2020. 1–6. [doi: 10.1109/CCNC46108.2020.9045608]

[137]

Gao ZP, Jiang LX, Xia X, Lo D, Grundy J. Checking smart contracts with structural code embedding. IEEE Trans. on Software Engineering, 2020.

[138]

Wang W, Song JJ, Xu GQ, Li YD, Wang H, Su CH. ContractWard: Automated vulnerability detection models for Ethereum smart contracts. IEEE Trans. on Network Science and Engineering, 2020.

[139]

Samreen NF, Alalfi MH. Reentrancy vulnerability identification in Ethereum smart contracts. In: Proc. of the 2020 IEEE Int’l Workshop on Blockchain Oriented Software Engineering. London: IEEE, 2020. 22–29. [doi: 10.1109/IWBOSE50093.2020.9050260]

[140]

Zhang YY, Ma SQ, Li JR, Li KL, Nepal S, Gu DW. SMARTSHIELD: Automatic smart contract protection made easy. In: Proc. of the 27th IEEE Int’l Conf. on Software Analysis, Evolution and Reengineering. London: IEEE, 2020. 23–34.[doi: 10.1109/SANER48275.2020.9054825]

[141]

Wu Y, Tao F, Liu L, Gu JY, Panneerselvam J, Zhu RB, Shahzad MN. A Bitcoin transaction network analytic method for future blockchain forensic investigation. IEEE Trans. on Network Science and Engineering, 2020.

[2]

刘敖迪, 杜学绘, 王娜, 李少卓. 区块链技术及其在信息安全领域的研究进展. 软件学报, 2018, 29(7): 2092–2115. http://www.jos.org.cn/1000-9825/5589.htm

[8]

邹均, 张海宁, 唐屹, 李磊, 刘天喜, 陈晖. 区块链技术指南. 北京: 机械工业出版社, 2016. 109–219.

[42]

比特币区块链分叉研究. 通信技术, 2018, 51(1): 149-155.

[doi:10.3969/j.issn.1002-0802.2018.01.027]

[78]

钱卫宁, 邵奇峰, 朱燕超, 金澈清, 周傲英. 区块链与可信数据管理: 问题与方法. 软件学报, 2018, 29(1): 150–159. http://www.jos.org.cn/1000-9825/5434.htm

区块链系统攻击与防御技术研究进展

区块链系统攻击与防御技术研究进展

  软件学报  2021, Vol. 32 Issue (5): 1495-1525

  PDF    

引用本文

田国华, 胡云瀚, 陈晓峰. 区块链系统攻击与防御技术研究进展[J]. 软件学报, 2021, 32(5): 1495-1525. http://www.jos.org.cn/1000-9825/6213.htm

  

Tian GH, Hu YH, Chen XF. Research Progress on Attack and Defense Techniques in Block-chain System[J]. Journal of Software, 2021, 32(5): 1495-1525(in Chinese). http://www.jos.org.cn/1000-9825/6213.htm  

区块链系统攻击与防御技术研究进展

田国华

,

胡云瀚

,

陈晓峰

    

西安电子科技大学 网络与信息安全学院, 陕西 西安 710071

收稿时间: 2020-07-30; 修改时间: 2020-10-20; 采用时间: 2020-11-29; jos在线出版时间: 2021-01-15

基金项目: 山东省重点研发计划(2019JZZY020129)

作者简介:

田国华(1993-), 男, 博士生, 主要研究领域为区块链, 云计算, 信息安全;胡云瀚(1997-), 男, 硕士生, 主要研究领域为区块链, 信息安全;陈晓峰(1976-), 男, 博士, 教授, 博士生导师, CCF专业会员, 主要研究领域为公钥密码学, 云计算安全, 数据安全, 区块链.

通讯作者:

陈晓峰, E-mail: xfchen@xidian.edu.cn.

摘要: 区块链作为一种多技术融合的新兴服务架构,因其去中心化、不可篡改等特点,受到了学术界和工业界的广泛关注.然而,由于区块链技术架构的复杂性,针对区块链的攻击方式层出不穷,逐年增加的安全事件导致了巨大的经济损失,严重影响了区块链技术的发展与应用.从层级分类、攻击关联分析两个维度对区块链已有安全问题的系统架构、攻击原理、防御策略展开研究.首先,按照区块链层级架构对现有区块链攻击进行归类,介绍了这些攻击方式的攻击原理,分析了它们的共性与特性;其次,分析总结了已有解决方案的思路,提出了一些有效的建议和防御措施;最后,通过攻击关联分析归纳出多个区块链攻击簇,构建了一个相对完整的区块链安全防御体系,展望了区块链技术在未来复杂服务场景下的安全态势.

关键词:

区块链    去中心化    不可篡改性    区块链安全    区块链攻击簇    

Research Progress on Attack and Defense Techniques in Block-chain System

TIAN Guo-Hua

,

HU Yun-Han

,

CHEN Xiao-Feng

    

School of Cyber Engineering, Xidian University, Xi'an 710071, China

Foundation item: Shandong Provincial Key Research and Development Program (2019JZZY020129)

Abstract: Blockchain, as an emerging service architecture integrating multi-technology, has attracted extensive attention from the academia and industry due to its decentralization and immutability. However, blockchain is vulnerable to various attacks due to its complex architecture, and the increasing security incidents year by year lead to huge economic losses, which seriously hampers the development and application of blockchain technology. This work studies the architecture, principle, and defenses of existing blockchain attacks from two dimensions of hierarchical classification and attack association analysis. Firstly, the existing blockchain attacks are classified according to the hierarchical structure of the blockchain, the attack principles of these attacks are introduced, and their commonness and characteristics are analyzed. Secondly, some efficient defenses are given based on the analysis and summary of the existing solutions. Finally, this study constructs a comprehensive blockchain defense system based on several blockchain attack clusters summarized by attack association analysis, and prospects the security situation of blockchain in complex service scenarios in the future.

Key words:

block-chain    decentralization    immutability    block-chain security    block-chain attack cluster    

区块链是一种基于P2P(peer to peer)网络、共识机制、密码学技术、智能合约等多种计算机技术的分布式账本技术, 其多元融合的技术架构赋予了自身公开透明、去中心化、不可篡改和可编程等技术特点, 为解决传统服务架构中的信任问题和安全问题提供了新思路, 给社会传统行业的快速发展带来了新的契机.因此, 区块链技术的发展受到了学术界和工业界的广泛关注[1-4], 其重要性甚至已经上升至我国的国家科技发展战略层面.

然而, 区块链的多技术融合架构在赋予区块链技术多种优良技术特性的同时, 也因为自身结构的复杂性和应用场景的多样性, 而导致区块链面临诸多安全威胁.恶意攻击者可能针对区块链应用的底层技术缺陷、低耦合性等安全漏洞展开攻击, 从而非法攫取利益[5].据区块链安全公司派盾(Peck Shield)的数据显示[6]: 2019年全年大约发生了177起区块链安全事件, 给全球造成的经济损失高达76.79亿美元, 环比增长了60%.随着区块链应用进程的不断推进, 越来越多的安全问题和攻击方式出现在人们的视野中, 其中既存在针对区块链技术架构的普适性攻击方式, 例如51%攻击[7]、双花攻击[8]、交易顺序依赖攻击[9]等, 也存在针对特殊场景的特定攻击方式, 譬如芬尼攻击[10]、粉尘攻击[11]等.这些安全问题不仅会导致直接的经济损失, 还会引起社会各界对区块链技术的质疑, 严重影响了区块链技术的发展进程.因此, 只有采用有效的防御策略和相关技术, 才能保证区块链良好的网络环境, 促进区块链技术的快速发展.

本文第1节概述区块链技术的系统架构、发展历程及安全态势, 按照区块链层级架构对区块链网络中现有的安全问题进行归纳总结, 确定层级分类、攻击关联分析两个综述维度.第2节~第6节从层级分类的横向维度出发, 分别从攻击场景、攻击目标、攻击原理等方面分析论述已有区块链攻击的共性与特性, 并在分析相应解决方案的同时, 给出一些有效的防御策略.第7节从攻击关联分析的纵向维度出发, 研究跨层级的区块链攻击场景, 分析并归纳出一系列的区块链攻击簇, 并针对性地构建出一个相对全面的区块链安全防御体系.第8节总结全文, 评估区块链技术当前的安全态势, 展望区块链技术在未来复杂服务场景中面临的机遇与挑战.

1 区块链概述

1.1 区块链简介

2008年, Nakamoto首次提出一种基于P2P网络、分布式数据存储、共识机制等技术的电子现金系统——比特币[12].该系统允许用户节点自由加入、退出, 因此具备公开透明的特点; 系统中的节点在不需要中心化机构的情况下, 通过P2P网络维护分布式账本即可实现点对点的可信交易, 所以该系统具备去中心化的特点; 全网节点间不需要彼此信任, 通过共识机制即可对各节点维护的账本达成一致认知, 因此, 该系统具备去信任化的特点; 在维护账本的过程中, 系统中的交易被矿工打包成区块并广播至全网, 用户节点根据该区块中存储的上一区块的hash值进行链式存储.当入链“深度”超过6之后, 该区块中的数据将无法被篡改, 所以该系统具备不可篡改性[13].因此, 比特币可以看作是一个由全网节点集体维护的分布式账本, 为解决传统服务架构中的信任问题带来了新思路, 在诸多领域中都具有十分重要的研究和应用价值[14].

区块链则是在比特币技术基础上提炼发展而来的新兴技术体系[15], 在比特币原有技术架构上增加了智能合约、密码学技术等计算机技术, 具备更好的可编程性和数据隐私保护.其发展历程可以大致分为3个阶段[16].

●区块链1.0, 可编程货币时代, 这个阶段奠定了区块链技术的理论基础, 初步形成了相对完善的技术体系, 应用场景主要为数字金融领域, 经典应用为比特币.

●区块链2.0, 可编程应用时代, 通过引入新型的共识算法、智能合约等技术, 赋予区块链更好的可编程性和兼容性.应用场景由金融服务领域向游戏、医疗、教育等领域延伸, 代表应用为以太坊[17].

●区块链3.0, 可编程社会时代, 各行业的区块链应用发生融合, 形成以现实社会为依托的区块链生态体系.由2.0时代的与行业相结合, 转变为与社会相结合.

随着人们对区块链技术的不断重视, 无论是区块链技术的理论研究还是应用开发都得到了快速的发展.到目前为止, 关于区块链技术的理论研究已经进入2.0, 甚至3.0阶段, 而区块链的应用开发则处于1.0到2.0的过渡阶段[18].大量数字货币钱包应用的研发部署以及交易所、商家的出现, 使得区块链技术与金融服务行业相结合, 形成了一个相对成熟的新支付体系.与此同时, 各大银行携手金融科技公司组建区块链大联盟, 例如R3 CEV[19], China Ledger[20]等, 通过成立区块链实验室来发展核心业务, 尝试对区块链2.0阶段展开深入探索, 旨在研究区块链技术与传统行业实际应用场景的兼容性, 并以此建立区块链在2.0阶段的发展标准, 加快区块链技术的应用进程.此外, Cisco[21]联合金融及其他行业公司组成超级账本(Hyperledger)[22]联盟, 对区块链在3.0阶段展开探索, 旨在制定区块链技术未来的发展规划和标准.

1.2 区块链安全态势

区块链的多技术融合架构在赋予自身公开透明、去中心化、不可篡改等特点的同时, 也因其复杂性导致区块链面临诸多安全威胁.在区块链1.0的应用进程中, 区块链技术的安全漏洞在复杂多样的应用场景中愈加明显, 攻击者可以针对这些安全漏洞发起恶意攻击, 从而非法攫取利益[5].此外, 在数据即价值的时代, 攻击者的目标不再局限于代币的双花和盗取, 蕴涵交易隐私、用户隐私的区块链数据成为了攻击者的新目标.

在区块链网络中, 针对相同的安全漏洞或攻击目标, 可能存在多种不同的攻击方式.如图 1所示, 根据攻击漏洞或目标所属的区块链层级, 可对现有区块链攻击方式做如下分类.

图 1

Fig. 1

Fig. 1 Classification of attacks in block-chain

图 1 区块链攻击分类

(1) 数据层攻击: 数据层、网络层和共识层是区块链技术体系中最基础、最必要的3个层级, 而数据层是其中最重要的一层, 主要涉及区块链的数据结构、数字签名、哈希函数等密码学工具.这些密码学工具在保护区块链数据隐私的同时, 其固有的碰撞攻击[23]、后门攻击[24]等安全问题也给区块链数据隐私带来了一定威胁.此外, 攻击者也可能通过交易延展性攻击[25]和恶意信息攻击破坏交易秩序和区块链网络环境.因此, 区块链数据层面临的安全威胁主要包含数据隐私窃取和恶意数据攻击.

(2) 网络层攻击: 网络层是区块链技术体系中最基础的层级, 主要包含P2P网络组网方式、消息传播协议等模块, 赋予了区块链去中心化、不可删除、不可篡改的技术特性.区块链网络层面临的安全威胁主要是针对P2P网络的恶意攻击, 攻击者可能通过漏洞植入、路由劫持、资源占用等方式扰乱区块链网络的正常运行, 也有可能利用交易延迟攻击来破坏区块链网络交易环境.

(3) 共识层攻击: 共识层是区块链技术体系的核心架构, 其中的共识算法可以保证全网节点在去信任化的场景中对分布式账本数据达成共识, 为区块链的去中心化、去信任化提供了保障.共识层面临的安全威胁主要是, 攻击者可以通过各种手段阻止全网节点达成正确的共识.在授权共识机制中, 各节点对共识过程的影响相同, 所以易遭受女巫攻击[26]; 而在非授权共识机制中, 各对等节点利用自身所持资源(如算力、权益)竞争记账权, 进而达成共识.投入的资源越多, 则成功率越高, 因此易遭受51%攻击.攻击者可能出于利益目的, 通过贿赂攻击[27]、币龄累计攻击[28]等方式非法获取大量资源, 从而发起51%攻击, 以实现代币双花、历史修复、期货卖空、自私挖矿等目的.此外, 攻击者还可以通过无利害关系攻击[29]、预计算攻击[30]等方式影响全网共识进程, 进而获利.

(4) 合约层攻击: 合约层是区块链实现点对点可信交互的重要保障, 主要包括智能合约的各类脚本代码、算法机制等, 是区块链2.0的重要标志.合约层面临的安全威胁可以分为智能合约漏洞和合约虚拟机漏洞: 智能合约漏洞通常是由开发者的不规范编程或攻击者恶意漏洞植入导致的, 而合约虚拟机漏洞则是由不合理的代码应用和设计导致的.

(5) 应用层攻击: 应用层是区块链技术的应用载体, 为各种业务场景提供解决方案, 可分为挖矿和区块链交易两类场景.在挖矿场景中, 攻击者可能通过漏洞植入、网络渗透、地址篡改等方式攻击矿机系统, 从而非法获利; “聪明”的矿工也可能利用挖矿机制的漏洞, 通过算力伪造攻击[31]、扣块攻击[32]、丢弃攻击[33]等方式谋求最大化的收益.在区块链交易场景中, 攻击者可能利用撞库攻击[34]、0day漏洞[35]、API接口攻击[36]等方式非法获取交易平台中用户的隐私信息, 也可能通过钓鱼攻击[37]、木马劫持攻击[38]等方式获取用户账户的隐私和资产.

在实际的区块链攻击场景中, 攻击者发起攻击旨在非法获取最大化的利益, 但并不是所有的区块链攻击方式都可以使攻击者直接获利.此外, 部分区块链攻击对实施场景和条件要求过高, 使得其可行性受到了严重的制约.因此, 攻击者通常采用一系列跨层级的区块链攻击方式来实现最大化的获利目的, 本文称这种攻击序列为攻击簇.例如: 现实场景中, 攻击者利用自身资源发起51%攻击是不现实的, 所以他们可能通过傀儡挖矿[39]、贿赂攻击、币龄累计攻击等方式非法获取记账权竞争资源, 然后发起51%攻击, 进而实现双花攻击、历史修复攻击[40]、卖空攻击[41]等.显然, 研究区块链安全态势, 不仅要从层级分类的横向维度对单个攻击展开分析, 还要从攻击关联分析的纵向维度对跨层级的攻击簇进行研究, 才有可能构建出全面有效的区块链安全防御体系.

2 区块链数据层攻击

数据层是区块链技术中最底层的技术框架, 主要封装了区块链中的各式数据结构, 其安全性从根本上决定着区块链网络的安全性.本节将从数据隐私窃取和恶意数据攻击两个方面对数据层的潜在安全威胁进行剖析.

2.1 数据隐私窃取

区块链数据层使用了大量的密码学工具来保证区块链数据的不可篡改性和安全性.然而, 这些密码学工具的固有安全隐患给区块链安全性带来了严峻的挑战.此外, 区块链网络中用户节点在参与区块链交易、账本维护时需要公开一些信息, 如交易内容、交易金额、用户身份等, 而这些信息与用户节点的行为特征密切相关, 存在泄露用户隐私的风险.因此, 区块链网络的数据隐私主要面临以下威胁.

(1) 碰撞攻击(collision attack)[23]: Hash函数是一种单向散列函数, 可以将任意长度的输入转换为固定长度的输出, 而其输出值的长度决定了输出值的数量空间.从数学角度来看, 从均匀分布的区间[1, d]中随机取出n个整数, 至少两个数字相同的概率可用如下公式表示:

$P(d, n) = \left\{ {\begin{array}{*{20}{l}}

{1 - \prod\nolimits_{i = 1}^{n - 1} {\left( {1 - \frac{i}{d}} \right)} , {\rm{ }}n \leqslant d} \\

{1, {\rm{ }}n > d}

\end{array}} \right., $

即Hash函数中, 不同的输入可能会获得相同的输出, 这种现象被称为Hash碰撞.攻击者可能利用Hash函数中存在的Hash碰撞发起碰撞攻击, 进而实现获取用户数据隐私、破坏区块链系统的目的.

(2) 后门攻击(backdoor attack)[24]: 密码算法、零知识证明[42]等工具的使用, 保证了区块链数据的机密性和完整性, 而在实际的区块链开发过程中, 开发人员更倾向于直接调用已有的开源密码算法.这些开源算法中可能存在被植入的后门, 这严重威胁到了区块链数据的安全性.比较典型的案例是: 美国国家安全局在RSA算法中安插后门[43], 一旦用户调用了被植入后门的RSA算法, 攻击者便可以直接通过用户公钥计算得出私钥, 进而解密并访问被加密数据.

(3) 量子攻击(quantum attack)[44]: 时间复杂度是衡量密码算法相对于现有计算水平安全性的重要指标, 而量子计算技术带来的计算能力提升, 打破了密码学算法的安全现状.很多原本计算上不可行的恶意攻击, 在量子计算的架构下变得可行, 这种新的攻击模式被称为量子攻击.量子攻击的出现, 将给现有信息安全体系带来毁灭性打击, 而与信息安全相关的产业势必受到强烈的冲击.在区块链技术体系中, 比特币的挖矿机制、区块链的不可篡改性、区块链数据的机密性等方面都将面临严峻的挑战.

(4) 交易特征分析(transactional analysis)[45]: 攻击者通过窃听、木马劫持等手段获取大量的用户公开信息, 并对匿名账户进行身份画像, 通过用户行为特征分析和交易特征分析相关联的方式, 获取目标用户的身份隐私和交易隐私.以比特币为例, 用户使用一次性身份(假名)进行匿名交易, 而用户资产上的签名是可以被公开验证的.恶意敌手可以通过对用户行为建模分析, 分析比对假名信息, 从而获取用户的真实身份.Androulaki等人[46]在学校中设计模拟实验, 让学生使用比特币作为日常交易货币, 分析人员采用基于行为的聚类技术对比特币交易数据进行分析, 发现即使用户采用比特币推荐的隐私保护方法(一次性地址策略), 也能够将40%的学生身份和区块链地址匹配.

2.2 恶意数据攻击

去中心化的分布式架构赋予区块链不可篡改的特性, 数据一旦上链, 则通过区块链网络广泛流传, 并且不可篡改.攻击者可能利用区块链数据结构的技术弱点, 通过以下方式影响区块链正常运转, 破坏网络环境.

(1) 交易延展性攻击(transaction malleability attack)[25]: 以比特币系统为例, 攻击者在发出提现交易A后, 可以在A确认之前, 通过修改某些交易数据, 使得一笔交易的唯一标识(交易哈希)发生改变, 得到新交易B.假设交易B先被记录到比特币账本中, 那么矿工会认为交易A存在双重支付问题, 拒绝打包进区块中.此时, 攻击者可以向交易所申诉, 尝试获取交易A中标明的代币数量.一旦申诉通过, 则将导致交易所资金大量流失.

(2) 恶意信息攻击(malicious information attack)[47]: 随着区块链技术的不断更迭, 链上数据内容也不再局限于交易信息, 这为一些文件、工程代码, 甚至个人敏感信息上链提供了可能.多元化的数据结构和类型在促进区块链技术快速发展的同时, 也为恶意信息上链提供了可能.而恶意信息攻击的主要方法就是攻击者在区块链中写入恶意信息, 例如病毒特征码、恶意广告、政治敏感话题等, 借助区块链分布式的结构广泛流传.由于区块链不可删除、不可篡改的特性, 一旦恶意信息被写入区块链, 则将导致杀毒软件报毒, 或者引起政治敏感等多方面的问题.

2.3 防御策略与方法

数据层攻击的共性在于攻击者均以区块链数据为攻击目标, 其特性则在于攻击者攻击目的和攻击原理的不同: 数据隐私窃取攻击旨在帮助攻击者获得区块链数据中蕴含的用户隐私, 从攻击原理上又可划分为基于密码学工具安全隐患的攻击和基于交易关联分析的攻击; 而恶意数据攻击则是攻击者根据区块链的技术弱点或特性生成恶意数据并上链, 从而达到妨碍区块链系统正常运行的攻击目的.

从隐私保护的角度来看, 尽管当前区块链技术体系中使用的密码学工具都被认为是安全的, 只要能在开发过程中确保使用无后门的密码算法, 即可保证区块链网络的安全性.但从长远来看, 现有密码学工具的安全性势必受到以量子计算为代表的新一代计算技术的冲击, 只有在适当的时间节点替换更安全、更高效的密码学工具, 才能保证区块链的稳健性和安全性.一方面, 尽管区块链使用的SHA-256等哈希算法目前是相对安全的, 但被攻破只是时间问题, 所以必须加快推进安全哈希算法的研究进展, 设计具备强抗碰撞性的哈希算法, 以保证区块链技术的不可篡改性; 另一方面, 区块链数据的安全性主要依靠密码算法的安全性, 而当前常用的密钥长度为1 024位的RSA加密算法, 在量子攻击下只需几秒即可完成破译, 所以必须加快以抗量子密码算法为核心的抗量子区块链技术体系的预研进程, 保证区块链技术在后量子时代的安全性和可用性.

此外, 虽然当前几乎所有的区块链技术都支持匿名交易, 用户的交易地址通常由用户自行创建保存, 且与真实身份无关, 部分区块链系统尝试利用零知识证明等技术(如Zcash[48])来保护交易过程中用户的身份隐私, 然而, 交易数据关联性分析、用户行为习惯分析等技术仍然可以在一定程度上帮助攻击者获取用户的身份隐私和交易隐私.为此, 用户节点可以考虑采用以下3种防御策略.

(1) 数据混淆: 对交易内容的数据进行混淆, 降低攻击者获取目标信息的成功率, 增加攻击难度.

(2) 数据加密: 将交易中的特定信息加密, 减少攻击者可获取的信息量, 降低其用户身份画像的准确性.

(3) 隐蔽传输: 通过隐蔽信道传输对隐私要求较高的交易数据, 阻止攻击者获取相关信息.

从区块链数据的角度来看, 攻击者之所以可以进行交易延展性攻击, 是因为当前大多数挖矿程序采用OpenSSL开源软件库校验用户签名, 而OpenSSL兼容多种编码格式, 部分编码方案的实现存在一定的问题.例如: 在OpenSSL实现的椭圆曲线数字签名算法(ECDSA)中, 签名(r, s)和签名(r, -s(mod n))都是有效的.因此, 只要签名数据没有产生太大的变化, 都能够被认为是有效签名.Wuille等人[49]提出了一种叫做隔离见证(segregated witness)的方法, 通过将区块签名信息单独存放, 使得区块头的交易哈希值完全由交易信息决定, 在交易内容没有发生变化的情况下, 即使签名信息被改变, 交易哈希也不会发生变化.此时, 攻击者只有掌握了私钥, 才能改变交易的哈希值.同时, 当遇到无法确认的交易时, 矿工应该立即停止交易验证, 并根据区块链上的交易报错信息, 查看是否在短时间内已经发起了这样的交易, 再做进一步处理.

此外, 攻击者实施恶意信息攻击则是因为区块链网络中不存在可以审查上链数据的独立节点, 简单增加内容监管节点的方式势必会弱化区块链网络的去中心化特性, 不具备可行性.所以可以尝试以下方法和策略.

(1) 从区块链通用模型设计入手, 通过设计特定的区块结构来限制可存储数据的格式, 在一定程度上限制特定格式病毒、文件等数据上链, 缓解恶意数据给区块链网络带来的威胁.

(2) 设计相应的激励和奖惩机制, 结合智能合约等技术, 鼓励矿工验证待上链数据的合理性和合法性, 对上传恶意数据的节点进行惩罚, 限制其链上交易行为.

(3) 利用机器学习[50]等技术对待上链数据进行过滤, 可以在一定程度上阻止恶意数据被写入区块链.

3 区块链网络层攻击

网络层是区块链技术体系中最基础的技术架构, 封装了区块链系统的组网方式、消息传播协议和数据验证机制等要素, 使区块链具备了去中心化、不可篡改的技术特性.本节将对P2P网络中存在的安全威胁进行剖析.

3.1 针对P2P网络的攻击

P2P网络主要涉及用户客户端和对等网络结构, 攻击者可能针对这两个方面展开如下攻击.

(1) 客户端漏洞(client vulnerability)[51]: 尽管现有全节点客户端的底层协议互相兼容, 增强了比特币网络的健壮性, 但客户端代码中可能存在诸多安全漏洞, 并且这些漏洞会随着客户端类型的增加而增加.攻击者可以利用0day漏洞扫描等技术扫描客户端中存在的漏洞, 然后利用这些漏洞发起各种攻击. 2018年, 区块链安全公司Peck Shield披露了一个安全漏洞, 攻击者可以向以太坊客户端发送特定恶意报文, 一旦成功, 将导致2/3的以太坊节点下线.

(2) 窃听攻击(eavesdropping attack)[52]: 攻击者可以通过网络窃听, 获取区块链用户节点的网络标识, 并将其与IP地址关联起来, 进而获取用户节点的隐私信息, 甚至可以追溯到用户的实际家庭地址.以比特币为例, 用户通过连接一组服务器来加入比特币网络, 这个初始连接集合就是该用户的唯一入口节点.攻击者可以通过与比特币服务器建立多个连接, 以窃听客户端与服务器端的初始连接, 获得客户端的IP地址.随着交易流经网络, 攻击者将窃听得到的IP地址与已有的客户端入口节点进行匹配, 若成功, 则攻击者便可获知交易的来源.

(3) 日蚀攻击(eclipse attack)[53]: 攻击者通过特定手段使得目标节点只能获得被操纵的、伪造的网络视图, 将其从实际的网络视图中隔离出来, 从而妨碍目标节点正常运转, 以达成特定的攻击目的.如图 2所示, 攻击者操纵多个对等节点与目标节点保持长时间的传输连接, 使其在线链接数达到目标节点的入站连接上限, 从而阻止其他合法节点的连接请求.此时, 目标节点被攻击者从P2P网络中“隔离”出来, 导致目标节点无法正常维护区块链账本.

图 2

Fig. 2

Fig. 2 Eclipse attack

图 2 日蚀攻击

(4) 边界网关协议(border gateway protocol, 简称BGP)劫持攻击[54]: BGP是因特网的关键组成部分, 敌手可以通过劫持BGP来实现操纵互联网路由路径的目的.由于区块链是基于互联网来传递信息的, 劫持BGP可以实现对区块链节点流量的误导和拦截.攻击者一旦接管了节点的流量, 就可以通过影响区块链网络的正常运行来破坏共识和交易进程.例如, 比特币系统的大部分节点都被托管至几个特定的互联网服务提供商, 大约60%的比特币连接都会通过这些特定服务商, 所以攻击者一旦接管了这部分流量, 将可以通过BGP路由劫持破坏区块链网络的完整性, 甚至导致区块链网络瘫痪.

(5) 分割攻击(segmentation attack)[55]: 攻击者通过BGP劫持攻击将区块链网络划分成两个或多个不相交的网络, 此时的区块链会分叉为两条或多条并行支链.攻击者可以在多个支链网络中将同一笔电子货币兑换成现实商品或法币.BGP劫持攻击停止后, 区块链重新统一, 以最长的链为主链, 其他的链上的交易、奖励等全部失效, 攻击者由此获利.

(6) DoS攻击(denial-of-service attack)[56]: 即拒绝服务攻击, 攻击者利用大量网络资源攻击计算机系统或网络, 使其停止响应甚至崩溃, 从而拒绝服务.实际中, 用户节点资源通常受限, 攻击者只能通过图 3所示的分布式DoS攻击(distributed denial-of-service, 简称DDoS)[57]整合零散网络带宽来实施DoS攻击. 2017年5月, Poloniex交易平台遭受了严重的DDoS攻击[58], 导致比特币价格被锁定在1 761美元, 用户无法正常执行交易.此外, 当区块链网络中的大部分矿工无法盈利时, 可能通过拒绝为区块链网络服务而发起BDoS攻击(blockchain denial of service, 简称BDoS)[59], 导致区块链网络瘫痪.

图 3

Fig. 3

Fig. 3 DDoS attack

图 3 DDoS攻击

(7) 交易延迟攻击(transaction delay attack): 比特币闪电网络(lightning network)[60]通常使用哈希时间锁定技术[61]来实现安全的资产原子交换, 其安全性主要依赖于时间锁定和资金锁定.由于每一笔资金交换都需要通过时间锁定来规定该交易必须在某个时间段内完成.一些恶意节点短时间内建立大量交易, 然后故意超时发送, 致使网络发生阻塞, 影响正常运作.

3.2 防御策略与方法

网络层攻击的主要攻击目标是区块链底层的P2P网络, 其共性在于攻击者都是通过扰乱用户的之间的通信, 从而达到不同的攻击目的.根据攻击方式的特性, 区块链网络层攻击大致可以分为信息窃取类攻击、网络路由劫持类攻击和恶意资源占用类攻击.

(1) 信息窃取类攻击: 主要包括客户端代码漏洞和窃听攻击.在针对客户端代码漏洞的攻击场景中, 攻击者利用的漏洞可能是预先恶意植入的后门, 也可能是开发人员编写错误导致的.理论上, 无法完全杜绝类似的漏洞, 所以开发商应在软件安全开发生命周期[62]内, 通过Fuzzing[63]、代码审计[64]、逆向漏洞分析[65]、反逆向工程[66]等技术对客户端的安全性进行评估, 以缓解类似漏洞带给用户的安全威胁.在窃听攻击场景中, 攻击者可以通过网络监听等手段获取用户身份、地址等隐私信息, 其关键在于用户的区块链网络标识唯一, 攻击者可以将窃听得到的IP地址与已有的客户端入口节点进行匹配, 从而获得交易数据来源和用户隐私.为了预防窃听攻击, 用户应采用混淆的交易方法来打破交易过程中用户唯一标识与IP地址之间的一一对应关系.具体地, 多个用户可以通过共享唯一网络标识, 实现“一对多”或“多对一”的交易, 以此混淆用户唯一标识与IP地址之间的一一对应关系, 使得攻击者无法通过匹配用户标识和IP地址来获取用户隐私.此外, 在交易数据的传输过程中, 应使用可靠的加密算法实现数据的加密传输, 防止恶意攻击者对网络节点的信息进行窃取.

(2) 网络路由劫持类攻击: 主要包括日蚀攻击、BGP劫持攻击和分割攻击, 它们的攻击原理相似, 攻击目标分别为单个节点、节点集合和P2P网络.攻击者通过改变节点的网络视图, 将目标节点集合从区块链网络中隔离出来, 从而达成控制区块链网络的目的.以比特币系统为例, 攻击者可以通过这3种攻击迫使部分矿工节点“离线”, 导致区块链全网实际算力的流失, 从而使攻击者的算力在全网总算力中的占比不断上升.当算力超过全网算力的一半时, 攻击者可以以远低于原全网51%的算力发动51%攻击(详见第4节).与通过提升自身算力来实施51%攻击的方式相比, 通过日蚀攻击和BGP劫持攻击来提升自身攻击优势的方式更加经济.攻击者之所以可以发起日蚀攻击, 其关键在于目标节点无法判断已连接节点的身份.为了预防日蚀攻击, Letz等人[67]提出了共识信誉机制BlockQuick.BlockQuick中的网络节点在接受新产生的区块时, 会对矿工的加密签名进行验证, 并将该矿工的身份与共识信誉表中已知矿工的身份进行比对.最终, 当共识得分大于50%时, 网络节点才会接受该区块; 否则, 节点察觉出攻击者的日蚀攻击行为并拒绝该区块.而在BGP劫持攻击和分割攻击场景中, 攻击者主要通过BGP路由劫持实现网络视图分割.针对这个问题, 研究人员提出了自动实时检测与缓解系统(ARTEMIS)[68], 可以在几分钟内帮助服务提供商解决BGP劫持问题, 使得实时流的公共BGP监控服务成为可能.

(3) 恶意资源占用类攻击: DoS, DDoS攻击属于通过恶意资源占用实现的拒绝服务攻击, 目前已经存在很多有效的防御工具, 如DoS防火墙[69]等.而BDoS和交易延迟攻击则属于社会工程学类攻击, 解决此类攻击只能通过不断完善激励制度和奖惩制度、优化网络环境等社会工程学手段.

4 区块链共识层攻击

共识层是区块链技术体系的灵魂, 主要封装了区块链的各类共识算法, 是保证区块链全网节点达成正确共识的关键.本节将从授权共识机制和非授权共识机制两个方面对共识层存在的安全威胁进行分析评估, 并尝试给出一些解决思路.

4.1 针对授权共识机制的攻击

授权共识机制是指在授权网络(联盟链、私有链)中, 节点须通过身份认证才能加入网络, 与其他节点为达成某种共识而共同运行的特定分布式一致性算法.经典的授权共识算法包括拜占庭容错机制(Byzantine fault tolerance, 简称BFT)[70]、实用拜占庭(practical Byzantine fault tolerance, 简称PBFT)[71]以及权威证明算法(proof of authority, 简称PoA)[72]等.BFT系列共识算法可以在总节点数为N=3f+1、恶意节点数不超过f的情况下确保全网节点达成正确的共识(即容错率为1/3).

(1) 女巫攻击(sybil attack)[26]: 泛指网络中攻击者通过操作多个不同身份, 以实现特定目标的攻击行为.在区块链网络中, 攻击者可能通过发起女巫攻击以实现恶意刷票、刷排名、刷信誉等攻击目的.在BFT算法中, 假设A, B, C, D中点C是攻击者, 可以获得多个伪装身份C1, C2, C3, 使得攻击者持有的节点数量超过总节点数的1/3.此时, C操纵C, C1, C2, C3不断发出错误指令, 则共有7个节点(A, B, C, C1, C2, C3, D)运行BFT算法, 最终会导致全网达成一个错误的共识.

(2) 克隆攻击(Cloning attack)[73]: 在PoA系统中, 攻击者利用系统中记账节点集合固定的缺点, 通过BGP劫持、分割攻击等手段将区块链网络视图分为两个, 然后克隆得到两个使用相同地址或公私钥对的克隆体, 并分别部署至两个视图独立的支链.此时, 攻击者可以就同一笔代币在两个网络中进行交易, 待交易结束后, 攻击者解除路由劫持, 区块链网络节点通过最长链或最大权重原则统一区块链主链, 攻击者实现了双花攻击.

4.2 针对非授权共识机制的攻击

非授权共识机制是指在非授权网络(公有链)中, 节点无需身份认证, 即可加入网络与其他节点为达成某种共识而共同运行的特定共识算法.经典非授权共识算法包括工作量证明机制(proof of work, 简称PoW)[12]、权益证明机制(proof of stake, 简称PoS)[28]、信誉证明机制(proof of reputation, 简称PoR)[74]及其衍生算法: 委托权益证明机制(delegated proof of stake, 简称DPoS)[75]、评价证明机制(proof of review, 简称PoR)[76]、PoR/PoS混合共识机制(PoR/PoS-hybrid)[77]等.授权共识算法中, 各节点达成共识消耗的是等价的参与权, 即节点共识权重相等.而在非授权共识机制中, 各节点通过消耗自身持有的“筹码”(PoW中代表算力Work, PoS中代表权益Stake)竞争记账权, 进而达成共识, 即节点共识权重不相等.非授权共识机制可以在本轮竞争“总筹码”为N=2n+1、恶意节点持有“筹码”不超过n的情况下, 确保全网节点达成正确共识(容错率为1/2).

4.2.1 恶意筹码获取

在非授权的共识机制中, 节点持有的“筹码”越多, 则其获得记账权的可能性越大.所以节点可能通过傀儡挖矿、贿赂攻击、币龄累计攻击等方式获取“筹码”, 以提高自己获得记账权的成功率.

(1) 傀儡挖矿攻击(puppet attack)[39]: 攻击者通过植入木马入侵大量网络节点, 部署挖矿程序, 盗用被入侵主机的电力、算力等资源挖矿获利.2018年初, 上百款《荒野行动》游戏辅助被植入挖矿木马, 利用游戏主机显卡的高性能来挖矿获利.同年, 攻击者在大量网站的首页植入Coinhive平台的门罗币(Monero)的挖矿代码[78], 通过网页端盗用网络节点资源挖矿获利, 导致该网站用户的系统运行变慢.

(2) 币龄累计攻击(coin age accumulation attack)[28]: 在基于“POW+POS”混合共识机制的区块链中, 节点持有的“筹码”不仅与其算力有关, 还与其持有的币龄有关.持币量越多、持币时间越长, 则节点持有的币龄越多.因此, 节点可以通过币龄累计攻击来获取更多的“筹码”: 买入一定数量代币后, 持有足够长时间后, 就可以获得足够多的币龄用于竞争记账权.

(3) 贿赂攻击(the bribing attack)[27]: 攻击者通过“恶意悬赏”, 鼓励矿工在攻击者指定的支链上进行挖矿, 当支链挖矿投入的“筹码”超过全网总筹码的一半时, 攻击者便通过51%攻击实现双花攻击、历史修复攻击、卖空攻击等.在PoW中, 贿赂攻击可以看作是一种算力租借方式, 被贿赂矿工需要消耗大量算力来挖矿, 因此攻击者的攻击成本较高; 而在PoS共识机制中, 被贿赂节点不需要消耗大量算力, 以较低成本便可赚取攻击者的悬赏, 因此贿赂攻击所需的成本较低, 常见于PoS系统.

除了通过增加“筹码”提高筹码占比的方法以外, 攻击者还可能通过网络层日蚀攻击、BGP路由劫持、分割攻击(详见第3节)等手段迫使大量节点离线, 使区块链网络的总算力流失, 从而提高自己的记账权竞争筹码占比和记账权竞争的成功率.

4.2.2 51%攻击

一旦存在恶意节点持有的“筹码”超过本轮记账权竞争总“筹码”的一半, 则其可以以较大的优势获得记账权, 并主导区块链达成特定共识, 本文称该攻击为短程51%攻击; 也可以如图 4所示, 利用资源优势计算并生成一条区块链支链, 使其长度超过当前主链, 并代替成为新的主链, 本文称这种攻击为长程51%攻击.

图 4

Fig. 4

Fig. 4 Fork of block chain

图 4 区块链分叉

在实际的区块链网络中, 攻击者可能将51%攻击作为一种子攻击, 进而实现以下几类攻击.

(1) 双花攻击(double spending attack)[8]: 以比特币系统为例, 攻击者在完成交易A后, 针对A花费的代币伪造交易B, 并发动长程51%攻击, 将一条包含交易B的支链变成新的主链.如此, 攻击者对相同的一组代币实现了“双重花费”.2016年8月, 基于以太坊的数字货币Krypton遭受了名为“51% Crew”的51%攻击[79], 攻击者通过租用Nicehash(算力买卖市场)的算力, 导致该区块链损失约21 465KR的代币.2018年, 比特币黄金社区的一位成员发文称: 有人在尝试进行针对交易所的双花攻击, 这一攻击造成了千万美元的损失[80], 同时引起了人们对于去中心化和PoW机制的质疑.

(2) 历史修复攻击(history-revision attack)[40]: 在区块链网络中, 当攻击者无法持续拥有超过竞争本轮记账权总筹码的一半以上筹码时, 攻击者和诚实节点的身份可能发生颠倒, 并导致多轮51%攻击.具体地, 当攻击者A成功发起51%攻击将他的支链变为主链时, 之前的主链变为支链, 诚实节点B变为“恶意节点”, A成为“诚实节点”.一旦B获得超过新一轮记账权总筹码的一半时, 便可作为“攻击者”发起51%攻击, 将他们的“支链”恢复为主链, 此时称B发起了历史修复攻击.

(3) 卖空攻击(shot selling attack)[41]: 51%攻击会破坏区块链系统, 导致其对应的代币贬值.尤其是在PoS共识机制下, “聪明”的矿工一般不会对基于PoS的区块链系统发动51%攻击.因为攻击者成功发起51%攻击, 意味着其持有大量代币, 而代币贬值将会给攻击者带来巨大的经济损失.但在支持证券信用交易的PoS系统中, 攻击者可能通过51%攻击发起卖空攻击来牟取暴利, 具体步骤如下.

① 攻击者持有数量为A的代币, 这些代币的权益需超过本轮投票总权益的一半以上.

② 攻击者通过证券信用交易或金融借贷等手段获得数量为B的代币, B的数量远大于A.这里的B是攻击者所借的证券, 攻击结束后, 需返还等额的代币给借贷方, 如交易所.

③ 攻击者将所借的代币套现, 兑换为具备实际价值的经济实体或货币.

④ 攻击者使用双花攻击、传统网络攻击等手段恶意影响区块链网络的正常运作, 从而使得基于该区块链的数字货币贬值, 此处将贬值率记为Δ.

⑤ 攻击者回购数量为B的代币偿还给借款方, 最终获利Δ(B-A).

(4) 自私挖矿攻击(selfish mining attack)[81]: 与双花攻击不同, 自私挖矿攻击是一种利用短程51%攻击持续性获取记账权, 进而赚取奖励的攻击方式, 常见于PoW系统中.攻击者通过短程51%攻击, 以较大优势比其他节点先挖到“矿”, 暂扣区块并赶在其他节点之前公布出来, 以获取记账权并赚取奖励.在延迟公布期间, 攻击者沿着之前的区块继续挖矿, 以积攒更多的优势, 保证他可以连续获得奖励.这种攻击不会破坏比特币的运行机制, 但会使其他节点的工作量无效化, 浪费了大量的算力.

4.2.3 其他攻击

(1) 无利害关系攻击(nothing at stake attack)[29]: 这是一种针对PoS共识机制的攻击方式, 攻击者可以在区块链产生分叉时, 使用权益同时为多个分叉出块, 以获取最大化的收益.由于攻击者无需像在PoW系统中消耗大量算力, 只需进行权益投票便可实现利益最大化, 因此也被称为“作恶无成本, 好处无限多”的无利害关系问题, 这变相地鼓励了区块链分叉的产生.“聪明”的矿工往往采取“在每条分叉上同时挖矿”的最佳策略以获取最大收益, 这将导致区块链产生过多分叉, 不再是唯一链.全网节点也因此无法达成共识, 进而引起双花攻击、非法交易的泛滥.

(2) 预计算攻击(pre-computation attack)[30]: 在“PoW+PoS”混合共识机制中, 当前区块难度取决于前一区块参数(如哈希值).攻击者可以在生成区块时, 通过随机试错法计算并选择一个对自己产生下一区块最有利的参数.通过这种方式, 攻击者有更大的优势可以获得下一区块的奖励.

(3) 长距离攻击(long range attack)[82]: PoS系统中, 区块的生成速度比PoW快很多, 所以攻击者可能尝试通过重写区块链账本, 从而实现代币双花等目的.这种攻击和PoW中的长程51%攻击的原理相似, 区别在于长距离攻击中, 攻击者不用消耗大量算力, 便可能伪造出一条新的区块链主链, 攻击成本更低, 所以带来的安全威胁更大.

4.3 防御策略与方法

共识层攻击的主要攻击目标是影响区块链的共识进程, 其共性在于攻击者都是利用共识机制的特点或缺陷来提高自身竞争记账权的成功率, 从而使区块链沿着对攻击者有利的方向发展, 以实现妨碍网络正常运行、货币双花、最大获利等实际目的.其特性则在于各个攻击的场景、目的、方式的不同.授权共识机制中, 攻击者持有的有效节点身份数量是影响共识进程的关键.而在非授权共识机制中, 算力、权益等类型的资源才是影响共识进程的关键.同时, 攻击者为了获取更多资源, 可能采用诸多恶意的筹码获取手段来提升自己竞争记账权的成功率.此外, 在一些特殊的系统中, 攻击者无需积累“资源”便可实现最大化收益.

在授权共识机制中, 攻击者需持有超过全网1/3的节点才有可能主导区块链网络达成有利于自己的共识, 即攻击者操纵了多个节点身份, 发起了女巫攻击.在女巫攻击的场景中, 攻击者可能通过伪造等手段获取多个节点身份, 也可能通过胁迫、腐化等手段控制多个节点, 而其他节点无法检测、判断出攻击者持有节点身份的数量及其之间的内部关系.因此, 阻止女巫攻击的关键在于阻止攻击者获取多重身份, 可以考虑以下策略.

(1) 采用节点身份验证机制, 通过身份验证防止攻击者伪造节点身份.目前, 部分私有链采用了PoA共识机制, 如Aura[72]、Clique[83]等, 该机制通过随机密钥分发与基于公钥体制的认证方式, 使得攻击者无法在区块链网络中伪造多个身份, 在一定程度上缓解了女巫攻击.

(2) 采用高成本的多身份申请机制, 通过提高身份伪造成本缓解女巫攻击.尽管节点身份验证机制可以阻止攻击者伪造身份, 但在实际中, 这种方式无法满足诚实节点对多节点身份的正常需求.因此, 可以考虑在区块链中引入首次申请身份免费、多次申请成本指数式升高的身份申请机制, 在满足节点对多身份正常需求的同时, 指数式增加攻击者的攻击成本, 缓解女巫攻击带来的安全威胁.

理论上, 女巫攻击也可以出现在非授权的共识场景中, 但由于非授权共识算法中的节点是通过自身持有的“筹码”竞争记账权, 多重身份伪造意味着攻击者“筹码”的分流, 但“筹码”总量不会发生变化, 而攻击者实施女巫攻击不但不能提高自己获得记账权的成功率, 反而有可能导致其成功率降低, 所以女巫攻击不会对非授权共识机制的共识过程产生实质性影响.

克隆攻击是一种专门针对PoA系统的攻击方式, 攻击者成功实施克隆攻击的关键, 一方面在于PoA系统中记账节点集合恒定不变的固有缺陷, 另一方面在于攻击者是否能通过BGP劫持攻击、分割攻击成功实现网络分区.因此, 解决克隆攻击的关键在于如何阻止攻击者成功实施BGP劫持攻击、分割攻击, 所以可以考虑采用第3.2节中的ARTEMIS系统预防攻击者进行网络分区, 从源头阻止克隆攻击.然而, ARTEMIS系统只能在网络发生异常时发现区块链网络是否发生分区, 如果攻击者仅对部分关键数据进行管控而不影响其他数据的正常传递, 则ARTEMIS也无法阻止此类“无特征”的克隆攻击.此时, 准备出块的区块链节点可以考虑引入基于权重的节点活性检测方法, 主动检测区块链网络是否发生网络分区.具体地, 区块链节点可以通过随机取样的方式选取区块链中已有的区块, 根据其中包含的交易类型、金额、数量等特征计算出该区块生成者的权重.然后随机选择节点并请求包含其心跳信息和上一区块哈希值在内的活性证明, 如果该节点成功证明自身活性, 则验证者累计已验证节点的权重, 并重复上述操作直至累计权重达到预先设置的阈值; 若被选中节点未通过或未参与活性检测, 则证明区块链网络发生分区, 应立即停止出块.尽管该方法与ARTEMIS无法从根本上阻止攻击者在PoA系统中实施克隆攻击, 但能够在一定程度上预防并缓解克隆攻击来的危害, 避免损失.

在非授权共识机制中, 攻击者在本轮“记账权”竞争中需持有超过全网1/2的“筹码”, 才有可能通过51%攻击主导区块链网络达成有利于自己的共识, 进而实现双花攻击、历史修复攻击、卖空攻击等目的.而实际中, 攻击者通常很难自己拥有足够的“筹码”来实施51%攻击, 所以可能会通过各种手段获取“筹码”.为了预防51%攻击, 区块链网络应该采取如下策略, 阻止攻击者通过傀儡挖矿攻击、贿赂攻击等方法获取“筹码”.

(1) 加强区块链客户端的入侵检测能力, 添加防火墙, 阻止攻击者通过木马病毒入侵网络节点, 盗用受害节点的挖矿资源.

(2) 采用针对“恶意悬赏”的惩罚机制, 缓解贿赂攻击带来的危害.全网节点可以对抵制恶意悬赏、恶意攻击达成共识, 缴纳保证金并签订智能合约.一旦出现恶意悬赏, 则对举报者进行奖励, 对恶意节点进行惩罚, 没收悬赏金额和保证金, 限制其网络交易权限.

(3) 在PoS中采用新型的币龄计算方法, 限制节点恶意累计币龄的行为.如: 点点币通过在币龄计算方法中设置节点持币时间上限的方式, 限制了用户所持币龄的上限, 在一定程度上阻止了51%攻击.

(4) 在PoS中采用币龄预警、清零机制, 预防51%攻击.在记账权竞争过程中, 对节点进行身份认证和权益关联.若发现单节点或关联节点所持权益超过全网一半, 则启动预警机制, 阻止共识进程, 然后清空恶意节点持有的全部币龄, 并处罚金.

尽管如此, 攻击者还可能存在其他获取“筹码”的途径.为了进一步阻止51%攻击, 以太坊提出了一种计划内置于PoS系统客户端的Casper[84]机制.Casper机制要求以太坊的矿工锁定一些以太币作为押金, 为刚产生的区块担保.如果投注者是诚实的, 他们将获得相应的交易费用作为奖励; 否则, Casper将没收大量已投注的以太币作为惩罚.显然, 类似Casper机制的保证金奖惩机制可以很好地解决一些社会工程学问题, 从而预防趋利节点发起的各种攻击.如: 在无利害关系攻击场景中, Casper机制可以惩罚大部分恶意行为, 提升了制造恶意分叉的代价, 使无利害关系攻击无法为攻击者带来收益.若矿工想参与挖矿, 则他必须抵押一定数量的以太币作为押金, 保证自己在最长链上挖矿.若该区块被确认上链, 则矿工收回保证金并获得一定的奖励.如果其他矿工尝试在多条支链上挖矿来进行无利害关系攻击, 则会被没收其在多条支链上的押金, 这种概念叫做剑手(slasher)协议[85], 即如果矿工在同一个层级的分叉上同时签署了两份承诺, 该矿工就会失去区块奖励, 甚至被没收押金.

在预计算攻击场景中, 攻击者可以通过预计算确定下一区块计算难度的关键在于区块生成算法中, 上一区块哈希值与下一区块计算难度的关联性.所以为了预防PoS系统中的预计算攻击, 应该重新制定区块生成算法.首先, 可以考虑打断当前区块链计算难度与前一区块哈希值之间的联系, 使得攻击者无法通过预计算控制后续区块的计算难度; 其次, 也可以考虑增加新的计算元素, 使得上一区块的哈希值不再是确定下一区块计算难度的唯一因素.在长距离攻击场景中, 区块链网络无法阻止攻击者伪造一条新的区块链主链, 但可以通过类似BlockQuick的方式, 通过增加身份认证、信誉值对比的方式限制全网节点对该链的接受度来预防长距离攻击.

5 区块链合约层攻击

合约层是区块链2.0技术体系的重要标志, 封装了区块链的各类脚本代码、算法机制和智能合约, 使区块链技术具备了较高的可编程性和实用性.本节将从智能合约和合约虚拟机两方面对区块链合约层存在的安全威胁进行分析, 并尝试给出应对策略.

5.1 针对智能合约的攻击

智能合约是区块链2.0的标志性技术.图灵完备的区块链网络允许用户在区块链网络上开发并部署特定的代码或应用, 但智能合约在编写过程中存在的诸多不足, 可能给区块链网络带来以下安全隐患.

(1) 整数溢出漏洞(integer overflow and underflow vulnerability)[86]: 智能合约代码中, 整数型变量都存在上限或下限, 当变量存储的数值超过上限则称为整数上溢, 超过下限则称为整数下溢.当一个整数变量发生溢出时, 可能会从一个很大的数变成很小的数或者从一个很小的数变成很大的数.利用这个漏洞, 攻击者通常通过输入异常参数致使整数溢出, 从而达到修改地址指针, 实现代码异常调用的目的. 2010年8月, 由于验证机制中存在大整数溢出漏洞[87], 比特币的第74 638块出现了一条包含超过1 844亿个比特币的交易.2018年4月, BeautyChain(BEC)智能合约中出现了一个灾难性的整数溢出漏洞[88], 导致约10亿美元的损失.

(2) 时间戳依赖攻击(time-stamp dependency attack)[89]: 智能合约的执行大多依赖于当前区块的时间戳, 不同的时间戳可能导致智能合约产生不同的执行结果.以抽奖合约为例: 假设智能合约需要根据当前时间戳和其他可提前获知变量计算出一个“幸运数”, 以确定获奖人员.攻击者则可以在挖矿过程中提前尝试使用不同的时间戳来计算“幸运数”, 从而将奖品送给自己想给的获奖者.

(3) 调用深度攻击(call deep attack)[90]: 合约虚拟机在运行过程中会为合约相互调用的深度设置一个阈值, 即使合约调用不存在任何逻辑问题, 但当调用深度超过该阈值后, 合约将不再往下执行, 即合约调用失败.例如在以太坊虚拟机中, 调用深度被限制为1 024.如果攻击者发起一系列递归调用让栈的深度到达了1 023, 之后再调用目标智能合约的关键函数, 就会自动导致这个函数所有的子调用失败.因此, 攻击者可以通过控制调用深度, 使得某些关键操作无法执行.例如在区块链上实现一个拍卖的智能合约, 由于拍卖过程中可能存在多次竞价, 需要反复调用合约中的出价函数, 攻击者可以恶意刷出价次数.当调用深度达到1 023次临界值时竞拍结束, 此时调用转账函数就会失败, 导致拍卖失败.

(4) 误操作异常攻击(misoperation attack): 攻击者通过智能合约A调用智能合约B时, B可能因为执行异常而返回合约未执行的状态, 若A不检查B的结果而继续执行, 则将导致A在B未执行的情况下完成调用.以KoET智能合约[91]为例: 网络中各节点可以通过智能合约买卖“以太币国王”称号来获利, 支付金额由现任国王来决定.当一个节点想购买“国王”称号时, 智能合约A调用智能合约B支付赔偿金给现任国王, 并指定该节点成为新的国王.如果B因为操作异常(如调用深度攻击)导致支付失败, 而A在未检查B执行结果的情况下继续执行, 将导致节点在未支付赔偿金的情况下成为新的“国王”, 原“国王”同时失去国王称号和赔偿金.

(5) 重入攻击(re-entrancy attacks)[92]: 攻击者针对智能合约代码的重入漏洞发起的攻击, 可导致两个智能合约发生循环调用.其中最具代表性的是DAO攻击[93]: 攻击者通过智能合约A向智能合约B发起提现请求, B向A转账并调用A的回调函数.此时, 若A的回调函数中被攻击者写入操作“合约A向合约B发起提现请求”.如此, A再次向B发起提现请求并重复提现过程, 直至提现失败(账户余额不足).2016年6月发生了一起史上最严重的智能合约安全事件——“The DAO”[94], 导致价值6 000万美元的以太币被盗, 迫使以太币硬分叉为以太坊ETH和以太经典ETC.

5.2 针对合约虚拟机的攻击

合约虚拟机是智能合约的调用、执行平台, 是区块链技术支持多样化应用的载体, 提高了区块链的可扩展性, 但仍然可能存在一些安全隐患.

(1) 逃逸漏洞(escape vulnerability)[95]: 攻击者在控制一个虚拟机的前提下, 通过利用虚拟机和底层监控器(virtual machine monitor, 简称VMM)的交互漏洞, 实现对底层VMM或其他虚拟机的控制.虚拟机逃逸后可以在VMM层或者管理域中安装后门、执行拒绝服务攻击、窃取其他用户数据, 甚至控制其他用户虚拟机等.在区块链系统中, 虚拟机在运行代码时会提供一个沙盒环境, 一般用户只能在沙盒的限制中执行相应的代码, 此类型漏洞会使得攻击者编写的恶意代码在运行该沙盒环境的宿主机上执行, 破坏宿主机与沙盒的隔离性.

(2) 逻辑漏洞(logic vulnerability)[96]: 逻辑漏洞是指由于程序逻辑不严谨, 导致逻辑分支被非正常处理或错误处理的漏洞.虚拟机在发现代码不符合规范时, 可能会做一些“容错处理”, 并导致一些逻辑问题.最典型的是“以太坊短地址攻击”[97]: 在ERC-20 TOKEN标准[98]下, 攻击者可以输入一个短地址并调用Transfer方法提币.EVM虚拟机在解析合约代码时, 会通过末尾填充0的方式将短地址补至预期长度.此时, 参数编码可能出现逻辑漏洞, 导致攻击者获取与交易金额不符的代币.

(3) 资源滥用漏洞(resource-exhaustion vulnerability)[99]: 攻击者在虚拟机上部署恶意代码, 恶意消耗系统存储资源和计算资源.所以在虚拟机中必须要有相应的限制机制来防止系统的资源被滥用.在以太坊中, 智能合约采用了gas机制, 攻击者想在以太坊虚拟机上做更多操作, 需要付出经济代价.

5.3 防御策略与方法

合约层攻击的共性在于, 攻击者是尝试通过干扰合约的正常调用来实现不同的攻击目的.其特性在于不同攻击方式的攻击目标和原理不同, 攻击者可以利用智能合约的代码漏洞或合约虚拟机的运行漏洞, 尝试通过非正常的合约调用, 以实现非法获利、破坏区块链网络的目的.

智能合约实质上是由开发者编写并部署在区块链上的一段代码, 其中的漏洞可能是由于开发人员编写的代码不符合标准导致的, 如整数溢出漏洞、时间戳依赖性、调用深度限制等; 也可能是攻击者(开发者)恶意植入的, 如重入攻击.所以在智能合约编写过程中, 开发人员需考虑到以下几方面.

(1) 养成良好的编程习惯, 以严谨的编程逻辑避免智能合约开发过程中出现整数溢出等常见的漏洞.

(2) 针对智能合约的时间戳依赖性, 在合约开发过程中应采用多维参数输入、随机参数输入等, 避免合约执行结果完全依赖于时间戳, 降低合约执行结果的可预测性.

(3) 针对智能合约的调用深度限制, 应在智能合约中预先设置预警惩罚机制.当合约调用次数接近上限时, 智能合约调用预警合约对用户发出提醒, 若用户继续调用合约最终导致合约运行失败, 则预警合约调用惩罚合约对最后调用合约的用户进行惩罚.

(4) 针对重入漏洞, 应在合约开发过程中设置参数检验机制.当智能合约A调用智能合约B时, 应对B返回的参数进行确认, 再继续执行.参数检验机制可以阻止攻击者通过在B植入漏洞发起重入攻击, 也可以阻止攻击者实施误操作异常攻击.

尽管良好的编程习惯和编程策略可以在一定程度上避免智能合约中出现安全漏洞, 但仍有一些安全漏洞是不可避免的.所以在部署智能合约时, 用户可以采用以下方法避免代码漏洞带来的危害.

(1) 安全评估: 在正式部署智能合约前, 应对其进行大量安全测试或白盒审计, 以评估该合约的安全性.

(2) 采用Sereum[92], ZEUS[100]等重入攻击防护工具.其中, Sereum支持多种重入攻击的识别, 不仅适用于待部署合约, 还可以保护已部署智能合约在重入攻击下的安全性, 误报率仅为0.06%.

此外, 合约虚拟机中存在的逃逸漏洞、逻辑漏洞、资源滥用漏洞可能会导致智能合约的异常运行, 攻击者可以在发现这些漏洞后, 在与其他用户订立智能合约时, 利用这些漏洞编写有利于自己的智能合约代码, 使得智能合约失去公平性.所以, 区块链网络在引入智能合约虚拟机时, 应对虚拟机进行系统的代码审计, 分析评估其安全性, 并将其可能存在的安全漏洞披露出来.而用户在部署智能合约时, 除了对合约代码进行常规审计外, 也要根据目标合约虚拟机披露的漏洞对代码进行审计, 做好双向的智能合约运行环境评估.

6 区块链应用层攻击

应用层是区块链技术的应用载体, 为各种业务场景提供解决方案.本节将从挖矿机制和区块链交易两个角度梳理分析区块链应用层存在的安全漏洞和恶意攻击, 旨在给出有效的应对策略.

6.1 挖矿场景中的攻击

“挖矿”是维持PoW系统正常运转的动力, 很多攻击者尝试利用挖矿过程中存在的漏洞获利, 这会导致严重的资源浪费, 进而降低区块链网络的吞吐量.其中, 主要包括针对矿机系统和挖矿机制的恶意攻击.

6.1.1 针对矿机系统的攻击

由于系统代码的闭源特性, 用户无法检查矿机的安全性, 所以存在诸多安全隐患.

(1) 0day漏洞攻击(zero-day (0day) vulnerability)[35]: 目前, 大多数矿机的系统都是通用的, 一旦某个矿机系统被发现存在0day漏洞, 攻击者可以利用该漏洞得到系统控制权限.

(2) 网络渗透攻击(network penetration attack)[101]: 攻击者通过利用多种安全漏洞对客户端系统(如钱包客户端、矿机系统、Web服务系统等)进行持续性渗透, 最终获取系统的控制权限, 威胁矿机的系统安全.该攻击方式不限制于某一特定漏洞, 最终以获取系统权限为目的.

(3) 地址篡改攻击(address tampering attack)[102]: 攻击者在攻陷矿机系统之后, 通过篡改挖矿奖励接收地址的方式, 劫持并盗取原属于目标矿工的挖矿奖励.

6.1.2 针对挖矿机制的攻击

在挖矿过程中, “聪明”的矿工可能利用挖矿机制的一些漏洞做出趋利行为, 导致严重的资源浪费.主要包括:

(1) 算力伪造攻击(computational forgery attack)[31]: 在比特币系统中, 矿池一般通过特定的工作量证明检验算法来检验当前矿工的实际算力.如果算法存在某些漏洞时, “聪明”的矿工可能通过虚报算力来获取更高的奖励, 这将严重影响奖励分配的公平性, 导致矿池的算力流失.

(2) 扣块攻击(block withholding attack)[32]: 也被称为藏块攻击.主要有3种形式: 第1种是矿池下发计算任务后, 恶意矿工直接返回一个错误的计算值, 然后分得矿池根据算力分发的数字货币奖励; 第2种是矿工挖出区块后, 不向矿池返回, 而是私自广播至整个网络, 独自获得相应的区块奖励; 第3种是恶意矿工不会发布自己挖到的区块, 导致矿池收益降低.扣块攻击成本较高, 恶意矿工获利较少, 甚至不获利, 所以该攻击常见于矿池恶意竞争的场景中: 恶意矿工作为“间谍”加入敌方矿池, 在领取敌方矿池奖励的同时, 通过浪费敌方矿池的算力资源来获取己方矿池的报酬, 实现两方获利.扣块攻击的出现, 激化了矿池间的恶意竞争, 严重扰乱了正常的挖矿秩序.

(3) 丢弃攻击(drop attack)[33]: 攻击者将多个具有良好网络连接的节点置于网络中, 这样不但可以方便地获知最新被广播出的区块, 也可以比其他节点更加快速地传播目标区块.当攻击者挖出新区块后不会及时公布, 直至得知有区块被公布时, 攻击者会立即发布自己的区块, 并且利用布置好的节点快速地广播到整个网络, 使得该合法节点开采的区块被丢弃, 从而获取奖励.

(4) 空块攻击(empty block attack)[103]: 空块攻击是早期比特币网络中常见的攻击方式, 攻击者通过生成空块获取比打包交易区块更快的出块速度, 从而以更大的可能性获取出块奖励.空块的产生, 意味着比特币网络有10分钟处于拒绝服务的状态.偶尔出现空块不会对网络产生太大影响, 但短期内出现大量空块, 会使交易池中的交易大量滞留, 平均交易时间延长.

(5) 通用挖矿攻击(general mining attack)[104]: 通用挖矿攻击常见于区块链系统初始化建立的阶段, 当该系统与某个已成熟区块链系统采用相同的架构和共识机制时, 后者系统中具备大量算力的攻击者可能加入新区块链进行挖矿, 以恶意竞争出块奖励.此时容易产生算力集中化问题, 甚至当攻击者算力超过新系统全网一半时, 可能发起51%攻击来实现代币双花、历史修复、卖空攻击等攻击目的.

(6) 交易顺序依赖攻击(transaction-ordering dependence attack)[9]: 区块链交易场景中, 交易的处理顺序不同, 则其产生的结果也不相同.例如: 当攻击者发布一个奖励丰富的解题智能合约时, 攻击者可以监听网络中与之相关的解题交易, 并在目标解题交易被验证、打包上链前, 发布一个具备高Gas值的交易, 将解题合约的奖励降低为0.出于最大获利的目的, 矿工会优先将高Gas值的交易打包上链, 导致解题者无法获得智能合约中原先声明的奖励.

(7) 芬尼攻击(Finney attack)[10]: 芬尼攻击是扣块攻击的一种衍生攻击, 主要发生在支持零确认交易的服务场景中, 可以作为实现双花攻击的跳板.以比特币系统为例, 每笔交易被打包后需要经过6个区块的确认才能真正上链, 这明显无法满足部分服务场景对即时性交易的需求, 所以部分商家推出零确认交易服务, 即用户在完成交易后无需等待确认便可获取服务, 商家则需等待交易数据上链才可以获得相应的费用.攻击者可以利用零确认交易的缺点, 实施芬尼攻击: 当攻击者挖到包含自己交易A的区块时扣留该区块, 然后就A对应的代币与商家完成零确认交易B, 并在B被确认前将包含A的区块广播至全网.此时, 交易B被验证为不合法, 攻击者由此实现了双花攻击.与通过51%攻击实现的双花攻击相比, 芬尼攻击的攻击成本远低于基于51%攻击的双花攻击, 因此相对常见.

(8) 种族攻击(race attack)[105]: 种族攻击可以看作是一种进阶版的芬尼攻击, 可以通过扰乱正常的交易顺序来实现双花攻击.与交易顺序依赖攻击不同的是: 交易顺序依赖攻击针对的是智能合约, 而种族攻击针对的是支持零确认交易的服务场景.如以太坊中, 攻击者在与商家完成零确认交易A后, 就A对应的代币生成一个高Gas值的交易B, “聪明”的矿工会优先将B打包进区块以获取最大化的利益, 导致零确认交易A验证失败, 而攻击者已经提前获取了相应服务, 实现了代币双花.

6.2 区块链交易场景中的攻击

随着部分国家对比特币的认可, 出现了很多区块链数字货币、交易平台, 形成了一套相对完整的区块链电子货币金融体系.用户节点可以通过交易平台进行资产转换、投资等商业行为, 也可以通过钱包账户进行点对点的可信交易.多样的交易平台和用户账户中存在的安全漏洞, 严重威胁着区块链用户的资产安全.

6.2.1 针对交易平台的攻击

交易平台是区块链电子货币金融体系中十分重要的一类实体, 为区块链用户提供了进行各种商业行为的场所.但由于用户的安全意识不足、系统潜在的安全漏洞等原因, 交易平台面临隐私泄露、资产流失的风险.

(1) 弱口令攻击(weak password attack)[106]: 实际中, 用户可能出于方便记忆等原因, 为自己的账户设置了安全级别较低的密码, 攻击者通过简单的猜测、穷举等方式, 即可获取用户的账户访问权限.

(2) 撞库攻击(credential stuffing attack)[34]: 用户由于安全意识不足, 可能在不同的网站使用相同的账号和口令.攻击者可以通过钓鱼攻击等手段收集与区块链、金融等相关网站上的用户账号和口令, 然后在目标交易平台上使用自动化程序逐个尝试, 以获取该平台中用户的账户隐私信息.

(3) 穷举攻击(brute-force attack)[107]: 如果网站不对登陆接口做请求限制或者风险控制, 攻击者可以针对目标值发送多次测试请求, 尝试通过穷举攻击破解某些关键信息.如在短信验证中, 若平台不对短信验证码的有效期或验证接口进行限制, 攻击者可以轻易对其完成破解.若平台对登陆接口未做请求限制, 攻击者可以通过大量的密码字典来暴力破解某个账户的密码.

(4) API接口攻击(application programming interface, 简称API attack)[108]: 用户通常使用私钥key, 通过交易平台中私有的API接口来执行一些敏感操作, 如交易所新订单的确认、取消等.一旦API key泄露, 很可能导致用户账户蒙受经济损失.2018年3月, 币安网大量用户API key泄露[109], 攻击者通过泄露的key直接操作用户交易, 致一万余枚的比特币被用于购买其他币种, 造成币市动荡.

(5) 单点登陆漏洞(single sign-on vulnerability)[110]: 攻击者可以通过跨站请求伪造、跨站脚本攻击等手段来窃取用户登陆的Ticket, 从而盗取目标用户账户中的资金.2017年10月, OKCoin旗下交易所出现大量账户被盗情况[111], 损失金额超过1千万人民币.

6.2.2 针对用户账户的攻击

区块链钱包、交易所账户是用户参与区块链交易的重要工具, 保管着大量的用户隐私和资产, 是攻击者的主要攻击目标.由于服务场景的多样性和复杂性, 用户账户主要面临以下安全威胁.

(1) 钓鱼攻击(phishing attack)[37]: 攻击者通过伪造网页、系统、邮件等形式, 诱导用户进行一系列交易操作, 获取用户的钱包、交易所账户口令, 进而盗取用户资产.

(2) 木马劫持攻击(Trojan horse attack)[112]: 攻击者可以向用户主机中植入木马病毒, 通过按键记录、hook浏览器的方式来获取其账户和口令, 从而盗取目标用户资产.2017年8月, 攻击者利用木马病毒Trickbot对包括Coinbase在内的几家数字货币交易所进行了Web注入攻击[113], 当受害者购买数字货币时, 木马病毒会劫持交易所钱包, 并将资金定向至攻击者钱包, 最终造成用户损失.

(3) 中间人劫持攻击(man-in-the-middle attack)[114]: 目前, 多数交易所都采用HTTPS协议进行交互, 在一定程度上保证了数据安全.但在某些API接口的子域名, 却未使用HTTPS.攻击者可以通过在流量中转处劫持网络流量, 如路由器、网关等流量出口, 从而获取相关信息.

(4) 私钥窃取攻击(private key stealing attack)[115]: 用户丢失私钥意味着用户的账户资产全部遗失, 因此, 用户通常会对钱包的私钥文件进行多次备份, 而不安全的备份存放点存在私钥泄露的风险.目前, 针对比特币的wallet.dat文件广泛出现在互联网中, 例如GitHub、NAS服务器、Web服务等互联网可接入的位置.目前, 已经有攻击者开始扫描密钥文件, 甚至开发相关的木马病毒进行私钥窃取.

(5) 钱包客户端漏洞(wallet client vulnerability): 攻击者可能利用钱包软件自身的漏洞实施攻击, 进而获取用户隐私和资产.例如: 在以太坊多重签名钱包Parity中, 攻击者可以通过间接调用初始化钱包软件的库函数, 将自己更换为受害者钱包的新主人.2017年11月, Parity钱包出现重大Bug[116], 攻击者利用该Bug成为库的主人, 然后调用自杀函数报废整个合约库, 彻底冻结了150多个地址中总计超过50万个ETH, 直接导致上亿美元资金被冻结.

(6) 粉尘攻击(dusting attack)[11]: 比特币系统中, “聪”是最小的BTC单位, 通常将100聪以内的BTC称为粉尘.而且比特币中没有余额的概念, 所有合法的交易都可以追溯到前向一个或多个交易的输出, 其源头都是挖矿奖励, 末尾则是当前未花费的交易输出(unspent transaction output, 简称UTXO).攻击者可以通过向目标用户钱包地址发送“粉尘”来实施粉尘攻击, 当用户使用这些“粉尘”交易时, 会导致其与用户自有UTXO的交易输出发生混合, 攻击者可以通过“粉尘”来追踪用户的钱包地址, 获取用户的隐私信息, 从而勒索、盗取目标用户的资产.

(7) SIM hack[117]: 在一些去中心化钱包中, 用户需要通过SIM(subscriber identity module)卡来验证身份的合法性.用户通常在丢失SIM卡后向运营商申请“移植”SIM卡, 该服务允许客户将该电话号码转移到新的SIM设备中.攻击者可以利用这一漏洞, 通过技术手段将受害者的SIM卡移植到他们控制的电话上, 然后在其电子邮件帐户上启动密码重置流程, 验证码会发送到电话号码中.由于攻击者此时控制着SIM卡, 可以轻易地对受害者账户信息进行篡改, 盗取受害者账户中的财产.

(8) 在线钱包窃取(online wallet theft)[118]: 目前, 很多用户会选择使用在线钱包, 这使得个人的资产安全严重依赖于服务商的安全性.2013年11月, 比特币在线钱包服务商Inputs.io遭受黑客攻击[119], 黑客通过电子邮件账号进行入侵, 进而劫持代管账号, 从中盗取了4 100个比特币.

(9) 重放攻击(replay attack)[120]: 主要包含单链重放攻击和多链重放攻击.单链重放攻击中, 攻击者通常在以太坊等账户余额模型的区块链系统中先发起一笔交易A(如交易所提现), 然后对A的时间戳等数据进行修改, 获得新的交易B并进行广播.因为B的私钥签名和公钥加密齐全, 所以矿工会在付款方余额足够的情况下将交易B打包进新区块.攻击者不断重复便可获取大量资金, 直至付款方账户余额不足为止.多链重放攻击通常出现在区块链硬分叉时, 此时用户的地址和私钥生成算法相同, 所有“一条链上的交易在另一条链上也往往是合法的”, 所以攻击者在其中一条链上发起的交易后, 可以重新将该交易广播到另一条链上, 并得到整个系统的确认.

6.3 防御策略与方法

相比区块链其他层级, 应用层攻击的场景更加具体、复杂, 所以攻击者的手段也十分多样.因此, 区块链应用层面临的安全问题应从实际的服务场景出发, 设计合适的防御策略和相关技术.在挖矿场景中, 攻击者采用的攻击方式大多具备社会工程学攻击特性, 即攻击者会根据矿机漏洞、挖矿机制漏洞采取趋利的挖矿行为, 通过损害矿池或其他矿工利益, 实现自身利益的最大化.

针对矿机的系统漏洞, 可以尝试以下防御策略.

(1) 开发阶段: 开发人员应在开发阶段设定软件安全开发生命周期, 建立安全漏洞管理机制, 在成品销售前对矿机系统进行代码审计、性能测试, 以预防0day漏洞攻击.

(2) 部署阶段: 矿工应该在原有的软件防护基础上增加辅助的安全检测技术, 如入侵检测、防火墙、蜜罐技术等, 进一步预防网络渗透攻击和地址篡改攻击.

此外, 攻击者可以利用挖矿机制中存在的漏洞恶意骗取、竞争出块奖励, 也可以通过扰乱交易顺序实现双花攻击等.其中, 算力伪造攻击和扣块攻击属于恶意骗取矿池出块奖励的攻击行为, 可以尝试以下防御策略.

(1) 身份管理机制: 矿池应结合保证金奖惩机制(如Casper机制)和身份认证机制, 对新加入的矿工进行身份认证, 要求其缴纳一定的保证金, 为其诚实的挖矿行为做保证.

(2) 细粒度的工作量检验算法: 矿池应定时更新其使用的工作量检验算法, 对以往算法中存在的问题进行背书, 作为新算法设计的重要依据.

(3) 合理的绩效制度: 矿池应定时对矿工进行绩效考核, 奖励表现优秀的矿工, 驱逐效率低下的懒惰矿工.对矿池内的矿工行为进行管理和约束, 保证矿池公平有序地运行.

(4) 相互监管制度: 设置矿工相互监管奖励, 一旦矿工因进行算力伪造攻击和扣块攻击而被举报, 则矿池奖励举报者, 没收恶意矿工的保证金, 将其加入黑名单后驱逐出矿池, 不再录用.

丢弃攻击、空块攻击、通用挖矿攻击则属于恶意竞争出块奖励攻击行为.丢弃攻击中, 攻击者主要依赖于网络资源优势, 可以比其他节点更快获取数据上链信息, 也可以更快地完成数据打包上链.所以丢弃攻击可以看作是女巫攻击的变种攻击, 也可以作为自私挖矿攻击的前置攻击, 提高攻击者实施自私挖矿攻击的成功率.为了防止丢弃攻击, 区块链网络可以引入身份认证机制, 对用户潜在的节点身份进行关联分析, 杜绝单个用户通过操纵多个节点获取远高于其他节点的网络优势.在空块攻击场景中, 攻击者之所以可以通过生成空块恶意竞争奖励, 是因为区块链网络不存在对新区块的有效性验证过程.因此, 区块链网络节点只要在获取新区块时执行有效性验证, 即可有效缓解阻止空块攻击.通用挖矿攻击则需要特定的场景才可以实施, 其关键在于攻击者利用新系统与旧系统之间相同的架构和共识机制导致的矿机(算力)通用问题, 通过成熟系统的中算力对新系统实现算力压制, 从而恶意竞争出块奖励, 甚至实施双花攻击、卖空攻击等恶意行为.因此, 新区块链项目必须考虑系统封闭性、专机专用等问题, 从根本上杜绝算力通用导致的通用挖矿攻击.

芬尼攻击、种族攻击、交易顺序依赖攻击属于扰乱交易顺序类的攻击方式.芬尼攻击和种族攻击主要针对的是支持零确认交易的服务场景, 前者主要利用挖矿便利, 攻击者只有在挖到包含自己交易的区块时, 才会通过零确认交易扰乱交易秩序, 实现代币双花等目的; 而后者和交易顺序依赖攻击则是通过提高交易Gas的方式扰乱交易顺序, 进而实现代币双花等目的.这两者的共性在于区块链节点在接受新区块时未验证区块内交易与交易池中的未确认交易是否存在冲突.由于零确认交易可以满足商家的即时性支付需求, 所以直接通过禁止零确认交易来阻止芬尼攻击和种族攻击的方式不具备可行性.区块链系统可以考虑开通钱包的子账户来保证零确认交易的安全性, 即, 用户需要通过专门的子账户才能完成零确认交易操作.此时, 零确认交易由矿工单独打包验证, 在一定程度上可以避免零确认交易与普通交易的冲突.此外, 为了避免攻击者扰乱交易顺序, 区块链系统可以要求矿工在打包交易时, 通过代币锁定技术缴纳保证金之后再广播新区块.其他节点在接受新区块时, 可以就区块内交易在交易池中进行遍历验证: 如果通过验证, 则接受新区块; 否则, 该节点可以通过举报矿工恶意行为来获取矿工被锁定的保证金及出块奖励.

在区块链交易场景中, 攻击者的最终目的是通过直接或间接手段获取用户节点的账户信息, 进而盗取资产, 主要存在交易平台和用户账户两个攻击目标.为了保证交易平台中用户的账户隐私, 交易平台应采取以下措施.

(1) 引入密码安全等级分析机制.系统可以在用户设置账户密码时, 对当前密码的安全性进行实时评级, 避免用户使用弱口令, 从而预防弱口令攻击.

(2) 交易平台应在用户登录账号时进行人机识别, 在一定程度上缓解撞库攻击.而用户也应该注意避免多网站的密码通用问题, 可以考虑对账户进行安全等级评估, 相同安全等级的账户采用相同的密码, 这样既可以缓解撞库攻击, 也能避免账户密码过多给用户带来的密码管理问题.

(3) 通过限制目标账户的登陆频率和限制单节点的访问请求频率, 从被访问端和访问端两个方向限制攻击者的攻击能力, 可以有效预防穷举攻击.

(4) 启用API调用接口认证机制, 合理管理交易平台的API接口, 预防API接口攻击.

(5) 提高开发工程师的安全素养, 在一些敏感系统里单独实现一些额外的认证机制, 避免单点登陆漏洞.

此外, 用户在日常交易中应该提高个人的安全意识, 采取相应的安全措施, 避免在交易过程中泄露了个人账户的隐私数据, 具体需要从以下几方面考虑.

(1) 培养好安全意识, 提高对危险网站、邮件的辨识能力, 预防钓鱼攻击.

(2) 构建全面的系统安全防护体系, 安装防火墙等安全软件, 预防木马劫持攻击.

(3) 利用安全的路由协议对区块链网络实现全方位覆盖, 预防中间人劫持攻击.

(4) 实现离线的密钥管理, 预防攻击者对在线密钥存储中的私钥窃取.

(5) 利用代码审计、逆向漏洞分析、反逆向工程等技术对钱包客户端代码的安全性进行评估.

(6) 在使用数字货币钱包时, 对一些来源不明的小额资金“粉尘”进行标记并禁用, 预防粉尘攻击.

(7) 使用专门的零钱包存储该用户持有的“粉尘”级资产, 其中既包含攻击者发送的“粉尘”, 也可能包含用户自身交易产生的小额资金.为了资产安全, 该零钱包中的资金专用于隐私性不高的交易.

在针对认证机制漏洞的SIM hack攻击场景中, 攻击者主要是利用服务商提供的“账户找回”服务中的安全隐患来成功获取目标账户.因为基于手机、邮件的二次验证并不是完全安全的方法, 因此服务商应尝试使用采取2FA等具备更高安全性的有更高级别安全设置的服务.2FA是基于时间、历史长度、实物, 例如信用卡、SMS手机、令牌、指纹等自然变量结合一定的加密算法组合出的一组动态密码, 一般每60s刷新一次.这种方法不容易被破解, 相对较安全.

理论上, 基于UTXO结构的区块链系统可以抵抗重放攻击, 因为转账是基于每一笔UTXO进行的原子级别操作, 不存在一笔UTXO被重复扣除的情况.但是在类似以太坊的账户结构中, 交易是通过余额判断合法性的, 只要余额足够就可以进行重复扣款转账, 一笔交易的信息进行多次广播的重放攻击是可行的.交易延展性攻击和重放攻击非常相似, 它们都是对交易所发起的攻击方式, 但重放攻击主要针对区块链硬分叉的情况, 而交易延展性攻击讲究的是区块标识的可变性.

此外, 基于Hyperledger Fabric的区块链也可以抵抗重放攻击, 该框架中采用Endorser节点对客户端提交的交易预案进行身份验证, 若交易信息异常, 则系统终止操作, 这种方式可以有效阻止重放攻击.以太坊的账户结构中存在一个参数Nonce, 该参数的值等于从这个账户中发出交易的数量.当交易完成验证后, 发送者账户中的Nonce值会自动增加1.当矿工验证一笔交易是否合法的时候, 矿工会对比交易包含的Nonce值, 并与该交易的发送者账户中的Nonce值进行比较, 相等才算作合法交易, 并对该交易打包出块.单链重放攻击无法修改发送者账户的数值, 因此当接受到重复交易时, 矿工会直接判定它无效, 从而阻止了单链重放攻击.面对多链重放攻击时, 可以参考以太零开发团队的做法, 建立一个交易锁.当一笔交易发起时, 交易锁将被广播到整个区块链网络.此时, 交易锁会锁定交易关联的数字资产.交易在主节点验证期间, 原交易资产被锁定无法使用, 以此达到抵御多链重放攻击的目的.

7 区块链攻击簇与安全防御体系

区块链网络中, 攻击者可能通过单个区块链攻击, 也可能通过包含多种攻击的区块链攻击簇来实现最大化获利的目的.如表 1所示, 本文对这些区块链攻击方式进行了整理和分析, 梳理了各种攻击方式之间的潜在联系.此外, 很多攻击方式不只局限于前文所述的攻击目标(场景)和攻击目的.攻击场景不同, 实施方式多样, 带来的安全威胁也不尽相同.为了更好地预防这些攻击, 本节进一步研究了区块链攻击簇的基本原理, 整理出了本文涉及的区块链攻击方式中所有潜在的攻击簇(如图 5所示), 并尝试构建出了一个较为全面的区块链安全防御体系.

表 1(Table 1)

Table 1 Summary of block-chain attacks

表 1 区块链攻击总结

分类

攻击方式

主要攻击目标

主要攻击目的

潜在前置(子)攻击

潜在后续攻击

攻击难度

数据层攻击

数据隐私窃取

碰撞攻击

Hash函数

破坏系统安全

-

卖空攻击

后门攻击

密码学算法

-

卖空攻击

量子攻击

密码学工具

-

卖空攻击

交易特征分析

交易数据

获取用户隐私

窃听攻击, 中间人劫持攻击

粉尘攻击

恶意数据攻击

交易延展性攻击

交易数据

代币双花

-

双花攻击

较低

恶意信息攻击

区块数据

破坏网络环境

-

-

网络层攻击

针对P2P网络的攻击

客户端漏洞

网络节点

获取节点控制权

0day漏洞攻击

木马劫持攻击、窃听攻击

较低

窃听攻击

获取用户隐私

客户端漏洞

交易特征分析

日蚀攻击

隔离目标节点

BGP劫持攻击、女巫攻击

51%攻击

BGP劫持攻击

区块链网络

分割网络

-

分割攻击, 日蚀攻击

分割攻击

BGP劫持攻击

双花攻击, 克隆攻击

DoS攻击

拒绝服务

-

卖空攻击

DDoS攻击

木马劫持

卖空攻击

BDoS攻击

-

卖空攻击

交易延迟攻击

影响交易进程

-

-

共识层攻击

针对授权共识机制的攻击

女巫攻击

BFT, PBFT

妨碍共识

私钥窃取攻击

日蚀攻击

较低

克隆攻击

PoA

代币双花

分割攻击

双花攻击

较高

针对非授权共识机制的攻击

恶意筹码获取

傀儡挖矿攻击

客户端资源

获取筹码

木马劫持攻击、网络渗透攻击

51%攻击

较高

币龄累计攻击

PoS, DpoS, PoW/PoS

-

51%攻击

较高

贿赂攻击

PoW, PoS, DPoS

-

51%攻击

较高

51% 攻击

双花攻击

PoW, PoS

代币双花

51%攻击、分割攻击等

卖空攻击

历史修复攻击

PoW, PoS, DPoS

代币双花、回滚交易

51%攻击

卖空攻击

卖空攻击

PoS

期货倒卖获利

DoS/DDoS攻击、双花攻击等

-

自私挖矿攻击

PoW

恶意竞争出块奖励

51%攻击、丢弃攻击等

-

其他攻击

无利害关系攻击

PoS

-

-

预计算攻击

PoS

-

自私挖矿攻击

长距离攻击

PoS

代币双花

-

双花攻击

合约层攻击

针对智能合约的攻击

整数溢出漏洞

合约代码

恶意篡改变量

-

-

时间戳依赖攻击

预测合约结果

-

-

调用深度攻击

合约调用

恶意调用获利

-

误操作异常攻击

误操作异常攻击

调用深度攻击

-

重入攻击

-

-

针对合约虚拟机的攻击

逃逸漏洞

合约运行

恶意运行获利

-

木马劫持攻击

逻辑漏洞

-

-

较低

资源滥用漏洞

虚拟机硬件资源

浪费系统资源

-

-

应用层攻击

挖矿场景中的攻击

针对矿机系统的攻击

0day漏洞攻击

应用程序或系统

入侵矿机系统

-

客户端漏洞

网络渗透攻击

网络系统

木马劫持攻击、钓鱼攻击等

篡改攻击、傀儡挖矿攻击

较低

地址篡改攻击

区块链交易

篡改奖励地址

木马劫持攻击、网络渗透攻击

-

应用层攻击

挖矿场景中的攻击

针对挖矿机制的攻击

算力伪造攻击

矿池

骗取联合挖矿奖励

-

-

扣块攻击

-

芬尼攻击

丢弃攻击

诚实矿工

恶意竞争出块奖励

-

自私挖矿攻击

空块攻击

诚实矿工

-

-

通用挖矿攻击

初始化区块链系统

-

51%攻击

较高

交易顺序依赖攻击

区块链交易

扰乱交易顺序

-

芬尼攻击、种族攻击

较低

芬尼攻击

零确认交易场景

代币双花

扣块攻击、交易依赖攻击

双花攻击

较低

种族攻击

零确认交易场景

代币双花

交易顺序依赖攻击

双花攻击

较低

区块链交易场景中的攻击

针对交易平台的攻击

弱口令攻击

用户账户

获取账户控制权

-

网络渗透、在线钱包窃取

撞库攻击

-

较低

穷举攻击

-

单点登录漏洞

-

网络渗透

API接口攻击

-

针对用户账户的攻击

钓鱼攻击

账户隐私

-

木马劫持攻击、SIM hack等

中间人劫持攻击

-

SIM hack、交易特征分析等

木马劫持攻击

钓鱼攻击、逃逸漏洞等

私钥窃取、傀儡挖矿攻击等

较低

私钥窃取攻击

木马劫持攻击

女巫攻击

钱包客户端漏洞

0day漏洞攻击

私钥窃取

粉尘攻击

获取账户资产

交易特征分析

-

较低

SIM hack

账户控制权

钓鱼攻击、中间人劫持攻击等

在线钱包账号窃取

较低

在线钱包窃取

SIM hack等

-

重放攻击

账户资产

-

-

Table 1 Summary of block-chain attacks

表 1 区块链攻击总结

图 5

Fig. 5

Fig. 5 Associations view between block-chain attacks

图 5 区块链攻击关联视图

7.1 区块链攻击簇

区块链的技术特性和安全性, 是人们考量区块链技术实用性的两个重要指标.理论上, 任何区块链攻击造成的危害达到一定程度时, 均可导致区块链网络产生动荡, 使其中流通的代币面临贬值风险.尤其是在支持证券信用交易的区块链网络中, 攻击者可以通过卖空攻击倒卖期货产品获利.因此, 本节将从卖空攻击出发, 对所有可能导致代币贬值的安全因素进行溯源分析, 探究导致区块链网络安全问题的根本原因.

在支持证券信用交易的区块链网络中, 本文涉及的所有区块链攻击均为卖空攻击的前置攻击, 即所有攻击方式构成一个卖空攻击簇.前置攻击的安全威胁越大, 则其导致的代币贬值率Δ越大, 卖空收益Δ(B-A)也越大.如图 5所示, 部分攻击方式(图 5虚线箭头标识)需要造成大规模的网络损失才有能帮助攻击者实现最大化的卖空获利, 而一些攻击方式(图 5实线箭头标识)则可以轻易帮助攻击者实现最大化的卖空获利.此外, 卖空攻击的直接前置攻击可能是单个攻击(图 5右侧), 也可能是攻击簇(图 5左侧).其中, 碰撞攻击、后门攻击、量子攻击属于区块链数据层攻击, 严重威胁了区块链底层数据的安全性.一旦攻击者通过这些攻击实现卖空攻击, 则将导致区块链系统崩溃, 由此实现最大化的卖空获利(Δ=1).攻击者也可以通过DoS系列攻击(DDoS, BDoS)使区块链网络瘫痪, 从而获取较大的代币贬值率, 实现最大化的卖空获利.

此外, 完整的攻击簇也可以作为卖空攻击的前置攻击, 其中包括:

(1) 双花攻击簇.如图 5所示, 双花攻击簇主要存在7种潜在的双花攻击前置攻击方式, 其中包括2种攻击簇初始攻击: 长距离攻击和交易延展性攻击; 还包括5种中间攻击: 芬尼攻击、种族攻击、分割攻击、克隆攻击和51%攻击, 主要涉及扣块攻击、BGP劫持攻击、通用挖矿攻击、贿赂攻击、币龄累计攻击等16种攻击簇初始攻击.这些攻击方式可以在具体服务场景中, 使攻击者生成的无效交易(代币已支出或待支出)合法化, 从而达成“代币双花”的最大获利目的.

(2) 历史修复攻击簇.历史修复攻击实质上是通过多轮51%攻击实现交易回滚、历史修复的攻击方式, 所以其潜在的前置攻击方式只有1种中间攻击: 51%攻击, 涉及通用挖矿攻击、贿赂攻击、币龄累计攻击等12种攻击簇初始攻击.这些攻击方式侧重于帮助攻击者获取超过全网一半的记账权竞争资源, 攻击者可以通过恶意竞争记账权实施51%攻击, 从而实现交易回滚、历史修复的攻击目的.

(3) 自私挖矿攻击簇.主要包括3种潜在的前置攻击方式, 其中包括2种攻击簇初始攻击: 丢弃攻击和预计算攻击以及1种中间攻击: 51%攻击, 涉及通用挖矿攻击、贿赂攻击、币龄累计攻击等12攻击簇初始攻击.这些攻击方式侧重于帮助攻击者积累并保持恶意竞争挖矿奖励的优势.这3种前置攻击的结合使用, 不仅可以帮助攻击者恶意竞争挖矿奖励, 还可以帮助攻击者积累优势, 使其可以连续获得区块奖励.其中, 51%攻击可以帮助攻击者建立前期的攻击优势, 而丢弃攻击和预计算攻击则可以帮助攻击者实现最大化的获利.如果攻击者无法拥有足够的网络资源来实现网络监听和快速的数据传播, 则其无法保证攻击者总是可以在其他节点之前将自己的区块公布至全网.一旦攻击者自私挖矿失败、连胜中断, 则其不仅无法继续获取出块奖励, 还会失去自己前期通过51%攻击和预计算攻击积累的全部攻击优势.因此, 实现丢弃攻击是提高自私挖矿攻击可行性的关键.

(4) 在线钱包窃取攻击簇.主要包含5种潜在的前置攻击方式, 其中包括3种攻击簇初始攻击: 弱口令攻击、撞库攻击、穷举攻击以及2种中间攻击: 私钥窃取攻击和SIM hack攻击, 涉及钓鱼攻击、逃逸漏洞、客户端漏洞、0day漏洞攻击等4种攻击簇初始攻击.这些攻击方式侧重于帮助攻击者获取用户的账户隐私, 攻击者通过劫持用户账户来盗取账户资金.

(5) 地址篡改攻击簇.地址篡改攻击可以分为奖励地址篡改和收款地址篡改两种, 其攻击原理基本一致, 潜在的前置攻击方式包括2种中间攻击: 网络渗透攻击和木马劫持攻击, 主要涉及弱口令攻击、撞库攻击、穷举攻击、单点登录漏洞等9种攻击簇初始攻击.这些攻击方式侧重于帮助攻击者获取交易所、矿机系统等区块链网络实体的系统漏洞, 攻击者可以根据这些漏洞进行地址篡改, 劫持并盗取攻击目标的入账资金.

(6) DDoS攻击簇.DDoS攻击的核心思想是: 攻击者通过一些网络手段, 整合零散的网络资源来攻击区块链网络, 导致网络瘫痪拒绝服务.DDoS攻击簇的潜在前置攻击方式包含1种中间攻击: 木马劫持攻击, 涉及4种攻击簇初始攻击: 钓鱼攻击、逃逸漏洞、客户端漏洞、0day漏洞攻击.这些攻击簇初始攻击旨在帮助攻击者获取用户节点的控制权, 攻击者通过这种方式控制大量的用户节点, 即可获取足够的网络资源来实施DDoS攻击, 从而实现期货卖空获利等潜在攻击目的.

(7) 粉尘攻击簇.粉尘攻击是攻击者追踪目标用户钱包、账户, 从而盗取用户账户资产的攻击方式.这种攻击簇的潜在前置攻击方式主要包括2种中间攻击: 窃听攻击和交易特征分析, 涉及3种初始攻击: 中间人劫持攻击、钱包客户端漏洞和0day漏洞攻击.攻击者可以利用这些初始攻击发动中间攻击来获取用户钱包、账户信息, 从而间接实现盗取用户钱包、账户余额的攻击目的.

(8) 误操作异常攻击簇.主要包括1种潜在前置攻击: 调用深度攻击, 旨在帮助攻击者在智能合约运行的场景中, 根据合约调用次数受限的特点实现误操作, 从而获利.

综上所述, 卖空攻击簇主要涉及37种初始攻击, 这些攻击方式反映了区块链网络最底层的安全漏洞和威胁.因此, 构建区块链安全防御体系的关键, 是在区块链系统模型设计阶段解决这些初始攻击所依赖的安全漏洞, 从根本上缓解、甚至解决区块链系统面临的诸多安全问题.

7.2 区块链安全防御体系

区块链安全防御体系的构建, 仅依靠简单堆砌现有攻击解决方案是显然不够的, 并且很多解决方案只能在一定程度上缓解相应攻击方式带来的危害, 这降低了区块链网络的安全性上限.因此, 构建区块链安全防御体系, 应当从现有的攻击方式出发, 逆向追溯并解决所有的潜在前置攻击, 从根本上缓解或解决这些区块链攻击.同时, 结合现有的一些区块链安全技术, 进一步解决遗留的安全问题.本节将在攻击关联分析的基础上, 通过设计区块链底层系统模型, 从源头解决上述37种初始攻击依赖的安全漏洞和技术缺陷; 同时, 结合已有的区块链上层安全防御技术, 为区块链网络提供追加式的安全保护, 以此构建出较为全面的区块链安全防御体系.

7.2.1 区块链底层模型设计

区块链系统模型设计的合理性, 往往决定着区块链网络的安全性和实用性.如: 密码学工具的安全性决定着区块链数据的安全性, 共识机制的方案特性决定着区块链网络交易的吞吐量和安全性等.因此, 构建区块链安全防御体系的关键在于设计出一个合理、安全、逻辑紧密的系统模型.根据卖空攻击簇涉及的37种初始攻击的特性, 本文将从以下几个层面出发设计区块链系统模型.

(1) 底层技术安全: 包括密码学工具的安全性、P2P网络的安全性, 可从以下几点考虑.

① 严格评估待选密码学工具的安全性, 避免采用被植入后门的密码学工具, 以阻止攻击者发起的碰撞攻击、后门攻击和交易延展性攻击.

② 提高系统对多种密码学工具的兼容性, 以满足用户在多样化服务场景中的安全性需求.

③ 根据实际安全需求选择备用的密码学工具作为应急预案, 以应对量子攻击、密码算法破解等安全事件带来的安全威胁, 提高系统稳健性.

④ 设计并部署数据过滤模型和数据上链协议, 避免攻击者通过恶意信息攻击破坏区块链网络环境.

(2) 运行机制安全: 科学合理的区块链运行机制是保证区块链网络良好运行的关键, 所以在构建区块链系统时, 开发者应尝试引入科学合理的挖矿机制、共识机制和交易机制.

① 公平的挖矿机制: 系统应在矿工的客户端内置Casper协议, 利用惩罚措施阻止恶意矿工通过无利害关系攻击和空块攻击实现最大化收益.在矿池挖矿的场景中, 矿池应采用矿工算力监测和工作量检验算法并行的方式, 评估矿工工作量的合理性, 以此杜绝矿工通过算力伪造攻击和扣块攻击获取额外奖励的可能性.通过这些方法, 可以在一定程度上保证矿工的平均盈利, 避免矿工因无法盈利而发起BDoS攻击.

② 安全的共识机制: 由于构造的差异性, 不同共识机制所具备的优势和缺陷也不尽相同.为了保证全网节点竞争记账权的公平性, 应从以下几点考虑.

(a) 针对授权共识机制中存在的女巫攻击, 区块链系统需要引入身份验证机制对网络节点进行身份验证和身份关联分析, 对申请多个身份的用户征收费用, 提高攻击者通过申请多个身份实施女巫攻击的攻击成本, 在一定程度上缓解女巫攻击.

(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) 用户行为安全: 用户在区块链网络中的不良行为习惯可能导致其面临隐私信息泄露和资产被盗的风险, 因此, 健全的用户行为规范是区块链安全防御体系的重要一环.首先, 用户节点在设置账户口令时应避免使用弱口令, 同时避免在多个网站使用相同的账号和口令, 预防攻击者发起的弱口令攻击和撞库攻击.此外, 在日常的区块链网络活动中应提高个人安全意识, 忽略来历不明的邮件和网址, 避免落入攻击者为实施钓鱼攻击和中间人劫持攻击而设置的陷阱.

7.2.2 区块链上层技术兼容

区块链的底层模型设计旨在从源头缓解甚至解决37种初始攻击依赖的安全漏洞, 但仍可能遗留下很多安全问题.本节在此基础上, 通过兼容一些区块链上层技术进一步完善本文的区块链安全防御体系.

(1) 基于智能合约的Casper奖惩协议: 尽管以太坊引入的Casper机制可以通过惩罚恶意节点的方式来阻止攻击者借助运行机制漏洞来获取最大化利益的“擦边球”行为, 如挖矿场景中的无利害关系攻击、空块攻击和算力伪造攻击等, 然而其内置Casper协议于PoS系统客户端的做法限制了Casper机制的扩展性和灵活性, 无法满足多样的服务需求.而独立的Casper机制则需要一个高权限的可信管理者, 这与区块链去中心化的思想相悖.智能合约技术的出现, 为解决Casper机制的应用问题提供了思路.区块链系统在初始化阶段可以提供基于智能合约的Casper奖惩协议模板, 全网节点可以在参与公共活动(如挖矿、投票等)时初始化并加入特定的Casper智能合约, 通过奖励举报者、惩罚被举报恶意节点的方式, 保证活动的公平性和有序性.

(2) 基于ARTEMIS的网络异常监测技术: 为了应对网络层存在的BGP路由劫持攻击和分割攻击, 在区块链系统中部署ARTEMIS系统是十分必要的.该系统可以在几分钟内帮助服务提供商解决BGP劫持的问题, 为实现实时的BGP劫持监控及应急响应提供可能.然而, ARTEMIS系统仅对造成网络异常的BGP路由劫持攻击和分割攻击具备较高的识别率, 而对攻击者通过选择性管控流量发起的BGP路由劫持攻击和分割攻击无效.因此, 区块链节点在出块时, 可以通过第4.3节所述的基于权重的节点活性检测方法检查网络是否发生分区现象, 此处不再赘述.通过部署由ARTEMIS技术和基于权重的节点活性检测方法组成的网络异常监测技术, 可以很好地解决网络层存在的安全隐患及其潜在的后置攻击(如克隆攻击), 保证区块链网络的正常运行.

(3) 集成式的代码评估模型: 为了应对0day漏洞攻击、逻辑漏洞等代码漏洞问题, 保证区块链网络设备和智能合约的代码安全, 系统开发者应尝试构建出一套完整全面的代码评估模型, 合理兼容现有包括Fuzzing、代码审计、逆向漏洞分析、反逆向工程等在内的代码监测评估技术.在此基础上, 可以引入机器学习等技术实现全方位的漏洞扫描与风险预测, 进一步提升代码评估模型的效率与准确性, 保证区块链网络中的代码安全.

7.3 区块链攻防技术发展态势

目前, 区块链网络中发生的安全事件以网络层、合约层和应用层攻击为主, 其中, 网络层攻击多为传统网络中的常见安全问题, 这是由当前区块链网络基于传统网络的现状导致的.因此, 传统网络中的安全防御技术也可以用于解决区块链网络层攻击.所以, 本文的区块链安全防御体系可以通过不断兼容传统网络中已有或新兴的安全防御技术, 来保证区块链网络的安全运行.此外, 合约层攻击和应用层攻击大多是由代码漏洞、客户端漏洞和用户社会行为漏洞导致的, 这些最底层的漏洞是无法完全避免的, 所以本文的区块链安全防御体系旨在不断完善区块链底层模型设计, 通过科学合理的制度不断规范用户的行为, 以此减少安全漏洞.同时, 在技术兼容方面, 区块链安全防御体系可以通过不断兼容新型的漏洞检测方法或策略来完善自身集成式的代码评估模型, 以此保证区块链系统的健壮性.

值得注意的是: 目前已发生的区块链安全事件大多只会影响区块链网络的正常运行, 但无法从根本上摧毁区块链系统, 这是因为区块链的底层技术和合理运行机制在一定程度上保证了区块链系统的安全性.一旦数据层和共识层中的大多数攻击, 如碰撞攻击、量子攻击、51%攻击等目前仅理论上可行的区块链攻击具备实际发生的条件, 则区块链系统无疑面临着崩溃的风险.因此, 构建区块链安全防御体系需要在保证当前系统安全的同时, 通过技术预研增强防御体系自身的稳健性.本文构建的区块链安全防御体系在底层模型设计阶段便要求开发者提高系统对多种密码学工具的兼容性, 以满足用户在多样化服务场景中的安全性需求.同时, 根据实际安全需求选择备用的密码学工具作为应急预案, 以应对量子攻击、密码算法破解等安全事件带来的安全威胁.此外, 本文提出的区块链安全防御体系在上层技术兼容方面同样对新兴的安全防御技术提供了较高的兼容性, 因此具备良好的可扩展性, 可以为大多数区块链系统提供安全、可靠的持续性防御.

区块链技术的理论研究目前处于2.0甚至3.0阶段, 而应用与推广将在未来很长的一段时间里处于1.0至2.0的过渡阶段, 这种预研优势是保证区块链技术在区块链攻防博弈中持续发展的根本.随着区块链技术的不断推广与应用, 多样、复杂的应用场景将使区块链技术面临着更加严峻的安全威胁, 而区块链攻击技术势必会关注区块链具体应用场景中由于技术低耦合性导致的安全漏洞.此外, 云计算、边缘计算、物联网等新兴技术体系与区块链技术的融合发展, 势必成为一种颇具前景的区块链发展模式, 而各种技术的短板及技术体系之间的耦合程度仍将成为攻击者的攻击目标.最后, 服务场景和技术架构的复杂化, 可能为攻击者实现51%攻击、双花攻击等提供一条新的攻击序列.针对这些潜在的安全威胁, 通过维护区块链攻击关联视图来准确评估系统安全性, 结合“底层模型设计+上层技术兼容”提供安全防御的模式, 将成为区块链安全防御技术的主流.尤其是在技术兼容方面, 态势感知、溯源追踪、机器学习等新兴技术的应用, 将大大提升区块链系统安全防御体系的网络监管和预警能力, 为实现快速的攻击检测与追踪溯源提供了可能.

8 总结与展望

区块链凭借其多元融合架构赋予的去中心化、去信任化、不可篡改等技术特性, 成为了一种具有里程碑意义的新一代互联网技术, 为解决传统中心化服务架构中的信任问题、安全问题提供了一种新的解决思路.因此, 区块链技术具备十分重要的科研价值和良好的应用前景.关于区块链的研究甚至一度上升至国家发展战略层面, 而安全问题更是区块链研究的重中之重.本文从区块链层级架构和攻击关联分析两个维度出发, 首先对现有60种区块链攻击方式的攻击原理和防御策略展开研究; 然后, 通过探究这些攻击之间的潜在联系, 归纳出了完整的卖空攻击簇及其8个子攻击簇; 最后, 逆向溯源这些攻击簇涉及的37种攻击簇初始攻击, 从根本上给出了缓解或解决相应区块链攻击的策略, 奠定了区块链安全防御体系的基础.同时, 结合现有的安全方案, 给出了解决遗留安全问题的防御策略, 构建出了相对完整的区块链安全防御体系.

区块链的去中心化结构特性, 使其具备了与云计算等中心化服务相同的发展前景, 这意味着区块链技术在未来不仅会被用来解决中心化服务架构中的信任问题和安全问题, 还会出现在更多的去中心化服务场景中.而在未来的一段时间中, 区块链技术的发展将侧重于多服务架构融合的场景, 愈加复杂的服务场景将给区块链技术带来更加严峻的安全挑战.因此, 针对具体情况进行具体分析, 构建支持防御策略动态更新的区块链安全防御体系, 是保证区块链技术快速发展的必由之路.

参考文献

[1]

Pawel S, Daniël R, Ivan H, Siwei S. StrongChain: Transparent and collaborative proof-of-work consensus. In: Proc. of the USENIX Security. 2020. 819-836.

[2]

Yu HF, Ivica N, Ruomu H, Prateek S. OHIE: Blockchain scaling made simple. In: Proc. of the IEEE S & P. 2020. 90-105.

[3]

Liu ZT, Xiang YX, Shi J, Gao P, Wang HY, Xiao XS, Wen BH, Hu YC. HyperService: Interoperability and programmability across heterogeneous blockchains. In: Proc. of the CCS. 2019. 549-566.

[4]

George B, Brian NL. Bobtail: Improved blockchain security with low-variance mining. In: Proc. of the NDSS. 2020. https://dx.doi.org/10.14722/ndss.2020.23095

[5]

Si XM, Xu MX, Yuan C. Survey on security of blockchain. Journal of Cryptologic Research, 2018, 5(5): 8-19(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201805002.htm

[6]

PeckShield. A report on anti money laundering (AML) for digital asset in 2019 (in Chinese). https://m.dapptotal.com/reports/PeckShield_AML_Research_Report_final

[7]

Eric B. The Economic Limits of Bitcoin and the Blockchain. National Bureau of Economic Research, Inc., 2018.

[8]

Karame G, Androulaki E, Capkun S. Double-spending fast payments in Bitcoin. In: Proc. of the ACM Conf. on Computer and Communications Security. 2012. 906-917.

[9]

Orda A, Rottenstreich O. Enforcing fairness in blockchain transaction ordering. In: Proc. of the IEEE ICBC. 2019. 368-375.

[10]

Bitcoin Stack Exchange. What is a Finney attack? 2020. https://bitcoin.stackexchange.com/questions/4942/what-is-a-finney-attack

[11]

Yuan C. Defense scheme during hard bifurcation in block chain. Modern Computer, 2019(9): 3-7, 13(in Chinese with English abstract).

[doi:10.3969/j.issn.1007-1423.2019.09.001]

[12]

Nakamoto S. Bitcoin: A peer-to-peer electronic cash system. 2020. https://bitcoin.org/bitcoin.pdf

[13]

Ma A, Pan X, Wu L, Guo JF, Huang QW. A survey of the basic technology and application of block chain. Journal of Information Security Research, 2017, 3(11): 968-980(in Chinese with English abstract).

[doi:10.3969/j.issn.2096-1057.2017.11.003]

[14]

Liu YZ, Liu JW, Zhang ZY, Xu TG, Yu H. Overview on blockchain consensus mechanisms. Journal of Cryptologic Research, 2019, 6(4): 395-432(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201904001.htm

[15]

Huang JF, Liu J. Survey on blockchain research. Journal of Beijing University of Posts and Telecommunications, 2018, 41(2): 1-8(in Chinese with English abstract).

[doi:10.3969/j.issn.1008-7729.2018.02.001]

[16]

He HW, Yan A, Chen ZH. A survey of smart contract technology and application based on blockchain. Journal of Computer Research and Development, 2018, 55(11): 2452-2466(in Chinese with English abstract).

[doi:10.7544/issn1000-1239.2018.20170658]

[17]

Ethereum. Ethereum official site. 2020. https://ethereum.org

[18]

Melanie S. Blockchain: Blueprint for a New Economy. O'Reilly Media, Inc., 2015.

[19]

R3 CEV. R3 official site. 2020. https://www.r3.com

[20]

China Ledger. China ledger official site. 2020. http://www.chinaledger.com

[21]

Cisco. Cisco official site. 2020. https://www.cisco.com

[22]

Hyperledger. Hyperledger official site. 2020. https://www.hyperledger.org

[23]

Katz J, Lindell Y. Introduction to Modern Cryptography. 2nd ed., Chapman and Hall/CRC, 2014.

[24]

Berndt S, Liśkiewicz M. Algorithm substitution attacks from a steganographic perspective. In: Proc. of the CCS. 2017. 1649-1660.

[25]

Decker C, Wattenhofer R. Bitcoin transaction malleability and MtGox. In: Proc. of the ESORICS. 2014. 313-326.

[26]

Douceur JR. The Sybil attack. In: Proc. of the IPTPS. 2002. 251-260.

[27]

Bonneau J. Why buy when you can rent? Bribery attacks on Bitcoin-style consensus. In: Proc. of the Financial Cryptography and Data Security (FC). 2016. 19-26.

[28]

King S, Nadal S. PPCoin: Peer-to-peer crypto-currency with proof-of-stake. 2012. http://people.cs.georgetown.edu/~clay/classes/fall2017/835/papers/peercoin-paper.pdf

[29]

Houy N. It will cost you nothing to 'kill' a proof-of-stake crypto-currency. 2014. https://papers.ssrn.com/sol3/papers.cfm?abstract_ id=2393940

[30]

CryptoWiki. Proof-of-work system. 2020. http://cryptowiki.net/index.php?title=Proof-of-work_system

[31]

360 Core Security. Hacker forged computational power to steal multiple digital currencies (in Chinese). https://blogs.360.cn/post/

[32]

Bag S, Ruj S, Sakurai K. Bitcoin block withholding attack: Analysis and mitigation. IEEE Trans. on Information Forensics and Security, 2017, 12(8): 1967-1978.

[33]

Narayanan A, Bonneau J, Felten EW, Miller A, Goldfeder S, Clark J. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction. Princeton University Press, 2016.

[34]

Thomas K, Pullman J, Yeo K, Raghunathan A, Kelley PG, Invernizzi L, Benko B, Pietraszek T, Patel S, Boneh D, Bursztein E. Protecting accounts from credential stuffing with password breach alerting. In: Proc. of the USENIX Security. 2019. 1556-1571.

[35]

Bilge L, Dumitras T. Investigating zero-day attacks. 2013. https://www.usenix.org/system/files/login/articles/02_bilge_6-13_online. pdf

[36]

Anderson R. Secuirty Engineering: A Guide to Building Dependable Distributed Systems. 2nd ed., Wiley Publishing, Inc., 2008.

[37]

Hadnagy C. Social Engineering: The Art of Human Hacking. John Wiley & Sons, 2010.

[38]

Jin C, Wang XY, Tan HY. Dynamic attack tree and its applications on Trojan horse detection. In: Proc. of the Multimedia and Information Technology (MMIT). 2010. 56-59.

[39]

Grustniy L. Rakhni Trojan: To encrypt and to mine. 2018. https://www.kaspersky.com/blog/rakhni-miner-cryptor/22988/

[40]

Barber S, Boyen X, Shi E, Uzun E. Bitter to better-how to make Bitcoin a better currency. In: Proc. of the Financial Cryptography and Data Security (FC). 2012. 399-414.

[41]

Lee S, Kim S. Short selling attack: A self-destructive but profitable 51% attack on PoS blockchains. IACR Cryptology ePrint Archive, 2020-019, 2020.

[42]

Santis AD, Micali S, Persiano G. Non-interactive zero-knowledge proof systems. In: Proc. of the CRYPTO. 1987. 52-72.

[43]

Schwennesen B. Elliptic curve cryptography and government backdoors. 2016. https://services.math.duke.edu/~bray/Courses/89s- MOU/2016/Papers/BAS_Paper3_EllipticCurveCryptography.pdf

[44]

Aggarwal D, Brennen GK, Lee T, Santha M, Tomamichel M. Quantum attacks on Bitcoin, and how to protect against them. Ledger, 2018, 3: 68-90.

http://arxiv.org/abs/1710.10377

[45]

Awan MK, Cortesi A. Blockchain transaction analysis using dominant sets. In: Proc. of the Computer Information Systems and Industrial Management (CISIM). 2017. 229-239.

[46]

Androulaki E, Karame GO, Roeschlin M, Scherer T, Capkun S. Evaluating user privacy in Bitcoin. In: Proc. of the Financial Cryptography and Data Security (FC). 2013. 34-51.

[47]

Fuji R, Usuzaki S, Aburada K, Yamaba H, Katayama T, Park M, Shiratori N, Okazaki N. Investigation on sharing signatures of suspected malware files using blockchain technology. In: Proc. of the Int'l MultiConf. of Engineers and Computer Scientists (IMECS). 2019. 94-99.

[48]

Zcash. Zcash official site. 2020. https://z.cash

[49]

Wuille P. Segregated witness and its impact on scalability. 2020. http://diyhpl.us/wiki/transcripts/scalingbitcoin/hong-kong/segregated-witness-and-its-impact-on-scalability/

[50]

Géron A. Hands-on Machine Learning with Scikit-learn, Keras, and TensorFlow. 2nd ed., O'Reilly Media, Inc., 2019.

[51]

Estehghari S, Desmedt Y. Exploiting the client vulnerabilities in Internet E-voting systems: Hacking Helios 2.0 as an example. EVT/WOTE, 2010, 10: 1-9.

[52]

Dai HN, Wang H, Xiao H, Li XR, Wang Q. On eavesdropping attacks in wireless networks. In: Proc. of the 2016 IEEE Int'l Conf. on Computational Science and Engineering (CSE). IEEE, 2016. 138-141.

[53]

Heilman E, Kendler A, Zohar A, Goldberg S. Eclipse attacks on Bitcoin's peer-to-peer network. In: Proc. of the USENIX Security. 2015. 129-144.

[54]

Apostolaki M, Zohar A, Vanbever L. Hijacking Bitcoin: Routing attacks on cryptocurrencies. In: Proc. of the IEEE S & P. 2017. 375-392.

[55]

Sun YX, Edmundson A, Vanbever L, Li O. RAPTOR: Routing attacks on privacy in Tor. In: Proc. of the USENIX Security. 2015. 271-286.

[56]

Elleithy KM, Blagovic D, Wang C, Sideleau P. Denial of service attack techniques: Analysis, implementation and comparison. Journal of Systemics, Cybernetics, and Informatics, 2005, 3(1): 66-71.

http://d.wanfangdata.com.cn/periodical/Doaj000002198688

[57]

Saad M, Thai MT, Mohaisen A. POSTER: Deterring DDoS attacks on blockchain-based cryptocurrencies through mempool optimization. In: Proc. of the ASIACCS. 2018. 809-811.

[58]

Cointelegraph. Bitcoin exchange poloniex under severe DDoS attack again, users outraged. 2017. https://cointelegraph.com/news/bitcoin-exchange-poloniex-under-severe-ddos-attack-again-users-outraged

[59]

Mirkin M, Ji Y, Pang J, Klages-Mundt A, Eyal I, Juels A. BDoS: Blockchain denial-of-service attacks. arXiv Preprint arXiv: 1912. 07497, 2019.

[60]

Wikipedia. Lightning network. 2020. https://en.wikipedia.org/wiki/Lightning_Network

[61]

Sun GZ, Wang JT, Gu Y. Security threat analysis of blockchain technology. Journal of Nanjing University of Posts and Telecommunications (Natural Science Edition), 2019, 39(5): 48-62(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-NJYD201905008.htm

[62]

Microsoft. Microsoft security development lifecycle (SDL). 2020. https://www.microsoft.com/en-us/securityengineering/sdl/

[63]

Sutton M, Greene A, Amini P. Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, 2007.

[64]

Dowd M, McDonald J, Schuh J. The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities. Addison-Wesley Professional, 2006.

[65]

Klein T. A Bug Hunter's Diary. No Starch Press, 2011.

[66]

Roundy KA, Miller BP. Binary-code obfuscations in prevalent packer tools. ACM Computing Surveys, 2013, 46(1): 1-32.

[67]

Dominic L. BlockQuick: Super-light client protocol for blockchain validation on constrained devices. IACR Cryptology ePrint Archive, 2019-579, 2019.

[68]

Sermpezis P, Kotronis V, Gigis P, Dimitropoulos X, Cicalese D, King A, Dainotti A. ARTEMIS: Neutralizing BGP hijacking within a minute. IEEE/ACM Trans. on Networkin, 2018, 26(6): 2471-2486.

[doi:10.1109/TNET.2018.2869798]

[69]

Amadi EC, Eheduru GE, Eze FU, Ikerionwu C, Okafor KC. Anti-DDoS firewall: A zero-sum mitigation game model for distributed denial of service attack using linear programming. In: Proc. of the 2017 IEEE Int'l Conf. on Knowledge-based Engineering and Innovation (KBEI). IEEE, 2017. 27-36.

[70]

Lamport L, Shostak R, Pease M. The Byzantine generals problem. ACM Trans. on Programming Languages and Systems (TOPLAS), 1982, 4(3): 382-401.

[71]

Castro M, Liskov B. Practical Byzantine fault tolerance. In: Proc. of the USENIX Symp. on Operating Systems Design and Implementation (OSDI). 1999. 173-186.

[72]

Microsoft. Ethereum proof-of-authority on azure. 2018. https://azure.microsoft.com/en-us/blog/ethereum-proof-of-authority-on- azure

[73]

Ekparinya P, Gramoli V, Jourjon G. The attack of the clones against proof-of-authority. In: Proc. of the NDSS. 2020. https://dx.doi. org/10.14722/ndss.2020.24082

[74]

Bitconch. A newly distributed Web protocol based on an innovative proof reputation (PoR) consensus algorithm. 2020. https://bitconch.io/download/BRWhitePaperEn.pdf

[75]

Grigg I. EOS—An introduction. 2020. https://eos.io/documents/EOS_An_Introduction.pdf

[76]

Zaccagni Z, Dantu R. Proof of review (PoR): A new consensus protocol for deriving trustworthiness of reputation through reviews. IACR Cryptology ePrint Archive, 2020-475, 2020.

[77]

Leonard K. A PoR/PoS-hybrid blockchain: Proof of reputation with nakamoto fallback. IACR Cryptology ePrint Archive, 2020-381, 2020.

[78]

Krebsonsecurity. Who and what is coinhive? 2018. https://krebsonsecurity.com/2018/03/who-and-what-is-coinhive/

[79]

Redman J. Small Ethereum clones getting attacked by mysterious '51 Crew'. 2016. https://news.bitcoin.com/ethereum-clones- susceptible-51-attacks/

[80]

Paganini P. Bitcoin gold hit by double-spend attack, exchanges lose over $18 million. 2018. https://securityaffairs.co/wordpress/72878/hacking/bitcoin-gold-double-spend.html

[81]

Grunspan C, Pérez-Marco R. On profitability of selfish mining. arXiv Preprint arXiv: 1805.08281, 2018.

[82]

Kwon J. Tendermint: Consensus without mining. 2014. https://pdfs.semanticscholar.org/df62/a45f50aac8890453b6991ea115e996c 1646e.pdf

[83]

Szilágyi P. EIP 225: Clique proof-of-authority consensus protocol. 2020. https://eips.ethereum.org/EIPS/eip-225

[84]

Buterin V, Griffith V. Casper the friendly finality Gadget. arXiv Preprint arXiv: 1710.09437, 2017.

[85]

Buterin V. Slasher: A punitive proof-of-stake algorithm. 2014. https://blog.ethereum.org/2014/01/15/slasher-a-punitive-proof-of- stake-algorithm/

[86]

Anley C, Heasman J, Lindner F, Richarte G. The Shellcoder's Handbook: Discovering and Exploiting Security Holes. 2nd ed., Wiley Publishing, Inc., 2007.

[87]

Bitcoinwiki. Value overflow incident. 2016. https://en.bitcoin.it/wiki/Value_overflow_incident

[88]

Hessenauer S. Batch overflow bug on Ethereum ERC20 token contracts and SafeMath. 2018. https://blog.matryx.ai/batch-overflow- bug-on-ethereum-erc20-token-contracts-and-safemath-f9ebcc137434

[89]

Alharby M, Moorsel AV. Blockchain based smart contracts: A systematic mapping study. In: Proc. of the Int'l Conf. on Artificial Intelligence and Soft Computing. 2017. 125-140.

[90]

Atzei N, Bartoletti M, Cimoli T. A survey of attacks on ethereum smart contracts SoK. In: Proc. of the Int'l Conf. on Principles of Security and Trust. 2017. 164-186.

[91]

Kieran E. KoET (king of the ether throne). 2020. https://github.com/kieranelby/KingOfTheEtherThrone

[92]

Rodler M, Li WT, Karame GO, Davi L. Sereum: Protecting existing smart contracts against re-entrancy attacks. In: Proc. of the NDSS. 2019. https://dx.doi.org/10.14722/ndss.2019.23413

[93]

Fang WD, Zhang WX, Pan T, Chen W, Yang Y. Cyber security in blockchain: Threats and countermeasures. Journal of Cyber Security, 2018, 3(2): 87-104(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-XAXB201802008.htm

[94]

Wikipedia. The DAO. 2020. https://en.wikipedia.org/wiki/Decentralized_autonomous_organization

[95]

Zhao HQ, Zhang YY, Yang K, Kim T. Breaking turtles all the way down: An exploitation chain to break out of VMware ESXi. In: Proc. of the USENIX Security. 2019. 1-9.

[96]

Xu Y, Li WX, Wang DY. Web security attack and defense: A practical guide to penetration testing. Beijing: Publishing House of Electronics Industry, 2018.

[97]

Chen HS, Pendleton M, Njilla L, Xu SH. A survey on Ethereum systems security: Vulnerabilities, attacks and defenses. ACM Computing Surveys, 2020, 53(3): 1-43.

http://dl.acm.org/doi/10.1145/3391195

[98]

Vogelsteller F, Buterin V. EIP 20: ERC-20 token standard. 2015. https://eips.ethereum.org/EIPS/eip-20

[99]

Daniel P, Benjamin L. Broken metre: Attacking resource metering in EVM. In: Proc. of the NDSS. 2020. https://dx.doi.org/10. 14722/ndss.2020.24267

[100]

Kalra S, Goel S, Dhawan M, Sharma S. ZEUS: Analyzing safety of smart contracts. In: Proc. of the NDSS. 2018. http://dx.doi.org/10.14722/ndss.2018.23082

[101]

Weidman G. Penetration Testing: A Hands-on Introduction to Hacking. No Starch Press, 2014.

[102]

Zhang R, Xue R, Liu L. Security and privacy on blockchain. ACM Computing Surveys, 2019, 52(3): 1-34.

[103]

McCorry P, Hicks A, Meiklejohn S. Smart contracts for bribing miners. In: Proc. of the Financial Cryptography and Data Security (FC). 2018. 3-18.

[104]

Charlie H, Squir RL. Automating attack discovery on blockchain incentive mechanisms with deep reinforcement learning. arXiv Preprint arXiv: 1912.01798, 2019.

[105]

Dasgupta D. A survey of blockchain from security perspective. Journal of Banking and Financial Technology, 2019, 3: 1-17.

[doi:10.1007/s42786-018-00002-6]

[106]

Weber JE, Guster D, Safonov P, Schmidt MB. Weak password security: An empirical study. Information Security Journal: A Global Perspective, 2008, 17: 45-54.

http://www.iacademic.info/user-api/na/articleBybaidu?j=61575&a=596447921848189477

[107]

Wu YM, Cao P, Withers A, Kalbarczyk ZT, Iyer RK. Mining threat intelligence from billion-scale SSH brute-force attacks. In: Proc. of the NDSS. 2020. https://dx.doi.org/10.14722/diss.2020.23007

[108]

Anderson R. Security Engineering. 2nd ed., Wiley Publishing, Inc., 2008.

[109]

Whittaker Z, Shu C. Binance says more than $40 million in Bitcoin stolen in 'large scale' hack. 2019. https://techcrunch.com/2019/05/07/binance-breach/

[110]

Ghasemisharif M, Ramesh A, Checkoway S, Kanich C, Polakis J. O single sign-off, where art thou? An empirical analysis of single sign-on account hijacking and session management on the Web. In: Proc. of the USENIX Security. 2018. 1475-1492.

[111]

Gao A. Chinese Bitcoin exchange OKEx hacked for $3 Mln, police not interested. 2017. https://cointelegraph.com/news/chinese-bitcoin-exchange-okex-hacked-for-3-mln-police-not-interested

[112]

Jin C, Wang XY, Tan HY. Dynamic attack tree and its applications on Trojan horse detection. In: Proc. of the Int'l Conf. on Multimedia and Information Technology. 2010. 56-59.

[113]

Cimpanu C. Banking Trojan now targets coinbase users, not just banking portals. 2017. https://www.bleepingcomputer.com/news/security/banking-trojan-now-targets-coinbase-users-not-just-banking-portals/

[114]

Karapanos N, Capkun S. On the effective prevention of TLS man-in-the-middle attacks in Web applications. In: Proc. of the USENIX Security. 2014. 671-686.

[115]

MacKenzie P, Reiter MK. Networked cryptographic devices resilient to capture. In: Proc. of the IEEE S & P. 2001. 12-25.

[116]

Schroeder S. Wallet bug freezes more than $150 million worth of Ethereum. 2017. https://mashable.com/2017/11/08/ethereum-parity-bug/

[117]

Kelso CE. $45, 000, 000 worth of BCH & BTC claimed stolen in SIM attack: Doubts linger about veracity. 2020. https://coinspice.io/news/45000000-worth-of-bch-btc-claimed-stolen-in-sim-attack-doubts-linger-about-veracity/

[118]

Bamert T, Decker C, Wattenhofer R, Welten S. Bluewallet: The secure bitcoin wallet. In: Proc. of the Int'l Workshop on Security and Trust Management. 2014. 65-80.

[119]

Sullivan B. Hackers steal 4, 100 Bitcoins from Inputs. io. 2013. https://www.cbronline.com/news/hackers-steal-4100-bitcoins-from-inputsio/

[120]

Saad M, Spaulding J, Njilla L, Kamhoua C, Shetty S, Nyang D, Mohaisen A. Exploring the attack surface of blockchain: A systematic overview. arXiv Preprint arXiv: 1904.03487, 2019.

[5]

斯雪明, 徐蜜雪, 苑超. 区块链安全研究综述. 密码学报, 2018, 5(5): 8-19.

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201805002.htm

[6]

派盾. 2019年度数字资产反洗钱(AML)研究报告. 2020.

[11]

袁超. 区块链中硬分叉期间的防御方案. 现代计算机, 2019(9): 3-7, 13.

[doi:10.3969/j.issn.1007-1423.2019.09.001]

[13]

马昂, 潘晓, 吴雷, 郭景峰, 黄倩文. 区块链技术基础及应用研究综述. 信息安全研究, 2017, 3(11): 968-980.

[doi:10.3969/j.issn.2096-1057.2017.11.003]

[14]

刘懿中, 刘建伟, 张宗洋, 徐同阁, 喻辉. 区块链共识机制研究综述. 密码学报, 2019, 6(4): 395-432.

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201904001.htm

[15]

黄俊飞, 刘杰. 区块链技术研究综述. 北京邮电大学学报, 2018, 41(2): 1-8.

[doi:10.3969/j.issn.1008-7729.2018.02.001]

[16]

贺海武, 延安, 陈泽华. 基于区块链的智能合约技术与应用综述. 计算机研究与发展, 2018, 55(11): 2452-2466.

[doi:10.7544/issn1000-1239.2018.20170658]

[31]

360核心安全. 黑客伪造算力盗取多种数字货币. https://blogs.360.cn/post/黑客伪造算力盗取多种数字货币.html

[61]

孙国梓, 王纪涛, 谷宇. 区块链技术安全威胁分析. 南京邮电大学学报(自然科学版), 2019, 39(5): 48-62.

https://www.cnki.com.cn/Article/CJFDTOTAL-NJYD201905008.htm

[93]

房卫东, 张武雄, 潘涛, 陈伟, 杨旸. 区块链的网络安全: 威胁与对策. 信息安全学报, 2018, 3(2): 87-104.

https://www.cnki.com.cn/Article/CJFDTOTAL-XAXB201802008.htm

[96]

徐焱, 李文轩, 王东亚. Web安全攻防: 渗透测试实战指南. 北京: 电子工业出版社, 2018.

区块链公链应用的典型安全问题综述

区块链公链应用的典型安全问题综述

  软件学报  2022, Vol. 33 Issue (1): 324-355

  PDF    

引用本文

魏松杰, 吕伟龙, 李莎莎. 区块链公链应用的典型安全问题综述[J]. 软件学报, 2022, 33(1): 324-355. http://www.jos.org.cn/1000-9825/6280.htm

  

Wei SJ, Lü WL, Li SS. Overview on Typical Security Problems in Public Blockchain Applications[J]. Journal of Software, 2022, 33(1): 324-355(in Chinese). http://www.jos.org.cn/1000-9825/6280.htm  

区块链公链应用的典型安全问题综述

魏松杰

,

吕伟龙

,

李莎莎

    

南京理工大学 计算机科学与工程学院, 江苏 南京 210094

收稿时间: 2020-03-05; 修改时间: 2020-05-07; 采用时间: 2020-12-04; jos在线出版时间: 2021-01-15

基金项目: 国家自然科学基金(61802186, 61472189); 国家重点研发计划(2020YFB1804604)

作者简介:

(1977-), 男, 博士, 副教授, CCF高级会员, 主要研究领域为网络安全, 区块链技术;(1996-), 男, 硕士, CCF学生会员, 主要研究领域为区块链技术, 密码学, 网络安全;(1997-), 女, 硕士, 主要研究领域为分布式系统, 任务调度.

通讯作者:

吕伟龙, E-mail:

118106043462@njust.edu.cn.

摘要: 区块链作为互联网金融的颠覆性创新技术, 吸引学术研究和工程应用领域广泛关注, 并被持续推广应用到各种行业领域中. 以公有链为代表的区块链系统具有弱中心化、信任共识、平台开放、系统自治、用户匿名、数据完整等特点, 在缺乏集中可信的分布式场景中实现可信数据管理和价值交易. 但区块链作为新兴信息技术, 由于自身机制和周边设施不够完善、用户安全观念不够成熟等原因, 也面临安全威胁和挑战. 本文首先介绍了区块链技术, 回顾其面临的安全风险; 其次以比特币和以太坊两个典型系统为例, 剖析了针对面向代币交易和应用的区块链系统的各类安全威胁以及应对方法; 接着分析了钱包交易所等区块链周边设施和区块链用户的安全隐患; 最后对文中安全问题进行了分类总结, 提出可行技术线路和防御方法, 展望当前区块链安全的研究热点和发展趋势.

关键词:

区块链    公链安全    攻击流程    防御策略    共识安全    

Overview on Typical Security Problems in Public Blockchain Applications

WEI Song-Jie

,

LÜ Wei-Long

,

LI Sha-Sha

    

School of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing 210094, China

Abstract: Originated as Internet financial technology, blockchain is prevailing in many application scenarios and attracting attentions from both academia and industry. Typical blockchain systems are characterized with decentralization, trustworthiness, openness, autonomy, anonymity, and immutability, which brings trustworthiness for data management and value exchange in distributed computation environment without centralized trust authority. However, blockchain is still developing as a continuously evolving new technique. Its mechanisms, peripheral facilities, and user maturity in security are yet to be optimized, resulting in various security threats and frequent security incidents. This paper first overviews the blockchain technology and its potential security vulnerabilities when being used for token transaction and exchange. Then the mostly-seen security problems are enumerated and analyzed with Bitcoin and Ethereum as two sample systems. The security problems encountered by blockchain peripheral facilities and users are presented, and their root causes are probed. Finally, the surveyed problems are categorized and the possible countermeasures or defenses are proposed to address them. Promising research areas and technology evolving directions are briefly covered for the future.

Key words:

blockchain    public chain security    attack procedure    defense strategy    consensus security    

1 绪 论

1.1 区块链介绍

自中本聪在《比特币: 点对点的电子现金系统》一文中首次提出区块链架构至今, 历经10年光阴. 10年间, 区块链技术飞速发展, 广泛应用于各个领域. 从比特币、莱特币等加密货币的区块链1.0时代, 到以太坊、超级账本等支持智能合约的平台的区块链2.0时代, 再到目前面向去中心化应用DApp服务的百花齐放, 区块链经历了数次技术迭代[1,2]. 近些年来, 区块链与金融、农业、能源、公益、医疗等领域深度结合, 市场上出现大量与区块链相关的应用, 众多学者也投身于区块链的研究之中. 区块链技术无疑成为当前最热门的技术之一. 但目前区块链技术和应用方兴未艾, 多数处于试验阶段, 安全漏洞和攻击事件层出不穷, 给用户与区块链服务提供商带来了不小的经济损失, 因此区块链的安全问题受到了各方的广泛关注. 同时, 区块链智能合约一旦在分布式、去中心化网络中部署, 就难以修改, 这种特性一方面防止了数据操纵, 有利于建立起基于广泛分布共识的信任机制; 但另一方面, 当面对安全攻击时, 该特性也阻碍了区块链系统建立起有效的纠正机制, 难以有效及时的挽回损失[3,4].

本文在调研过程中, 发现大多数区块链的安全问题是由于系统自身设计缺陷或是规则漏洞而引起的, 少数区块链安全攻击的对象主要包括交易所、数字钱包、矿池矿场以及区块链用户, 而交易所、数字钱包和矿池矿场可归类为区块链周边设施. 因此本文将所有公有区块链安全问题分为3类, 即区块链自身系统、区块链周边设施和区块链用户, 依次在第2、3、4节综述并分析它们各自面临的安全问题. 本文重点讨论区块链作为分布式系统应用时面临的安全威胁, 并不涉及对底层通信、P2P对等网络、加密算法、数据存储等传统系统和网络安全问题的讨论. 全文讨论的安全问题总览如图1所示.

图 1

Fig. 1

Fig. 1 Overview of blockchain security problems

图 1 区块链安全问题总览

1.2 区块链典型安全事件回顾

(1) 2017年7月Parity多重签名钱包被盗事件

Parity是目前使用最广泛的以太坊钱包之一. 本次事件主要是由于智能合约代码编写不严谨导致的, 约有时价3000万美元的15万以太币(ETH)被盗. 攻击造成了ETH从235美元暴跌至196美元左右. 事后人们逐渐认识到智能合约的编写必须遵守严格的安全规范或模式, 智能合约部署前最好先由专业的机构进行安全审计[5].

(2) 2018年11月EOS.win游戏合约遭受随机数攻击事件

EOS是一种为商用分布式应用(DApp)设计的区块链操作系统, EOS.win是在该平台下实现的竞猜游戏. 在EOS.win的智能合约中, 随机数的生成与开奖序号有关, 且智能合约内联调用失败会导致状态信息回滚. 攻击者先是在同一时间控制多个合约账户同时实施小额投注, 以试探随机数生成规律. 在掌握一定规律后, 攻击者再进行多笔大额投注, 以更高的概率赢得奖金并快速套现, 2018年11月12日短短一分钟内攻击者获利超过9000个EOS币, 导致EOS.win参与用户的大量流失. 该事件给DApp开发者以警醒——在没有做好充分的安全保障前, 不要轻易上线DApp, 保护好诚实用户的资金才能更好的留住用户[6].

(3) 2019年1月ETC遭受51%攻击事件

在全球最大的智能合约漏洞事件The DAO[7]发生后, 以太坊分裂成ETC和ETH两大阵营. 2019年1月7日, 多家机构和交易所接连预警和确认, 加密数字货币ETC遭遇51%攻击, 造成54200个ETC、约27万美元的损失. 此次攻击产生的根本原因是ETC市值缩水, 网络算力降低, 攻击者通过短期租用算力的方式获得共识主导能力. 这次事件给所有基于工作量证明共识机制的区块链敲响了警钟——虽然在一般的攻击场景中, 51%攻击的成本高、收益率低, 但对于小规模区块链系统来说, 攻击者可以通过租借、挪用算力的方式, 短瞬间获得大量算力, 从而进行51%攻击.

2 区块链自身安全问题

2.1 区块链1.0的安全问题——以比特币为例

本文中区块链1.0的安全问题, 主要是指以比特币为代表的数字加密货币区块链系统的安全风险和漏洞, 这类区块链通常只能进行与转账、汇款和数字化支付相关的操作, 缺少智能合约的部署运行能力. 有些区块链攻击虽然从时间上来说, 是在区块链2.0时期被提出的, 但由于其主要是在数字加密货币区块链中实施的, 因此也被分类在区块链1.0的安全问题中.

需要指出的是, 本文虽然结合区块链技术的发展过程, 将攻击分为1.0时代、2.0时代等, 但以以太坊等为代表的区块链2.0技术完全基于最初区块链的“分布式系统+P2P网络+密码学”基础架构发展而成, 只是在共识机制、节点管理、智能合约、算法选择等方面进行了扩展和创新. 因此本节所讨论的安全问题, 实际上也适用于2.0时代中采用同样设计或者具有同样漏洞的区块链系统.

本节将以比特币为例, 逐一例举这类攻击的攻击形式, 分析其攻击原理, 总结可能的防范方法.

比特币是一种采用区块链架构的加密数字货币, 比特币使用P2P网络众多节点组成的分布式账本进行确认与记账操作, 并用密码学技术进行加密, 以确保货币流通各个环节的安全性[8]. 比特币架构中, 每一个区块包含区块头和区块体两部分. 区块头包含数据和父区块地址, 区块体主要包含交易详情和交易计数. 比特币引入了工作量证明(PoW)工作机制、UTXO和Merkletree等数据结构、SHA-256椭圆曲线加密算法, 以确保攻击者需要面临极高难度才能对比特币区块链进行破解[9].

比特币的区块结构如图2所示.

比特币作为区块链的第一个应用, 其将P2P动态组网、基于密码学的分布式账本、共识机制等成熟技术进行组合, 保证了比特币系统的可用性、机密性和完整性. 但比特币并非完美, 有些设定反而给系统带来了安全隐患[10,11]. 下面依次介绍典型攻击及其防范方法.

2.1.1 双花攻击(double spending attack)

双花攻击, 顾名思义就是将同一笔数字货币花费多次的攻击[12-14]. 双花攻击包含以下4个步骤.

① 攻击者的地址1发起一笔向受害者转账数字货币的交易A;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者转账现金或是发送商品;

③ 攻击者的地址1发起一笔向其地址2转账数字货币的交易B, 该交易的交易金额为攻击者地址1中的数字货币总数, 由于交易A与交易B冲突, 因此区块链产生分叉;

④ 攻击者运用各种手段, 使包含交易B的链的长度超过包含交易A的链, 根据最长链原则, 交易B被认为有效, 而交易A被认为无效, 攻击者攻击成功[15].

双花攻击的实现流程如图3所示.

图 2

Fig. 2

Fig. 2 Bitcoinblock structure

图 2 比特币区块结构

图 3

Fig. 3

Fig. 3 Procedure of double spending attack

图 3 双花攻击实现流程

双花攻击具体有以下5种攻击实施方式.

(1) 51%攻击(51% Attack)

51%攻击是一种在掌握绝对算力优势的情况下, 把已经花出的数字货币重新收回或多次利用的攻击方式, 主要针对基于工作量证明(PoW)共识机制的区块链[16-18].

51%攻击一般分为4步.

① 攻击者发起一笔交易A, 将一定量的数字加密货币转账给受害者;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者移交等值的财物;

③ 攻击者在拿到财物后, 从交易A之前区块开始制造分叉, 利用>51%的算力优势在该分叉链上进行挖矿;

④ 当分叉链长度超过原主链时, 根据最长链原则成为新主链, 原主链上的交易A无效, 攻击成功[19].

51%攻击的实现流程如图4所示.

图 4

Fig. 4

Fig. 4 Procedure of 51% attack

图 4 51%攻击实现流程

由于PoW共识机制的特性, 理论上无法通过技术层面阻止51%攻击的产生. 因此在设计比特币系统时, 中本聪利用经济学原理来减少51%攻击出现的可能——获得全网算力优势的代价极度昂贵, 而花费极高成本实施的双花攻击会造成信任崩溃, 使得数字货币严重贬值, 这对于攻击者而言得不偿失[9]. 相反, 在拥有51%算力的情况下, 进行诚实挖矿所获得的收益要更多[20].

防范方法: 保持算力分散. 51%攻击能够成功实施的根本原因是算力过分集中, 在PoW共识机制下只要存在算力中心化, 所有区块链都无法完全避免51%攻击.

虽然实施51%攻击的成本极高, 攻击者缺乏经济层面的动机, 但实际生活中51%攻击还是有可能发生的. 在小型山寨币中, 获得全网算力优势的代价相对较小, 攻击者可以在实施51%攻击后, 退出系统快速变现, 从而牟取暴利.

为了降低攻击难度或者节省成本, 攻击者有以下3种低成本的51%攻击方法.

1) 贿赂攻击(bribe attack)

贿赂攻击是一种在非协作选择模型上(比如无信任基础区块链)的攻击, 攻击者通过额外经济奖励收购挖矿算力, 使得自己所掌握的算力短期内超过51%, 从而对区块链进行51%攻击[21-23].

贿赂攻击一般分为5步.

① 攻击者发起一笔交易A, 将一定量的数字加密货币转账给受害者;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者移交等值的财物;

③ 攻击者在网络中宣称将提供额外奖励给在目前相对较长但不包含交易A的次主链上工作的矿工, 以鼓动其他矿工违背共识, 在非主链上进行工作;

④ 当次主链足够长时, 攻击者通过加大奖励力度, 促使次主链的长度在短时间内超过原主链的长度;

⑤ 当次主链成功超越原主链长度后, 次主链成为最长链, 根据共识, 其他矿工承认次主链为新主链, 原主链中的交易A因为回滚而无效[24].

贿赂攻击的实现流程如图5所示.

防范方法: 可以在区块链挖矿机制设计中引入保证金和惩罚措施. 当矿工做出不利于区块链的决策时, 会受到处罚并失去抵押在链上的保证金. 这种惩罚措施变相提高了攻击者的贿赂成本, 使得贿赂攻击更难发生.

图 5

Fig. 5

Fig. 5 Procedure of bribe attack

图 5 贿赂攻击实现流程

2) 币龄累计攻击(coin age accumulation attack)

币龄累计攻击主要实施在基于“PoW+PoS”(工作量证明+权益证明)混合共识机制的区块链上. 在这种混合共识机制中, 某一地址拥有的数字加密货币越多、持币时间越长, 该地址的挖矿难度就越低, 因此更容易挖到新区块. 根据这种特性, 攻击者在持有一定量的币足够长时间后, 就可以获得接近51%算力, 从而发动51%攻击[25-27]. 例如, 在点点币(peercoin)初始版本中, 其挖矿算法公式为:

$ H\left(H\left({B}_{\rm{prev}}\right),A,t\right)\leqslant balance\left(A\right)\times m\times Age\left(coins\right) $

其中,

$ H\left(\right) $

为某种哈希函数、

${B}_{\rm{prev}}$

为上一个区块的数据、

$ A $

为某个账户、

$ t $

为时间戳、

$ balance\left(A\right) $

为账户

$ A $

的余额、

$ m $

为某个极小的实数, 其由哈希函数的性质决定、

$ Age\left(coins\right) $

为币龄.

显然, 攻击者可以利用币龄使得自己更容易发动51%攻击[28].

防范方法: 区块链设计者可以对单个地址的持币数量和币龄的最大值进行限制. 当某个地址的币龄已经达到预先设定的最大值时, 系统自动进行清算, 即清空币龄并给予数字货币奖励或是直接停止币龄的增长.

3) 通用挖矿攻击(general mining attack)

通用挖矿攻击的攻击目标是那些和已有币种的架构和共识相同或相似但还未形成挖矿规模的币种, 尤其是主流币种的山寨分叉币. 由于这些山寨币和某些主流币架构和共识算法相同, 主流币的矿机可以直接用来开采山寨币. 攻击者通过挪用大量主流币矿机, 轻松获得山寨币51%算力, 从而进行51%攻击, 之后攻击者只需将攻击成果变现, 再返回主流币继续挖矿即可. 由于攻击者只是短期持有山寨币, 因此攻击导致信任崩溃而引起的山寨币贬值对攻击者没有任何影响, 换句话说, 这种通用挖矿攻击对于攻击者而言成本低廉, 极易实施.

防范方法: 区块链设计者在设计新币种时应尽量避免与其他主流区块链的架构和共识算法冲突. 新的币种使用新的共识算法和架构或是在已有算法上进行调整可以有效的减少其他币带来的影响[29].

(2) 芬尼攻击(finney attack)

芬尼攻击是一种通过控制区块的广播时间来实现双花的攻击, 攻击目标为接受0确认的商家[30-32]. 芬尼攻击一般分为6步.

① 攻击者的地址1发起一笔向其地址2转账数字货币的交易A, 该交易的交易金额为攻击者地址1中的数字货币总数;

② 攻击者参与挖矿, 无需51%算力, 也最终能在某个时刻挖到包含交易A的区块X;

③ 挖到区块X后, 攻击者不立刻进行广播, 先将该区块扣在自己手中;

④ 攻击者发起交易B, 将地址1中的数字货币转账给接受0确认的受害者;

⑤ 在交易B广播后, 受害者移交等值的财物给攻击者;

⑥ 攻击者拿到财物后立刻广播之前的区块X, 由于交易A先于交易B, 攻击者转账给受害者的交易B会因为攻击者地址1中的币不足而无效, 攻击成功[33].

芬尼攻击的实现流程如图6所示.

图 6

Fig. 6

Fig. 6 Procedure of Finney attack

图 6 芬尼攻击实现流程

防范方法: 拒绝0确认交付. 在PoW共识下, 一般等待6个确认就能保证交易在最长链上不会失效.

(3) 种族攻击(race attack)

种族攻击和芬尼攻击一样, 也是针对接受0确认的商家的攻击. 与芬尼攻击不同, 种族攻击主要是通过控制矿工费来实现双花[34,35].

种族攻击一般分为4步.

① 攻击者的地址1发起一笔转账给接受0确认的受害者数字货币的交易A, 手续费设定为少量;

② 攻击者的地址1发起一笔向其地址2转账数字货币的交易B, 该交易的交易金额为攻击者地址1中的数字货币总数, 手续费设定为大量;

③ 在交易A广播后, 受害者将财物移交给攻击者;

④ 矿工们会优先为手续费高的交易打包, 因此交易B先被打包到主链上. 交易A则会因为攻击者地址1中的币不足而导致失败, 攻击成功[36].

种族攻击的实现流程如图7所示.

图 7

Fig. 7

Fig. 7 Procedure of race attack

图 7 种族攻击实现流程

防范方法: 区块链商家拒绝0确认交付. 在PoW共识下, 一般等待6个确认就能保证交易在最长链上, 交易几乎不会失效.

(4) 边界网关劫持攻击(BGP hijacking attack)

边界网关协议(border gateway protocol)是一种在TCP上运行的自治系统路由协议, 用于生成IP数据包转发规则. 攻击者可以利用BGP劫持来拦截区块链的网络流量, 阻碍广泛共识的达成[37-40].

边界网关劫持攻击一般分为4步:

① 攻击者劫持BGP, 将区块链网络中的节点划分成多个无法互相通信的分割组, 每个分割组中的节点只能在组内对主链达成共识, 一段时间后区块链产生多条分叉;

② 攻击者分别在各个分叉上花费数字货币, 在各个交易完成后, 攻击者获得多笔现金;

③ 攻击者停止劫持BGP, 各子组节点之间恢复通信;

④ 全网节点进行共识, 恢复通信后的最长链成为主链, 其他分叉链中的交易被回滚而无效, 攻击成功[41].

边界网关劫持攻击的实现流程如图8所示.

图 8

Fig. 8

Fig. 8 Procedure of BGP hijacking attack

图 8 边界网关劫持攻击实现流程

防范方法: 区块链拥有者可以不使用互联网服务提供商提供的中心化网络, 转而搭建针对区块链专用的去中心化网络, 以减少攻击者仅仅通过劫持少量节点就能对区块链造成巨大影响的可能.

(5) 重放攻击(replay attack)

软件系统在实际应用中需要升级更新, 区块链也是如此. 但区块链系统内所有节点需要对区块链中的各种协议达成共识, 随着协议的版本更新, 不同节点上运行的协议可能出现差异, 致使其执行的规则不尽相同, 从而导致区块链出现分叉. 分叉主要分为软分叉和硬分叉. 在区块链中, 未升级的节点称为旧节点, 已升级的节点称为新节点. 软分叉是指新节点无法接受旧节点产生的全部或部分区块而产生的临时性分叉, 但由于新节点具有较大的算力, 旧节点产生的区块将没有机会得到认可, 最终新旧节点会对主链问题达成共识. 硬分叉则是指旧节点无法接受新节点产生的全部或部分区块而产生的永久性分叉, 尽管旧节点具备的算力较小, 但新旧节点始终都在维护自己认可的链. 重放攻击往往出现在存在硬分叉的区块链中, 例如BTC和BCC、ETC和ETH[42]. 由于硬分叉两条链中的数据结构、交易格式、地址和私钥算法相同, 所以一条链上的交易数据在另一条链上也有极大可能也是合法的. 攻击者只需抓取一条链上的交易数据, 再复制到另一条链上广播, 即可发动重放攻击[43].

重放攻击一般分为4步.

① 假设链1和链2是某个区块链出现硬分叉后产生的两条链. 攻击者在链1中向受害者提出充值数字货币的请求, 并发起一笔向受害者转账的交易A;

② 一段时间后, 攻击者提出取回该笔数字货币的请求. 受害者同意后, 在链1中发起一笔向攻击者转账的交易B;

③ 攻击者在网络中抓取交易B的数据并广播到链2上;

④ 由于交易B的私钥签名、地址、余额信息等数据在两条链上都合法, 两条链上的矿工都认可这笔交易并将其打包到各自的链上, 最终攻击者在两条链上都获得了受害者的数字货币, 攻击成功[44].

重放攻击的实现流程如图9所示.

图 9

Fig. 9

Fig. 9 Procedure of replay attack

图 9 重放攻击实现流程

防范方法: 区块链设计者可以在区块链产生硬分叉时对分叉链的代码进行适度修改, 使得分叉链和主链之间的交易数据不通用, 从而避免同一笔交易在两条链上都合法.

2.1.2 空块攻击(empty block attack)

实施空块攻击的攻击者在挖到新区块后, 拒绝将网络中的交易打包到区块. 攻击者挖出的区块中除了挖矿奖励交易外, 没有任何其他交易, 这将导致区块链交易确认时间延长, 区块链活性被降低. 在比特币挖矿的早期, 矿工们还没有加入矿池合作挖矿, 计算随机数和打包交易都需要自己完成, 由于打包空块的速度比打包非空块的速度快, 且出块奖励远大于手续费, 所以矿工们更愿意打包空块来换取出块奖励, 因此导致大量空块产生[45-47].

防范方式: 区块链设计者可以设计共识, 使矿工的收益与块中的交易数目挂钩, 打包的块中的交易越多, 矿工的奖励就越高; 使矿工的挖矿难度与块中的交易数目挂钩, 根据打包的块中的交易数目略微减少矿工的挖矿难度, 使得包含交易多的块更容易被挖出, 从而激励矿工们打包更多的交易.

2.1.3 削弱攻击(undercutting attack)

PoW共识中, 矿工的奖励由出块奖励和交易费两部分组成, 且单个区块的出块奖励随时间越来越少. 在PoW共识后期, 出块奖励趋近于0时, 矿工的奖励仅仅只有交易费部分, 此时, 攻击者为了自己的利益很有可能不在最长链上挖矿, 而是选择制造分叉, 以获得更多的交易费. 这种攻击除了会导致恶意分叉破坏共识, 同时也会因为矿工们出于对利益(交易费)和成本(电费等)的权衡, 导致交易被恶意堆积, 影响区块链活性[48,49].

削弱攻击原理如图10所示.

防范方法: 区块链设计者在设计共识时, 可以永久保留出块奖励, 并将奖励控制在一个合理的范围内. 虽然这样会带来些许通货膨胀, 但可以很大程度上的减少削弱攻击对区块链的影响, 从而带来区块链的稳定.

图 10

Fig. 10

Fig. 10 Principle of undercutting attack

图 10 削弱攻击原理

2.1.4 无利害关系攻击(nothing at stake attack)

在早期的PoS (权益证明)共识机制中, 节点只会因为创建和验证区块得到奖励, 而不会因为任何不当的行为而得到惩罚, 并且在PoS共识下, 挖矿不消耗任何资源. 这就导致了当区块链中出现分叉时, 无论这个分叉是偶然出现还是恶意节点故意制造的, 对于其他节点来说, 它们最优的策略是在每一条分叉上都进行挖矿, 这样无论最后哪条链胜出, 它们都会得到奖励. 对于区块链来说, 无利害关系攻击会导致多条分叉并驾齐驱, 链中节点无法对主链达成共识, 极大的影响区块链的可用性[50-53].

无利害关系攻击一般分为4步.

① 攻击者故意在主链制造分叉, 或等待主链偶然产生分叉;

② 其他矿工感知到分叉的存在, 按照最优的挖矿策略, 他们会在每一条分叉上进行挖矿;

③ 随着时间的推移, 每条分叉链的长度都有所增加且有很高的概率长度相似, 并且在分叉链长度增长的过程中, 它们有很大的可能产生新分叉;

④ 由于分叉的状态一直持续, 且分叉越来越多, 全网节点无法对主链达成共识, 攻击成功.

无利害关系攻击的实现流程如图11所示.

图 11

Fig. 11

Fig. 11 Procedure of nothing at stake attack

图 11 无利害关系攻击实现流程

防范方法: 区块链设计者将保证金和惩罚措施加入到PoS共识中, 防止节点在多条分叉上工作. 节点在创建和验证区块前, 必须缴纳保证金, 当节点在相同高度创建或者验证大于等于两个区块时, 则被认为参与无利害关系攻击, 系统将扣除其保证金[54,55].

2.1.5 长程攻击(long range attack)

在PoW共识中, 如果攻击者要篡改某区块的历史, 需要在这个区块前制造一条分叉链, 并且让其长度超过主链长度. 但由于PoW共识的特性, 攻击者制造一条超过主链的分叉链需要大量的算力, 且分叉链长度越长, 分叉链超过主链的难度越高, 这就在导致了在PoW共识下, 攻击者只能对短程的区块进行修改; 而在PoS共识下, 延长分叉链只需要权益, 即币的数量和币龄, 因此, 攻击者可以较为轻松的篡改成百上千个区块之前的历史区块, 实现长程攻击[56-59]. 长程攻击有3种攻击策略.

(1) 简单攻击(simple attack)

在PoS共识的一轮验证周期中, 系统根据每个节点权益的大小, 加权随机挑选验证者. 攻击者若想篡改某一历史区块, 其需要从该区块的父区块位置开始, 制造分叉链并进行秘密验证, 值得注意的是, 由于该分叉链没有公开, 所以除了攻击者验证的块外没有其他验证者验证的块. 为了超越主链长度, 攻击者必须伪造时间戳以便提前生成区块, 一旦分叉链长度超过主链, 攻击者就发布自己的分叉链, 从而达成修改区块历史的目的.

简单攻击的原理如图12所示.

图 12

Fig. 12

Fig. 12 Principle of simple attack

图 12 简单攻击原理

防范方法: 由于此种攻击较为简单, 因此区块链设计者只需在共识中加入时间戳验证机制, 就可以防止攻击者伪造时间戳从而提前生成区块完成攻击; 也可以设置移动检查点(moving checkpoint), 即仅允许区块链尾端的X个区块被重组, 来缩小攻击者可修改历史的区块数目.

(2) 变节攻击(posterior corruption attack)

显然, 简单攻击的攻击效率不高, 攻击者如果想要在相同时间内生成更多的块, 他就需要更多的权益. 除了让自己地址里的权益增加外, 攻击者还可以利用其他地址里的权利, 例如B的地址, 哪怕在攻击者进行攻击时B地址内的权益已经清空了, 只要B的地址内在攻击者需要的历史时刻下有大量的权益, 攻击者在获得该地址的私钥后, 就可以利用自己和B的权益进行变节攻击[60].

变节攻击原理如图13所示.

图 13

Fig. 13

Fig. 13 Principle of posterior corruption attack

图 13 变节攻击原理

防范方法: 区块链用户可以利用密钥进化技术(key-evolving cryptography)和可信执行环境(trusted execution environments)来保护自己密钥不被攻击者利用或盗取; 区块链设计者可以设置移动检查点来缩小攻击者可修改历史的区块数目.

(3) 权益流损攻击(stake bleeding attack)

攻击者若想使自己分叉链的长度更快超越主链, 除了使分叉链更快的出块, 也可以干扰主链的出块速度, 例如当攻击者在主链上被选举为区块验证者时, 其可以放弃该区块的验证以降低主链的出块速度; 同时, 攻击者可以从主链上复制交易并放在分叉链上广播, 以增加其在分叉链上的权益占比, 从而加快分叉链的出块速度[61-63].

权益流损攻击原理如图14所示.

图 14

Fig. 14

Fig. 14 Principle of stake bleeding attack

图 14 权益流损攻击原理

防范方法: 区块链设计者可以通过设置移动检查点缩小攻击者可修改历史的区块数目; 也可以利用充裕法则(plenitude rule)分析分叉链上自分叉产生时的区块密度变化情况, 实时检测区块链上是否存在权益流损攻击, 以及时做出应对.

2.1.6 粉尘攻击(dust attack)

粉尘攻击是指用大量交易额极小、毫无价值的垃圾交易占据区块空间, 从而导致正常的交易无法被处理, 造成区块堵塞的攻击. 攻击者通过发起很多交易额极小但手续费较高的交易, 使得矿工优先处理这些交易, 从而达到堵塞区块链的目的; 攻击者也可以利用矿池, 打包无意义的交易, 使得区块链拥堵, 阻碍正常交易被打包[64,65].

防范方式: 区块链设计者指定规则使矿工们达成共识, 不打包交易额极小的交易. 从经济学角度看, 打包更多有意义的交易能够使区块链本身更有价值, 币值也会相应提升, 每个矿工都能从中获利[66].

2.1.7 女巫攻击(sybil attack)

女巫攻击主要针对的是采用拜占庭容错(BFT)协议而非PoW机制的区块链. 攻击者通过创建多个身份节点破坏区块链网络的信任基础和冗余策略, 操控区块链选举投票[67-70].

女巫攻击原理如图15所示.

图 15

Fig. 15

Fig. 15 Principle of sybil attack

图 15 女巫攻击原理

防范方式: 区块链设计者可以在区块链系统中加入身份认证机制. 只有获得可信的第三方节点或是获得当前网络中大多数可靠节点的认证后, 新的节点才能加入区块链.

2.1.8 日蚀攻击(eclipse attack)

日蚀攻击是一种由多个傀儡节点发起的针对区块链网络层面的攻击, 攻击者利用傀儡节点修改受害者节点的节点表并阻止受害者节点接收和发送消息, 从而达到隔离受害者节点的目的. 攻击者通过隔离受害者节点, 征用受害者的挖矿能力进行双花攻击或私自挖矿, 也可以诱使受害者在交易完成前将现金或货物发给攻击者[71-73]. 需要注意的是, 比特币等典型区块链中每个节点拥有两个节点表, NEW TABLE存储了节点知晓但还未连接过的其他节点IP; TRIED TABLE存储了曾经连接过但现在可能没有建立连接的其他节点IP. 攻击者需要利用傀儡节点IP或无效IP填满两个节点表, 才能达到隔离节点的目的[74].

日蚀攻击一般分为3步.

① 攻击者控制多个傀儡节点向受害者节点进行大量、持续的TCP连接, 受害者节点将傀儡节点IP存入自己的TRIED TABLE中;

② 完成TCP连接后, 傀儡节点发送大量无效的IP或是其他傀儡节点IP, 受害者节点将这些IP存入自己的NEW TABLE中;

③ 攻击者等待受害者节点重启, 重启后, 受害者节点会从两个节点表中选择进行连接的节点, 由于受害者节点的两个表中只有无效节点IP和傀儡节点IP, 因此只能连接上攻击者的傀儡节点. 攻击者完成对受害者节点的隔离, 攻击完成[75-77].

日蚀攻击的实现流程如图16所示.

图 16

Fig. 16

Fig. 16 Procedure of eclipse attack

图 16 日蚀攻击实现流程

防范方法: 区块链设计者修改节点连接规则. 利用随机性或是加入噪声的方法使攻击者无法轻松的通过控制受害者节点的节点表发起日蚀攻击; 或是在删除较旧IP之前, 先测试该IP能否连接上, 只有在连接失败时, 才将此地址从表中删除; 也可以新增两个额外的外部连接, 用于测试新的IP是否可以连接, 只有在连接成功时, 才将新地址加入表中, 以此防止攻击者用无效地址填充节点表等.

2.2 区块链2.0的安全问题——以以太坊智能合约为例

以太坊作为区块链2.0最广为接受的代表, 提供一个可以在区块链上部署、运行智能合约的底层平台, 它采用智能合约—以太虚拟机的架构, 主链代币称为以太币(ETH).

以太坊智能合约的协商和确认是在区块链存储的应用程序上进行的. 这些合约程序的优点是验证和执行过程去中心化, 但去中心化使得审查非常困难. 智能合约的总体目标是能够满足普通的合约条件, 最小化恶意或意外事件发生的可能性, 并降低成本. 智能合约的运行原理如图17所示.

图 17

Fig. 17

Fig. 17 Principle of smart contract operation

图 17 智能合约运行原理

以太坊虚拟机是以太坊中智能合约的运行环境, 它是以太坊项目中的主要创新点之一. 以太坊虚拟机是图灵完备的256位虚拟机, 在给定存储和计算资源的情况下, 以太坊虚拟机能够解决任何可计算的问题[78].

在以太坊上部署智能合约需要花费字节费Gas. Gas是以太坊为了防止恶意用户部署无限循环运行的合约, 而要求用户为所部署合约的每一步支付的费用, 智能合约的逻辑越复杂, 花费的Gas就越多. Gas价格是指花费每个Gas所需要的以太币的数量, 可由用户自行调整[79].

以太坊智能合约的开发语言是Solidity编程语言, Solidity是一种语法类似JavaScript的高级语言. 由于以太坊虚拟机不会额外的对智能合约的执行进行限制, 为了保证安全, 需要智能合约自身具有完整确定性[80,81].

比特币通过引入PoW共识来规避少数人的恶意行为, 平均出块时间10分钟, 共识中临时性分叉所产生的孤块最终会被抛弃. 而以太坊出块时间缩短至15秒, 分叉频繁发生. 因此以太坊在设计中引入了GHOST协议, 以权重最高的子树作为合法主链, 同时对产生或发现孤块的矿工予以奖励, 鼓励分叉的及时合并[82].

比特币与以太坊的主链结构和选择方式如图18所示, 同样的情况下, 比特币系统将认为0←1A←2A←3A←4A←5A为合法主链, 而以太坊系统认为0←1B←2C←3C←4B为合法主链.

图 18

Fig. 18

Fig. 18 Choosing legal chain in Bitcoin and Ethereum

图 18 比特币和以太坊的合法链选择

以太坊也是区块链技术的一种实现, 所以第2.1节内的大部分攻击都能在以太坊中实施, 这里不再赘述, 本节将介绍几种特别针对以太坊及其智能合约的攻击, 代表了区块链2.0面临的典型安全风险.

2.2.1 平衡攻击(balance attack)

平衡攻击的目的是阻止新交易被确认. 其利用了以太坊出块时间短的特点, 结合GHOST协议对以太坊系统进行破坏. 攻击者将以太坊上的诚实节点分为多个算力均等的子组, 通过延迟多个子组间的网络通讯, 使以太坊产生多条“势均力敌”的分叉. 攻击者使用自身的算力平衡这些分叉间微小的差距, 从而破坏共识机制, 阻止新交易被确认[83-85].

平衡攻击一般分为4步.

① 攻击者将诚实矿工隔离成多个算力接近的子组, 确保“自身算力+任意子组算力>任意子组的算力”;

② 攻击者通过延迟子组间的网络通信, 使区块链产生多条分叉, 每个子组都会选择不同子树进行区块打包;

③ 攻击者在每个分叉都进行区块打包, 并将自己打包好的区块隐藏起来, 不进行广播;

④ 攻击者时刻关注每个子组的本地视图, 若在某个子组的本地视图中, 有其他子树的权重要超过该子组原先选择的子树时, 攻击者将自己已经打包好的区块广播, 以确保多个子组无法就最重子树达成共识.

平衡攻击的实现流程如图19所示.

图 19

Fig. 19

Fig. 19 Procedure of balance attack

图 19 平衡攻击实现流程

防范方法: 区块链设计者可以加入区块权重机制至GHOST协议中, 使不同区块对最重子树共识的影响度不同, 主要有两种方案: 由于攻击者打包好区块后不会立刻广播, 可以设置区块权重与时间成反比, 加大攻击者利用隐藏的区块平衡各个子树权重的难度; 根据系统“历史树图结构”, 实时检测是否受到攻击, 设置检测到攻击前生成的普通区块权重为1, 检测到攻击后生成的区块中1/x个特殊区块的权重为x(x>>1), 其余特殊区块的权重为0, 相当于在检测到攻击时提高挖矿的难度, 降低出块速度, 优先保证系统的安全性[86].

2.2.2 漏洞攻击(vulnerability attack)

漏洞攻击是以太坊智能合约最主要的安全风险. 以太坊智能合约威胁较高的漏洞有整数溢出漏洞、可重入漏洞、交易顺序依赖问题、时间戳依赖问题、深度调用问题等[87].

(1) 整数溢出攻击(integer overflow attack)

在程序语言中, 整数类型变量有最大值和最小值, 一旦在运算、转换等过程中超过这个值, 就会出现溢出的情况, 而以太坊智能合约实质上是一种用Solidity语言编写的程序代码, 也存在溢出问题. 智能合约中的余额常用无符号整数表示, 在编写智能合约时如果不加注意就会给攻击者可乘之机. 攻击者只需将自己的余额减去一个比该余额大1的值, 即可让自己的余额变成最大值[88].

(2) 可重入攻击(reentrancy attack)

在以太坊中, 当智能合约A调用智能合约B时, A会等待B的调用结束后再继续运行. 因此攻击者可以在智能合约A调用智能合约B时, 在B被调用的函数中加入回调语句——“使A调用B的代码”, 从而发起可重入攻击[89].

典型的可重入攻击一般分为4步.

① 智能合约A向智能合约B发出提现请求;

② B向A转账, 并调用A的回调函数;

③ A的回调函数继续提出“A向B发起提现请求”, 两个合约进入互相调用的循环;

④ 当Gas用完或是受害者账户余额被耗光时, 攻击结束.

可重入攻击的实现流程如图20所示.

图 20

Fig. 20

Fig. 20 Procedure of reentrancy attack

图 20 可重入攻击流程

(3) 交易顺序依赖攻击(transaction-ordering dependence attack)

在以太坊中, 智能合约的执行结果随当前交易处理顺序的改变而改变. 智能合约被矿工打包到一个区块内需要一定的时间, 攻击者如果在打包完成前监听到网络中智能合约调用, 那么他就可以发布自己的调用或新合约来改变当前的合约状态. 这种攻击方式称为交易顺序依赖攻击[90].

交易顺序依赖攻击一般分为4步.

① 攻击者发布一个悬赏合约A, 悬赏金较高;

② 等待有应征者完成悬赏任务;

③ 在验证节点还未确认悬赏任务成功前, 发布一个将A中悬赏金额调低的智能合约B, 并设置较高的Gas费;

④ 验证节点会先验证高费率的智能合约B, 导致应征者收到的赏金变低, 攻击完成.

交易顺序依赖攻击的实现流程如图21所示.

图 21

Fig. 21

Fig. 21 Procedure of transaction-ordering dependence attack

图 21 交易顺序依赖攻击流程

(4) 时间戳依赖攻击(timestamp dependence attack)

在区块链中, 每个区块都拥有一个时间戳, 而这个时间戳通常是矿工用本地时间设定的. 由于某些智能合约的触发条件依赖于时间戳, 如果攻击者挖到包含该智能合约的区块就可以设定利于自己的时间戳, 从而发动时间戳依赖攻击[91].

(5) 调用深度攻击(call depth attack)

调用深度攻击可以让智能合约里的任何调用失败, 即使这些调用是完全正确且可信的. 在合约虚拟机中, 智能合约互相调用的深度会有一个阀值, 一旦调用栈的深度到达阀值, 再调用的函数及其子调用都会失败. 攻击者可以通过控制调用深度, 使得某些如转账、余额清零等关键操作无法进行[92].

防范方式: 对于区块链程序员来说, 养成良好的编程习惯, 理清程序逻辑可以有效的减少漏洞的产生; 对于区块链公司来说, 做好智能合约的安全审计工作, 可以聘请专业的审计公司进行服务, 挖掘智能合约漏洞并进行修复.

3 区块链周边安全问题

正如上文所述, 区块链设计者在设计区块链机制时, 常会出现一些技术漏洞, 给攻击者以可乘之机, 危害区块链系统安全. 但攻击者除了可以利用区块链系统本身设计或实现上的漏洞攻击区块链外, 还可以通过攻击区块链的周边设施, 例如交易所、数字钱包、矿池/矿场等, 来牟取钱财或私利. 这类安全风险并不是由于区块链技术本身的设计缺陷, 或者区块链系统的部署实施, 而是由于区块链应用开发、软件工具、实践过程中缺乏必要的安全考虑或措施所造成的.

下面例举3种用于加密货币的区块链周边服务或软硬件周边设施所面临的安全问题.

3.1 交易所面临的安全问题

交易所掌握着众多用户的多种数字加密货币, 是攻击者可以通过较小代价获取极大利益的地方, 交易所被攻击的事件层出不穷[93,94], 主要有以下几种.

3.1.1 分布式拒绝服务攻击(distributed denial of service attack)

交易所遭遇的拒绝服务攻击多数是分布式拒绝服务(DDoS)攻击. 攻击者通过大量傀儡机向目标发送合法的请求以占用大量网络资源, 从而瘫痪目标网络, 使合法用户无法获得服务的响应[95-97]. 分布式拒绝服务攻击一般分为4步.

① 攻击者搜集受害交易所网络以及主机的相关情报;

② 攻击者根据收集到情报, 准备一定数量的傀儡机以及适合的攻击手段;

③ 攻击者通过控制所有傀儡机向受害交易所发送海量合法请求, 导致交易所大量的网络资源被占用;

④ 受害交易所最终无法处理海量的请求, 导致网络瘫痪, 其他合法用户的请求无法被响应[98].

分布式拒绝服务攻击的实现流程如图22所示.

防范方法: 交易所应做好预警工作, 开启防火墙并实时监控网络中的流量状况; 被DDoS攻击时关闭不必要服务的端口并对所有流量进行流量识别, 从而清洗攻击流量.

3.1.2 账户盗窃攻击(account theft attack)

在区块链交易系统中, 盗窃用户账户是常见攻击之一. 由于交易所是中心化机构, 存放了大量用户的账户信息, 所以对于攻击者而言, 入侵交易所来获得大量账号、密码、私钥等是一种性价比较高的方式[99], 其基本攻击流程如下.

① 攻击者黑进交易所后, 获得大量账号和密码;

② 将账户内的加密货币进行抛售, 以引起大量加密货币下跌;

③ 市场恐慌性抛售后, 攻击者大量买入低价币, 使其币值飞速上涨, 从而场外套现获利.

防范方法: 区块链用户应选择对恶意攻击免疫能力较强的交易系统; 交易所应评估自身基础设施的安全性能, 采取相应安全防御策略; 交易所还可以实时备份数据, 并提高相关人员的安全意识.

3.1.3 交易延展性攻击(transaction malleability attack)

交易延展性是指在区块链中, 交易ID (TXID)在矿工确认之前是可以被修改的. 攻击者可以利用这个特性, 向交易所发动交易延展性攻击[100,101].

交易延展性攻击一般分为4步.

① 攻击者将数字货币存入交易所中;

② 攻击者向交易所申请取回数字货币, 交易所同意该申请并在网络中广播向攻击者转币的交易A;

③ 攻击者截获交易A, 利用交易延展性修改交易A中签名的编码格式得到交易B, 使得交易ID产生变化的同时签名仍有效. 攻击者再将通过交易延展性得到的交易B放到网络中广播;

④ 攻击者用交易A的交易ID向交易所投诉, 声称自己没收到数字货币. 交易所利用交易A的交易ID查询是否有转账给攻击者的交易. 由于交易A被截获, 网络中不存在交易A, 交易所会误认为转账失败并再次转币给攻击者, 至此, 攻击者会获得两份数字货币.

交易延展性攻击的实现流程如图23所示.

图 22

Fig. 22

Fig. 22 Procedure of DDoS attack

图 22 分布式拒绝服务攻击实现流程

图 23

Fig. 23

Fig. 23 Procedure of transaction malleability attack

图 23 交易延展性攻击实现流程

防范方式: 区块链设计者可以利用隔离见证技术, 使攻击者无法通过修改签名格式, 在改变TXID的情况下不影响签名的合法性[102].

3.2 数字钱包面临的安全问题

加密数字货币的归属权是由一对数字密钥决定的, 某地址与该地址对应的私钥存在一定的数学联系, 拥有私钥的人便能获得对应地址的数字加密货币的处置权. 数字钱包本质上是一种软件, 其存储了区块链上的某些地址以及这些地址对应的私钥. 加密数字货币钱包主要分为在线钱包和离线钱包两种[103].

在线钱包也称热钱包, 是一种在使用的过程中, 必须保持联网状态的钱包, 这类钱包通常以在线钱包和交易平台钱包等形式出现. 在使用在线钱包交易数字加密货币时, 外界可以通过互联网访问到存储私钥的位置, 因此在线钱包容易受到黑客的攻击.

离线钱包也称冷钱包, 是一种一直处于非联网状态的钱包, 这类钱包依靠不联网的硬件设备运行, 外界一般无法通过网络访问到其存储私钥的位置, 因此可以有效避免黑客攻击或中木马病毒等情况造成的损失. 但其也可能因为硬件设计存在问题, 导致漏洞产生, 留下一定的隐患[104].

数字钱包面临的安全问题主要为私钥窃取攻击(private key theft attack), 攻击者通过黑入联网的在线钱包、篡改官方钱包并诱导用户下载等方式, 获取用户地址私钥, 实现私钥窃取攻击.

防范方式: 大多数情况下, 离线钱包相较在线钱包而言不易受到攻击, 因此区块链用户应使用安全性更高的离线钱包防止攻击者入侵; 数字钱包的设计者不应急于发布硬件产品, 应在产品安全性评估合格后再发售. 另外, 数字钱包的设计者在发布自己软件产品的同时, 应留下软件的散列值, 并督促用户在下载前检查散列值是否与软件匹配, 防止攻击者篡改在线钱包软件.

3.3 矿池/矿场面临的安全问题

矿池/矿场作为PoW区块链网络算力的主要来源, 若其自身基础安全防护措施考虑不周, 则会引起高危安全风险. 大规模的矿池/矿场常使用远程管理系统以便管理, 由于这些系统的远程管理机制可能不健全, 或是由于矿池/矿场对远程管理系统不够重视, 使得攻击者利用这些薄弱点, 对矿池/矿场进行攻击. 恶意挖矿策略也是矿池/矿场面临的安全问题之一, 攻击者通过恶意策略抢夺或是单纯的损害诚实矿池/矿场的利益[105].

3.3.1 自私挖矿攻击(selfish mining attack)

自私挖矿攻击是一种针对基于PoW共识的区块链的恶意挖矿策略. 实施自私挖矿攻击的恶意矿池在挖到新区块时, 不会立即发布新区块, 而是根据自私挖矿策略决定是发布该块还是继续在自私分叉上挖矿. 当自私分叉长度超过公共链长度时, 若恶意矿池公开分叉链, 则原公共链包含的所有数据将会回滚, 区块链用户将损失回滚部分的数字货币收入, 诚实矿池也将损失原主链上的出块奖励. 自私挖矿攻击同时会导致在诚实矿池中工作的矿工为了获得“超额”的挖矿奖励, 转而加入恶意矿池进行工作, 诚实矿池的算力逐步被蚕食[106-109].

自私挖矿攻击一般分为3步.

① 攻击者在最长链上挖矿, 并在合适的时候创建自私分叉;

② 攻击者实时监测网络中新区块的发布情况, 根据最新的发布情况执行对应的策略;

③ 若攻击者挖到新区块, 攻击者则不发布该块而是在该块后继续自私挖矿, 转到步骤②; 若诚实矿池挖到新区块且分叉链长度比主链短, 攻击者则放弃私链, 转到步骤①; 若诚实矿池挖到新区块且分叉链长度和主链相同, 攻击者则立刻发布分叉链, 这种情况下, 攻击者的分叉链仍有一定几率被全网认可, 转到步骤①; 若诚实矿池诚实矿池挖到新区块且分叉链长度−主链长度>1, 攻击者则继续在分叉链上挖矿, 转到②; 若诚实矿池挖到新区块且分叉链长度−主链长度=1, 攻击者则立刻发布分叉链, 转到步骤①[110].

自私挖矿攻击的实现流程如图24所示.

防范方式: 改进挖矿规则. 当矿工收到两个及以上的相同长度的分支时, 他必须传播所有分支并随机选择一个分支, 在其后继续挖矿, 从而增大恶意矿池进行自私挖矿的成本[111].

3.3.2 跳池攻击(pool hopping attack)

矿池聚集了众多矿工的算力, 在矿池中, 一般根据算力大小给矿池内参与挖矿的矿工结算收益, 结算模式有很多, 例如Proportional模式、PPS模式、PPLNS模式等. 如果矿池使用的是Proportional模式付给矿工报酬, 矿工很有可能为了自己的利益向矿池发动跳池攻击. 在Proportional模式下, 从矿池挖到上个区块到挖到当前区块的时间被称为一个挖矿周期, 每个矿工的区块奖励与一个挖矿周期内其有效工作量证明(share)所占全部有效工作量的百分比成正比. 因此矿工们收益最高的策略是当当前挖矿周期长度到达一个阀值后, 跳槽到另一个才发现新区块、挖矿周期较短的矿池重新开始挖矿[112-115].

图 24

Fig. 24

Fig. 24 Procedure of selfish mining attack

图 24 自私挖矿攻击实现流程

防范方式: 矿池应采用更优的收益结算模式, 如PPS模式或PPLNS模式, 防止矿工为了自身利益最大化, 进行跳池攻击.

3.3.3 扣块攻击(withholding block attack)

扣块攻击是指恶意矿工在挖到新区块后不向矿池提交, 而是直接丢弃该区块, 从而减少矿池收入的攻击. 这种攻击同时损害了恶意矿工和矿池的利益, 但矿池损失的要比恶意矿工损失的更多. 扣块攻击并不是完全无利可图的, 如果矿池是按PPS模式, 即:

矿工的收益=矿池用于奖励矿工的总币量×某个矿工提供的算力/当前网络难度.

付给矿工报酬, 恶意矿工即使不提交区块也可以领到一定报酬; 如果矿池是按PPLNS模式, 即:

矿工的收益=矿池用于奖励矿工的总币量×出块时该名矿工提交的有效工作量证明在总有效提交中占比.

付给矿工报酬, 矿池的竞争对手可以通过派出恶意矿工加入该矿池进行扣块攻击, 使该矿池整体收益下降, 从而促使受害者矿池的矿工跳槽到新矿池工作[116-118].

防范方式: 矿池可以偶尔向手下的矿工进行突击检查, 提供解决方案已知的任务, 诱使恶意矿工落入陷阱并找出他们[119]; 或是更改挖矿算法使得矿工无法验证得到的有效工作量证明(share)是否是符合区块解, 从而无法将精确挑选出符合区块解的答案, 将其丢弃.

4 区块链用户面临的安全问题

攻击者除了可以攻击区块链自身与区块链周边设施外, 还可以攻击区块链用户. 但与区块链自身机制与区块链周边设施不同的是, 区块链设计者没有在用户层面设计过多复杂的机制, 因此区块链用户所遇的安全问题通常为网络安全领域中的通用攻击. 以下介绍3种用户面临的典型安全问题.

4.1 社会工程学攻击(social engineering attack)

近些年来, 社会工程学攻击[120,121]开始流行起来. 欺诈者通过冒充官方人员或权威人士, 向区块链用户索取一定量的数字加密货币, 甚至直接索要私钥. 区块链用户如果不及时确认对方身份就极易上当受骗, 因而遭受损失.

防范方法: 用户应在透露重要信息前及时确认对方身份; 同时应当妥善保管私钥, 切勿将私钥透露给其他人, 谨防欺诈.

4.2 中间人攻击(man-in-the-middle attack)

中间人攻击是一种较为传统的网络攻击手段, 攻击者能够在通信双方毫不知情的情况下, 通过拦截网络通信数据, 对数据进行嗅探和篡改[122,123]. 区块链本身对中间人攻击具有一定的免疫力, 但在数字货币场外交易中——例如在场外交易平台中进行货币交易, 中间人攻击仍是一种可行的攻击方式. 中间人攻击一般分为6步.

① 受害者发出与卖家进行交易的申请, 攻击者截获受害者的通信数据;

② 攻击者将受害者通信数据里的公钥换成自己的公钥并发给卖家;

③ 卖家同意交易, 并把自己区块链中的地址等交易信息发送给受害者;

④ 攻击者截获卖家发出的通信数据, 并把收款地址改成自己区块链中的地址, 并用受害者公钥加密, 再把篡改后的通信数据给受害者;

⑤ 受害者收到攻击者篡改后的通信数据后, 将数字货币转至攻击者的地址;

⑥ 攻击者收到了受害者的数字货币, 但卖家没收到, 因此交易失败. 受害者白白损失了该笔数字货币.

中间人攻击的实现流程如图25所示.

图 25

Fig. 25

Fig. 25 Procedure of man-in-the-middle attack

图 25 中间人攻击实现流程

防范方式: 用户应在通信过程中引入数字证书技术. 用户可以通过可靠的数字证书认证机构认证对方身份, 确保自己是在和正确的通信者进行消息交换, 防止攻击者拦截并篡改消息[124].

4.3 撞库攻击(credential stuffing attack)

安全意识不高的用户常常会在其他网站使用与交易平台相同或相似的账户密码. 一旦这些账户密码被泄露或者被窃取, 攻击者就可以利用这些账号和密码, 在区块链交易平台上进行撞库攻击[125].

撞库攻击一般分为4步.

① 拖库: 攻击者搜寻受害网站, 通过社会工程手段(收买管理员、钓鱼等)或者技术手段(Web漏洞、服务器漏洞、配置错误等)取得该网站的访问权限;

② 洗库: 攻击者对受害网站的数据库进行信息筛选, 得到所需数据, 若数据库中的数据被加密则使用破解技术破解;

③ 撞库: 攻击者对得到的数据进行整理, 选择出账户密码数据;

④ 尝试: 攻击者用得到的账户和密码在区块链交易平台上进行尝试, 同时利用这些账户和密码为攻击其他网站做准备, 转到①[126].

撞库攻击的实现流程如图26所示.

防范方式: 用户不应在多个网站上设置同一个密码; 对于重要的账户, 要使用高强度的密码防止被破解; 不要将密码保存在公共设备上, 防止被泄露.

图 26

Fig. 26

Fig. 26 Procedure of credential stuffing attack

图 26 撞库攻击实现流程

5 区块链安全问题分类与总结

针对区块链技术在数字货币交易等应用领域, 前文介绍了多种典型的安全问题和攻击方法, 本节将对这些问题按照区块链系统的层次架构进行分类并总结.

5.1 区块链层次架构介绍

一个典型的区块链系统一般分为6层, 从上到下分别为应用层、合约层、激励层、共识层、网络层、数据层, 如图27所示. 每层各司其职又互相协作, 最终实现一个去中心化的协作系统和信任机制.

图 27

Fig. 27

Fig. 27 Layered architecture of blockchain applicationsystem

图 27 区块链应用系统的层次结构

(1) 数据层: 数据层描述了区块链的数据结构与相关的加密技术, 实现数据的去中心化存储、完整性与合法性校验、可追溯性与不可篡改性保证等功能.

(2) 网络层: 网络层主要通过分布式组网机制、数据传播机制、数据验证机制, 搭建区块链网络中各个节点之间信息交流的桥梁.

(3) 共识层: 共识层采用了各种共识算法, 例如工作量证明(PoW)、权益证明(PoS)、股份授权证明(DPoS)等, 使区块链系统中的高度分散的节点能够快速且正确地针对区块数据的有效性达成共识.

(4) 激励层: 激励层为区块链提供了激励措施, 使各个节点实现自身利益最大化的个体理性行为与保障区块链系统安全有效的总体目标相一致.

(5) 合约层: 合约层封装了区块链的各类脚本代码、算法和智能合约, 是灵活编程和操作区块链系统的基础.

(6)应用层: 应用层封装了区块链的各种应用场景和案例, 支持数字货币交易、去中心化应用等(DApp), 实现可编程货币、可编程金融、可编程社会[127].

5.2 安全问题分类

下面对本文所述全部36种安全问题综合区块链基本架构进行分类, 并分析每种攻击所依赖的共识以及攻击实施难度, 区块链安全问题分类如表1所示. 需要说明的是, 在表中, 若某层级被勾选, 则说明该攻击会使该层级的某些功能失效或出错. 例如, 边界网关劫持攻击通过拦截区块链网络流量, 阻止广泛共识的达成, 由于其破坏了网络层的节点通信能力, 同时也破坏了共识层的共识过程, 因此网络层和共识层被勾选; 空块攻击通过拒绝打包交易到区块中, 用不合法的手段获得更多的出块奖励, 由于其既破坏了激励规则又阻碍了区块链记录合法交易, 因此数据层和激励层被勾选.

表 1(Table 1)

Table 1 Classification of blockchain security problem

表 1 区块链安全问题分类

安全问题

被攻击的区块链层级

依赖哪种

特定共识

实施

难度

数据层

网络层

共识层

激励层

合约层

应用层

双花攻击

不限

较低

51%攻击

PoW

较高

贿赂攻击

PoW

较低

币龄累计攻击

PoW+PoS

较低

通用挖矿攻击

PoW

芬尼攻击

不限

较低

种族攻击

不限

较低

边界网关劫持攻击

不限

较高

重放攻击

不限

较低

空块攻击

PoW

削弱攻击

PoW

无利害关系攻击

PoS

长程攻击

PoS

较高

简单攻击

PoS

变节攻击

PoS

较高

权益流损攻击

PoS

较高

粉尘攻击

不限

较低

女巫攻击

BFT

较低

日蚀攻击

不限

平衡攻击

PoW

漏洞攻击

不限

较低

整数溢出攻击

不限

可重入攻击

不限

交易顺序依赖攻击

不限

较低

时间戳依赖攻击

不限

较低

调用深度攻击

不限

DDoS攻击

不限

较低

账户盗窃攻击

不限

较低

交易延展性攻击

不限

较低

私钥窃取攻击

不限

自私挖矿攻击

PoW

较高

跳池攻击

PoW

较低

扣块攻击

PoW

社会工程学攻击

不限

Table 1 Classification of blockchain security problem

表 1 区块链安全问题分类

根据安全问题分布图28, 不难发现, 大多数攻击针对的是区块链的共识层, 因此设计一种漏洞较少、安全性较高的共识机制是区块链安全领域的研究重点; 另外, 大部分区块链攻击具有通用性, 其执行不依赖于特定的共识机制, 即在大部分区块链应用系统中均能实施. 因此, 区块链的设计者们可以参考本文所述防范方法, 或是借鉴其他设计者的经验教训, 从而设计出安全可靠的区块链系统. 除了通用的攻击方式外, 针对PoW共识机制的区块链攻击较多, 这是由于PoW作为当前最主流区块链共识算法, 被深入研究并频繁实践. 研究针对PoW共识的攻击对攻击者而言收益较高, 但这不代表其他共识算法足够安全, 区块链的拥有者和用户仍需要保持一定警惕性, 制定合理的应急策略, 以便在遭遇攻击时尽可能的减少损失.

图 28

Fig. 28

Fig. 28 Distribution of security problems in blockchain application systems

图 28 区块链应用系统的安全问题分布

为了粗略评估各攻击的安全风险程度, 本文将攻击实施难度分为四类. 难度低代表成功实施该类攻击几乎不需要攻击者投入成本, 也不依赖苛刻的时机, 可行性较高. 如通用挖矿攻击, 攻击者只需要从主流币处调来矿机, 并花费少量电费, 就可以对山寨币进行攻击. 再例如整数溢出攻击、调用深度攻击, 攻击者只需知晓智能合约的整数范围、调用深度, 并花费少量交易费, 就可以轻松的发起攻击. 难度较低代表成功实施该类攻击需要攻击者投入一定的成本或是需要等待特定的时机, 可行性适中. 如贿赂攻击、币龄累积攻击, 攻击者需要投入一定的成本用于贿赂矿工或是进行币龄积累, 才能成功完成攻击. 再例如时间戳依赖攻击、交易延展性攻击, 攻击者需要监听或者拦截到特定的交易, 才能成功实施攻击. 难度较高代表成功实施该类攻击需要攻击者投入大量成本或是需要等待较为苛刻的时机, 可行性较低. 如51%攻击, 攻击者需要全网超过51%的算力才能成功完成攻击, 想要在大型链中获得51%算力, 需要投入大量的成本. 再例如, 自私挖矿攻击, 攻击者首先需要一定算力, 同时也需要连续挖到几个区块后, 才能成功实施攻击. 难度高代表成功实施该类攻击需要攻击者投入极大成本并且需要苛刻的时机, 难以实施. 如日蚀攻击, 攻击者需要大量傀儡机尝试与受害节点进行连接, 从而恶意填充受害节点的节点表, 该步骤时间较长, 并且需要等待受害节点自己重启, 这种重启不受攻击者控制, 可控性差. 再例如平衡攻击, 攻击者首先需要知晓全网节点的网络状态, 并将所有诚实节点划分成多个算力几乎均等的子组, 并切断各个子组间的通信, 到该步骤为止已经需要相当大的成本了, 之后还需要不断监控各个子组的本地视图, 并在必要的时刻将自己已经挖好的区块广播, 在此过程中, 各个子组间的通信仍要被切断, 因此, 该攻击的实施难度非常高.

5.3 当前研究方向与最新进展

由于区块链仍处于发展状态, 自身机制、周边设施、用户安全意识都不够成熟, 基础架构的每个层次都易受到攻击. 当前, 世界各地的研究者从攻防两侧提出了很多有用的攻击、防御策略, 本节将以区块链架构的6个层次为划分, 分别介绍当前区块链安全方向的研究方向与最新进展, 供读者参考.

(1) 数据层

① 应对量子计算的挑战: 现阶段大多数区块链底层的加密算法是椭圆曲线算法, 但椭圆曲线算法不是一种抗量子攻击算法, 易受到未来的量子攻击的威胁. Shahid等人提出了一种新的一次性签名(OTS)算法, 该算法对量子计算有一定的抵抗性, 且与现有的所有OTS方案相比, 该方案的密钥和签名大小都是最小的[128].

② 保护隐私: 区块链上的智能合约允许节点们在没有可信第三方参与或监督的情况下进行可信交易, 但由于智能合约内可能存在隐私信息, 且智能合约需要在参与节点上运行, 这会导致某节点的隐私被其他节点知晓. 在数字加密货币区块链中常使用零知识证明技术以保证用户使用数字货币时不透露自己的身份, 但零知识证明技术仍存在一些问题, 例如只能保证2个当事方参与交易却不泄露自己的隐私信息. Wan等人提出了一种用于认证数据的零知识证明方案, 它将零知识证明技术与数字签名技术有效结合, 保证了智能合约的数据保密性和真实性[129]. Harris等人提出了一种基于共识的秘密共享协议, 该协议允许多个当事方参与交易, 并且不会泄露任何个人隐私信息[130].

(2) 网络层

网络入侵检测系统: 入侵检测系统常通过自动识别并过滤异常活动, 来保护网络和系统免受意外攻击, 以增强网络的安全性. 在区块链中, 大量攻击是通过网络层攻击区块链本身, 如日蚀攻击, 分割攻击等. 为此Signorini等人设计了一种针对于区块链系统的异常检测工具, 它允许区块链网络的对等节点通过共享历史的攻击信息来抵御日蚀攻击[131].

(3) 共识层

① 避免互操作场景下中的双花攻击: 双花攻击是区块链中非常典型的攻击之一, 单一区块链中的双花攻击已经被深入研究过, 但在跨链技术日渐成熟的现在, 交易常常由多个区块链协作完成, 这种互操作场景下的双花攻击研究较少. Sai等人提出使用中立的观察者来监视跨多个链的交易, 并设计了一种协议消除互操作场景下的双花攻击[132].

② 研究双花攻击的变种攻击: 传统的双花攻击有51%攻击、贿赂攻击、种族攻击等, 大量学者已经对这些攻击进行过研究, 但双花攻击仍存在新的变种. Zhang等人介绍了一种新的联合攻击形式——基于女巫攻击的比特币双花攻击, 并提出了两种解决该攻击的防御方案[133].

(4) 激励层

① 避免跳池攻击: 跳池攻击是一种矿工通过寻找并采用最佳的跳槽策略, 使得自己利益最大化的过程, 现在较为流行的矿池收益结算模式是PPLNS, 但这种模式仍存在一些问题. Zolotavkin等人利用博弈论模型分析了PPLNS结算模式下的跳池攻击, 并给出了避免跳池攻击的方案[134].

② 扣块攻击的最优策略与解决方案: 在矿池间的竞争中, 扣块攻击是较为常见的破坏手段, 使用多少算力攻击其他矿池能带来最大的收益成为恶意矿池所面临的一个重要决策问题. Qin等人提出了恶意矿池最佳扣块策略, 并给出了攻击成功条件[135]. Kaci等人提出了一种新的区块链架构, 用于管理矿池、矿工的信誉, 该架构允许矿池接受可信的矿工, 矿工也可以对矿池进行评估, 从而建立起矿池和矿工之间的信任, 减少扣块攻击出现的可能[136].

(5) 合约层

① 智能合约漏洞检测: 智能合约经常由于程序员的不良编程习惯和疏忽大意, 产生一些安全漏洞. 攻击者如果找到这些漏洞就可以对使用这些合约的受害者进行攻击. Gao等人提出了一种自学习智能合约特性的方案, 该方案可进行合约重复代码检测、合约错误检测和合约验证[137]. Wang等人提出了一种基于机器学习的智能合约漏洞检测方法, 该方法从智能合约的简化操作代码中提取二元特征, 并利用五种机器学习算法和两种采样算法构建了漏洞检测模型[138]. Samreen等人提出了一个动、静态分析相结合的智能合约检测框架, 来检测Etalum中的可重入漏洞[139].

② 智能合约代码修复: 现有的智能合约安全分析工具侧重于漏洞检测, 但很少考虑智能合约代码的修复问题. Zhang等人提出了一种智能合约代码自动修复系统, 该系统可以对智能合约字节码进行修正, 并帮助开发者发布智能合约[140].

(6) 应用层

为金融安全提供可靠的调查模型. 由于区块链消除了交易对可信第三方的需求同时具有匿名性, 某些不法分子会利用基于区块链的数字加密货币进行洗钱等违法操作. Wu等人提出了一种基于扩展的安全Petri网的比特币交易网络分析方法, 该方法利用Petri网的结构特征和动态语义来定义比特币交易的静态与动态特征, 用于分析和查找与非法交易相关的可疑地址[141].

总体而言, 近些年国内外学者针对区块链各个层级的研究都取得了丰硕的研究成果. 从研究趋势上看, 针对数据层、共识层和合约层的研究数量不断上升, 逐渐成为当前区块链安全领域的研究重点. 根据区块链应用需求和现有的研究成果, 本文认为在区块链安全领域, 未来研究将向隐私安全、智能合约安全和跨链技术安全3个方向发展.

隐私安全: 当前区块链隐私安全方向的研究重点是为用户提供一套隐私保护方案. 现有方案主要利用零知识证明、安全多方计算、同态加密等技术, 在区块链账本公开透明的前提下增加匿名性, 最大程度地确保区块链用户的个人隐私安全. 一方面, 零知识证明等技术的引入, 为区块链系统添加了额外的操作流程和步骤, 势必会带来不小的时空代价, 导致区块链的可用性和可拓展性大大降低; 另一方面, 匿名程度的上升必然会使违规交易追踪与监管面临严峻的挑战. 因此, 如何在匿名性与交易性能、匿名性与监管难度间取得合理平衡将成为区块链隐私安全领域的研究重点.

智能合约安全: 当前智能合约安全的研究重点主要为智能合约漏洞检测与修复. 现有的漏洞检测方案可以针对智能合约中的简单漏洞进行检测并提供审计报告, 部分降低了智能合约开发者出错的可能和人工审计成本. 但由于智能合约版本更新换代较快, 各个平台采用的智能合约底层框架不尽相同, 现有方案很难为所有平台所有版本的智能合约提供漏洞检测服务, 因此设计一种通用性强的智能合约漏洞检测工具是未来研究方向之一. 除了漏洞检测, 未来还可以通过研究标准化的智能合约编写工具以及智能合约漏洞自动修复工具来减少智能合约的安全风险. 另外, 站在智能合约设计者的角度, 为预防在复杂合约的编程过程中可能出现的安全漏洞以及因此而带来的风险, 设计一种“图灵完备”的安全脚本智能合约语言也是可以考虑的方案之一.

跨链技术安全: 跨链技术作为增加区块链可拓展性和解决不同公链/侧链之间交易困难问题的核心技术, 愈发被工业级和学术界重视. 现有关于跨链技术的研究大多停留在如何更好的实现跨链交互上, 很少考虑到跨链技术带来的潜在安全威胁. 跨链场景下的攻击模型以及防御方案将是未来的研究方向之一. 未来研究者们可以从区块链传统攻击模型在跨链场景下的新实现以及针对跨链场景的新攻击模型两个方面考虑, 逐步完善跨链技术的安全性.

6 结 语

区块链技术自问世以来, 不断演化发展, 一直作为学术研究、企业应用、政府监管、民间投资的热点和争议而存在. 目前方案成熟、效果明显、应用广泛的区块链应用领域还当属数字货币交易. 由于区块链技术问世较晚、还处于技术的快速迭代完善时期, 其面临的安全风险和威胁攻击多种多样, 针对区块链公链应用的安全事件频繁发生. 本文首先回顾了近几年发生的针对典型的区块链数据服务、交易平台的安全事件; 接着, 列举并分析了区块链自身机制、区块链周边设施、区块链用户所面临的36种安全问题, 同时给出了每种安全风险的有效防范策略建议; 最后结合区块链系统层次结构, 对本文提及的安全问题进行分类并做出总结. 希望能给区块链安全的研究者、技术创新应用者、区块链开发者提供研究参考资料和安全评估视野, 促进区块链的健康发展.

参考文献

[1]

Crosby M, Pattanayak P, Verma S, Kalyanaraman V. Blockchain technology: Beyond Bitcoin. Applied Innovation Review, 2016, 2: 6-19.

http://doi.acm.org/10.1145/2994581

[2]

Liu AD, Du XH, Wang N, Li SZ. Research progress of blockchain technology and its application in information security. Ruan Jian Xue Bao/Journal of Software, 2018, 29(7): 2092–2115 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5589.htm

[3]

Lin IC, Liao TC. A survey of blockchain security issues and challenges. International Journal of Network Security, 2017, 19(5): 653-659.

[doi:10.6633/IJNS.201709.19(5).01]

[4]

Gao WC, Hatcher WG, Yu W. A survey of blockchain: Techniques, applications, and challenges. In: Proc. of the 27th Int’l Conf. on Computer Communication and Networks. Hangzhou: IEEE, 2018. 1–11. [doi: 10.1109/ICCCN.2018.8487348]

[5]

Destefanis G, Marchesi M, Ortu M, Tonelli R, Bracciali A, Hierons R. Smart contracts vulnerabilities: A call for blockchain software engineering? In: Proc. of 2018 Int’l Workshop on Blockchain Oriented Software Engineering. Campobasso: IEEE, 2018. 19–25. [doi: 10.1109/IWBOSE.2018.8327567]

[6]

Huang YH, Wang HY, Wu L, Tyson G, Luo XP, Zhang R, Liu XZ, Huang G, Jiang XX. Characterizing eosio blockchain. arXiv: 2002.05369, 2020.

[7]

Mehar MI, Shier CL, Giambattista A, Gong E, Fletcher G, Sanayhie R, Kim HM, Laskowski M. Understanding a revolutionary and flawed grand experiment in blockchain: The DAO attack. Journal of Cases on Information Technology (JCIT), 2019, 21(1): 19-32.

[doi:10.4018/JCIT.2019010102]

[8]

Zou J, Zhang HN, Tang Y, Li L, Liu TX, Chen H. Blockchain Technical Guidelines. Beijing: China Machine Press, 2016. 109–219 (in Chinese).

[9]

Nakamoto S. Bitcoin: A Peer-to-Peer Electronic Cash System. Bitcoin White Paper, 2008.

[10]

Tomov YK. Bitcoin: Evolution of blockchain technology. In: Proc. of the 2019 IEEE XXVIII Int’l Scientific Conf. Electronics. Sozopol: IEEE, 2019. 1–4. [doi: 10.1109/ET.2019.8878322]

[11]

Bonneau J, Miller A, Clark J, Narayanan A, Kroll JA, Felten EW. Sok: Research perspectives and challenges for Bitcoin and cryptocurrencies. In: Proc. of the 2015 IEEE Symp. on Security and Privacy. San Jose: IEEE, 2015. 104–121. [doi: 10.1109/SP.2015.14]

[12]

Shalini S, Santhi H. A survey on various attacks in Bitcoin and cryptocurrency. In: Proc. of the 2019 Int’l Conf. on Communication and Signal Processing. Chennai: IEEE, 2019. 220–224. [doi: 10.1109/ICCSP.2019.8697996]

[13]

Jang J, Lee HN. Profitable double-spending attacks. Applied Sciences, 2020, 10(23): 8477.

[doi:10.3390/app10238477]

[14]

Pérez-Solà C, Delgado-Segura S, Navarro-Arribas G, Herrera-Joancomartí J. Double-spending prevention for Bitcoin zero-confirmation Trans.. Int’l Journal of Information Security, 2019, 18(4): 451-463.

[doi:10.1007/s10207-018-0422-4]

[15]

Rosenfeld M. Analysis of hashrate-based double spending. arXiv: 1402.2009, 2014.

[16]

Houy N. It will cost you nothing to ‘kill’ a proof-of-stake crypto-currency. Economics Bulletin, 2014, 34(2): 1038-1044.

[doi:10.2139/ssrn.2393940]

[17]

Shanaev S, Shuraeva A, Vasenin M, Kuznetsov M. Cryptocurrency value and 51% attacks: Evidence from event studies. The Journal of Alternative Investments, 2019, 22(3): 65-77.

[doi:10.2139/ssrn.3290016]

[18]

Liu ZY, Luong NC, Wang WB, Niyato D, Wang P, Liang YC, Kim DI. A survey on blockchain: A game theoretical perspective. IEEE Access, 2019, 7: 47615-47643.

[doi:10.1109/ACCESS.2019.2909924]

[19]

Yang XL, Chen Y, Chen XH. Effective scheme against 51% attack on proof-of-work blockchain with history weighted information. In: Proc. of 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 261–265. [doi: 10.1109/Blockchain.2019.00041]

[20]

Li XQ, Jiang P, Chen T, Luo XP, Wen QY. A survey on the security of blockchain systems. Future Generation Computer Systems, 2020, 107: 841-853.

[doi:10.1016/j.future.2017.08.020]

[21]

Bentov I, Gabizon A, Mizrahi A. Cryptocurrencies without proof of work. In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 142–157. [doi: 10.1007/978-3-662-53357-4_10]

[22]

Bonneau J. Why buy when you can rent? In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 19–26. [doi: 10.1007/978-3-662-53357-4_2]

[23]

Gao S, Li ZC, Peng Z, Xiao B. Power adjusting and bribery racing: Novel mining attacks in the Bitcoin system. In: Proc. of the 2019 ACM SIGSAC Conf. on Computer and Communications Security. London: ACM, 2019. 833–850. [doi: 10.1145/3319535.3354203]

[24]

Kothapalli A, Cordi C. 2016. A bribery framework using smartcontracts.

[25]

Vasin P. Blackcoin’s Proof-of-Stake Protocol v2. 2014. https://blackcoin.co/blackcoin-pos-protocol-v2-whitepaper.pdf

[26]

Averin A, Averina O. Review of blockchain technology vulnerabilities and blockchain-System attacks. In: Proc. of 2019 Int’l Multi-Conf. on Industrial Engineering and Modern Technologies. Vladivostok: IEEE, 2019. 1–6. [doi: 10.1109/FarEastCon.2019.8934243]

[27]

Niya SR, Stiller B. BAZO: A proof-of-stake (PoS) based blockchain. Technical Report, Zurich: University of Zurich, 2019.

[28]

Bachmann S. Proof of stake for Bazo [Bachelor Thesis]. Zurich: University of Zurich, 2018.

[29]

Shrivas MK, Dean TY, Brunda SS. The disruptive blockchain security threats and threat categorization. In: Proc. of the 1st Int’l Conf. on Power, Control and Computing Technologies. Raipur: IEEE, 2020. 327–338.[doi: 10.1109/ICPC2T48082.2020.9071475]

[30]

Georgiadis E, Zeilberger D. A combinatorial-probabilistic analysis of Bitcoin attacks. Journal of Difference Equations and Applications, 2019, 25(1): 56-63.

[doi:10.1080/10236198.2018.1555247]

[31]

Grunspan C, Pérez-Marco R. On profitability of Nakamoto double spend. Probability in the Engineering and Informational Sciences, 2021, 1-15.

[doi:10.1017/S026996482100005X]

[32]

Kaushik A, Choudhary A, Ektare C, Thomas D, Akram S. Blockchain—literature survey. In: Proc. of the 2nd IEEE Int’l Conf. on Recent Trends in Electronics, Information & Communication Technology. Bangalore: IEEE, 2017. 2145–2148.[doi: 10.1109/RTEICT.2017.8256979]

[33]

Joshi J, Mathew R. A survey on attacks of bitcoin. In: Proc. of the Int’l Conf. on Computer Networks, Big data and IoT. Cham: Springer, 2018. 953–959. [doi: 10.1007/978-3-030-24643-3_113]

[34]

Lei M. Exploiting Bitcoin’s topology for double-spend attacks [Bachelor Thesis]. Zürich: ETH Zürich, 2015.

[35]

Maroufi M, Abdolee R, Tazekand BM. On the convergence of blockchain and Internet of Things (IoT) technologies. arXiv: 1904.01936, 2019.

[36]

Bajaj AS, Tyagi L, Arora P. Blockchain and decentralized applications. BTP Report, New Delhi: Indraprastha Institute of Information Technology, 2018.

[37]

Ekparinya P, Gramoli V, Jourjon G. Double-spending risk quantification in private, consortium and public Ethereum blockchains. arXiv: 1805.05004, 2018.

[38]

Nguyen TSL, Jourjon G, Potop-Butucaru M, Thai KL. Impact of network delays on Hyperledger Fabric. In: Proc. of the IEEE INFOCOM 2019-IEEE Conf. on Computer Communications Workshops. Paris: IEEE, 2019. 222–227. [doi: 10.1109/INFCOMW.2019.8845168]

[39]

Saad M, Cook V, Nguyen L, Thai MT, Mohaisen A. Partitioning attacks on Bitcoin: Colliding space, time, and logic. In: Proc. of 2019 IEEE 39th Int’l Conf on Distributed Computing Systems. Dallas: IEEE, 2019. 1175–1187. [doi: 10.1109/ICDCS.2019.00119]

[40]

Tran M, Choi I, Moon GJ, Vu AV, Kang MS. A stealthier partitioning attack against Bitcoin peer-to-peer network. In: Proc. of the 2020 IEEE Symp. on Security and Privacy. San Francisco: IEEE, 2020. 496–511. [doi: 10.1109/SP40000.2020.00027]

[41]

Apostolaki M, Zohar A, Vanbever L. Hijacking Bitcoin: Routing attacks on cryptocurrencies. In: Proc. of the 2017 IEEE Symp. on Security and Privacy. San Jose: IEEE, 2017. 375–392.[doi: 10.1109/SP.2017.29]

[42]

Wang J, Chen GL. Overview on blockchain fork in bitcoin. Communications Technology, 2018, 51(1): 149-155(in Chinese with English abstract).

[doi:10.3969/j.issn.1002-0802.2018.01.027]

[43]

Dasgupta D, Shrein JM, Gupta KD. A survey of blockchain from security perspective. Journal of Banking and Financial Technology, 2019, 3(1): 1-17.

[doi:10.1007/s42786-018-00002-6]

[44]

McCorry P, Heilman E, Miller A. Atomically trading with roger: Gambling on the success of a hardfork. In: Garcia-Alfaro J, Navarro-Arribas G, Hartenstein H, Herrera-Joancomartí J, eds. Data Privacy Management, Cryptocurrencies and Blockchain Technology. Cham: Springer, 2017. 334–353. [doi: 10.1007/978-3-319-67816-0_19]

[45]

Eyal I, Gencer AE, Sirer EG, Van Renesse R. Bitcoin-NG: A scalable blockchain protocol. In: Proc. of the 13th USENIX Symp. on Networked Systems Design and Implementation. Berkeley: USENIX, 2016. 45–59.

[46]

Eskandari S, Moosavi S, Clark J. SoK: Transparent dishonesty: Front-running attacks on blockchain. In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 170–189. [doi: 10.1007/978-3-030-43725-1_13]

[47]

Sina A. Investigating the Bitcoin blockchain through the analysis of empty blocks [MS. Thesis]. Venice: Università Ca'Foscari Venezia, 2019.

[48]

Zhou DL, Ruan N, Jia WJ. A robust throughput scheme for Bitcoin network without block reward. In: Proc. of the 21st IEEE Int’l Conf. on High Performance Computing and Communications; the 17th IEEE Int’l Conf. on Smart City; the 5th IEEE Int’l Conf. on Data Science and Systems. Zhangjiajie: IEEE, 2019. 706–713. [doi: 10.1109/HPCC/SmartCity/DSS.2019.00105]

[49]

Mannan GS. Security of blockchain: An investigation and analysis of mining attacks on Bitcoin [MS. Thesis]. Edgbaston: University of Birmingham, 2017.

[50]

Nguyen CT, Hoang DT, Nguyen DN, Niyato D, Nguyen HT, Dutkiewicz E. Proof-of-stake consensus mechanisms for future blockchain networks: Fundamentals, applications and opportunities. IEEE Access, 2019, 7: 85727-85745.

[doi:10.1109/ACCESS.2019.2925010]

[51]

Saleh F. Blockchain without waste: Proof-of-stake. Review of Financial Studies, 2021, 34: 1156-1190.

[doi:10.2139/ssrn.3183935]

[52]

Gupta S, Sadoghi M. Blockchain transaction processing. In: Sakr S, Zomaya A, eds. Encyclopedia of Big Data Technologies. Cham: Springer, 2019. [doi: 10.1007/978-3-319-63962-8_333-1]

[53]

Daian P, Pass R, Shi E. Snow white: Robustly reconfigurable consensus and applications to provably secure proof of stake. In: Proc. of the 23rd Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 23–41. [doi: 10.1007/978-3-030-32101-7_2]

[54]

Baliga A. Understanding blockchain consensus models. Persistent Systems, 2017, 2017(4): 1-14.

[55]

Jain A, Arora S, Shukla Y, Patil T, Sawant-Patil S. Proof of stake with casper the friendly finality gadget protocol for fair validation consensus in Ethereum. Int’l Journal of Scientific Research in Computer Science, Engineering and Information Technology, 2018, 3(3): 291-298.

[56]

Cohen B, Pietrzak K. The Chia network blockchain. Chia Network White Paper, 2019.

[57]

Fanti G, Kogan L, Oh S, Ruan K, Viswanath P, Wang GR. Compounding of wealth in proof-of-stake cryptocurrencies. In: Proc. of the 23rd Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 42–61. [doi: 10.1007/978-3-030-32101-7_3]

[58]

Sayeed S, Marco-Gisbert H. Assessing blockchain consensus and security mechanisms against the 51% attack. Applied Sciences, 2019, 9(9): 1788.

[doi:10.3390/app9091788]

[59]

Roelen E, Modeneis T. A Technical Description of the Smilo Platform. Rotterdam, Netherlands: Smilo Foundation, 2019.

[60]

Deirmentzoglou E, Papakyriakopoulos G, Patsakis C. A survey on long-range attacks for proof of stake protocols. IEEE Access, 2019, 7: 28712-28725.

[doi:10.1109/ACCESS.2019.2901858]

[61]

AlMallohi IAI, Alotaibi ASM, Alghafees R, Azam F, Khan ZS. Multivariable based checkpoints to mitigate the long range attack in proof-of-stake based blockchains. In: Proc. of the 3rd Int’l Conf. on High Performance Compilation, Computing and Communications. Xi’an: ACM, 2019. 118–122. [doi: 10.1145/3318265.3318289]

[62]

Zhang S, Lee JH. Eclipse-based stake-bleeding attacks in PoS blockchain systems. In: Proc. of the 2019 ACM Int’l Symp. on Blockchain and Secure Critical Infrastructure. Auckland: ACM, 2019. 67–72. [doi: 10.1145/3327960.3332391]

[63]

Homoliak I, Venugopalan S, Hum Q, Szalachowski P. A security reference architecture for blockchains. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 390–397. [doi: 10.1109/Blockchain.2019.00060]

[64]

Saad M, Njilla L, Kamhoua C, Kim J, Nyang D, Mohaisen A. Mempool optimization for defending against DDoS attacks in PoW-based blockchain systems. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain and Cryptocurrency. Seoul: IEEE, 2019. 285–292. [doi: 10.1109/BLOC.2019.8751476]

[65]

Saad M, Spaulding J, Njilla L, Kamhoua C, Shetty S, Nyang D, Mohaisen A. Exploring the attack surface of blockchain: A systematic overview. arXiv: 1904.03487, 2019.

[66]

Bradbury D. The problem with Bitcoin. Computer Fraud & Security, 2013, 2013(11): 5-8.

[doi:10.1016/S1361-3723(13)70101-5]

[67]

Douceur JR. The Sybil attack. In: Proc. of the 1st Int’l Workshop on Peer-to-Peer Systems. Cambridge: Springer, 2002. 251–260. [doi: 10.1007/3-540-45748-8_24]

[68]

Dinger J, Hartenstein H. Defending the Sybil attack in P2P networks: Taxonomy, challenges, and a proposal for self-registration. In: Proc. of the 1st Int’l Conf. on Availability, Reliability and Security. Vienna: IEEE, 2006. 756–763. [doi: 10.1109/ARES.2006.45]

[69]

Swathi P, Modi C, Patel D. Preventing Sybil attack in blockchain using distributed behavior monitoring of miners. In: Proc. of the 10th Int’l Conf. on Computing, Communication and Networking Technologies. Kanpur: IEEE, 2019. 1–6. [doi: 10.1109/ICCCNT45670.2019.8944507]

[70]

Rahmadika S, Ramdania DR, Harika M. A blockchain approach for the future renewable energy transaction. Journal of Physics: Conf. Series, 2019, 1175(1): 012122.

[doi:10.1088/1742-6596/1175/1/012122]

[71]

Wüst K, Gervais A. Ethereum eclipse attacks. ETH Zurich, 2016.

[72]

Wang SL, Wang CY, Hu Q. Corking by forking: Vulnerability analysis of blockchain. In: Proc. of the IEEE INFOCOM 2019-IEEE Conf. on Computer Communications. Paris: IEEE, 2019. 829–837. [doi: 10.1109/INFOCOM.2019.8737490]

[73]

Aoki Y, Shudo K. Proximity neighbor selection in blockchain networks. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 52–58. [doi: 10.1109/Blockchain.2019.00016]

[74]

Heilman E, Kendler A, Zohar A, Goldberg S. Eclipse attacks on Bitcoin’s peer-to-peer network. In: Proc. of the 24th USENIX Security Symp. Washington: USENIX, 2015. 129–144.

[75]

Gervais A, Karame GO, Wüst K, Glykantzis V, Ritzdorf H, Capkun S. On the security and performance of proof of work blockchains. In: Proc. of the 2016 ACM SIGSAC Conf. on Computer and Communications Security. Vienna: ACM, 2016. 3–16. [doi: 10.1145/2976749.2978341]

[76]

Wang K, Kim HS. FastChain: Scaling blockchain system with informed neighbor selection. In: Proc. of 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 376–383. [doi: 10.1109/Blockchain.2019.00058]

[77]

Ajayi O, Cherian M, Saadawi T. Secured cyber-attack signatures distribution using blockchain technology. In: Proc. of 2019 IEEE Int’l Conf. on Computational Science and Engineering (CSE) and IEEE Int’l Conf. on Embedded and Ubiquitous Computing (EUC). New York: IEEE, 2019. 482–488. [doi: 10.1109/CSE/EUC.2019.00095]

[78]

Qian WN, Shao QF, Zhu YC, Jin CQ, Zhou AY. Research problems and methods in blockchain and trusted data management. Ruan Jian Xue Bao/Journal of Software, 2018, 29(1): 150–159 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5434.htm

[79]

Canessane RA, Srinivasan N, Beuria A, Singh A, Kumar BM. Decentralised applications using Ethereum blockchain. In: Proc. of the 5th Int’l Conf. on Science Technology Engineering and Mathematics. Chennai: IEEE, 2019. 14–15. [doi: 10.1109/ICONSTEM.2019.8918887]

[80]

Buterin V. A next-generation smart contract and decentralized application platform. Ethereum White Paper, 2014, 3(37): 1-36.

http://lapis.epfl.ch/files/content/sites/lapis/files/VETU/VETU_SH_17/articles/Ethereum_white_paper-a_next_generation_smart_contract_and_decentralized_application_platform-vitalik-buterin.pdf

[81]

Wood G. Ethereum: A secure decentralised generalised transaction ledger. Ethereum Project Yellow Paper, 2014, 151: 1-32.

[82]

Vujičić D, Jagodić D, Ranđić S. Blockchain technology, Bitcoin, and Ethereum: A brief overview. In: Proc. of the 17th Int’l Symp. INFOTEH-JAHORINA. East Sarajevo: IEEE, 2018. 1–6. [doi: 10.1109/INFOTEH.2018.8345547]

[83]

Wei PW, Yuan Q, Zheng YL. Security of the blockchain against long delay attack. In: Proc. of the 24th Int’l Conf. on the Theory and Application of Cryptology and Information Security. Brisbane: Springer, 2018. 250–275. [doi: 10.1007/978-3-030-03332-3_10]

[84]

Gramoli V. From blockchain consensus back to byzantine consensus. Future Generation Computer Systems, 2020, 107: 760-769.

[doi:10.1016/j.future.2017.09.023]

[85]

Natoli C, Gramoli V. The balance attack against proof-of-work blockchains: The R3 testbed as an example. arXiv: 1612.09426, 2016.

[86]

Natoli C, Gramoli V. The balance attack or why forkable blockchains are ill-suited for consortium. In: Proc. of the 47th Annual IEEE/IFIP Int’l Conf. on Dependable Systems and Networks. Denver: IEEE, 2017. 579–590. [doi: 10.1109/DSN.2017.44]

[87]

Gupta BC. Analysis of Ethereum smart contracts-A security perspective [MS. Thesis]. Kanpur: Indian Institute of Technology Kanpur, 2019.

[88]

Grech N, Kong M, Jurisevic A, Brent L, Scholz B, Smaragdakis Y. MadMax: Surviving out-of-gas conditions in Ethereum smart contracts. Proc. of the ACM on Programming Languages, 2018, 2(OOPSLA): 116.

[doi:10.1145/3276486]

[89]

Atzei N, Bartoletti M, Cimoli T. A survey of attacks on Ethereum smart contracts (SOK). In: Proc. of the 6th Int’l Conf. on Principles of Security and Trust. Uppsala: Springer, 2017. 164–186. [doi: 10.1007/978-3-662-54455-6_8]

[90]

Luu L, Chu DH, Olickel H, Saxena P, Hobor A. Making smart contracts smarter. In: Proc. of the 2016 ACM SIGSAC Conf. on Computer and Communications Security. Vienna: ACM, 2016. 254–269. [doi: 10.1145/2976749.2978309]

[91]

Wang S, Yuan Y, Wang X, Li JJ, Qin R, Wang FY. An overview of smart contract: Architecture, applications, and future trends. In: Proc. of the 2018 IEEE Intelligent Vehicles Symp. Changshu: IEEE, 2018. 108–113. [doi: 10.1109/IVS.2018.8500488]

[92]

Delmolino K, Arnett M, Kosba A, Miller A, Shi E. Step by step towards creating a safe smart contract: Lessons and insights from a cryptocurrency lab. In: Proc. of the 2016 Int’l Conf. on Financial Cryptography and Data Security. Berlin: Springer, 2016. 79–94. [doi: 10.1007/978-3-662-53357-4_6]

[93]

Decker C, Guthrie J, Seidel J, Wattenhofer R. Making Bitcoin exchanges transparent. In: Proc. of the 20th European Symp. on Research in Computer Security. Vienna: Springer, 2015. 561–576. [doi: 10.1007/978-3-319-24177-7_28]

[94]

Chuen DLK. Handbook of Digital Currency: Bitcoin, Innovation, Financial Instruments, and Big Data. London: Academic Press, 2015. 5–185.

[95]

Vasek M, Thornton M, Moore T. Empirical analysis of denial-of-service attacks in the Bitcoin ecosystem. In: Proc. of the 2014 Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2014. 57–71. [doi: 10.1007/978-3-662-44774-1_5]

[96]

Huynh TT, Nguyen TD, Tan H. A survey on security and privacy issues of blockchain technology. In: Proc. of the 2019 Int’l Conf. on System Science and Engineering. Dong Hoi: IEEE, 2019. 362–367. [doi: 10.1109/ICSSE.2019.8823094]

[97]

Feng Q, He DB, Zeadally S, Khan MK, Kumar N. A survey on privacy protection in blockchain system. Journal of Network and Computer Applications, 2019, 126: 45-58.

[doi:10.1016/j.jnca.2018.10.020]

[98]

Naoumov N, Ross K. Exploiting P2P systems for DDoS attacks. In: Proc. of the 1st Int’l Conf. on Scalable Information Systems. Hong Kong: ACM, 2006. 47–52. [doi: 10.1145/1146847.1146894]

[99]

Moore T. The promise and perils of digital currencies. Int’l Journal of Critical Infrastructure Protection, 2013, 6(3−4): 147-149.

[doi:10.1016/j.ijcip.2013.08.002]

[100]

Zhao YL. Practical aggregate signature from general elliptic curves, and applications to blockchain. In: Proc. of the 2019 ACM Asia Conf. on Computer and Communications Security. Auckland: ACM, 2019. 529–538. [doi: 10.1145/3321705.3329826]

[101]

Decker C, Wattenhofer R. Bitcoin transaction malleability and MtGox. In: Proc. of the 19th European Symp. on Research in Computer Security. Wroclaw: Springer, 2014. 313–326. [doi: 10.1007/978-3-319-11212-1_18]

[102]

Zhao YL. Aggregation of gamma-signatures and applications to Bitcoin. Cryptology ePrint Archive, 2018.

[103]

Vyas CA, Lunagaria M. Security concerns and issues for bitcoin. In: IJCA Proc. on National Conf. cum Workshop on Bioinformatics and Computational Biology. 2014. 10–12.

[104]

Gennaro R, Goldfeder S, Narayanan A. Threshold-optimal DSA/ECDSA signatures and an application to Bitcoin wallet security. In: Proc. of the 14th Int’l Conf. on Applied Cryptography and Network Security. Guildford: Springer, 2016. 156–174. [doi: 10.1007/978-3-319-39555-5_9]

[105]

Lewenberg Y, Bachrach Y, Sompolinsky Y, Zohar A, Rosenschein JS. Bitcoin mining pools: A cooperative game theoretic analysis. In: Proc. of the 2015 Int’l Conf. on Autonomous Agents and Multiagent Systems. Istanbul: Int’l Foundation for Autonomous Agents and Multiagent Systems, 2015. 919–927.

[106]

Sapirshtein A, Sompolinsky Y, Zohar A. Optimal selfish mining strategies in Bitcoin. In: Proc. of the 20th Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 515–532. [doi: 10.1007/978-3-662-54970-4_30]

[107]

Courtois NT, Bahack L. On subversive miner strategies and block withholding attack in Bitcoin digital currency. arXiv: 1402.1718, 2014.

[108]

Saad M, Njilla L, Kamhoua C, Mohaisen A. Countering selfish mining in blockchains. In: Proc. of the 2019 Int’l Conf. on Computing, Networking and Communications. Honolulu: IEEE, 2019. 360–364. [doi: 10.1109/ICCNC.2019.8685577]

[109]

Grunspan C, Pérez-Marco R. Bitcoin selfish mining and dyck words. arXiv: 1902.01513, 2019.

[110]

Bai QL, Zhou XY, Wang X, Xu YD, Wang X, Kong QS. A deep dive into blockchain selfish mining. In: ICC 2019–2019 IEEE Int’l Conf. on Communications. Shanghai: IEEE, 2019. 1–6. [doi: 10.1109/ICC.2019.8761240]

[111]

Eyal I, Sirer EG. Majority is not enough: Bitcoin mining is vulnerable. In: Proc. of the 18th Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2014. 436–454. [doi: 10.1007/978-3-662-45472-5_28]

[112]

Qin R, Yuan Y, Wang S, Wang FY. Economic issues in Bitcoin mining and blockchain research. In: Proc. of the 2018 IEEE Intelligent Vehicles Symp. (IV). Changshu: IEEE, 2018. 268–273. [doi: 10.1109/IVS.2018.8500377]

[113]

Liu KY, Ohsawa Y. Auction based rewards distribution method in pool mining. In: Proc. of the 2019 Int’l Electronics Communication Conf.. Okinawa: ACM, 2019. 103–110. [doi: 10.1145/3343147.3343162]

[114]

Singh SK, Salim MM, Cho M, Cha J, Pan Y, Park JH. Smart contract-based pool hopping attack prevention for blockchain networks. Symmetry, 2019, 11(7): 941.

[doi:10.3390/sym11070941]

[115]

Shi HW, Wang SL, Hu Q, Cheng XZ, Zhang JS, Yu JG. Hopping-proof and fee-free pooled mining in blockchain. arXiv: 1912.11575, 2019.

[116]

Bag S, Ruj S, Sakurai K. Bitcoin block withholding attack: Analysis and mitigation. IEEE Trans. on Information Forensics and Security, 2017, 12(8): 1967-1978.

[doi:10.1109/TIFS.2016.2623588]

[117]

Chang SY, Park Y, Wuthier S, Chen CW. Uncle-block attack: Blockchain mining threat beyond block withholding for rational and uncooperative miners. In: Proc. of the 17th Int’l Conf. on Applied Cryptography and Network Security. Bogota: Springer, 2019. 241–258. [doi: 10.1007/978-3-030-21568-2_12]

[118]

Vokerla RR, Shanmugam B, Azam S, Karim A, De Boer F, Jonkman M, Faisal F. An overview of blockchain applications and attacks. In: Proc. of the 2019 Int’l Conf. on Vision Towards Emerging Trends in Communication and Networking. Vellore: IEEE, 2019. 1–6. [doi: 10.1109/ViTECoN.2019.8899450]

[119]

Rosenfeld M. Analysis of Bitcoin pooled mining reward systems. arXiv: 1112.4980, 2011.

[120]

Barber S, Boyen X, Shi E, Uzun E. Bitter to better—How to make Bitcoin a better currency. In: Proc. of the 16th Int’l Conf. on Financial Cryptography and Data Security. Kralendijk: Springer, 2012. 399–414. [doi: 10.1007/978-3-642-32946-3_29]

[121]

Canelón J, Huerta E, Incera J, Ryan T. A cybersecurity control framework for blockchain ecosystems. The Int’l Journal of Digital Accounting Research, 2019, 19: 103-144.

[doi:10.4192/1577-8517-v19_5]

[122]

Stephen R, Alex A. A review on blockchain security. IOP Conference Series: Materials Science and Engineering, 2018, 396: 012030.

[doi:10.1088/1757-899X/396/1/012030]

[123]

Herbert J, Litchfield A. A novel method for decentralised peer-to-peer software license validation using cryptocurrency blockchain technology. In: Proc. of the 38th Australasian Computer Science Conf. (ACSC 2015). Sydney: CRPIT, 2015. 27–30.

[124]

Gangan S. A review of man-in-the-middle attacks. arXiv: 1504.02115, 2015.

[125]

Wang KC, Reiter MK. How to end password reuse on the web. In: Network and Distributed Systems Security. San Diego: NDSS, 2019.

[126]

Glazier W, Dhiman M. Automation attacks at scale-credential exploitation. 2017.

[127]

Yuan Y, Wang FY. Blockchain and cryptocurrencies: Model, techniques, and applications. IEEE Trans. on Systems, Man, and Cybernetics: Systems, 2018, 48(9): 1421-1428.

[doi:10.1109/TSMC.2018.2854904]

[128]

Shahid F, Ahmad I, Imran M, Shoaib M. Novel one time signatures (NOTS): A compact post-quantum digital signature scheme. IEEE Access, 2020, 8: 15895-15906.

[doi:10.1109/ACCESS.2020.2966259]

[129]

Wan ZG, Guan ZS, Zhou Y, Ren K. zk-AuthFeed: How to feed authenticated data into smart contract with zero knowledge. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 83–90. [doi: 10.1109/Blockchain.2019.00020]

[130]

Harris CG. Consensus-based secret sharing in blockchain smart contracts. In: Proc. of the 2019 Int’l Workshop on Big Data and Information Security. Bali: IEEE, 2019. 79–84. [doi: 10.1109/IWBIS.2019.8935853]

[131]

Signorini M, Pontecorvi M, Kanoun W, Di Pietro R. ADvISE: Anomaly detection tool for blockchain systEms. In: Proc. of the 2018 IEEE World Congress on Services. San Francisco: IEEE, 2018. 65–66. [doi: 10.1109/SERVICES.2018.00046]

[132]

Sai K, Tipper D. Disincentivizing double spend attacks across interoperable blockchains. In: Proc. of the 1st IEEE Int’l Conf. on Trust, Privacy and Security in Intelligent Systems and Applications. Los Angeles: IEEE, 2019. 36–45. [doi: 10.1109/TPS-ISA48467.2019.00014]

[133]

Zhang SJ, Lee JH. Mitigations on sybil-based double-spend attacks in Bitcoin. IEEE Consumer Electronics Magazine, 2020.

[doi:10.1109/MCE.2020.2988031]

[134]

Zolotavkin Y, Garcia J. Incentives for stable mining in pay per last N shares pools. In: Proc. of the 2019 IFIP Networking Conf. (IFIP Networking). Warsaw: IEEE, 2019. 1–9. [doi: 10.23919/IFIPNetworking.2019.8816835]

[135]

Qin R, Yuan Y, Wang FY. Optimal block withholding strategies for blockchain mining pools. IEEE Trans. on Computational Social Systems, 2020, 7(3): 709-717.

[doi:10.1109/TCSS.2020.2991097]

[136]

Kaci A, Rachedi A. PoolCoin: Toward a distributed trust model for miners’ reputation management in blockchain. In: Proc. of the 17th IEEE Annual Consumer Communications & Networking Conf. (CCNC). Las Vegas: IEEE, 2020. 1–6. [doi: 10.1109/CCNC46108.2020.9045608]

[137]

Gao ZP, Jiang LX, Xia X, Lo D, Grundy J. Checking smart contracts with structural code embedding. IEEE Trans. on Software Engineering, 2020.

[138]

Wang W, Song JJ, Xu GQ, Li YD, Wang H, Su CH. ContractWard: Automated vulnerability detection models for Ethereum smart contracts. IEEE Trans. on Network Science and Engineering, 2020.

[139]

Samreen NF, Alalfi MH. Reentrancy vulnerability identification in Ethereum smart contracts. In: Proc. of the 2020 IEEE Int’l Workshop on Blockchain Oriented Software Engineering. London: IEEE, 2020. 22–29. [doi: 10.1109/IWBOSE50093.2020.9050260]

[140]

Zhang YY, Ma SQ, Li JR, Li KL, Nepal S, Gu DW. SMARTSHIELD: Automatic smart contract protection made easy. In: Proc. of the 27th IEEE Int’l Conf. on Software Analysis, Evolution and Reengineering. London: IEEE, 2020. 23–34.[doi: 10.1109/SANER48275.2020.9054825]

[141]

Wu Y, Tao F, Liu L, Gu JY, Panneerselvam J, Zhu RB, Shahzad MN. A Bitcoin transaction network analytic method for future blockchain forensic investigation. IEEE Trans. on Network Science and Engineering, 2020.

[2]

刘敖迪, 杜学绘, 王娜, 李少卓. 区块链技术及其在信息安全领域的研究进展. 软件学报, 2018, 29(7): 2092–2115. http://www.jos.org.cn/1000-9825/5589.htm

[8]

邹均, 张海宁, 唐屹, 李磊, 刘天喜, 陈晖. 区块链技术指南. 北京: 机械工业出版社, 2016. 109–219.

[42]

比特币区块链分叉研究. 通信技术, 2018, 51(1): 149-155.

[doi:10.3969/j.issn.1002-0802.2018.01.027]

[78]

钱卫宁, 邵奇峰, 朱燕超, 金澈清, 周傲英. 区块链与可信数据管理: 问题与方法. 软件学报, 2018, 29(1): 150–159. http://www.jos.org.cn/1000-9825/5434.htm

2021|区块链安全性问题与挑战 - 知乎

2021|区块链安全性问题与挑战 - 知乎切换模式写文章登录/注册2021|区块链安全性问题与挑战元宇宙见闻元宇宙一线见闻导语近年来,由于大众对于比特币及其它加密货币的兴趣爆炸式增长,区块链技术越来越受到关注,有关区块链技术的讨论愈演愈烈,它已经在逐渐改变人们的生活方式,并且持续在某些领域造成影响。伴随而来的也有质疑以及对区块链安全问题的思考。虽然区块链的技术特点可以给我们带来更可靠和方便的服务,但这种创新技术背后的安全问题和其面临的挑战也是我们需要关注的一个重要话题。区块链是过去10年最伟大的技术发展之一。作为一种通用技术,区块链技术的集成应用逐渐成为新的技术革新和产业变革的重要驱动力量,世界各国纷纷加快区块链相关技术战略部署、研发应用和落地推广,探索区块链在各行业领域的应用模式,抢占技术发展先机。区块链技术不仅仅是单一的一种技术,而是包含密码学、数学、算法和经济模型,结合点对点网络,使用分布式共识算法来解决传统分布式数据库同步问题,一体化的多领域基础设施建设。随着各种应用落地,区块链数字资产引发的安全问题总体呈上升趋势,数字货币犯罪五花八门,盗币、诈骗、非法集资、洗钱、暗网非法交易、犯罪等案件频发,各种原因造成的「黑天鹅」事件层出不穷。一、区块链技术日益重要我们可以简单将区块链理解为——是一个分布在全球各地、能够协同运转的数据库存储系统。区别于传统数据库运作——读写与权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器节点的人都可以参与其中。区块链允许快速轻松地处理交易数据,这使得它在各种在线投资市场中越来越受欢迎。此外,它还提供了一些重要的安全预防措施。区块链中的任何区块都很难被更改,这有助于防止欺诈。每个区块中内置的识别代码允许轻松跟踪交易数据。二、区块链生态安全事故频发因为区块链如此受欢迎(并且因为它通常用于交易环境),它已成为黑客和其他网络犯罪分子的诱人目标。随着这种流行度的增加,出现了许多区块链安全性问题。7月11日,跨链桥项目Chainswap发布推文表示遭到黑客攻击,在该跨链桥部署智能合约的超20个项目代币都遭遇黑客盗取,总损失价值400万美元。这已经是该项目于7月内遭受的第二次攻击继Chainswap遭受攻击之后,7月12日,跨链桥项目Anyswap新推出的V3跨链流动性池也遭到黑客攻击,总计损失超过787万美元。6月,BSC生态系的DeFi协议Impossible Finance遭遇闪电贷攻击,这已是自5月以来,BSC生态系统中发生的第九起闪电贷攻击事件8月12日,加密孵化机构DAO Maker发布公告宣布遭受黑客攻击,总计被盗走700万美元,有5521名用户受影响。9月12日,雪崩协议(Avalanche)上 Zabu Finance 项目遭受闪电贷攻击……数据显示,2020年,DeFi安全攻击事件60起,损失2.5亿美元,2021年仅半年,攻击事件总数已逼近去年整年,而损失金额已超去年3倍多。慢雾区块链被黑事件档案库统计数据显示,2021年上半年,整个区块链生态共发生78起较为著名的安全事件,涉及DeFi安全50起,钱包安全2起,公链安全3起,交易所安全6起,其他安全相关17起。其中,以太坊上27起,币安智能链(BSC)上22起,Polygon上2起,火币生态链(HECO)、波卡生态、EOS上各1起,总损失金额超17亿美元。经慢雾AML对涉事资金追踪分析发现,约60%的资金被攻击者转入混币平台,约30%的资金被转入交易所。三、区块链主要安全问题像任何系统一样,区块链也有弱点,以下是与区块链相关的最紧迫的安全问题:1. 区块链端点漏洞虽然区块链被吹捧为几乎“不可破解”,但我们需要注意到的是,大多数区块链交易的端点安全性要差得多。例如,比特币交易或投资的结果可能是将大量比特币存入“热钱包”或虚拟储蓄账户,这些钱包账户可能不像区块链中的实际区块那样防黑客。为了促进区块链交易,可能会招募多个第三方供应商。例如一些支出处理器、智能合约和区块链支付平台。通常,这些第三方区块链供应商在他们自己的应用程序和网站上的安全性相对较弱,这可能为黑客敞开大门。3. 可扩展性问题公链面临“不可能三角模型”、“根特别多,没长叶子的市场”的困境,极大的限制了区块链技术的商业落地进程。目前,区块链公链多达百种“比特币、以太坊、EOS、比原链、多数公链为发币设计,基于实体经济业务进行的公链极为稀少。区块链技术商业落地严重滞后,区块链行业成了根特别多,没长叶子的市场。3. 监管问题区块链缺乏明显的监管标准,政治因素可能会影响其执行和发展。基于区块链的货币是去中心化和国际化的,这意味着政府控制的货币本质上可能会变得不那么有价值。因此,一些国家政府正在努力对区块链引入更严格的法规。他们希望在它威胁到国家经济或变得更强大之前控制它。作为区块链安全性的众多问题之一,这可能会推迟该技术的广泛采用。4. 测试不足虽然区块链历来用于加密货币交易,但它越来越多地用于其他领域。问题在于非加密货币应用程序中使用的编码往往未经测试且具有高度实验性,这意味着黑客也许能够找到并利用漏洞。5. 技术的复杂性这是一个很难从头开始创建的系统。一个小小的失误,整个系统都可能受到损害。当然,这不是系统本身的缺陷,而是执行的缺陷。同样,技术的复杂性使得普通人更难以理解。因此,大多数人可能无法正确理解系统的风险和功能。6.网络的大小要让区块链发挥作用,至少需要数百个——最好是数千个节点协同工作。这使得区块链系统在增长的早期阶段特别容易受到攻击,也容易出现腐败问题。例如:如果单个用户控制系统上51%的节点,那么他们有可能完全控制其结果。在只有20个节点的规模上,这并非不可能。。7.网络的速度和效率区块链的设计也可能会损害其以合适的速率处理交易的能力。如果系统在开发可以支持它的基础设施之前变得过于复杂或需求过多,则可能会导致数据存储和交易速度问题。这会对其他有效的系统产生负面影响,这就是为什么它会列为区块链安全问题的原因。8.区块链交易使用公钥和私钥这些密钥几乎不可能自行破解,但网络犯罪分子可以通过更传统、更简单的方式获得这些密钥。例如:如果将密钥存储在不安全的平台上,黑客就可以轻松地获得它们。如果有人找到用户的电子邮件密码,将可以访问整个收件箱。同样,如果有人找到用户的区块链密钥,他们可以在区块链上冒充该用户,这是区块链安全性需要思考的主要问题之一。四、展望后区块链世界任何系统都有一些漏洞,区块链也不例外。这里要记住的关键是,绝大多数区块链安全漏洞都与人为错误有关。当正确执行和保护时,区块链是透明且防篡改的。而且,这与技术所能达到的“安全”差不多。这样做,使得人们能够利用好这些好处而不必担心区块链安全性问题。总之,区块链技术具有可靠的信息交互、完整的数据存储、可信的节点认证等安全性优势,因而为网络安全提供一种崭新的安全防护思路和模式,将传统网络边界式防护转变成全网络节点参与的安全防护新模式,通过分布式的节点共识机制来抵抗恶意节点的攻击,在网络安全领域具有极大的应用潜力。只是,现阶段区块链技术还不够成熟,区块链系统仍然存在许多安全隐患和漏洞,而且硬件设施落后也是现阶段的一个难点,因此在下一步区块链应用推进中,关键是要加强基础设施的建设,以及加强区块链的监管和安全技术的研究和实践,推动区块链应用的稳步发展,充分发挥区块链技术的安全优势,有效提升网络安全防护水平,才能更有效的使区块链市场良性发展。发布于 2021-10-09 11:54区块链技术​赞同​​添加评论​分享​喜欢​收藏​申请

带你了解区块链技术及安全风险 - 知乎

带你了解区块链技术及安全风险 - 知乎切换模式写文章登录/注册带你了解区块链技术及安全风险中国电信研究院​已认证账号提起区块链,大多数人可能直接想到了比特币,认为区块链与比特币是同一种东西,但事实却不是这样。常说的比特币、以太坊、区块链是什么关系?区块链技术到底是什么?区块链技术有什么安全风险?本文带你全面了解。一、比特币、以太坊、区块链,傻傻分不清?2008年,化名为“中本聪”的一名学者发表了论文《比特币:一种点对点的现金交易系统》,提出一种P2P形式的数字货币,以比特币(BTC)为代表的数字加密货币逐渐被众人所知。2013年,Vitlaik Buterin改进了比特币的局限性,提出“以太坊”(ETH)。比特币与以太坊是目前全世界最大的加密货币和区块链,他们之间有相似之处也有区别。比特币是一个公共的、去中心化的点对点支付网络,允许用户在没有银行介入的情况下发送和接收比特币。同样的,以太坊是一个公共的、去中心化的对等网络,像比特币一样,以太坊使用节点并允许用户发送和接收加密货币Ether(之后改成了Ethereum)。以太坊改进了比特币扩展方面的局限性,它不仅仅是一个支付系统,还拥有去中心化应用程序(DAPP)和智能合约机制,能够适应网络交易量的增长与存储,具备灵活性与可扩展性。这两者都与区块链技术密切相关,而利用区块链技术的虚拟数字货币却不止上述两种,公链币、平台币、稳定币等都是利用区块链技术实现的数字货币。二、什么是区块链技术?2016年,工信部发布的《中国区块链技术和应用发展白皮书》中指出,“区块链技术被认为是继大型机、个人电脑、互联网、移动互联网之后计算模式的颠覆式创新”。区块链是按照时间顺序排列的数据区块的链式结构,其本质是用于存储信息的分布式数据库。区块链网络没有中心节点,所有节点都是平等的,它是一种在非可信环境下建立的信任模型,所有节点都能够获取全网中的所有信息,所有节点都具有写入和读取数据的能力。若节点想添加新区块,首先需要选择一个随机数,并基于一定规则计算当前区块的hash值,只有小于目标值的hash才是有效的,而目标值与区块的难度系数紧密相关。由于难度系数很大,则目标值非常小,使得hash值小于该值的机会极其渺茫,可能计算数亿次,才算中一次。一旦节点算出了正确的hash值就可以生成新区块,它将新区块进行全网广播通知所有节点,其他节点接收并验证后更新本地数据库,将新区块链接到前一个区块上,进而形成了区块链的链式结构。区块链链式结构图|图片来源于网络区块链由一个个区块组成,区块包含区块头与区块体。区块头保存了时间戳、上一区块的hash、当前区块体的hash、难度系数等特征值,区块体保存了节点实际交易的信息。一旦区块的内容变化,该区块的hash值必定变化。又由于区块之间的链接性,当前区块的hash值直接影响下一区块的hash,所以一旦有人篡改信息将导致该区块的hash值与前一个区块hash不匹配,从而使其脱离区块链。上面提到,计算hash值非常困难,对网络算力的要求极高,若想保持篡改后的区块维持链接状态,短时间内必须修改该区块及其之后所有区块的hash。区块链结构图|图片来源于网络尽管hash值的计算是困难的,但仍然存在计算冲突的问题,即两个节点都计算出满足条件的hash值,并同时发布新区块,则新区块都连接在同一个区块上,这种现象称为区块链的临时分叉。对于临时分叉,不同类型的区块链有不同的解决方案,以比特币为例,先达到6个新区块的链路将作为正确的区块链保存,另一条分叉将被抛弃。由于区块链中的系统是开放的、去中心化的,对于区块链的升级人人都能够参与并实施,没有中心化的决策机构确定应该使用哪种升级,这就导致了区块链的协议分叉。协议分叉主要出现在区块链的版本升级过程,针对升级后的版本是否兼容旧版本,分为硬分叉和软分叉。硬分叉是指升级后与原生协议不相容,没有升级的节点无法验证新区块,两种节点各自延续自己认为正确的链,分为了两条链;软分叉是指升级后与原生协议兼容,旧节点能够继续接受新区块,新旧节点始终在同一条链上工作。区块链在各国政府、金融机构、资本市场、科技公司、研究机构的广泛关注和推动下逐步完善,与区块链技术相关的应用也成为经济发展的新动能。区块链的应用已经延伸到智能制造、供应链管理、物联网、数字货币、医疗健康等多个领域。但该项技术的研究和应用仍然处于初级阶段,区块链涉及的能源浪费问题、吞吐量问题、隐私问题、安全问题等都制约这区块链的发展。三、区块链技术有什么安全风险?区块链拥有去中心化、匿名化、不可篡改、可追溯等特点,但区块链并不能达到100%安全,同样存在安全风险。区块链安全|图片来源于网络对于比特币区块链而言,如果某个节点或某组节点控制了超过全网51%的算力,就有能力篡改和伪造区块中的交易数据。为了获得挖矿带来的收益,大量的矿工都会进一步提高自己的算力,并通过协作完成任务,这一现象进一步提高了“51%攻击”的风险。其次,区块链还存在“自私挖掘攻击”,即节点按照一定策略,选择性地公布自己发现的区块,从而提高自己获得的收益。有研究表明,自私挖掘攻击对算力的要求降低到25%。相比于“51%攻击”,这种攻击对算力的要求下降了26%,对于攻击节点而言,这一要求显然更容易达到,也说明随着攻击技术的提高,区块链的安全隐患将进一步被放大。公有区块链中所有节点都能够读写数据,这在一定程度上引发了用户数据或身份的隐私问题。尽管区块链对于用户身份进行了匿名处理,但是参与方使用的地址标识却与用户的公钥甚至身份相关联,通过现有的关联分析等反匿名身份检测技术能够识别部分目标,从而暴露用户信息。四、总结随着币圈的火热,其背后的区块链技术逐渐得到金融、科技、政府、科研等业界的青睐,相关的研究与应用也源源不断地推动着区块链技术的快速发展。值得注意的是,区块链的隐私保护、安全防御、共识算法的优化等安全问题研究同样要纳入研究,促进区块链安全的发展。中国电信研究院 翼安研习社编辑于 2022-10-09 11:09区块链(Blockchain)比特币 (Bitcoin)​赞同 8​​添加评论​分享​喜欢​收藏​申请

区块链安全问题的解决思路:预防、合规、处置 - 知乎

区块链安全问题的解决思路:预防、合规、处置 - 知乎切换模式写文章登录/注册区块链安全问题的解决思路:预防、合规、处置安全狗领先的云安全服务与解决方案提供商从区块链这个概念被提出的2008年开始,业界就已经认识到它的巨大潜在价值了,不仅仅是数字货币,如众募、资产交易、权属管理、身份认证等领域都可以预见到区块链技术的重大应用价值。据权威机构统计,区块链专利申请的主要国家包括中国、美国、韩国、日本,中国的增长最为迅速,世界上超过一半的区块链专利都在中国。目前中国区块链创业公司的数量仅次于美国,全球市值前二十的数字资产中,不少都有中国血统。但与之对应的是,作为一类相对较新的技术,成长如此迅速的同时,面临的安全问题也是空前的。区块链技术面临了从应用层、智能合约层、底层结构层、基础设施层等各种层面的的攻击,更不用说借助区块链技术产物的数字货币屡次成为黑产获利的工具,可以说区块链技术面临着行业的整体性威胁。区块链安全风险缺乏安全意识与安全管理、社会工程学攻击、内部攻击、第三方风险控制失败、钓鱼攻击等等常见的安全问题,区块链技术构筑的系统同样存在,同时,区块链技术的安全风险也具备一些新的特征。应用层通常成为攻击者首选的目标。这一层的安全问题包括交易所服务器未授权访问、交易所DDoS攻击、员工主机安全问题、恶意程序感染等几个方面。智能合约层则是整个安全防范的重中之重。2016年黑客通过The Dao,利用智能合约中的漏洞,成功盗取360万以太币。THE DAO持有近15%的以太币总数,因此这次事件对以太坊网络及其加密币都产生了负面影响。底层机构层和基础设施层安全则需要注意区块链实现层安全隐患、针对社区的DoS 攻击、EVM 安全隐患等等。安防体系如何构建?利用区块链技术搭建而成的系统有较高的复杂度,系统整体的安全离不开整体架构的科学性和安全性,更离不开其中每一个环节的安全性。为了更加全面和系统化地应对区块链所面临的安全问题,不仅要考虑技术架构中的每个层面面临的安全风险,也要将安全方案融入区块链开发的每一个环节中去。从预防角度而言,是先于攻击者发现系统中潜藏的问题,并予以解决。在开发阶段,无论是何种机构研发的区块链平台,其自身程序和代码中存在的漏洞和问题,是导致被攻击的关键因素。这些问题就如同不定时的隐藏炸弹,暴露在网络环境中,一旦为有心人发现和利用,造成的损失难以估量。如果在项目上线之前,或者虽然上线但尚未遭受攻击,就通过技术手段发现了潜藏的问题,则在面对激烈的攻防对抗时,占据了极大的主动权。而掌握主动权的方式,则是引入渗透测试、代码审计等高级安全服务,先于攻击者发现漏洞和安全隐患并排除。通过代码审计、渗透测试等安全服务,企业用户可以从攻击角度了解系统是否存在隐性漏洞和安全风险,特别是在进行安全项目之前进行的渗透测试,可以对信息系统的安全性得到深刻的感性认知,有助于进一步健全安全建设体系;审计完毕后,也可以帮助用户更好地验证经过安全保护后的网络是否真实的达到了预期安全目标、遵循了相关安全策略、符合安全合规的要求。安全狗的高级安全服务,由安全行业从业十五年以上的顶尖安全专家团队提供,具备强大的漏洞研究与挖掘的技术实力,具备良好的职业操守,严格遵循专业化测试流程。他们曾为数百家企业提供过渗透测试服务,帮助企业客户检测出多达上万个系统漏洞及安全风险,通过出具专业的服务报告及可靠的修复方案,为企业客户防患于未然,避免了由安全风险带来的巨大损失。 从合规的角度而言,凡是属于相关法律规定需要满足一定网络安全需求的信息系统,都应及时地完成等保测评,并部署安全措施符合相应等级的安全保护要求。安全狗依据国内相关的法律法规,比如《信息系统安全等级保护实施指南》、《信息系统安全等级保护定级指南》等要求,制定了一整套等保服务流程,可以满足用户的安全防护和等保合规需求。我们将依据国家网络安全等级保护合规标准及安全狗最佳实践,结合系统现状出具等保整改或建设方案,帮助完善企业网络安全防护体系,提高信息系统的安全保障能力和防护水平,达到国家网络安全等级保护相关标准要求,促使企业业务信息系统安全、稳定并且持续运行。在可能遭受或者已经遭受了攻击时,妥善搭建的安全防护体系可以有效保护系统的安全,尽可能地减少甚至避免损失。依托完善的云安全产品体系和服务,借助集安全监测、检测、防御、审计和事件响应于一体的综合性云安全防护平台,我们可以为用户提供从虚拟网络层、虚拟主机层、宿主机层、应用层到数据层的立体式纵深云安全防御。安全狗的云安全管理平台提供了多样的各类云安全服务,可以让用户根据需求方便地将所需的安全能力纳入云安全服务资源池内,包括新一代混合式web防火墙、防篡改、入侵监测、云主机安全防护等。互联网产业发展的极高速度,让谁都不敢忽视颠覆性技术的发展,更加不敢忽视背后的安全风险,通过专业的安全管理和防护策略来保障安全性,对区块链技术的应用至关重要。安全是区块链行业发展的先决条件,安全狗将依托专业的技术和服务力量,持之以恒地为用户提供专业的安全产品和服务,满足用户的安全需求。编辑于 2018-05-21 10:05区块链(Blockchain)比特币 (Bitcoin)金融​赞同 1​​添加评论​分享​喜欢​收藏​申请

区块链的风险与防范 - 腾讯云开发者社区-腾讯云

风险与防范 - 腾讯云开发者社区-腾讯云腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册区块链的风险与防范文章来源:infoqCECBC区块链专委会摘 要:区块链技术与实体经济深度融合,正在成为促进我国数字经济发展和数字化转型的新动能,但是区块链技术本身仍存在一定风险,区块链技术应用中也会产生一定的风险。借助社会系统理论,将区块链技术风险分为技术风险与应用风险。技术风险主要是共识机制存在漏洞,智能合约仍有困境,密钥丢失危机,跨链技术瓶颈等;应用风险包括全网传播造成冗余,链前数据难以保真,隐私泄露,信息安全,技术滥用,匿名交易难以追责,秩序重构引发混乱等。区块链风险对监督提出了严峻挑战,政府可从加强技术研发、完善技术标准和规范、修订相关的法律法规、完善监管、加大人才培养等角度加强对区块链技术应用的引导与规制,探索建立适应区块链技术规范应用的共识机制和安全保障体系。关键词:区块链;技术风险;应用风险;区块链风险防范一引言区块链是一个分布式数字账本,是系列技术组合创新系统,是一种新型基础设施。作为一种去中心化的基础架构与分布式的计算范式,区块链技术的集成应用已成为技术革新与产业变革的突破口。2015 年以来,我国对区块链技术及其应用场景进行研究和探索,比如,金融领域对区块链技术难点、业务场景、风险管理、行业标准、行业影响和监管问题开展研究。经过市场规范和政策调整,在金融、交通运输、物流、版权保护等领域的需求牵引下,区块链行业市场规模不断发展,整体技术架构趋于稳定。截至 2020 年上半年,经工商部门登记注册的相关区块链企业 4 万余家,其中仅 2020 年上半年就有 8129 家;区块链产业链分布以金融应用、解决方案、区块链开放服务平台(Blackchain as a Service,即 BaaS)为主,其次是供应链应用、数据服务、媒体社区和基础协议,信息安全、智能合约方面占比较少。我国高度重视区块链技术及其应用的发展、探索、引导和规范。国务院及组成部门、地方政府出台区块链相关指导政策,涉及食品安全、数字货币、贸易、政务管理、交通等方面,积极推动区块链技术研发、标准规范制定和应用场景探索。在《“十三五”国家信息化规划》中,将区块链作为驱动网络空间从人人互联向万物互联演进的新技术之一。2019 年 10 月 24 日,在集体学习时指出,要把区块链作为核心技术自主创新的重要突破口,加强对区块链安全风险的研究和分析,探索建立适应区块链技术机制的安全保障体系,加快推动区块链技术和产业创新发展,积极推进区块链和经济社会融合发展。此后,全国各地高度肯定区块链的价值,将区块链视为数字经济的关键基石和经济换道超车的新赛道,加快了技术研发和产业化应用步伐。区块链的作用毋庸置疑,区块链的价值在于将技术集成应用到经济发展、民生改善和社会治理等领域。任何技术都不是万能的,区块链亦如此:在技术层面,区块链本身因技术不成熟而存在技术漏洞;在法学层面,区块链存在被滥用或者与相关政策环境不匹配带来的风险;在经济学层面,由于区块链的物理性能不高而存在经济功能短板。区块链风险分布广泛且危险性高,理性认识区块链风险及其防范,对于区块链产业发展和发挥区块链应有的作用至关重要。当前,国内外关于区块链的研究,主要关注区块链的技术开发和应用,关于区块链风险的文献相对较少或是浅尝辄止,主要表现在研究文献有限、概念界定不清、缺乏系统深入研究框架等。基于以上问题,本文将界定区块链风险,分析区块链风险的产生与传导机制,研究区块链风险防范,最后提出政策建议。二区块链风险的概念、内涵与特点区块链的技术和应用尚处于起步阶段,把握区块链技术发展态势与应用方向,推动区块链与金融、经济、政务和社会治理深度融合,必须正确认识和防范区块链风险。界定区块链技术风险,是本文研究区块链风险及其防范的出发点。(一)区块链风险的界定目前研究主要从信息技术、法学、经济学 3 个不同层面界定区块链的风险。从整体上来看,目前在对区块链风险的研究文献中,技术和法学两个领域研究得比较多,而经济学领域研究的文献不多;对区块链技术风险的概念的界定与类型的划分较为模糊与碎片化。对于区块链风险的概念没有清晰的界定,在描述风险时也多从信息学、经济学、法学其中的一个方面对区块链技术风险进行细分与进一步的阐述。当前对区块链风险的描述和研究有利于完善与夯实理论基础,但是有一个缺陷:对区块链风险的机制缺乏整体性、系统性的分析。本文借助于社会技术系统理论,对区块链风险进行界定和分类。以特里斯特(E.L.Trist)为代表的社会技术系统理论认为,组织是由技术系统和社会系统两个相互关联的子系统组成,只有两个系统同时优化才能达到经济系统最优化。该理论适用于分析新技术嵌入社会系统后,对组织者、使用者、社会规则等带来的风险。以托马斯·休斯(Thomas P. Hughes)为代表的“技术二社会系统”思想也强调技术与社会的整体性,反对将技术与社会进行简单的二元划分,认为技术决定论和技术的社会建构论都无法充分理解技术与社会的复杂关系。纵观技术发展史,技术要素与社会要素是互动的,两者会形成联结和耦合的关系,并非对立和分立的关系。社会技术系统理论强调技术与社会相互作用的整体性与系统性,对于我们深入分析区块链风险及其传导机制具有重要的借鉴和参考作用。从技术扩散到社会应用的路径,区块链技术不仅可以通过对交易商品进行认证、促进脱媒、提高运营效率,从而影响商业模式的价值主张、价值创造、价值交付、价值捕获和价值传播,还会与其他社会要素重新整合,影响社会系统的其他领域,并且辐射政府、社会组织、个人群体等在内的全社会各个阶层。因此,不能孤立地从社会系统中的某个子系统来研究区块链风险,而应该将之置于整个社会系统中进行研究,这将有利于全面准确地把握风险。综上,从技术系统与社会系统的视角出发,我们可以进一步挖掘区块链技术风险的技术系统风险与社会系统风险的内涵。所以,本文认为,区块链风险是基于区块链技术及其应用过程中的成本或收益的不确定性。区块链风险可以分为两类:技术系统本身风险和社会应用系统风险。前者是指区块链技术自身的风险;后者是指区块链技术在应用场景中的风险。(二)区块链风险的内涵1. 区块链技术自身的风险,涉及区块链系统所涉及的技术领域与架构设计。区块链技术涉及分布式系统、密码学、计算机学等众多技术领域,包括数据层、网络层、共识层、激励层、合约层和应用层共 6 个层级的体系架构,区块链系统的数据、共识机制、智能合约等重要构成部分就封存在对应的层级中。区块链技术本身的风险是区块链涉及的技术领域与机制设计中本身存在的漏洞与矛盾点,抑或是目前有待完善和进步的技术带来的缺陷,诸如区块链的智能合约问题、共识机制问题等等。按照区块链的层级结构来划分,区块链技术自身的风险主要包括共识机制漏洞、智能合约困境和密钥丢失危机 3 个部分。这类风险暴露的是因为区块链技术不成熟所造成的、可能无法广泛应用和高效应用的短板,直指区块链的未来发展潜力。区块链技术本身的风险在短时间内无法解决,只有不断推动区块链机制的完善与技术革新才能逐步消弭。技术会在“消弭现有风险→出现新风险→再次消弭现有风险”的周而复始中不断得到完善。2. 区块链技术在应用场景中的风险,是区块链技术在实际应用中出现的安全隐患。与业务应用相关联,它随着信息技术的发展、应用领域的延伸以及社会管控程度的提高而逐渐显现,并对使用区块链应用场景的消费者与投资者造成损失。它主要包括区块链的可扩展性问题、链前数据真实性问题、隐私泄露问题、虚拟代币犯罪问题、应用标准不一问题、权责追溯问题、监管法规滞后问题、体系冲突问题等方面。比如,区块链技术与金融、政务、版权、供应链等多个领域的深度融合,不可避免地会涉及投资人、参与者、普通消费者与国家等多方利益,应用风险将会造成诸多社会问题及对社会秩序的冲击。当前的风险防范的理念与手段,在区块链应用场景中已经不再具有适用性和有效性,需要建立一个新的风险防范框架,以解决这一新兴技术在各种应用场景中提出的法律问题与社会问题。(三)区块链风险的特点1. 涉及范围更广。得益于区块链优越的信息储存与证明功能,区块链的应用远远不只局限于虚拟货币的交易,而是涉及经济体中所有的部门。除此之外,区块链技术与大数据、云计算、人工智能等其他新兴技术的交叉与融合,使区块链技术牢牢把握着数字时代创新的钥匙,其应用场景以“三环扩散”的水中涟漪形态扩散到社会中的各个领域。2. 监管难度更大。相较于传统的风险监管,区块链技术风险监管的对象、技术要求和风险特点都有变化。从监管对象来说,区块链的监管是面向去中心化的、在全球范围内广泛分布的、存储完全相同的分类账目的各网络节点;从监管技术来看,区块链的分布式加密的特点,无法完全或者大部分依靠人力进行监管,因而对监管技术提出了新的要求;从监管体制来说,现有监管体制必须革新,因为区块链风险构成更复杂,风险传递更迅速,区块链的优势与风险往往只有一墙之隔,如何把握创新与监管的边界也是一大难题。三区块链技术本身的风险区块链技术本身的风险源自区块链技术不成熟和区块链机制设计。区块链是技术集成式创新,区块链系统的共识机制、智能合约、数据管理这些核心设计是区块链技术系统风险的最大来源,机制设计中本身存在漏洞与矛盾点。区块链技术本身的风险主要有 3 类:共识机制漏洞、智能合约困境、秘钥丢失危机。1. 共识机制漏洞。共识是区块链设计的核心,也是区块链能够满足去中心化设计的关键所在,但它的运作通常由简单的多数投票机制组成,这些机制可能容易受到游说者或特别活跃贡献者的影响,这既会威胁用户利益,也会破坏节点之间的公平原则。目前,区块链常见的共识机制主要有工作量证明机制(PoW)、股份授权证明机制(DPoS)、权益证明机制(PoS)等。攻击者通过对不同机制的漏洞设计相应的攻击手段,以获取非法收益。例如,针对权益证明机制的 51%算力攻击可以使矿机联合形成矿池,垄断采矿权、计费权和分配权,通过篡改账本信息来控制交易运作,影响区块链的生态安全,甚至波及货币体系。2. 智能合约困境。智能合约是去中心化的区块链系统的核心设计,智能合约实际上是正确执行公开指定程序的共识协议,它通过预先编写好的程序代码,使网络中的节点按照合约制定的运行规则行事。但是,智能合约“智能”却非“全能”,目前任何一个智能合约的设计都会存在开发者编程语言不当、程序结构不完善等一些安全漏洞,所以智能合约的应用常常无法达到预期效果。如果主体的治理和信任完全依赖于代码库,攻击者就可以利用智能合约的设计漏洞,在代码允许内“合法”获利,会造成难以估计的损失。例如,在针对“以太坊分布式自治组织”(DAO)的攻击事件中,就是黑客攻击了智能合约中的漏洞,造成了高达 6 000 万美元的损失。在区块链实施和执行智能合约的过程中,还可能出现因认知不足而造成损失。用户对智能合约的法律理解和覆盖范围不清楚,法律代码能否精准、有效地转换为智能合约也存在疑问。3. 密钥丢失危机。区块链技术运用密码学原理中非对称的加密技术来生成与储存密钥,但是这种技术并非无懈可击。密钥可能遭到病毒和恶意软件的入侵,如果将密钥储存在非加密文件或通过电子邮件、短信等非加密中介传输,则密钥可能会因受到损害而落入他人手中。基于托管类钱包,一旦密钥被盗,无法通过一般途径寻回与重置,用户就会丧失该密钥所保管的资产的控制权,对方可以使用这个密钥合法访问密钥保护的资产,从而给密钥所有者造成巨大财产损失;基于非托管类钱包,用户也有可能因为遗忘私钥的助记词而导致数字资产被永久性封存。除以上 3 类技术风险外,目前此跨链技术还面临一些困难和挑战,如跨链交易的延迟性问题,跨链之间发起的分布式拒绝服务攻击(Distributed Denial of Service,简称 DDoS)问题,跨链交易中目的链的死循环问题,母链出现交叉的问题,网络拓扑结构里激励制度的优化,网络拓扑结构中链与链连接处的安全问题,等等。不突破跨链技术瓶颈,就无法解决区块链的网络互通问题,无法保障不同业务场景衔接过程中事务与事务之间的完整性和一致性,无法实现区块链去中心化的价值及信任体系。因此,研究者们开始寻求在不同区块链间进行通信和价值交换的技术突破。目前有 3 种常见的异构链跨链实现技术为哈希锁定、公证人机制和侧链/中继技术,以及波卡(Polkadot)、区块链互联网(Cosmos)、链中链(Plasma)等几种主要使用侧链/中继技术的主流的跨链项目。例如,波卡就是一个不同区块链网络之间的异构跨链协议,以该协议为基础,部署了 Kusama、开放式跨金融应用平台(Acala Network)、StaFi、Zenlink 等生态项目。据波卡生态项目网站显示,截至目前,波卡生态应用数量已经达到 405 个,涵盖包括底层技术、钱包、预言机、非同质化代币(NFT)、以太坊分布式自治组织、智能合约、桥接器、去中心化金融(DeFi)、物联网和游戏等多个领域。四区块链应用场景中的风险区块链技术与不同场景的结合是区块链风险在社会系统中的体现。这类风险主要涉及两个方面:一是对用户个体造成的风险,二是对传统体系的挑战。前者是从微观层面考察用户的隐私保护和资产安全等问题;后者则是从宏观层面考察由于区块链技术的加入对原有的经济体系与社会生活的造成的冲击与不稳定。区块链的技术缺陷通过应用场景放大,既影响区块链技术应用于实践的广度、深度与长久性,也将因区块链应用场景的风险给经济、社会带来损失。目前区块链应用中暴露出来的风险主要表现为以下 6 个方面:1. 全网传播造成冗余。链上数据全网传播会造成数据冗余,加剧参与节点在信息存储、同步等方面的负担,可能导致系统性能和运行效率下降。这主要涉及区块链的可扩展性问题。可扩展性指区块链技术在处理输出时,能够满足目标吞吐量水平,同时最小化系统组件等待另一个系统组件执行任务时的时间间隔或延迟的能力。在更新或更改数据库中的某些记录时,需要将新的数据附加在原有数据库中,以保证数据无法在传输和交互过程中被篡改,维持数据的一致性与准确性,这将呈倍数消耗剩余的存储容量。要求区块链系统节点的有一个比较大的数据容量,以保证区块链的稳定运行。区块数据长期的积累与冗余会超过节点可以负荷的最大限度,导致节点无法容纳。当所有的节点中有节点发生不稳定或者停止运作的情况,会给市场带来极大的不确定性,甚至造成经济损失。机构主体在提供网络服务的过程中,会将数据全网同步传播,因此将处理和存储大量的数据,这也增加了他们的计算工作量,耗费区块链算力,使处理交易的速度变慢。例如,联盟链超级帐本(Hyperledger Fabric)能达到每秒处理 2 000 个事务,但是都远低于现有数据库处理能力。目前许多企业和行业都因为区块链的交易处理速度缓慢而放弃应用区块链这一技术,从而限制了区块链的大规模应用与推行。另外,区块链技术的可扩展性还会遭到黑客的恶意攻击。针对区块链的可扩展性存在的限制,有攻击者发起分布式拒绝服务攻击,即通过发送大量的垃圾信息堵塞目标节点,使该存储节点超负荷运载,从而阻止区块链的用户从中获取有用信息,给用户带来损失。2. 数据虚假与隐私泄露风险。区块链数据的不可篡改的特性是一把“双刃剑”,如果上链前的数据真实性、合法性有问题,区块链会将错就错。比如,有研究表明,比特币区块链中大约 2.51 亿笔交易中有 1.4%携带任意数据,尽管大部分数据是无害的,然而,仍然有少量的非法或不适当内容,这会使参与者面临风险。目前还缺乏有效的技术可以检测上链前数据是否真实、合法,因此,当一个虚假或者恶意的信息被写入系统,这个信息将在节点的复制与传输中传递至整个区块链,给所有链上用户带来风险。保护个人数据隐私和商业秘密是区块链行业稳健发展的基础,然而,区块链系统面临着安全和隐私方面的严峻风险。区块链系统中的隐私分为两部分,即交易隐私和身份隐私。身份隐私表示与用户身份有关的信息;交易隐私是指存储在区块的字符串中的交易数据。虽然区块链的底层技术是基于非对称加密和哈希算法的密码学原理来对数据进行保护,但是这通常针对的是存储在块中的交易数据。区块链技术的交互需求与各个节点的安全性的不一致造成了区块链系统对于用户的身份隐私保护存在疏漏。例如,可以通过监视元数据以获取区块链网络上任何公共地址的活动相关的活动类型和信息,如果监测时间足够长,就可以汇编信息,“追溯”参与交易的各方。通过大数据分析技术,也可以轻易找到公钥,然后通过交易时间、交易对手、公开银行信息等确定公钥的拥有者。随着区块链技术的更多扩展和广泛应用以及接入节点的成倍增加,隐私泄露风险也成倍增加,一旦发生隐私泄露的情况,会造成经济损失与生活不便。3. 技术滥用与衍生活动滋生犯罪。基于区块链技术的加密货币及衍生品是如今犯罪行为频发的领域。比如,以比特币为代表的分散化的加密货币体系已经成为一个全球性的货币体系,存在被不法分子滥用的风险。区块链技术的特性是加密货币交易风险突显的原因:一是区块链将比特币的交易置于一个去中心化的系统中,交易时无须核验身份信息,也缺乏第三方的有效监管,因此,不法分子很有可能会运用加密货币及其衍生品从事逃税、洗钱、敲诈勒索、毒品和武器交易、恐怖分子融资等非法行为;二是由于区块链节点的分散性,跨国监管执法的难度较大,这些活动常以跨境支付为载体,在法律监管难度较大、力度较弱的地方,从事违法犯罪活动。此外,凭借区块链代币进行投机以及非法集资的行为近年来也屡见不鲜,极大地危害了用户与投资者的资产安全,对金融稳定、货币稳定、社会稳定构成威胁。4. 标准规范和法律法规滞后。不同的区块链缺乏统一的应用标准,在区块链应用时存在跨链的可用性风险。目前主流的跨链技术有公证人机制、哈希时间锁定和侧链/中继链 3 种,但都存在孤块问题、长程攻击问题、多链数据同步超时问题、跨链重放攻击问题、升级兼容性问题等等。一方面,在同一领域的应用中,不同的企业选择不同的区块链技术提供商,用户使用区块链时受到的约束不同,会给用户造成诸多不便,造成业务的低效率;另一方面,各公司之间数据无法互通,可能会形成众多的新的数据孤岛,无法真正达到区块链所设想的数据互联互通、透明共享的目的。面对区块链风险的挑战,监管层难以准确捕捉到新技术给市场基础设施、用户和整个社会带来的所有风险。当前监管体系面临两个困境:一是监管规则无法适应区块链的发展。分布式账户是跨区域、跨国界的,因为应用场景产生的风险无法受到现有国际监管规则的约束,而且跨国监管和执法的难度远比以前大,比如,各国对区块链资产、智能合约监管等既存在不同态度又存在规则空白。二是区块链去中心化与现有中心化的监管模式存在矛盾,法律与代码需要协调,区块链的“自治”与当前监管方式需要统筹。各国政府和行业正在探索形成协同监管体制,制定新的监管规则,以解决区块链系统中的治理和监管问题。5. 匿名交易难以追责。区块链的匿名交易的机制,使交易者忽视其他交易参与者身份的真实性,隐藏真实身份的代码增加了穿透式监管的难度。这会使数据安全和保密的责任置于分散的多方,给区块链应用中发生的安全事件和犯罪行为源头的追溯与管制带来的新挑战。如果没有行之有效的责任落实体系,将损害消费者和投资者权益。6. 秩序重构引发混乱。区块链技术是具有颠覆性潜力的新兴突破性技术,有可能从生产关系的层面改变经济主体之间交互,必将对原有的经济与社会秩序产生“创造性破坏”。在区块链提供的技术制度框架下,数字经济时代的信任关系将重建,个体与个体、社会关系和国际关系有可能基于区块链技术的应用被重构,智能合约有可能代替传统合约,区块链预言机给未来带来巨大想象空间。区块链系统的机制设计会重塑原有金融体系的运作模式,打破原有的组织边界、产业结构和市场秩序,引发商业体系的革命性变化。比如,加密货币可能改变整个货币系统,重新定义货币体系的运作方式。如果不能及时有效地应对区块链带来的秩序重构,市场与社会秩序会陷入混乱,动摇公众对政府的信心。区块链应用不能出现凯文·凯利笔下“失控”的结局,而应该引领人类走向一个信任、繁荣、有序的世界。五区块链风险的传导机制区块链风险形成后,传导的链条是什么呢?1. 区块链风险的传导渠道。区块链技术链内的风险传导以其“链”为渠道。区块链这种按照生成时间的顺序将数据区块以前序区块的哈希字段(Prev-block Hash)为哈希指针链接合成的一种链式数据结构,为风险的传导构建了一个通路。各分布式的权利平等的节点间有两种基本的数据传播方式,即单点传播和多点传播。产生于区块链内的风险点,可以经由对等节点间的这种互联互通,辐散式地传递至区块链的任意一个节点,进而危及整个区块链系统的安全。区块链的技术风险如何传导至区块链系统外,则要归因于区块链与实际应用场景的融合。技术系统与社会系统的交互对接,即区块链技术应用于不同场景,为风险传导到社会系统中构建了另一个通路。在社会系统中,区块链风险也是以“链”为渠道,并在应用场景中将风险放大。2. 区块链风险的传导载体。区块链技术系统风险的传导以数据与执行代码为载体。区块内封存的执行代码,如共识机制、智能合约,也是区块链技术系统风险的主要的传导载体。由于共识机制、智能合约是区块链中无须第三方信任而传递信息、达成交易的代码设计,如果代码设计有漏洞或者是有恶意病毒,那么运用这套代码设计的区块链内的所有节点就会遭遇风险。侵入者以区块链系统中某个脆弱的节点为切入点进入区块链网络中,进行隐私信息窃取、非法交易以及网络攻击。同样地,这些风险附在传导载体上,从技术系统经由传导渠道传递至社会系统中。区块链在社会系统中的风险的传播载体以数据和信息为主。区块主体一般包含信息列表,在资产交易中为交易信息,在物联终端体现为需要存储的数据。这些数据与信息通过加密的哈希算法与密钥在节点间传输,成为风险传导的良好载体。攻击者的虚假信息、病毒代码的写入,随着信息传播到达别的节点。给风险随着节点的数据经过区块链传播到整个区块链的节点,风险在传导中不断放大,借助应用场景传导入社会系统后,风险在社会系统的影响倍增。不同于区块链的技术风险,应用场景风险可以通过完善规则和强化措施进行防范与控制。可见,区块链风险的传导机制是:技术系统中区块链共识机制的漏洞、合约设计的主观缺漏、密钥丢失等问题会形成风险点,以执行代码或者数据为载体,传导至整个区块链系统的其余节点中;当这个风险无法被区块链内部技术系统消化或遏制,就会随着载体继续传导到社会系统中,在应用场景中进一步放大风险,失去信任机制的作用,造成个人和社会的资产损失,影响社会系统的正常运转。由于技术进步是一个长期过程,区块链的技术风险在短期内无法消弭,并直接影响到区块链技术的推广与使用。因而,从应用场景入手防范区块链风险至关重要。六防范区块链风险的政策建议全球数字化浪潮中,离不开区块链技术的发展和应用,而区块链技术与应用场景的需求有一定的差距,与区块链技术相伴而生的多重风险,在应用场景中也尚未建立行之有效的风险防范体系。防范区块链风险必须牢牢把握创新这个牛鼻子,技术创新与风险防范体系创新并行并举,积极探索符合本国国情和法律体系的区块链风险防范与治理方案,是使区块链技术效用最大化的必由之路。“我国在区块链基础性能、安全保护、跨链互操作等方面还有差距,核心算法亟待突破,人才缺口问题突出,在技术可靠性、安全性、标准化建设等方面还有不足,必须坚定信心、迎头赶上。”积极推动区块链技术多领域、多场景应用,建立安全可控的区块链产业生态,建议政府、企业和社会深度合作,从以下 4 个方面加强对区块链技术研发和应用的引导与规制。1. 加强技术研发和应用场景中的改进。未来区块链技术研发的重点应该在 4 个方面:一是改进共识机制,从被委托人不遵守规则时对委托人赔偿、结合可验证随机函数(VRF)与下一代比特币(Bitcoin-NG)、结合可验证随机函数与网络分片技术、基于高效上卷方法(Rollup)等方向,建立具有完善的奖惩制度且高容量、高效率的共识机制。二是不断调整和完善智能合约,加强必要的代码安全分析和代码审计工作,建立智能合约代码对法律条文转化的审查标准。三是完善密钥管理,比如,使用鼠标生成生物特征的原理,结合内容中立网络(Content Neutrality Network,即 CNN)训练分类模型作为连续认证的手段来解决区块链钱包中私钥的安全存储问题;利用用户移动设备信息和一次性密码(One-Time Passwork,即 OTP)技巧的新的基于用户认证法的分块链账户恢复字符串安全的管理体系,克服现有账户恢复字符串管理方式存在的问题。四是巩固并下沉区块链底层结构,同时做好上级层次的解构工作,将第一层(Layer 1)上的共识、智能合约等功能解构、分离开来,将区块链复杂结构简单化,稀释加密生态的经济主权,使各个部分的功能更为明晰,更便于管理。2. 推动区块链技术与新一代信息技术深度融合,并在融合中不断优化与迭代,防范区块链应用场景中的风险。比如,吸收量子科技的成果探索解决跨链数据的交互性难题,运用零知识证明机制将隐私技术与验证技术结合,通过零知识技术及其算法,防范隐私泄露的问题。再比如,将分层属性加密与线性秘密共享相结合,基于可搜索属性加密的区块链数据隐私保护控制方案,解决传统区块链交易中的隐私暴露问题及向区块链网络提交私钥和访问结构的安全风险。加强国际合作,完善区块链产业链,推动产业区块链的共创,推动区块链产业的高价值维度延伸,搭建智能化、生态化、分布式的商业模式与新型产业格局。3. 完善技术标准和规范,修订相关的法律法规。针对目前的相关监管政策多为行政规范性文件,且很多文件属于风险爆发后的补救性措施,区块链的规制可以从技术的标准规范和应用场景的法律法规两个层面进行。按照基础标准、业务和应用、过程和方法、可信和互操作、信息安全等区块链标准规范体系,政府要为企业、行业协会、社会团体、研究机构和用户等多方主体参与标准规范制定创造条件,研制出适合区块链应用的标准,抢占区块链国际话语权。立法机构应借助科研机构、社会智库和技术公司的力量,密切跟踪区块链技术和应用的发展,基于现有的各个层级的相关法律法规及规范性文件,及时推动相关立法。4. 审慎监管区块链技术创新及应用。一是建立弹性监管体系,体现风险相称的原则,放缓熵增速度。对于目前市场风险较高的领域,监管严格要求;而在创新潜力较大、风险较小的领域,监管要求要相对放松;在合法合规范围内,给予区块链应用发展充分的自由,激发区块链技术的创新活力。二是基于功能监管创新监管方式,严惩监管套利行为。例如,设计一个非侵入式的监管方案,定时定点收集节点数据以及时发现风险;提高交易监管检测技术,推动智能监管,“以链治链”;功能监管与行为监管相结合,形成一个更加统一的裁判规则。实现技术监管与政策监管双轮驱动,推动链下治理与链上治理相结合,发挥链上治理的透明、高效、可溯源的优势的同时,重视链下治理的整合与协同作用。三是建立中国版区块链产业“监管沙盒”机制,探索“包容性监管”和“分级监管”。根据“十四五”期间我国加快数字化发展的需要,在准入标准、应用技术、退出机制等方面,支持各地在金融科技、数字供应链、数字政务等领域出台“监管沙盒”实施方案。四是加强对区块链金融的国际监督和管理,加强国际合作,建立一个统一的全球监管体系,以消除跨国犯罪,等等。总之,风险防范是为了促进创新发展,区块链在发展和应用中还会不断出现新的风险,风险防范永远在路上。比如,在各国推出法定数字货币过程中对加密货币的监管措施是否需要调整?如何协调不同国家的区块链标准规范和监管规则?如何实现区块链链上治理与链下治理协同?如何把握好区块链“去中心化”的度?这些都是需要持续探讨的问题。所有问题的解决都需要人才,区块链发展需要人才,区块链风险防范更需要人才。人才培养和培训是我国区块链发展的关键,有了高端人才才能在自主创新和原始创新方面出成果,才能完善区块链技术的存储容量、共识机制、智能合约,搭建稳定、高效、互联互通的区块链应用平台,把握发展主动权,不断提升区块链技术应用的国际话语权和规则制定权。本文载于《陕西师范大学学报(哲学社会科学版)》2021 年第 3 期专题“法学研究”。发表于: 2021-07-152021-07-15 12:51:30本文为 InfoQ 中文站特供稿件首发地址:https://www.infoq.cn/article/7b0cbca47c11d64882a5a4d11如有侵权,请联系 cloudcommunity@tencent.com 删除。DDoS会危害关键基础设施吗?“安全加”认为媒体搞错了方向 APT攻击才是杀手锏ddos的防范SFHFKeychainUtils.iOS钥匙串.ARC兼容0分享分享快讯到朋友圈分享快讯到 QQ分享快讯到微博复制快讯链接到剪贴板上一篇:What's JVM-垃圾收集器与内存分配策略下一篇:深入学习WebSockets概念和实践相关快讯李晓艺:区块链技术应用前景与展望2018-08-09区块链技术发展现状与展望2018-06-13区块链2019-09-122018银行春招笔试高频考点—区块链2018-04-03区块链虽热,风险不得不了解2018-07-10区块链技术为共享经济增潜能2018-01-27大智能时代 区块链2018-10-23区块链风又起?2018-03-16区块链的本质和技术应用2018-07-11火龙果财经:区块链的分层与结构分别都是什么?2019-04-24区块链虽热 风险不得不了解2018-07-11区块链技术与共享经济2018-01-27区块链原理,设计与应用的学习笔记2018-07-28区块链技术在金融领域的四大风险2018-09-03区块链技术的安全风险2018-11-13干货抢先知 ISC2018区块链与安全论坛议题详情大揭秘2018-09-04区块链行业应用前景及未来2018-07-10区块链面临的几大风险2018-07-11区块链的架构2018-08-13区块链,工业应用安全守护者?2018-03-30扫码添加站长 进交流群领取专属 10元无门槛券私享最新 技术干货社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号1101080202028

什么是区块链安全? | IBM

什么是区块链安全? | IBM

什么是 区块链安全?

区块链安全是区块链网络的综合风险管理系统,它使用网络安全框架,保证服务和最佳实践来降低攻击和欺诈风险

基础 区块链安全

区块链技术 生成的数据结构本身具有安全质量。 它基于密码学、去中心化和共识原则,可确保对交易的信任。 在大多数区块链或分布式账本技术 (DLT) 中,数据被结构化为块,每个块都包含一笔交易或一组交易。 每个新块都以加密链的形式与之前的所有块相连,几乎不可能被篡改。 区块内的所有交易都通过共识机制进行验证和商定,确保每笔交易的真实性和正确性。

区块链技术通过成员参与分布式网络来实现去中心化。 没有单点故障,单个用户无法更改交易记录。 然而,区块链技术在一些关键的安全性方面有所不同。

区块链类型的安全性有何不同

区块链网络在谁可以参与以及谁有权访问数据方面有所不同。 这些网络通常被标记为公有或私有网络,用于描述允许谁参与,同时还常被标记为许可或无许可网络,用于描述参与者如何访问网络。

公有和私有区块链

公有区块链网络通常允许任何人加入并让参与者保持匿名。 公有区块链使用联网的计算机来验证交易并达成共识。 比特币可能是最广为人知的公共区块链示例,它通过“比特币挖矿”达成共识。比特币网络上的计算机或“矿工”试图解决复杂的加密问题,以创建工作证明,从而验证交易。 除了公钥之外,在这种类型的网络中几乎没有身份和访问控制。

私有区块链使用身份来确认成员资格和访问权限,并且通常只允许已知组织加入。 这些组织共同构成了一个私有的会员制“商业网络”。许可网络中的私有区块链通过名为“选择性背书”的过程达成共识,其中已知用户会验证交易。 只有具有特殊访问权限和许可的成员才能维护交易分类账。 这种网络类型需要更严格的身份和访问控制。

在构建区块链应用时,务必要评估哪种类型的网络最适合您的业务目标。 私有和许可网络会受到严格控制,出于合规和监管原因,最好选择这类网络。 但是,公有和无许可网络可以实现更大程度的去中心化和更广的分发范围。

 

公有区块链 是公共的,任何人都可以加入,也可以验证交易。

私有区块链 受到限制,通常仅限于商业网络。 单个实体或联盟控制着成员资格。

无许可区块链 对处理者无限制。

许可区块链 仅限于一组使用证书获得身份的选定用户。

网络攻击和欺诈

虽然区块链技术产生了一个防篡改的交易分类账,但区块链网络并不能免于网络攻击和欺诈。 那些心怀恶意的人可以操纵区块链基础架构中的已知漏洞,多年来,他们已成功实施了各种黑客和欺诈行为。 以下是一些示例:

不当利用代码

去中心化自治组织 (DAO) 是一个在比特币的启发下,通过去中心化区块链运营的风险投资基金,由于代码遭到不当利用,它被盗走了价值超过 6000 万美元的以太数字货币 — 约占其价值的三分之一。

密钥失窃

作为全球最大的加密货币交易所之一,总部位于中国香港特别行政区的 Bitfinex 价值近 7300 万美元的客户比特币不幸被盗,这表明该货币仍然存在巨大风险。 可能的原因是私钥被盗,这些私钥即个人数字签名。

员工电脑被黑客攻击

最大的以太坊和比特币加密货币交易所之一 Bithumb 最近遭到了黑客攻击,黑客泄露了 30,000 名用户的数据并窃取了价值 870,000 美元的比特币。 尽管被黑的是员工的计算机,而不是核心服务器,但这一事件引发了人们对整体安全性的质疑。

欺诈者如何攻击区块链技术

黑客和欺诈者主要以四种方式威胁区块链:网络钓鱼、路由、女巫 (Sybil) 攻击和 51% 攻击。

网络钓鱼攻击

网络钓鱼是一种企图获取用户凭证的欺诈行为。 欺诈者向钱包密钥所有者发送精心设计的电子邮件,让它们看起来好像来自于合法来源。 这些电子邮件使用虚假的超链接要求用户提供他们的凭证。 一旦获得用户凭证和其他敏感信息的访问权,就可能会导致用户和区块链网络遭受损失。

路由攻击

区块链依赖于实时大数据传输。 在将数据传输到互联网服务提供商的过程中,黑客可以拦截数据。 在路由攻击中,区块链参与者通常看不到威胁,所以一切看起来都很正常。 然而在幕后,诈骗者已经提取了保密数据或货币。

女巫攻击

在女巫攻击中,黑客会创建并使用许多虚假网络身份来淹没网络并使系统崩溃。 Sybil 是一本著作中的人物,她被诊断患有多重身份障碍。

51% 攻击

挖矿需要大量的计算能力,对于大规模的公有区块链尤为如此。 但是,如果一个矿工或一组矿工能够集结足够的资源,他们就可以获得区块链网络 50% 以上的挖矿算力。 拥有超过 50% 的算力意味着可以控制账本并有能力操纵它。

注:私有区块链不易受到 51% 攻击。

在当今的数字世界中,必须采取措施确保区块链设计和环境的安全性。 X-Force Red 区块链测试服务可以帮助您做到这一点。

探索 X-Force Red 区块链测试服务

企业 区块链安全

在构建企业区块链应用时,重要的是要考虑技术堆栈各层的安全性,以及如何管理网络的治理和权限。 企业区块链解决方案的综合安全策略包括使用传统的安全控制措施和技术独特的控制措施。 特定于企业区块链解决方案的部分安全控制措施包括:

身份和访问管理

密钥管理

数据隐私

安全通信

智能合约安全

交易背书

聘请专家帮助您设计合规且安全的解决方案,从而实现您的业务目标。 寻找生产级平台来构建可在您选择的技术环境中部署的区块链解决方案,无论是在本地还是您首选的云供应商。

探索 IBM Hyper Protect Digital Assets Platform

区块链安全提示和最佳实践

在设计区块链解决方案时,请考虑以下关键问题:

参与组织或成员的治理模式是什么?

每个区块中将会捕获哪些数据?

相关的监管需求是什么,如何满足这些需求?

如何管理身份详细信息? 区块有效负载是否加密? 如何管理和撤销密钥?

区块链参与者的灾难恢复计划是什么?

区块链客户参与的最低安全态势是什么?

解决区块链区块冲突的逻辑是什么?

在建立私有区块链时,确保将它部署在安全永续的基础架构中。 为业务需求和流程选择糟糕的底层技术,可能会通过其漏洞引发数据安全风险。

考虑业务和治理风险。 业务风险包括财务影响、声誉因素和合规风险。 治理风险主要来自区块链解决方案的去中心化性质,它们需要加强对决策标准、治理政策、身份和访问管理的控制。

区块链安全涉及了解区块链网络风险并对这些风险进行管理。 对这些控制实施安全措施的计划构成了区块链安全模型。 创建区块链安全模型,以确保所有措施都已到位,以充分保护您的区块链解决方案。

为了实施区块链解决方案安全模型,管理员必须开发一个可以解决所有业务、治理、技术和流程风险的风险模型。 接下来,他们必须评估区块链解决方案面临的威胁,并创建一个威胁模型。 然后,管理员必须根据以下三个类别定义减轻风险和威胁的安全控制措施:

实施区块链特有的安全控制措施

应用常规安全控制措施

对区块链实施业务控制

IBM Blockchain 服务和咨询团队可以帮助您设计并激活一个区块链网络,该网络可以满足治理、业务价值和技术需求,同时确保隐私、信任和安全。

在 IBM Blockchain 服务和咨询团队的帮助下安全进行构建

相关解决方案

IBM Blockchain Platform

深入了解领先的开源商业区块链平台:开发人员工具、定价、产品导览、客户评论和文档。

在领先的区块链平台上构建

IBM Blockchain 解决方案

与专家取得联系,阅读一些客户成功案例,并了解如何加入 IBM 网络。

探索所有区块链解决方案

IBM Blockchain Services

我们拥有超过 1600 名业务和技术专家,他们都是从头开始构建企业级区块链的领军人物,将帮助您解决使企业级区块链网络变为现实的三个最关键的设计要点。

了解区块链咨询

资源

什么是区块链技术?

学习区块链基础知识,从关键元素到区块链网络类型,再到各行各业如何使用区块链。

Blockparty

了解 IBM 客户和业务合作伙伴如何使用区块链来转变消费者信心、食品安全、可持续性等方面。 然后看看当代艺术家如何在网络研讨会系列 Blockpy 中诠释他们的创新。

公有区块链和私有区块链之间的差异

区块链是否生来平等? 区块链网络都有哪些类型?您应该设置哪种类型?

比特币与商业区块链之间的区别

比特币和区块链是一回事吗? 不是,但由于比特币是区块链的第一个应用,人们经常不经意地使用“比特币”来表示区块链。

保护您的区块链解决方案

这篇深入的文章重点介绍了区块链安全参考架构,对于各种行业用例和部署,都可以在区块链项目和解决方案中应用该架构。

创始人手册:区块链解决方案构建简介,第三版

本手册可以帮助您确定区块链用例,了解如何调动您的生态系统,并浏览一个治理模型。 它还包括在多方系统中定义和管理智能合约、数字化资产、法律考虑事项和实际示例的相关信息。 (7.8 MB)

后续步骤

浏览我们的参考指南,更深入地了解区块链的各个方面,包括工作方式、使用方法以及实施注意事项。

区块链主题

什么是区块链

区块链的优点

智能合约

面向商业的区块链

区块链向善

区块链和物联网

超级账本

一文解读区块链技术的5大安全隐患及解决方案_腾讯新闻

一文解读区块链技术的5大安全隐患及解决方案_腾讯新闻

一文解读区块链技术的5大安全隐患及解决方案

链集市 · 让区块链落地更简单

《区块链行业观察》专栏·第 76 篇

作者丨MANAN SHAH

图片丨来源于网络

毫无疑问,区块链技术近年来越来越受欢迎。除了最初在Crypto中的应用外,它现在还被用于医疗保健、房地产、智能合约等领域。

区块链技术利用独立的区块进行数据的分组收集和存储,每个区块都可以保存一定数量的数据。当一个区块被填满时,它会链接到前一个完整的区块上,形成一条数据链,因此得名“区块链”技术。

区块链技术很好地诠释了金融交易和信息传输中的安全原则是如何转变的。它提供了一种独一无二的数据结构以及内置的安全功能。区块链通过基于共识、去中心化和密码学的思想来确保交易中的信任。

然而,由于技术实施有时会出现误差,这就导致区块链中出现了一些安全隐患。

不同类型的区块链安全性

要想进一步解释区块链安全,首先要了解公有链网络和联盟链网络安全性的区别。在参与程度和数据访问能力方面,区块链网络可以产生各种不同的影响。因此,区块链网络有两种不同的标记形式。

区块链网络可以是私有的,也可以是公共的,具体取决于获得成员资格所需的许可。参与者获得网络访问权的方式取决于区块链网络是有许可的还是无许可的。

• 公有链网络是开放的,允许任何用户的加入,同时还会保持参与者的匿名性。

• 而在联盟链网络中,用户身份被用来确认其成员资格和访问权限。更近一步来说,联盟链网络只允许熟悉的组织参与到其中。

区块链的5大安全隐患及其解决方案

就像很多人认为的那样,区块链本质上是安全的。毫无疑问,区块链对组织来说是有利的,但由于特定的安全隐患,它还是有一些明显的缺点。以下是区块链技术所面临的5大安全挑战及其解决方案。

1、51% 攻击

验证者在验证区块链交易方面发挥着重要作用,他们促进区块链的进一步发展。而51%攻击可能是整个区块链业务中最可怕的威胁。这些攻击一般更可能发生在链生成的早期阶段,但51%的攻击不适用于企业或联盟链。

当独立的个人或组织(恶意黑客)收集超过一半的哈希值并控制整个系统时,就会发生51%攻击,而这对整个系统来说可能是灾难性的。黑客可以修改交易的顺序并阻止交易被确认,他们甚至可以撤销之前完成的交易,从而导致双花问题。

为了防止51%攻击,区块链技术需要做到以下改进:

• 改进 minging pool 池监控。

• 确保哈希值更高。

• 避免使用工作量证明 (PoW) 共识程序。

2、网络钓鱼攻击

对区块链网络的网络钓鱼攻击正在不断增加,造成了严重的问题。个体或公司员工经常成为网络钓鱼的目标。

黑客在网络钓鱼攻击中的目标是窃取用户的私钥。他们向钱包密钥的所有者发送看起来合法的电子邮件,用户点击附加的虚假超链接输入详细个人信息并登录。黑客可以借此访问用户的私钥和其他可能会对用户和区块链网络造成损害的敏感信息,进而发起后续的攻击。

为了防止网络钓鱼攻击,区块链技术需要做到以下改进:

• 通过安装经过验证的插件来告知用户有关不安全网站的信息,从而提高浏览器的安全性。

• 通过安装恶意链接检测软件以及可靠的防病毒软件来提高设备安全性。

• 如果用户收到要求登录详细信息的电子邮件,请用户与项目方再次确认该问题。

• 确保用户在彻底审查之前不要点击链接,而是在浏览器中输入地址。

• 确保用户在使用电子钱包或进行其他重要的银行交易时,避免使用开放的Wi-Fi网络。

• 确保系统和软件的实时更新。

3、路由攻击

区块链技术安全和隐私面临的另外一个主要问题是路由攻击。

区块链网络和应用程序依赖于大量数据的实时移动。黑客可以利用帐户的匿名性来拦截正在传输给互联网服务提供商的数据。

在路由攻击的情况下,由于数据传输和各项操作都是照常进行的,因此区块链参与者通常不会意识到任何威胁。然而风险就在于这些攻击在用户不知情的情况下提取通证或暴露机密数据。

为了防止路由攻击,区块链技术需要做到以下改进:

• 实施带有证书的安全路由协议。

• 确保用户使用加密数据。

• 让用户定期更改密码并使用安全强度高的密码。

• 让企业和员工了解与信息安全相关的危害。

4、区块链服务端点漏洞

区块链服务端点的脆弱性是区块链中的另一大安全隐患。

区块链网络的服务端点是用户与区块链在计算机和手机等电子设备上交互的地方。黑客可以通过观察用户行为和目标设备来窃取用户的密钥。这是最明显的区块链安全隐患之一。

为了防止服务端点漏洞,区块链用户需要做到以下改进:

• 不要将区块链密钥作为文本文件保存在您的计算机或手机上。

• 为电子设备下载并安装防病毒软件。

• 定期检查系统,跟踪时间、位置和设备访问。

5、女巫攻击

在女巫攻击中,黑客会生成大量虚假网络节点。使用这些节点,黑客可以获得多数共识并破坏链上的交易。因此,大规模的女巫攻击就是51%攻击。

为了防止女巫攻击,区块链技术需要做到以下改进:

• 使用适当的共识算法。

• 监控其他节点的行为并检查只有单个用户产生区块的节点。

虽然这些算法可能无法完全阻止这些攻击,但它们使黑客无法肆意攻击。

结论

尽管区块链技术仍存在一些安全漏洞,但网络安全专员可以通过一些手段来缓解这些问题。经历过分析和技术能力磨练的IT专家将在安全地部署区块链的过程中占据有利地位。

原文由MANAN SHAH撰写,中文版本由链集市团队编译整理,英文版权归原作者所有,中文转载请联系编辑。

-END-

区块链公链应用的典型安全问题综述

区块链公链应用的典型安全问题综述

  软件学报  2022, Vol. 33 Issue (1): 324-355

  PDF    

引用本文

魏松杰, 吕伟龙, 李莎莎. 区块链公链应用的典型安全问题综述[J]. 软件学报, 2022, 33(1): 324-355. http://www.jos.org.cn/1000-9825/6280.htm

  

Wei SJ, Lü WL, Li SS. Overview on Typical Security Problems in Public Blockchain Applications[J]. Journal of Software, 2022, 33(1): 324-355(in Chinese). http://www.jos.org.cn/1000-9825/6280.htm  

区块链公链应用的典型安全问题综述

魏松杰

,

吕伟龙

,

李莎莎

    

南京理工大学 计算机科学与工程学院, 江苏 南京 210094

收稿时间: 2020-03-05; 修改时间: 2020-05-07; 采用时间: 2020-12-04; jos在线出版时间: 2021-01-15

基金项目: 国家自然科学基金(61802186, 61472189); 国家重点研发计划(2020YFB1804604)

作者简介:

(1977-), 男, 博士, 副教授, CCF高级会员, 主要研究领域为网络安全, 区块链技术;(1996-), 男, 硕士, CCF学生会员, 主要研究领域为区块链技术, 密码学, 网络安全;(1997-), 女, 硕士, 主要研究领域为分布式系统, 任务调度.

通讯作者:

吕伟龙, E-mail:

118106043462@njust.edu.cn.

摘要: 区块链作为互联网金融的颠覆性创新技术, 吸引学术研究和工程应用领域广泛关注, 并被持续推广应用到各种行业领域中. 以公有链为代表的区块链系统具有弱中心化、信任共识、平台开放、系统自治、用户匿名、数据完整等特点, 在缺乏集中可信的分布式场景中实现可信数据管理和价值交易. 但区块链作为新兴信息技术, 由于自身机制和周边设施不够完善、用户安全观念不够成熟等原因, 也面临安全威胁和挑战. 本文首先介绍了区块链技术, 回顾其面临的安全风险; 其次以比特币和以太坊两个典型系统为例, 剖析了针对面向代币交易和应用的区块链系统的各类安全威胁以及应对方法; 接着分析了钱包交易所等区块链周边设施和区块链用户的安全隐患; 最后对文中安全问题进行了分类总结, 提出可行技术线路和防御方法, 展望当前区块链安全的研究热点和发展趋势.

关键词:

区块链    公链安全    攻击流程    防御策略    共识安全    

Overview on Typical Security Problems in Public Blockchain Applications

WEI Song-Jie

,

LÜ Wei-Long

,

LI Sha-Sha

    

School of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing 210094, China

Abstract: Originated as Internet financial technology, blockchain is prevailing in many application scenarios and attracting attentions from both academia and industry. Typical blockchain systems are characterized with decentralization, trustworthiness, openness, autonomy, anonymity, and immutability, which brings trustworthiness for data management and value exchange in distributed computation environment without centralized trust authority. However, blockchain is still developing as a continuously evolving new technique. Its mechanisms, peripheral facilities, and user maturity in security are yet to be optimized, resulting in various security threats and frequent security incidents. This paper first overviews the blockchain technology and its potential security vulnerabilities when being used for token transaction and exchange. Then the mostly-seen security problems are enumerated and analyzed with Bitcoin and Ethereum as two sample systems. The security problems encountered by blockchain peripheral facilities and users are presented, and their root causes are probed. Finally, the surveyed problems are categorized and the possible countermeasures or defenses are proposed to address them. Promising research areas and technology evolving directions are briefly covered for the future.

Key words:

blockchain    public chain security    attack procedure    defense strategy    consensus security    

1 绪 论

1.1 区块链介绍

自中本聪在《比特币: 点对点的电子现金系统》一文中首次提出区块链架构至今, 历经10年光阴. 10年间, 区块链技术飞速发展, 广泛应用于各个领域. 从比特币、莱特币等加密货币的区块链1.0时代, 到以太坊、超级账本等支持智能合约的平台的区块链2.0时代, 再到目前面向去中心化应用DApp服务的百花齐放, 区块链经历了数次技术迭代[1,2]. 近些年来, 区块链与金融、农业、能源、公益、医疗等领域深度结合, 市场上出现大量与区块链相关的应用, 众多学者也投身于区块链的研究之中. 区块链技术无疑成为当前最热门的技术之一. 但目前区块链技术和应用方兴未艾, 多数处于试验阶段, 安全漏洞和攻击事件层出不穷, 给用户与区块链服务提供商带来了不小的经济损失, 因此区块链的安全问题受到了各方的广泛关注. 同时, 区块链智能合约一旦在分布式、去中心化网络中部署, 就难以修改, 这种特性一方面防止了数据操纵, 有利于建立起基于广泛分布共识的信任机制; 但另一方面, 当面对安全攻击时, 该特性也阻碍了区块链系统建立起有效的纠正机制, 难以有效及时的挽回损失[3,4].

本文在调研过程中, 发现大多数区块链的安全问题是由于系统自身设计缺陷或是规则漏洞而引起的, 少数区块链安全攻击的对象主要包括交易所、数字钱包、矿池矿场以及区块链用户, 而交易所、数字钱包和矿池矿场可归类为区块链周边设施. 因此本文将所有公有区块链安全问题分为3类, 即区块链自身系统、区块链周边设施和区块链用户, 依次在第2、3、4节综述并分析它们各自面临的安全问题. 本文重点讨论区块链作为分布式系统应用时面临的安全威胁, 并不涉及对底层通信、P2P对等网络、加密算法、数据存储等传统系统和网络安全问题的讨论. 全文讨论的安全问题总览如图1所示.

图 1

Fig. 1

Fig. 1 Overview of blockchain security problems

图 1 区块链安全问题总览

1.2 区块链典型安全事件回顾

(1) 2017年7月Parity多重签名钱包被盗事件

Parity是目前使用最广泛的以太坊钱包之一. 本次事件主要是由于智能合约代码编写不严谨导致的, 约有时价3000万美元的15万以太币(ETH)被盗. 攻击造成了ETH从235美元暴跌至196美元左右. 事后人们逐渐认识到智能合约的编写必须遵守严格的安全规范或模式, 智能合约部署前最好先由专业的机构进行安全审计[5].

(2) 2018年11月EOS.win游戏合约遭受随机数攻击事件

EOS是一种为商用分布式应用(DApp)设计的区块链操作系统, EOS.win是在该平台下实现的竞猜游戏. 在EOS.win的智能合约中, 随机数的生成与开奖序号有关, 且智能合约内联调用失败会导致状态信息回滚. 攻击者先是在同一时间控制多个合约账户同时实施小额投注, 以试探随机数生成规律. 在掌握一定规律后, 攻击者再进行多笔大额投注, 以更高的概率赢得奖金并快速套现, 2018年11月12日短短一分钟内攻击者获利超过9000个EOS币, 导致EOS.win参与用户的大量流失. 该事件给DApp开发者以警醒——在没有做好充分的安全保障前, 不要轻易上线DApp, 保护好诚实用户的资金才能更好的留住用户[6].

(3) 2019年1月ETC遭受51%攻击事件

在全球最大的智能合约漏洞事件The DAO[7]发生后, 以太坊分裂成ETC和ETH两大阵营. 2019年1月7日, 多家机构和交易所接连预警和确认, 加密数字货币ETC遭遇51%攻击, 造成54200个ETC、约27万美元的损失. 此次攻击产生的根本原因是ETC市值缩水, 网络算力降低, 攻击者通过短期租用算力的方式获得共识主导能力. 这次事件给所有基于工作量证明共识机制的区块链敲响了警钟——虽然在一般的攻击场景中, 51%攻击的成本高、收益率低, 但对于小规模区块链系统来说, 攻击者可以通过租借、挪用算力的方式, 短瞬间获得大量算力, 从而进行51%攻击.

2 区块链自身安全问题

2.1 区块链1.0的安全问题——以比特币为例

本文中区块链1.0的安全问题, 主要是指以比特币为代表的数字加密货币区块链系统的安全风险和漏洞, 这类区块链通常只能进行与转账、汇款和数字化支付相关的操作, 缺少智能合约的部署运行能力. 有些区块链攻击虽然从时间上来说, 是在区块链2.0时期被提出的, 但由于其主要是在数字加密货币区块链中实施的, 因此也被分类在区块链1.0的安全问题中.

需要指出的是, 本文虽然结合区块链技术的发展过程, 将攻击分为1.0时代、2.0时代等, 但以以太坊等为代表的区块链2.0技术完全基于最初区块链的“分布式系统+P2P网络+密码学”基础架构发展而成, 只是在共识机制、节点管理、智能合约、算法选择等方面进行了扩展和创新. 因此本节所讨论的安全问题, 实际上也适用于2.0时代中采用同样设计或者具有同样漏洞的区块链系统.

本节将以比特币为例, 逐一例举这类攻击的攻击形式, 分析其攻击原理, 总结可能的防范方法.

比特币是一种采用区块链架构的加密数字货币, 比特币使用P2P网络众多节点组成的分布式账本进行确认与记账操作, 并用密码学技术进行加密, 以确保货币流通各个环节的安全性[8]. 比特币架构中, 每一个区块包含区块头和区块体两部分. 区块头包含数据和父区块地址, 区块体主要包含交易详情和交易计数. 比特币引入了工作量证明(PoW)工作机制、UTXO和Merkletree等数据结构、SHA-256椭圆曲线加密算法, 以确保攻击者需要面临极高难度才能对比特币区块链进行破解[9].

比特币的区块结构如图2所示.

比特币作为区块链的第一个应用, 其将P2P动态组网、基于密码学的分布式账本、共识机制等成熟技术进行组合, 保证了比特币系统的可用性、机密性和完整性. 但比特币并非完美, 有些设定反而给系统带来了安全隐患[10,11]. 下面依次介绍典型攻击及其防范方法.

2.1.1 双花攻击(double spending attack)

双花攻击, 顾名思义就是将同一笔数字货币花费多次的攻击[12-14]. 双花攻击包含以下4个步骤.

① 攻击者的地址1发起一笔向受害者转账数字货币的交易A;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者转账现金或是发送商品;

③ 攻击者的地址1发起一笔向其地址2转账数字货币的交易B, 该交易的交易金额为攻击者地址1中的数字货币总数, 由于交易A与交易B冲突, 因此区块链产生分叉;

④ 攻击者运用各种手段, 使包含交易B的链的长度超过包含交易A的链, 根据最长链原则, 交易B被认为有效, 而交易A被认为无效, 攻击者攻击成功[15].

双花攻击的实现流程如图3所示.

图 2

Fig. 2

Fig. 2 Bitcoinblock structure

图 2 比特币区块结构

图 3

Fig. 3

Fig. 3 Procedure of double spending attack

图 3 双花攻击实现流程

双花攻击具体有以下5种攻击实施方式.

(1) 51%攻击(51% Attack)

51%攻击是一种在掌握绝对算力优势的情况下, 把已经花出的数字货币重新收回或多次利用的攻击方式, 主要针对基于工作量证明(PoW)共识机制的区块链[16-18].

51%攻击一般分为4步.

① 攻击者发起一笔交易A, 将一定量的数字加密货币转账给受害者;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者移交等值的财物;

③ 攻击者在拿到财物后, 从交易A之前区块开始制造分叉, 利用>51%的算力优势在该分叉链上进行挖矿;

④ 当分叉链长度超过原主链时, 根据最长链原则成为新主链, 原主链上的交易A无效, 攻击成功[19].

51%攻击的实现流程如图4所示.

图 4

Fig. 4

Fig. 4 Procedure of 51% attack

图 4 51%攻击实现流程

由于PoW共识机制的特性, 理论上无法通过技术层面阻止51%攻击的产生. 因此在设计比特币系统时, 中本聪利用经济学原理来减少51%攻击出现的可能——获得全网算力优势的代价极度昂贵, 而花费极高成本实施的双花攻击会造成信任崩溃, 使得数字货币严重贬值, 这对于攻击者而言得不偿失[9]. 相反, 在拥有51%算力的情况下, 进行诚实挖矿所获得的收益要更多[20].

防范方法: 保持算力分散. 51%攻击能够成功实施的根本原因是算力过分集中, 在PoW共识机制下只要存在算力中心化, 所有区块链都无法完全避免51%攻击.

虽然实施51%攻击的成本极高, 攻击者缺乏经济层面的动机, 但实际生活中51%攻击还是有可能发生的. 在小型山寨币中, 获得全网算力优势的代价相对较小, 攻击者可以在实施51%攻击后, 退出系统快速变现, 从而牟取暴利.

为了降低攻击难度或者节省成本, 攻击者有以下3种低成本的51%攻击方法.

1) 贿赂攻击(bribe attack)

贿赂攻击是一种在非协作选择模型上(比如无信任基础区块链)的攻击, 攻击者通过额外经济奖励收购挖矿算力, 使得自己所掌握的算力短期内超过51%, 从而对区块链进行51%攻击[21-23].

贿赂攻击一般分为5步.

① 攻击者发起一笔交易A, 将一定量的数字加密货币转账给受害者;

② 受害者在交易A收到足够多的确认后, 认可交易A, 并向攻击者移交等值的财物;

③ 攻击者在网络中宣称将提供额外奖励给在目前相对较长但不包含交易A的次主链上工作的矿工, 以鼓动其他矿工违背共识, 在非主链上进行工作;

④ 当次主链足够长时, 攻击者通过加大奖励力度, 促使次主链的长度在短时间内超过原主链的长度;

⑤ 当次主链成功超越原主链长度后, 次主链成为最长链, 根据共识, 其他矿工承认次主链为新主链, 原主链中的交易A因为回滚而无效[24].

贿赂攻击的实现流程如图5所示.

防范方法: 可以在区块链挖矿机制设计中引入保证金和惩罚措施. 当矿工做出不利于区块链的决策时, 会受到处罚并失去抵押在链上的保证金. 这种惩罚措施变相提高了攻击者的贿赂成本, 使得贿赂攻击更难发生.

图 5

Fig. 5

Fig. 5 Procedure of bribe attack

图 5 贿赂攻击实现流程

2) 币龄累计攻击(coin age accumulation attack)

币龄累计攻击主要实施在基于“PoW+PoS”(工作量证明+权益证明)混合共识机制的区块链上. 在这种混合共识机制中, 某一地址拥有的数字加密货币越多、持币时间越长, 该地址的挖矿难度就越低, 因此更容易挖到新区块. 根据这种特性, 攻击者在持有一定量的币足够长时间后, 就可以获得接近51%算力, 从而发动51%攻击[25-27]. 例如, 在点点币(peercoin)初始版本中, 其挖矿算法公式为:

$ H\left(H\left({B}_{\rm{prev}}\right),A,t\right)\leqslant balance\left(A\right)\times m\times Age\left(coins\right) $

其中,

$ H\left(\right) $

为某种哈希函数、

${B}_{\rm{prev}}$

为上一个区块的数据、

$ A $

为某个账户、

$ t $

为时间戳、

$ balance\left(A\right) $

为账户

$ A $

的余额、

$ m $

为某个极小的实数, 其由哈希函数的性质决定、

$ Age\left(coins\right) $

为币龄.

显然, 攻击者可以利用币龄使得自己更容易发动51%攻击[28].

防范方法: 区块链设计者可以对单个地址的持币数量和币龄的最大值进行限制. 当某个地址的币龄已经达到预先设定的最大值时, 系统自动进行清算, 即清空币龄并给予数字货币奖励或是直接停止币龄的增长.

3) 通用挖矿攻击(general mining attack)

通用挖矿攻击的攻击目标是那些和已有币种的架构和共识相同或相似但还未形成挖矿规模的币种, 尤其是主流币种的山寨分叉币. 由于这些山寨币和某些主流币架构和共识算法相同, 主流币的矿机可以直接用来开采山寨币. 攻击者通过挪用大量主流币矿机, 轻松获得山寨币51%算力, 从而进行51%攻击, 之后攻击者只需将攻击成果变现, 再返回主流币继续挖矿即可. 由于攻击者只是短期持有山寨币, 因此攻击导致信任崩溃而引起的山寨币贬值对攻击者没有任何影响, 换句话说, 这种通用挖矿攻击对于攻击者而言成本低廉, 极易实施.

防范方法: 区块链设计者在设计新币种时应尽量避免与其他主流区块链的架构和共识算法冲突. 新的币种使用新的共识算法和架构或是在已有算法上进行调整可以有效的减少其他币带来的影响[29].

(2) 芬尼攻击(finney attack)

芬尼攻击是一种通过控制区块的广播时间来实现双花的攻击, 攻击目标为接受0确认的商家[30-32]. 芬尼攻击一般分为6步.

① 攻击者的地址1发起一笔向其地址2转账数字货币的交易A, 该交易的交易金额为攻击者地址1中的数字货币总数;

② 攻击者参与挖矿, 无需51%算力, 也最终能在某个时刻挖到包含交易A的区块X;

③ 挖到区块X后, 攻击者不立刻进行广播, 先将该区块扣在自己手中;

④ 攻击者发起交易B, 将地址1中的数字货币转账给接受0确认的受害者;

⑤ 在交易B广播后, 受害者移交等值的财物给攻击者;

⑥ 攻击者拿到财物后立刻广播之前的区块X, 由于交易A先于交易B, 攻击者转账给受害者的交易B会因为攻击者地址1中的币不足而无效, 攻击成功[33].

芬尼攻击的实现流程如图6所示.

图 6

Fig. 6

Fig. 6 Procedure of Finney attack

图 6 芬尼攻击实现流程

防范方法: 拒绝0确认交付. 在PoW共识下, 一般等待6个确认就能保证交易在最长链上不会失效.

(3) 种族攻击(race attack)

种族攻击和芬尼攻击一样, 也是针对接受0确认的商家的攻击. 与芬尼攻击不同, 种族攻击主要是通过控制矿工费来实现双花[34,35].

种族攻击一般分为4步.

① 攻击者的地址1发起一笔转账给接受0确认的受害者数字货币的交易A, 手续费设定为少量;

② 攻击者的地址1发起一笔向其地址2转账数字货币的交易B, 该交易的交易金额为攻击者地址1中的数字货币总数, 手续费设定为大量;

③ 在交易A广播后, 受害者将财物移交给攻击者;

④ 矿工们会优先为手续费高的交易打包, 因此交易B先被打包到主链上. 交易A则会因为攻击者地址1中的币不足而导致失败, 攻击成功[36].

种族攻击的实现流程如图7所示.

图 7

Fig. 7

Fig. 7 Procedure of race attack

图 7 种族攻击实现流程

防范方法: 区块链商家拒绝0确认交付. 在PoW共识下, 一般等待6个确认就能保证交易在最长链上, 交易几乎不会失效.

(4) 边界网关劫持攻击(BGP hijacking attack)

边界网关协议(border gateway protocol)是一种在TCP上运行的自治系统路由协议, 用于生成IP数据包转发规则. 攻击者可以利用BGP劫持来拦截区块链的网络流量, 阻碍广泛共识的达成[37-40].

边界网关劫持攻击一般分为4步:

① 攻击者劫持BGP, 将区块链网络中的节点划分成多个无法互相通信的分割组, 每个分割组中的节点只能在组内对主链达成共识, 一段时间后区块链产生多条分叉;

② 攻击者分别在各个分叉上花费数字货币, 在各个交易完成后, 攻击者获得多笔现金;

③ 攻击者停止劫持BGP, 各子组节点之间恢复通信;

④ 全网节点进行共识, 恢复通信后的最长链成为主链, 其他分叉链中的交易被回滚而无效, 攻击成功[41].

边界网关劫持攻击的实现流程如图8所示.

图 8

Fig. 8

Fig. 8 Procedure of BGP hijacking attack

图 8 边界网关劫持攻击实现流程

防范方法: 区块链拥有者可以不使用互联网服务提供商提供的中心化网络, 转而搭建针对区块链专用的去中心化网络, 以减少攻击者仅仅通过劫持少量节点就能对区块链造成巨大影响的可能.

(5) 重放攻击(replay attack)

软件系统在实际应用中需要升级更新, 区块链也是如此. 但区块链系统内所有节点需要对区块链中的各种协议达成共识, 随着协议的版本更新, 不同节点上运行的协议可能出现差异, 致使其执行的规则不尽相同, 从而导致区块链出现分叉. 分叉主要分为软分叉和硬分叉. 在区块链中, 未升级的节点称为旧节点, 已升级的节点称为新节点. 软分叉是指新节点无法接受旧节点产生的全部或部分区块而产生的临时性分叉, 但由于新节点具有较大的算力, 旧节点产生的区块将没有机会得到认可, 最终新旧节点会对主链问题达成共识. 硬分叉则是指旧节点无法接受新节点产生的全部或部分区块而产生的永久性分叉, 尽管旧节点具备的算力较小, 但新旧节点始终都在维护自己认可的链. 重放攻击往往出现在存在硬分叉的区块链中, 例如BTC和BCC、ETC和ETH[42]. 由于硬分叉两条链中的数据结构、交易格式、地址和私钥算法相同, 所以一条链上的交易数据在另一条链上也有极大可能也是合法的. 攻击者只需抓取一条链上的交易数据, 再复制到另一条链上广播, 即可发动重放攻击[43].

重放攻击一般分为4步.

① 假设链1和链2是某个区块链出现硬分叉后产生的两条链. 攻击者在链1中向受害者提出充值数字货币的请求, 并发起一笔向受害者转账的交易A;

② 一段时间后, 攻击者提出取回该笔数字货币的请求. 受害者同意后, 在链1中发起一笔向攻击者转账的交易B;

③ 攻击者在网络中抓取交易B的数据并广播到链2上;

④ 由于交易B的私钥签名、地址、余额信息等数据在两条链上都合法, 两条链上的矿工都认可这笔交易并将其打包到各自的链上, 最终攻击者在两条链上都获得了受害者的数字货币, 攻击成功[44].

重放攻击的实现流程如图9所示.

图 9

Fig. 9

Fig. 9 Procedure of replay attack

图 9 重放攻击实现流程

防范方法: 区块链设计者可以在区块链产生硬分叉时对分叉链的代码进行适度修改, 使得分叉链和主链之间的交易数据不通用, 从而避免同一笔交易在两条链上都合法.

2.1.2 空块攻击(empty block attack)

实施空块攻击的攻击者在挖到新区块后, 拒绝将网络中的交易打包到区块. 攻击者挖出的区块中除了挖矿奖励交易外, 没有任何其他交易, 这将导致区块链交易确认时间延长, 区块链活性被降低. 在比特币挖矿的早期, 矿工们还没有加入矿池合作挖矿, 计算随机数和打包交易都需要自己完成, 由于打包空块的速度比打包非空块的速度快, 且出块奖励远大于手续费, 所以矿工们更愿意打包空块来换取出块奖励, 因此导致大量空块产生[45-47].

防范方式: 区块链设计者可以设计共识, 使矿工的收益与块中的交易数目挂钩, 打包的块中的交易越多, 矿工的奖励就越高; 使矿工的挖矿难度与块中的交易数目挂钩, 根据打包的块中的交易数目略微减少矿工的挖矿难度, 使得包含交易多的块更容易被挖出, 从而激励矿工们打包更多的交易.

2.1.3 削弱攻击(undercutting attack)

PoW共识中, 矿工的奖励由出块奖励和交易费两部分组成, 且单个区块的出块奖励随时间越来越少. 在PoW共识后期, 出块奖励趋近于0时, 矿工的奖励仅仅只有交易费部分, 此时, 攻击者为了自己的利益很有可能不在最长链上挖矿, 而是选择制造分叉, 以获得更多的交易费. 这种攻击除了会导致恶意分叉破坏共识, 同时也会因为矿工们出于对利益(交易费)和成本(电费等)的权衡, 导致交易被恶意堆积, 影响区块链活性[48,49].

削弱攻击原理如图10所示.

防范方法: 区块链设计者在设计共识时, 可以永久保留出块奖励, 并将奖励控制在一个合理的范围内. 虽然这样会带来些许通货膨胀, 但可以很大程度上的减少削弱攻击对区块链的影响, 从而带来区块链的稳定.

图 10

Fig. 10

Fig. 10 Principle of undercutting attack

图 10 削弱攻击原理

2.1.4 无利害关系攻击(nothing at stake attack)

在早期的PoS (权益证明)共识机制中, 节点只会因为创建和验证区块得到奖励, 而不会因为任何不当的行为而得到惩罚, 并且在PoS共识下, 挖矿不消耗任何资源. 这就导致了当区块链中出现分叉时, 无论这个分叉是偶然出现还是恶意节点故意制造的, 对于其他节点来说, 它们最优的策略是在每一条分叉上都进行挖矿, 这样无论最后哪条链胜出, 它们都会得到奖励. 对于区块链来说, 无利害关系攻击会导致多条分叉并驾齐驱, 链中节点无法对主链达成共识, 极大的影响区块链的可用性[50-53].

无利害关系攻击一般分为4步.

① 攻击者故意在主链制造分叉, 或等待主链偶然产生分叉;

② 其他矿工感知到分叉的存在, 按照最优的挖矿策略, 他们会在每一条分叉上进行挖矿;

③ 随着时间的推移, 每条分叉链的长度都有所增加且有很高的概率长度相似, 并且在分叉链长度增长的过程中, 它们有很大的可能产生新分叉;

④ 由于分叉的状态一直持续, 且分叉越来越多, 全网节点无法对主链达成共识, 攻击成功.

无利害关系攻击的实现流程如图11所示.

图 11

Fig. 11

Fig. 11 Procedure of nothing at stake attack

图 11 无利害关系攻击实现流程

防范方法: 区块链设计者将保证金和惩罚措施加入到PoS共识中, 防止节点在多条分叉上工作. 节点在创建和验证区块前, 必须缴纳保证金, 当节点在相同高度创建或者验证大于等于两个区块时, 则被认为参与无利害关系攻击, 系统将扣除其保证金[54,55].

2.1.5 长程攻击(long range attack)

在PoW共识中, 如果攻击者要篡改某区块的历史, 需要在这个区块前制造一条分叉链, 并且让其长度超过主链长度. 但由于PoW共识的特性, 攻击者制造一条超过主链的分叉链需要大量的算力, 且分叉链长度越长, 分叉链超过主链的难度越高, 这就在导致了在PoW共识下, 攻击者只能对短程的区块进行修改; 而在PoS共识下, 延长分叉链只需要权益, 即币的数量和币龄, 因此, 攻击者可以较为轻松的篡改成百上千个区块之前的历史区块, 实现长程攻击[56-59]. 长程攻击有3种攻击策略.

(1) 简单攻击(simple attack)

在PoS共识的一轮验证周期中, 系统根据每个节点权益的大小, 加权随机挑选验证者. 攻击者若想篡改某一历史区块, 其需要从该区块的父区块位置开始, 制造分叉链并进行秘密验证, 值得注意的是, 由于该分叉链没有公开, 所以除了攻击者验证的块外没有其他验证者验证的块. 为了超越主链长度, 攻击者必须伪造时间戳以便提前生成区块, 一旦分叉链长度超过主链, 攻击者就发布自己的分叉链, 从而达成修改区块历史的目的.

简单攻击的原理如图12所示.

图 12

Fig. 12

Fig. 12 Principle of simple attack

图 12 简单攻击原理

防范方法: 由于此种攻击较为简单, 因此区块链设计者只需在共识中加入时间戳验证机制, 就可以防止攻击者伪造时间戳从而提前生成区块完成攻击; 也可以设置移动检查点(moving checkpoint), 即仅允许区块链尾端的X个区块被重组, 来缩小攻击者可修改历史的区块数目.

(2) 变节攻击(posterior corruption attack)

显然, 简单攻击的攻击效率不高, 攻击者如果想要在相同时间内生成更多的块, 他就需要更多的权益. 除了让自己地址里的权益增加外, 攻击者还可以利用其他地址里的权利, 例如B的地址, 哪怕在攻击者进行攻击时B地址内的权益已经清空了, 只要B的地址内在攻击者需要的历史时刻下有大量的权益, 攻击者在获得该地址的私钥后, 就可以利用自己和B的权益进行变节攻击[60].

变节攻击原理如图13所示.

图 13

Fig. 13

Fig. 13 Principle of posterior corruption attack

图 13 变节攻击原理

防范方法: 区块链用户可以利用密钥进化技术(key-evolving cryptography)和可信执行环境(trusted execution environments)来保护自己密钥不被攻击者利用或盗取; 区块链设计者可以设置移动检查点来缩小攻击者可修改历史的区块数目.

(3) 权益流损攻击(stake bleeding attack)

攻击者若想使自己分叉链的长度更快超越主链, 除了使分叉链更快的出块, 也可以干扰主链的出块速度, 例如当攻击者在主链上被选举为区块验证者时, 其可以放弃该区块的验证以降低主链的出块速度; 同时, 攻击者可以从主链上复制交易并放在分叉链上广播, 以增加其在分叉链上的权益占比, 从而加快分叉链的出块速度[61-63].

权益流损攻击原理如图14所示.

图 14

Fig. 14

Fig. 14 Principle of stake bleeding attack

图 14 权益流损攻击原理

防范方法: 区块链设计者可以通过设置移动检查点缩小攻击者可修改历史的区块数目; 也可以利用充裕法则(plenitude rule)分析分叉链上自分叉产生时的区块密度变化情况, 实时检测区块链上是否存在权益流损攻击, 以及时做出应对.

2.1.6 粉尘攻击(dust attack)

粉尘攻击是指用大量交易额极小、毫无价值的垃圾交易占据区块空间, 从而导致正常的交易无法被处理, 造成区块堵塞的攻击. 攻击者通过发起很多交易额极小但手续费较高的交易, 使得矿工优先处理这些交易, 从而达到堵塞区块链的目的; 攻击者也可以利用矿池, 打包无意义的交易, 使得区块链拥堵, 阻碍正常交易被打包[64,65].

防范方式: 区块链设计者指定规则使矿工们达成共识, 不打包交易额极小的交易. 从经济学角度看, 打包更多有意义的交易能够使区块链本身更有价值, 币值也会相应提升, 每个矿工都能从中获利[66].

2.1.7 女巫攻击(sybil attack)

女巫攻击主要针对的是采用拜占庭容错(BFT)协议而非PoW机制的区块链. 攻击者通过创建多个身份节点破坏区块链网络的信任基础和冗余策略, 操控区块链选举投票[67-70].

女巫攻击原理如图15所示.

图 15

Fig. 15

Fig. 15 Principle of sybil attack

图 15 女巫攻击原理

防范方式: 区块链设计者可以在区块链系统中加入身份认证机制. 只有获得可信的第三方节点或是获得当前网络中大多数可靠节点的认证后, 新的节点才能加入区块链.

2.1.8 日蚀攻击(eclipse attack)

日蚀攻击是一种由多个傀儡节点发起的针对区块链网络层面的攻击, 攻击者利用傀儡节点修改受害者节点的节点表并阻止受害者节点接收和发送消息, 从而达到隔离受害者节点的目的. 攻击者通过隔离受害者节点, 征用受害者的挖矿能力进行双花攻击或私自挖矿, 也可以诱使受害者在交易完成前将现金或货物发给攻击者[71-73]. 需要注意的是, 比特币等典型区块链中每个节点拥有两个节点表, NEW TABLE存储了节点知晓但还未连接过的其他节点IP; TRIED TABLE存储了曾经连接过但现在可能没有建立连接的其他节点IP. 攻击者需要利用傀儡节点IP或无效IP填满两个节点表, 才能达到隔离节点的目的[74].

日蚀攻击一般分为3步.

① 攻击者控制多个傀儡节点向受害者节点进行大量、持续的TCP连接, 受害者节点将傀儡节点IP存入自己的TRIED TABLE中;

② 完成TCP连接后, 傀儡节点发送大量无效的IP或是其他傀儡节点IP, 受害者节点将这些IP存入自己的NEW TABLE中;

③ 攻击者等待受害者节点重启, 重启后, 受害者节点会从两个节点表中选择进行连接的节点, 由于受害者节点的两个表中只有无效节点IP和傀儡节点IP, 因此只能连接上攻击者的傀儡节点. 攻击者完成对受害者节点的隔离, 攻击完成[75-77].

日蚀攻击的实现流程如图16所示.

图 16

Fig. 16

Fig. 16 Procedure of eclipse attack

图 16 日蚀攻击实现流程

防范方法: 区块链设计者修改节点连接规则. 利用随机性或是加入噪声的方法使攻击者无法轻松的通过控制受害者节点的节点表发起日蚀攻击; 或是在删除较旧IP之前, 先测试该IP能否连接上, 只有在连接失败时, 才将此地址从表中删除; 也可以新增两个额外的外部连接, 用于测试新的IP是否可以连接, 只有在连接成功时, 才将新地址加入表中, 以此防止攻击者用无效地址填充节点表等.

2.2 区块链2.0的安全问题——以以太坊智能合约为例

以太坊作为区块链2.0最广为接受的代表, 提供一个可以在区块链上部署、运行智能合约的底层平台, 它采用智能合约—以太虚拟机的架构, 主链代币称为以太币(ETH).

以太坊智能合约的协商和确认是在区块链存储的应用程序上进行的. 这些合约程序的优点是验证和执行过程去中心化, 但去中心化使得审查非常困难. 智能合约的总体目标是能够满足普通的合约条件, 最小化恶意或意外事件发生的可能性, 并降低成本. 智能合约的运行原理如图17所示.

图 17

Fig. 17

Fig. 17 Principle of smart contract operation

图 17 智能合约运行原理

以太坊虚拟机是以太坊中智能合约的运行环境, 它是以太坊项目中的主要创新点之一. 以太坊虚拟机是图灵完备的256位虚拟机, 在给定存储和计算资源的情况下, 以太坊虚拟机能够解决任何可计算的问题[78].

在以太坊上部署智能合约需要花费字节费Gas. Gas是以太坊为了防止恶意用户部署无限循环运行的合约, 而要求用户为所部署合约的每一步支付的费用, 智能合约的逻辑越复杂, 花费的Gas就越多. Gas价格是指花费每个Gas所需要的以太币的数量, 可由用户自行调整[79].

以太坊智能合约的开发语言是Solidity编程语言, Solidity是一种语法类似JavaScript的高级语言. 由于以太坊虚拟机不会额外的对智能合约的执行进行限制, 为了保证安全, 需要智能合约自身具有完整确定性[80,81].

比特币通过引入PoW共识来规避少数人的恶意行为, 平均出块时间10分钟, 共识中临时性分叉所产生的孤块最终会被抛弃. 而以太坊出块时间缩短至15秒, 分叉频繁发生. 因此以太坊在设计中引入了GHOST协议, 以权重最高的子树作为合法主链, 同时对产生或发现孤块的矿工予以奖励, 鼓励分叉的及时合并[82].

比特币与以太坊的主链结构和选择方式如图18所示, 同样的情况下, 比特币系统将认为0←1A←2A←3A←4A←5A为合法主链, 而以太坊系统认为0←1B←2C←3C←4B为合法主链.

图 18

Fig. 18

Fig. 18 Choosing legal chain in Bitcoin and Ethereum

图 18 比特币和以太坊的合法链选择

以太坊也是区块链技术的一种实现, 所以第2.1节内的大部分攻击都能在以太坊中实施, 这里不再赘述, 本节将介绍几种特别针对以太坊及其智能合约的攻击, 代表了区块链2.0面临的典型安全风险.

2.2.1 平衡攻击(balance attack)

平衡攻击的目的是阻止新交易被确认. 其利用了以太坊出块时间短的特点, 结合GHOST协议对以太坊系统进行破坏. 攻击者将以太坊上的诚实节点分为多个算力均等的子组, 通过延迟多个子组间的网络通讯, 使以太坊产生多条“势均力敌”的分叉. 攻击者使用自身的算力平衡这些分叉间微小的差距, 从而破坏共识机制, 阻止新交易被确认[83-85].

平衡攻击一般分为4步.

① 攻击者将诚实矿工隔离成多个算力接近的子组, 确保“自身算力+任意子组算力>任意子组的算力”;

② 攻击者通过延迟子组间的网络通信, 使区块链产生多条分叉, 每个子组都会选择不同子树进行区块打包;

③ 攻击者在每个分叉都进行区块打包, 并将自己打包好的区块隐藏起来, 不进行广播;

④ 攻击者时刻关注每个子组的本地视图, 若在某个子组的本地视图中, 有其他子树的权重要超过该子组原先选择的子树时, 攻击者将自己已经打包好的区块广播, 以确保多个子组无法就最重子树达成共识.

平衡攻击的实现流程如图19所示.

图 19

Fig. 19

Fig. 19 Procedure of balance attack

图 19 平衡攻击实现流程

防范方法: 区块链设计者可以加入区块权重机制至GHOST协议中, 使不同区块对最重子树共识的影响度不同, 主要有两种方案: 由于攻击者打包好区块后不会立刻广播, 可以设置区块权重与时间成反比, 加大攻击者利用隐藏的区块平衡各个子树权重的难度; 根据系统“历史树图结构”, 实时检测是否受到攻击, 设置检测到攻击前生成的普通区块权重为1, 检测到攻击后生成的区块中1/x个特殊区块的权重为x(x>>1), 其余特殊区块的权重为0, 相当于在检测到攻击时提高挖矿的难度, 降低出块速度, 优先保证系统的安全性[86].

2.2.2 漏洞攻击(vulnerability attack)

漏洞攻击是以太坊智能合约最主要的安全风险. 以太坊智能合约威胁较高的漏洞有整数溢出漏洞、可重入漏洞、交易顺序依赖问题、时间戳依赖问题、深度调用问题等[87].

(1) 整数溢出攻击(integer overflow attack)

在程序语言中, 整数类型变量有最大值和最小值, 一旦在运算、转换等过程中超过这个值, 就会出现溢出的情况, 而以太坊智能合约实质上是一种用Solidity语言编写的程序代码, 也存在溢出问题. 智能合约中的余额常用无符号整数表示, 在编写智能合约时如果不加注意就会给攻击者可乘之机. 攻击者只需将自己的余额减去一个比该余额大1的值, 即可让自己的余额变成最大值[88].

(2) 可重入攻击(reentrancy attack)

在以太坊中, 当智能合约A调用智能合约B时, A会等待B的调用结束后再继续运行. 因此攻击者可以在智能合约A调用智能合约B时, 在B被调用的函数中加入回调语句——“使A调用B的代码”, 从而发起可重入攻击[89].

典型的可重入攻击一般分为4步.

① 智能合约A向智能合约B发出提现请求;

② B向A转账, 并调用A的回调函数;

③ A的回调函数继续提出“A向B发起提现请求”, 两个合约进入互相调用的循环;

④ 当Gas用完或是受害者账户余额被耗光时, 攻击结束.

可重入攻击的实现流程如图20所示.

图 20

Fig. 20

Fig. 20 Procedure of reentrancy attack

图 20 可重入攻击流程

(3) 交易顺序依赖攻击(transaction-ordering dependence attack)

在以太坊中, 智能合约的执行结果随当前交易处理顺序的改变而改变. 智能合约被矿工打包到一个区块内需要一定的时间, 攻击者如果在打包完成前监听到网络中智能合约调用, 那么他就可以发布自己的调用或新合约来改变当前的合约状态. 这种攻击方式称为交易顺序依赖攻击[90].

交易顺序依赖攻击一般分为4步.

① 攻击者发布一个悬赏合约A, 悬赏金较高;

② 等待有应征者完成悬赏任务;

③ 在验证节点还未确认悬赏任务成功前, 发布一个将A中悬赏金额调低的智能合约B, 并设置较高的Gas费;

④ 验证节点会先验证高费率的智能合约B, 导致应征者收到的赏金变低, 攻击完成.

交易顺序依赖攻击的实现流程如图21所示.

图 21

Fig. 21

Fig. 21 Procedure of transaction-ordering dependence attack

图 21 交易顺序依赖攻击流程

(4) 时间戳依赖攻击(timestamp dependence attack)

在区块链中, 每个区块都拥有一个时间戳, 而这个时间戳通常是矿工用本地时间设定的. 由于某些智能合约的触发条件依赖于时间戳, 如果攻击者挖到包含该智能合约的区块就可以设定利于自己的时间戳, 从而发动时间戳依赖攻击[91].

(5) 调用深度攻击(call depth attack)

调用深度攻击可以让智能合约里的任何调用失败, 即使这些调用是完全正确且可信的. 在合约虚拟机中, 智能合约互相调用的深度会有一个阀值, 一旦调用栈的深度到达阀值, 再调用的函数及其子调用都会失败. 攻击者可以通过控制调用深度, 使得某些如转账、余额清零等关键操作无法进行[92].

防范方式: 对于区块链程序员来说, 养成良好的编程习惯, 理清程序逻辑可以有效的减少漏洞的产生; 对于区块链公司来说, 做好智能合约的安全审计工作, 可以聘请专业的审计公司进行服务, 挖掘智能合约漏洞并进行修复.

3 区块链周边安全问题

正如上文所述, 区块链设计者在设计区块链机制时, 常会出现一些技术漏洞, 给攻击者以可乘之机, 危害区块链系统安全. 但攻击者除了可以利用区块链系统本身设计或实现上的漏洞攻击区块链外, 还可以通过攻击区块链的周边设施, 例如交易所、数字钱包、矿池/矿场等, 来牟取钱财或私利. 这类安全风险并不是由于区块链技术本身的设计缺陷, 或者区块链系统的部署实施, 而是由于区块链应用开发、软件工具、实践过程中缺乏必要的安全考虑或措施所造成的.

下面例举3种用于加密货币的区块链周边服务或软硬件周边设施所面临的安全问题.

3.1 交易所面临的安全问题

交易所掌握着众多用户的多种数字加密货币, 是攻击者可以通过较小代价获取极大利益的地方, 交易所被攻击的事件层出不穷[93,94], 主要有以下几种.

3.1.1 分布式拒绝服务攻击(distributed denial of service attack)

交易所遭遇的拒绝服务攻击多数是分布式拒绝服务(DDoS)攻击. 攻击者通过大量傀儡机向目标发送合法的请求以占用大量网络资源, 从而瘫痪目标网络, 使合法用户无法获得服务的响应[95-97]. 分布式拒绝服务攻击一般分为4步.

① 攻击者搜集受害交易所网络以及主机的相关情报;

② 攻击者根据收集到情报, 准备一定数量的傀儡机以及适合的攻击手段;

③ 攻击者通过控制所有傀儡机向受害交易所发送海量合法请求, 导致交易所大量的网络资源被占用;

④ 受害交易所最终无法处理海量的请求, 导致网络瘫痪, 其他合法用户的请求无法被响应[98].

分布式拒绝服务攻击的实现流程如图22所示.

防范方法: 交易所应做好预警工作, 开启防火墙并实时监控网络中的流量状况; 被DDoS攻击时关闭不必要服务的端口并对所有流量进行流量识别, 从而清洗攻击流量.

3.1.2 账户盗窃攻击(account theft attack)

在区块链交易系统中, 盗窃用户账户是常见攻击之一. 由于交易所是中心化机构, 存放了大量用户的账户信息, 所以对于攻击者而言, 入侵交易所来获得大量账号、密码、私钥等是一种性价比较高的方式[99], 其基本攻击流程如下.

① 攻击者黑进交易所后, 获得大量账号和密码;

② 将账户内的加密货币进行抛售, 以引起大量加密货币下跌;

③ 市场恐慌性抛售后, 攻击者大量买入低价币, 使其币值飞速上涨, 从而场外套现获利.

防范方法: 区块链用户应选择对恶意攻击免疫能力较强的交易系统; 交易所应评估自身基础设施的安全性能, 采取相应安全防御策略; 交易所还可以实时备份数据, 并提高相关人员的安全意识.

3.1.3 交易延展性攻击(transaction malleability attack)

交易延展性是指在区块链中, 交易ID (TXID)在矿工确认之前是可以被修改的. 攻击者可以利用这个特性, 向交易所发动交易延展性攻击[100,101].

交易延展性攻击一般分为4步.

① 攻击者将数字货币存入交易所中;

② 攻击者向交易所申请取回数字货币, 交易所同意该申请并在网络中广播向攻击者转币的交易A;

③ 攻击者截获交易A, 利用交易延展性修改交易A中签名的编码格式得到交易B, 使得交易ID产生变化的同时签名仍有效. 攻击者再将通过交易延展性得到的交易B放到网络中广播;

④ 攻击者用交易A的交易ID向交易所投诉, 声称自己没收到数字货币. 交易所利用交易A的交易ID查询是否有转账给攻击者的交易. 由于交易A被截获, 网络中不存在交易A, 交易所会误认为转账失败并再次转币给攻击者, 至此, 攻击者会获得两份数字货币.

交易延展性攻击的实现流程如图23所示.

图 22

Fig. 22

Fig. 22 Procedure of DDoS attack

图 22 分布式拒绝服务攻击实现流程

图 23

Fig. 23

Fig. 23 Procedure of transaction malleability attack

图 23 交易延展性攻击实现流程

防范方式: 区块链设计者可以利用隔离见证技术, 使攻击者无法通过修改签名格式, 在改变TXID的情况下不影响签名的合法性[102].

3.2 数字钱包面临的安全问题

加密数字货币的归属权是由一对数字密钥决定的, 某地址与该地址对应的私钥存在一定的数学联系, 拥有私钥的人便能获得对应地址的数字加密货币的处置权. 数字钱包本质上是一种软件, 其存储了区块链上的某些地址以及这些地址对应的私钥. 加密数字货币钱包主要分为在线钱包和离线钱包两种[103].

在线钱包也称热钱包, 是一种在使用的过程中, 必须保持联网状态的钱包, 这类钱包通常以在线钱包和交易平台钱包等形式出现. 在使用在线钱包交易数字加密货币时, 外界可以通过互联网访问到存储私钥的位置, 因此在线钱包容易受到黑客的攻击.

离线钱包也称冷钱包, 是一种一直处于非联网状态的钱包, 这类钱包依靠不联网的硬件设备运行, 外界一般无法通过网络访问到其存储私钥的位置, 因此可以有效避免黑客攻击或中木马病毒等情况造成的损失. 但其也可能因为硬件设计存在问题, 导致漏洞产生, 留下一定的隐患[104].

数字钱包面临的安全问题主要为私钥窃取攻击(private key theft attack), 攻击者通过黑入联网的在线钱包、篡改官方钱包并诱导用户下载等方式, 获取用户地址私钥, 实现私钥窃取攻击.

防范方式: 大多数情况下, 离线钱包相较在线钱包而言不易受到攻击, 因此区块链用户应使用安全性更高的离线钱包防止攻击者入侵; 数字钱包的设计者不应急于发布硬件产品, 应在产品安全性评估合格后再发售. 另外, 数字钱包的设计者在发布自己软件产品的同时, 应留下软件的散列值, 并督促用户在下载前检查散列值是否与软件匹配, 防止攻击者篡改在线钱包软件.

3.3 矿池/矿场面临的安全问题

矿池/矿场作为PoW区块链网络算力的主要来源, 若其自身基础安全防护措施考虑不周, 则会引起高危安全风险. 大规模的矿池/矿场常使用远程管理系统以便管理, 由于这些系统的远程管理机制可能不健全, 或是由于矿池/矿场对远程管理系统不够重视, 使得攻击者利用这些薄弱点, 对矿池/矿场进行攻击. 恶意挖矿策略也是矿池/矿场面临的安全问题之一, 攻击者通过恶意策略抢夺或是单纯的损害诚实矿池/矿场的利益[105].

3.3.1 自私挖矿攻击(selfish mining attack)

自私挖矿攻击是一种针对基于PoW共识的区块链的恶意挖矿策略. 实施自私挖矿攻击的恶意矿池在挖到新区块时, 不会立即发布新区块, 而是根据自私挖矿策略决定是发布该块还是继续在自私分叉上挖矿. 当自私分叉长度超过公共链长度时, 若恶意矿池公开分叉链, 则原公共链包含的所有数据将会回滚, 区块链用户将损失回滚部分的数字货币收入, 诚实矿池也将损失原主链上的出块奖励. 自私挖矿攻击同时会导致在诚实矿池中工作的矿工为了获得“超额”的挖矿奖励, 转而加入恶意矿池进行工作, 诚实矿池的算力逐步被蚕食[106-109].

自私挖矿攻击一般分为3步.

① 攻击者在最长链上挖矿, 并在合适的时候创建自私分叉;

② 攻击者实时监测网络中新区块的发布情况, 根据最新的发布情况执行对应的策略;

③ 若攻击者挖到新区块, 攻击者则不发布该块而是在该块后继续自私挖矿, 转到步骤②; 若诚实矿池挖到新区块且分叉链长度比主链短, 攻击者则放弃私链, 转到步骤①; 若诚实矿池挖到新区块且分叉链长度和主链相同, 攻击者则立刻发布分叉链, 这种情况下, 攻击者的分叉链仍有一定几率被全网认可, 转到步骤①; 若诚实矿池诚实矿池挖到新区块且分叉链长度−主链长度>1, 攻击者则继续在分叉链上挖矿, 转到②; 若诚实矿池挖到新区块且分叉链长度−主链长度=1, 攻击者则立刻发布分叉链, 转到步骤①[110].

自私挖矿攻击的实现流程如图24所示.

防范方式: 改进挖矿规则. 当矿工收到两个及以上的相同长度的分支时, 他必须传播所有分支并随机选择一个分支, 在其后继续挖矿, 从而增大恶意矿池进行自私挖矿的成本[111].

3.3.2 跳池攻击(pool hopping attack)

矿池聚集了众多矿工的算力, 在矿池中, 一般根据算力大小给矿池内参与挖矿的矿工结算收益, 结算模式有很多, 例如Proportional模式、PPS模式、PPLNS模式等. 如果矿池使用的是Proportional模式付给矿工报酬, 矿工很有可能为了自己的利益向矿池发动跳池攻击. 在Proportional模式下, 从矿池挖到上个区块到挖到当前区块的时间被称为一个挖矿周期, 每个矿工的区块奖励与一个挖矿周期内其有效工作量证明(share)所占全部有效工作量的百分比成正比. 因此矿工们收益最高的策略是当当前挖矿周期长度到达一个阀值后, 跳槽到另一个才发现新区块、挖矿周期较短的矿池重新开始挖矿[112-115].

图 24

Fig. 24

Fig. 24 Procedure of selfish mining attack

图 24 自私挖矿攻击实现流程

防范方式: 矿池应采用更优的收益结算模式, 如PPS模式或PPLNS模式, 防止矿工为了自身利益最大化, 进行跳池攻击.

3.3.3 扣块攻击(withholding block attack)

扣块攻击是指恶意矿工在挖到新区块后不向矿池提交, 而是直接丢弃该区块, 从而减少矿池收入的攻击. 这种攻击同时损害了恶意矿工和矿池的利益, 但矿池损失的要比恶意矿工损失的更多. 扣块攻击并不是完全无利可图的, 如果矿池是按PPS模式, 即:

矿工的收益=矿池用于奖励矿工的总币量×某个矿工提供的算力/当前网络难度.

付给矿工报酬, 恶意矿工即使不提交区块也可以领到一定报酬; 如果矿池是按PPLNS模式, 即:

矿工的收益=矿池用于奖励矿工的总币量×出块时该名矿工提交的有效工作量证明在总有效提交中占比.

付给矿工报酬, 矿池的竞争对手可以通过派出恶意矿工加入该矿池进行扣块攻击, 使该矿池整体收益下降, 从而促使受害者矿池的矿工跳槽到新矿池工作[116-118].

防范方式: 矿池可以偶尔向手下的矿工进行突击检查, 提供解决方案已知的任务, 诱使恶意矿工落入陷阱并找出他们[119]; 或是更改挖矿算法使得矿工无法验证得到的有效工作量证明(share)是否是符合区块解, 从而无法将精确挑选出符合区块解的答案, 将其丢弃.

4 区块链用户面临的安全问题

攻击者除了可以攻击区块链自身与区块链周边设施外, 还可以攻击区块链用户. 但与区块链自身机制与区块链周边设施不同的是, 区块链设计者没有在用户层面设计过多复杂的机制, 因此区块链用户所遇的安全问题通常为网络安全领域中的通用攻击. 以下介绍3种用户面临的典型安全问题.

4.1 社会工程学攻击(social engineering attack)

近些年来, 社会工程学攻击[120,121]开始流行起来. 欺诈者通过冒充官方人员或权威人士, 向区块链用户索取一定量的数字加密货币, 甚至直接索要私钥. 区块链用户如果不及时确认对方身份就极易上当受骗, 因而遭受损失.

防范方法: 用户应在透露重要信息前及时确认对方身份; 同时应当妥善保管私钥, 切勿将私钥透露给其他人, 谨防欺诈.

4.2 中间人攻击(man-in-the-middle attack)

中间人攻击是一种较为传统的网络攻击手段, 攻击者能够在通信双方毫不知情的情况下, 通过拦截网络通信数据, 对数据进行嗅探和篡改[122,123]. 区块链本身对中间人攻击具有一定的免疫力, 但在数字货币场外交易中——例如在场外交易平台中进行货币交易, 中间人攻击仍是一种可行的攻击方式. 中间人攻击一般分为6步.

① 受害者发出与卖家进行交易的申请, 攻击者截获受害者的通信数据;

② 攻击者将受害者通信数据里的公钥换成自己的公钥并发给卖家;

③ 卖家同意交易, 并把自己区块链中的地址等交易信息发送给受害者;

④ 攻击者截获卖家发出的通信数据, 并把收款地址改成自己区块链中的地址, 并用受害者公钥加密, 再把篡改后的通信数据给受害者;

⑤ 受害者收到攻击者篡改后的通信数据后, 将数字货币转至攻击者的地址;

⑥ 攻击者收到了受害者的数字货币, 但卖家没收到, 因此交易失败. 受害者白白损失了该笔数字货币.

中间人攻击的实现流程如图25所示.

图 25

Fig. 25

Fig. 25 Procedure of man-in-the-middle attack

图 25 中间人攻击实现流程

防范方式: 用户应在通信过程中引入数字证书技术. 用户可以通过可靠的数字证书认证机构认证对方身份, 确保自己是在和正确的通信者进行消息交换, 防止攻击者拦截并篡改消息[124].

4.3 撞库攻击(credential stuffing attack)

安全意识不高的用户常常会在其他网站使用与交易平台相同或相似的账户密码. 一旦这些账户密码被泄露或者被窃取, 攻击者就可以利用这些账号和密码, 在区块链交易平台上进行撞库攻击[125].

撞库攻击一般分为4步.

① 拖库: 攻击者搜寻受害网站, 通过社会工程手段(收买管理员、钓鱼等)或者技术手段(Web漏洞、服务器漏洞、配置错误等)取得该网站的访问权限;

② 洗库: 攻击者对受害网站的数据库进行信息筛选, 得到所需数据, 若数据库中的数据被加密则使用破解技术破解;

③ 撞库: 攻击者对得到的数据进行整理, 选择出账户密码数据;

④ 尝试: 攻击者用得到的账户和密码在区块链交易平台上进行尝试, 同时利用这些账户和密码为攻击其他网站做准备, 转到①[126].

撞库攻击的实现流程如图26所示.

防范方式: 用户不应在多个网站上设置同一个密码; 对于重要的账户, 要使用高强度的密码防止被破解; 不要将密码保存在公共设备上, 防止被泄露.

图 26

Fig. 26

Fig. 26 Procedure of credential stuffing attack

图 26 撞库攻击实现流程

5 区块链安全问题分类与总结

针对区块链技术在数字货币交易等应用领域, 前文介绍了多种典型的安全问题和攻击方法, 本节将对这些问题按照区块链系统的层次架构进行分类并总结.

5.1 区块链层次架构介绍

一个典型的区块链系统一般分为6层, 从上到下分别为应用层、合约层、激励层、共识层、网络层、数据层, 如图27所示. 每层各司其职又互相协作, 最终实现一个去中心化的协作系统和信任机制.

图 27

Fig. 27

Fig. 27 Layered architecture of blockchain applicationsystem

图 27 区块链应用系统的层次结构

(1) 数据层: 数据层描述了区块链的数据结构与相关的加密技术, 实现数据的去中心化存储、完整性与合法性校验、可追溯性与不可篡改性保证等功能.

(2) 网络层: 网络层主要通过分布式组网机制、数据传播机制、数据验证机制, 搭建区块链网络中各个节点之间信息交流的桥梁.

(3) 共识层: 共识层采用了各种共识算法, 例如工作量证明(PoW)、权益证明(PoS)、股份授权证明(DPoS)等, 使区块链系统中的高度分散的节点能够快速且正确地针对区块数据的有效性达成共识.

(4) 激励层: 激励层为区块链提供了激励措施, 使各个节点实现自身利益最大化的个体理性行为与保障区块链系统安全有效的总体目标相一致.

(5) 合约层: 合约层封装了区块链的各类脚本代码、算法和智能合约, 是灵活编程和操作区块链系统的基础.

(6)应用层: 应用层封装了区块链的各种应用场景和案例, 支持数字货币交易、去中心化应用等(DApp), 实现可编程货币、可编程金融、可编程社会[127].

5.2 安全问题分类

下面对本文所述全部36种安全问题综合区块链基本架构进行分类, 并分析每种攻击所依赖的共识以及攻击实施难度, 区块链安全问题分类如表1所示. 需要说明的是, 在表中, 若某层级被勾选, 则说明该攻击会使该层级的某些功能失效或出错. 例如, 边界网关劫持攻击通过拦截区块链网络流量, 阻止广泛共识的达成, 由于其破坏了网络层的节点通信能力, 同时也破坏了共识层的共识过程, 因此网络层和共识层被勾选; 空块攻击通过拒绝打包交易到区块中, 用不合法的手段获得更多的出块奖励, 由于其既破坏了激励规则又阻碍了区块链记录合法交易, 因此数据层和激励层被勾选.

表 1(Table 1)

Table 1 Classification of blockchain security problem

表 1 区块链安全问题分类

安全问题

被攻击的区块链层级

依赖哪种

特定共识

实施

难度

数据层

网络层

共识层

激励层

合约层

应用层

双花攻击

不限

较低

51%攻击

PoW

较高

贿赂攻击

PoW

较低

币龄累计攻击

PoW+PoS

较低

通用挖矿攻击

PoW

芬尼攻击

不限

较低

种族攻击

不限

较低

边界网关劫持攻击

不限

较高

重放攻击

不限

较低

空块攻击

PoW

削弱攻击

PoW

无利害关系攻击

PoS

长程攻击

PoS

较高

简单攻击

PoS

变节攻击

PoS

较高

权益流损攻击

PoS

较高

粉尘攻击

不限

较低

女巫攻击

BFT

较低

日蚀攻击

不限

平衡攻击

PoW

漏洞攻击

不限

较低

整数溢出攻击

不限

可重入攻击

不限

交易顺序依赖攻击

不限

较低

时间戳依赖攻击

不限

较低

调用深度攻击

不限

DDoS攻击

不限

较低

账户盗窃攻击

不限

较低

交易延展性攻击

不限

较低

私钥窃取攻击

不限

自私挖矿攻击

PoW

较高

跳池攻击

PoW

较低

扣块攻击

PoW

社会工程学攻击

不限

Table 1 Classification of blockchain security problem

表 1 区块链安全问题分类

根据安全问题分布图28, 不难发现, 大多数攻击针对的是区块链的共识层, 因此设计一种漏洞较少、安全性较高的共识机制是区块链安全领域的研究重点; 另外, 大部分区块链攻击具有通用性, 其执行不依赖于特定的共识机制, 即在大部分区块链应用系统中均能实施. 因此, 区块链的设计者们可以参考本文所述防范方法, 或是借鉴其他设计者的经验教训, 从而设计出安全可靠的区块链系统. 除了通用的攻击方式外, 针对PoW共识机制的区块链攻击较多, 这是由于PoW作为当前最主流区块链共识算法, 被深入研究并频繁实践. 研究针对PoW共识的攻击对攻击者而言收益较高, 但这不代表其他共识算法足够安全, 区块链的拥有者和用户仍需要保持一定警惕性, 制定合理的应急策略, 以便在遭遇攻击时尽可能的减少损失.

图 28

Fig. 28

Fig. 28 Distribution of security problems in blockchain application systems

图 28 区块链应用系统的安全问题分布

为了粗略评估各攻击的安全风险程度, 本文将攻击实施难度分为四类. 难度低代表成功实施该类攻击几乎不需要攻击者投入成本, 也不依赖苛刻的时机, 可行性较高. 如通用挖矿攻击, 攻击者只需要从主流币处调来矿机, 并花费少量电费, 就可以对山寨币进行攻击. 再例如整数溢出攻击、调用深度攻击, 攻击者只需知晓智能合约的整数范围、调用深度, 并花费少量交易费, 就可以轻松的发起攻击. 难度较低代表成功实施该类攻击需要攻击者投入一定的成本或是需要等待特定的时机, 可行性适中. 如贿赂攻击、币龄累积攻击, 攻击者需要投入一定的成本用于贿赂矿工或是进行币龄积累, 才能成功完成攻击. 再例如时间戳依赖攻击、交易延展性攻击, 攻击者需要监听或者拦截到特定的交易, 才能成功实施攻击. 难度较高代表成功实施该类攻击需要攻击者投入大量成本或是需要等待较为苛刻的时机, 可行性较低. 如51%攻击, 攻击者需要全网超过51%的算力才能成功完成攻击, 想要在大型链中获得51%算力, 需要投入大量的成本. 再例如, 自私挖矿攻击, 攻击者首先需要一定算力, 同时也需要连续挖到几个区块后, 才能成功实施攻击. 难度高代表成功实施该类攻击需要攻击者投入极大成本并且需要苛刻的时机, 难以实施. 如日蚀攻击, 攻击者需要大量傀儡机尝试与受害节点进行连接, 从而恶意填充受害节点的节点表, 该步骤时间较长, 并且需要等待受害节点自己重启, 这种重启不受攻击者控制, 可控性差. 再例如平衡攻击, 攻击者首先需要知晓全网节点的网络状态, 并将所有诚实节点划分成多个算力几乎均等的子组, 并切断各个子组间的通信, 到该步骤为止已经需要相当大的成本了, 之后还需要不断监控各个子组的本地视图, 并在必要的时刻将自己已经挖好的区块广播, 在此过程中, 各个子组间的通信仍要被切断, 因此, 该攻击的实施难度非常高.

5.3 当前研究方向与最新进展

由于区块链仍处于发展状态, 自身机制、周边设施、用户安全意识都不够成熟, 基础架构的每个层次都易受到攻击. 当前, 世界各地的研究者从攻防两侧提出了很多有用的攻击、防御策略, 本节将以区块链架构的6个层次为划分, 分别介绍当前区块链安全方向的研究方向与最新进展, 供读者参考.

(1) 数据层

① 应对量子计算的挑战: 现阶段大多数区块链底层的加密算法是椭圆曲线算法, 但椭圆曲线算法不是一种抗量子攻击算法, 易受到未来的量子攻击的威胁. Shahid等人提出了一种新的一次性签名(OTS)算法, 该算法对量子计算有一定的抵抗性, 且与现有的所有OTS方案相比, 该方案的密钥和签名大小都是最小的[128].

② 保护隐私: 区块链上的智能合约允许节点们在没有可信第三方参与或监督的情况下进行可信交易, 但由于智能合约内可能存在隐私信息, 且智能合约需要在参与节点上运行, 这会导致某节点的隐私被其他节点知晓. 在数字加密货币区块链中常使用零知识证明技术以保证用户使用数字货币时不透露自己的身份, 但零知识证明技术仍存在一些问题, 例如只能保证2个当事方参与交易却不泄露自己的隐私信息. Wan等人提出了一种用于认证数据的零知识证明方案, 它将零知识证明技术与数字签名技术有效结合, 保证了智能合约的数据保密性和真实性[129]. Harris等人提出了一种基于共识的秘密共享协议, 该协议允许多个当事方参与交易, 并且不会泄露任何个人隐私信息[130].

(2) 网络层

网络入侵检测系统: 入侵检测系统常通过自动识别并过滤异常活动, 来保护网络和系统免受意外攻击, 以增强网络的安全性. 在区块链中, 大量攻击是通过网络层攻击区块链本身, 如日蚀攻击, 分割攻击等. 为此Signorini等人设计了一种针对于区块链系统的异常检测工具, 它允许区块链网络的对等节点通过共享历史的攻击信息来抵御日蚀攻击[131].

(3) 共识层

① 避免互操作场景下中的双花攻击: 双花攻击是区块链中非常典型的攻击之一, 单一区块链中的双花攻击已经被深入研究过, 但在跨链技术日渐成熟的现在, 交易常常由多个区块链协作完成, 这种互操作场景下的双花攻击研究较少. Sai等人提出使用中立的观察者来监视跨多个链的交易, 并设计了一种协议消除互操作场景下的双花攻击[132].

② 研究双花攻击的变种攻击: 传统的双花攻击有51%攻击、贿赂攻击、种族攻击等, 大量学者已经对这些攻击进行过研究, 但双花攻击仍存在新的变种. Zhang等人介绍了一种新的联合攻击形式——基于女巫攻击的比特币双花攻击, 并提出了两种解决该攻击的防御方案[133].

(4) 激励层

① 避免跳池攻击: 跳池攻击是一种矿工通过寻找并采用最佳的跳槽策略, 使得自己利益最大化的过程, 现在较为流行的矿池收益结算模式是PPLNS, 但这种模式仍存在一些问题. Zolotavkin等人利用博弈论模型分析了PPLNS结算模式下的跳池攻击, 并给出了避免跳池攻击的方案[134].

② 扣块攻击的最优策略与解决方案: 在矿池间的竞争中, 扣块攻击是较为常见的破坏手段, 使用多少算力攻击其他矿池能带来最大的收益成为恶意矿池所面临的一个重要决策问题. Qin等人提出了恶意矿池最佳扣块策略, 并给出了攻击成功条件[135]. Kaci等人提出了一种新的区块链架构, 用于管理矿池、矿工的信誉, 该架构允许矿池接受可信的矿工, 矿工也可以对矿池进行评估, 从而建立起矿池和矿工之间的信任, 减少扣块攻击出现的可能[136].

(5) 合约层

① 智能合约漏洞检测: 智能合约经常由于程序员的不良编程习惯和疏忽大意, 产生一些安全漏洞. 攻击者如果找到这些漏洞就可以对使用这些合约的受害者进行攻击. Gao等人提出了一种自学习智能合约特性的方案, 该方案可进行合约重复代码检测、合约错误检测和合约验证[137]. Wang等人提出了一种基于机器学习的智能合约漏洞检测方法, 该方法从智能合约的简化操作代码中提取二元特征, 并利用五种机器学习算法和两种采样算法构建了漏洞检测模型[138]. Samreen等人提出了一个动、静态分析相结合的智能合约检测框架, 来检测Etalum中的可重入漏洞[139].

② 智能合约代码修复: 现有的智能合约安全分析工具侧重于漏洞检测, 但很少考虑智能合约代码的修复问题. Zhang等人提出了一种智能合约代码自动修复系统, 该系统可以对智能合约字节码进行修正, 并帮助开发者发布智能合约[140].

(6) 应用层

为金融安全提供可靠的调查模型. 由于区块链消除了交易对可信第三方的需求同时具有匿名性, 某些不法分子会利用基于区块链的数字加密货币进行洗钱等违法操作. Wu等人提出了一种基于扩展的安全Petri网的比特币交易网络分析方法, 该方法利用Petri网的结构特征和动态语义来定义比特币交易的静态与动态特征, 用于分析和查找与非法交易相关的可疑地址[141].

总体而言, 近些年国内外学者针对区块链各个层级的研究都取得了丰硕的研究成果. 从研究趋势上看, 针对数据层、共识层和合约层的研究数量不断上升, 逐渐成为当前区块链安全领域的研究重点. 根据区块链应用需求和现有的研究成果, 本文认为在区块链安全领域, 未来研究将向隐私安全、智能合约安全和跨链技术安全3个方向发展.

隐私安全: 当前区块链隐私安全方向的研究重点是为用户提供一套隐私保护方案. 现有方案主要利用零知识证明、安全多方计算、同态加密等技术, 在区块链账本公开透明的前提下增加匿名性, 最大程度地确保区块链用户的个人隐私安全. 一方面, 零知识证明等技术的引入, 为区块链系统添加了额外的操作流程和步骤, 势必会带来不小的时空代价, 导致区块链的可用性和可拓展性大大降低; 另一方面, 匿名程度的上升必然会使违规交易追踪与监管面临严峻的挑战. 因此, 如何在匿名性与交易性能、匿名性与监管难度间取得合理平衡将成为区块链隐私安全领域的研究重点.

智能合约安全: 当前智能合约安全的研究重点主要为智能合约漏洞检测与修复. 现有的漏洞检测方案可以针对智能合约中的简单漏洞进行检测并提供审计报告, 部分降低了智能合约开发者出错的可能和人工审计成本. 但由于智能合约版本更新换代较快, 各个平台采用的智能合约底层框架不尽相同, 现有方案很难为所有平台所有版本的智能合约提供漏洞检测服务, 因此设计一种通用性强的智能合约漏洞检测工具是未来研究方向之一. 除了漏洞检测, 未来还可以通过研究标准化的智能合约编写工具以及智能合约漏洞自动修复工具来减少智能合约的安全风险. 另外, 站在智能合约设计者的角度, 为预防在复杂合约的编程过程中可能出现的安全漏洞以及因此而带来的风险, 设计一种“图灵完备”的安全脚本智能合约语言也是可以考虑的方案之一.

跨链技术安全: 跨链技术作为增加区块链可拓展性和解决不同公链/侧链之间交易困难问题的核心技术, 愈发被工业级和学术界重视. 现有关于跨链技术的研究大多停留在如何更好的实现跨链交互上, 很少考虑到跨链技术带来的潜在安全威胁. 跨链场景下的攻击模型以及防御方案将是未来的研究方向之一. 未来研究者们可以从区块链传统攻击模型在跨链场景下的新实现以及针对跨链场景的新攻击模型两个方面考虑, 逐步完善跨链技术的安全性.

6 结 语

区块链技术自问世以来, 不断演化发展, 一直作为学术研究、企业应用、政府监管、民间投资的热点和争议而存在. 目前方案成熟、效果明显、应用广泛的区块链应用领域还当属数字货币交易. 由于区块链技术问世较晚、还处于技术的快速迭代完善时期, 其面临的安全风险和威胁攻击多种多样, 针对区块链公链应用的安全事件频繁发生. 本文首先回顾了近几年发生的针对典型的区块链数据服务、交易平台的安全事件; 接着, 列举并分析了区块链自身机制、区块链周边设施、区块链用户所面临的36种安全问题, 同时给出了每种安全风险的有效防范策略建议; 最后结合区块链系统层次结构, 对本文提及的安全问题进行分类并做出总结. 希望能给区块链安全的研究者、技术创新应用者、区块链开发者提供研究参考资料和安全评估视野, 促进区块链的健康发展.

参考文献

[1]

Crosby M, Pattanayak P, Verma S, Kalyanaraman V. Blockchain technology: Beyond Bitcoin. Applied Innovation Review, 2016, 2: 6-19.

http://doi.acm.org/10.1145/2994581

[2]

Liu AD, Du XH, Wang N, Li SZ. Research progress of blockchain technology and its application in information security. Ruan Jian Xue Bao/Journal of Software, 2018, 29(7): 2092–2115 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5589.htm

[3]

Lin IC, Liao TC. A survey of blockchain security issues and challenges. International Journal of Network Security, 2017, 19(5): 653-659.

[doi:10.6633/IJNS.201709.19(5).01]

[4]

Gao WC, Hatcher WG, Yu W. A survey of blockchain: Techniques, applications, and challenges. In: Proc. of the 27th Int’l Conf. on Computer Communication and Networks. Hangzhou: IEEE, 2018. 1–11. [doi: 10.1109/ICCCN.2018.8487348]

[5]

Destefanis G, Marchesi M, Ortu M, Tonelli R, Bracciali A, Hierons R. Smart contracts vulnerabilities: A call for blockchain software engineering? In: Proc. of 2018 Int’l Workshop on Blockchain Oriented Software Engineering. Campobasso: IEEE, 2018. 19–25. [doi: 10.1109/IWBOSE.2018.8327567]

[6]

Huang YH, Wang HY, Wu L, Tyson G, Luo XP, Zhang R, Liu XZ, Huang G, Jiang XX. Characterizing eosio blockchain. arXiv: 2002.05369, 2020.

[7]

Mehar MI, Shier CL, Giambattista A, Gong E, Fletcher G, Sanayhie R, Kim HM, Laskowski M. Understanding a revolutionary and flawed grand experiment in blockchain: The DAO attack. Journal of Cases on Information Technology (JCIT), 2019, 21(1): 19-32.

[doi:10.4018/JCIT.2019010102]

[8]

Zou J, Zhang HN, Tang Y, Li L, Liu TX, Chen H. Blockchain Technical Guidelines. Beijing: China Machine Press, 2016. 109–219 (in Chinese).

[9]

Nakamoto S. Bitcoin: A Peer-to-Peer Electronic Cash System. Bitcoin White Paper, 2008.

[10]

Tomov YK. Bitcoin: Evolution of blockchain technology. In: Proc. of the 2019 IEEE XXVIII Int’l Scientific Conf. Electronics. Sozopol: IEEE, 2019. 1–4. [doi: 10.1109/ET.2019.8878322]

[11]

Bonneau J, Miller A, Clark J, Narayanan A, Kroll JA, Felten EW. Sok: Research perspectives and challenges for Bitcoin and cryptocurrencies. In: Proc. of the 2015 IEEE Symp. on Security and Privacy. San Jose: IEEE, 2015. 104–121. [doi: 10.1109/SP.2015.14]

[12]

Shalini S, Santhi H. A survey on various attacks in Bitcoin and cryptocurrency. In: Proc. of the 2019 Int’l Conf. on Communication and Signal Processing. Chennai: IEEE, 2019. 220–224. [doi: 10.1109/ICCSP.2019.8697996]

[13]

Jang J, Lee HN. Profitable double-spending attacks. Applied Sciences, 2020, 10(23): 8477.

[doi:10.3390/app10238477]

[14]

Pérez-Solà C, Delgado-Segura S, Navarro-Arribas G, Herrera-Joancomartí J. Double-spending prevention for Bitcoin zero-confirmation Trans.. Int’l Journal of Information Security, 2019, 18(4): 451-463.

[doi:10.1007/s10207-018-0422-4]

[15]

Rosenfeld M. Analysis of hashrate-based double spending. arXiv: 1402.2009, 2014.

[16]

Houy N. It will cost you nothing to ‘kill’ a proof-of-stake crypto-currency. Economics Bulletin, 2014, 34(2): 1038-1044.

[doi:10.2139/ssrn.2393940]

[17]

Shanaev S, Shuraeva A, Vasenin M, Kuznetsov M. Cryptocurrency value and 51% attacks: Evidence from event studies. The Journal of Alternative Investments, 2019, 22(3): 65-77.

[doi:10.2139/ssrn.3290016]

[18]

Liu ZY, Luong NC, Wang WB, Niyato D, Wang P, Liang YC, Kim DI. A survey on blockchain: A game theoretical perspective. IEEE Access, 2019, 7: 47615-47643.

[doi:10.1109/ACCESS.2019.2909924]

[19]

Yang XL, Chen Y, Chen XH. Effective scheme against 51% attack on proof-of-work blockchain with history weighted information. In: Proc. of 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 261–265. [doi: 10.1109/Blockchain.2019.00041]

[20]

Li XQ, Jiang P, Chen T, Luo XP, Wen QY. A survey on the security of blockchain systems. Future Generation Computer Systems, 2020, 107: 841-853.

[doi:10.1016/j.future.2017.08.020]

[21]

Bentov I, Gabizon A, Mizrahi A. Cryptocurrencies without proof of work. In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 142–157. [doi: 10.1007/978-3-662-53357-4_10]

[22]

Bonneau J. Why buy when you can rent? In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 19–26. [doi: 10.1007/978-3-662-53357-4_2]

[23]

Gao S, Li ZC, Peng Z, Xiao B. Power adjusting and bribery racing: Novel mining attacks in the Bitcoin system. In: Proc. of the 2019 ACM SIGSAC Conf. on Computer and Communications Security. London: ACM, 2019. 833–850. [doi: 10.1145/3319535.3354203]

[24]

Kothapalli A, Cordi C. 2016. A bribery framework using smartcontracts.

[25]

Vasin P. Blackcoin’s Proof-of-Stake Protocol v2. 2014. https://blackcoin.co/blackcoin-pos-protocol-v2-whitepaper.pdf

[26]

Averin A, Averina O. Review of blockchain technology vulnerabilities and blockchain-System attacks. In: Proc. of 2019 Int’l Multi-Conf. on Industrial Engineering and Modern Technologies. Vladivostok: IEEE, 2019. 1–6. [doi: 10.1109/FarEastCon.2019.8934243]

[27]

Niya SR, Stiller B. BAZO: A proof-of-stake (PoS) based blockchain. Technical Report, Zurich: University of Zurich, 2019.

[28]

Bachmann S. Proof of stake for Bazo [Bachelor Thesis]. Zurich: University of Zurich, 2018.

[29]

Shrivas MK, Dean TY, Brunda SS. The disruptive blockchain security threats and threat categorization. In: Proc. of the 1st Int’l Conf. on Power, Control and Computing Technologies. Raipur: IEEE, 2020. 327–338.[doi: 10.1109/ICPC2T48082.2020.9071475]

[30]

Georgiadis E, Zeilberger D. A combinatorial-probabilistic analysis of Bitcoin attacks. Journal of Difference Equations and Applications, 2019, 25(1): 56-63.

[doi:10.1080/10236198.2018.1555247]

[31]

Grunspan C, Pérez-Marco R. On profitability of Nakamoto double spend. Probability in the Engineering and Informational Sciences, 2021, 1-15.

[doi:10.1017/S026996482100005X]

[32]

Kaushik A, Choudhary A, Ektare C, Thomas D, Akram S. Blockchain—literature survey. In: Proc. of the 2nd IEEE Int’l Conf. on Recent Trends in Electronics, Information & Communication Technology. Bangalore: IEEE, 2017. 2145–2148.[doi: 10.1109/RTEICT.2017.8256979]

[33]

Joshi J, Mathew R. A survey on attacks of bitcoin. In: Proc. of the Int’l Conf. on Computer Networks, Big data and IoT. Cham: Springer, 2018. 953–959. [doi: 10.1007/978-3-030-24643-3_113]

[34]

Lei M. Exploiting Bitcoin’s topology for double-spend attacks [Bachelor Thesis]. Zürich: ETH Zürich, 2015.

[35]

Maroufi M, Abdolee R, Tazekand BM. On the convergence of blockchain and Internet of Things (IoT) technologies. arXiv: 1904.01936, 2019.

[36]

Bajaj AS, Tyagi L, Arora P. Blockchain and decentralized applications. BTP Report, New Delhi: Indraprastha Institute of Information Technology, 2018.

[37]

Ekparinya P, Gramoli V, Jourjon G. Double-spending risk quantification in private, consortium and public Ethereum blockchains. arXiv: 1805.05004, 2018.

[38]

Nguyen TSL, Jourjon G, Potop-Butucaru M, Thai KL. Impact of network delays on Hyperledger Fabric. In: Proc. of the IEEE INFOCOM 2019-IEEE Conf. on Computer Communications Workshops. Paris: IEEE, 2019. 222–227. [doi: 10.1109/INFCOMW.2019.8845168]

[39]

Saad M, Cook V, Nguyen L, Thai MT, Mohaisen A. Partitioning attacks on Bitcoin: Colliding space, time, and logic. In: Proc. of 2019 IEEE 39th Int’l Conf on Distributed Computing Systems. Dallas: IEEE, 2019. 1175–1187. [doi: 10.1109/ICDCS.2019.00119]

[40]

Tran M, Choi I, Moon GJ, Vu AV, Kang MS. A stealthier partitioning attack against Bitcoin peer-to-peer network. In: Proc. of the 2020 IEEE Symp. on Security and Privacy. San Francisco: IEEE, 2020. 496–511. [doi: 10.1109/SP40000.2020.00027]

[41]

Apostolaki M, Zohar A, Vanbever L. Hijacking Bitcoin: Routing attacks on cryptocurrencies. In: Proc. of the 2017 IEEE Symp. on Security and Privacy. San Jose: IEEE, 2017. 375–392.[doi: 10.1109/SP.2017.29]

[42]

Wang J, Chen GL. Overview on blockchain fork in bitcoin. Communications Technology, 2018, 51(1): 149-155(in Chinese with English abstract).

[doi:10.3969/j.issn.1002-0802.2018.01.027]

[43]

Dasgupta D, Shrein JM, Gupta KD. A survey of blockchain from security perspective. Journal of Banking and Financial Technology, 2019, 3(1): 1-17.

[doi:10.1007/s42786-018-00002-6]

[44]

McCorry P, Heilman E, Miller A. Atomically trading with roger: Gambling on the success of a hardfork. In: Garcia-Alfaro J, Navarro-Arribas G, Hartenstein H, Herrera-Joancomartí J, eds. Data Privacy Management, Cryptocurrencies and Blockchain Technology. Cham: Springer, 2017. 334–353. [doi: 10.1007/978-3-319-67816-0_19]

[45]

Eyal I, Gencer AE, Sirer EG, Van Renesse R. Bitcoin-NG: A scalable blockchain protocol. In: Proc. of the 13th USENIX Symp. on Networked Systems Design and Implementation. Berkeley: USENIX, 2016. 45–59.

[46]

Eskandari S, Moosavi S, Clark J. SoK: Transparent dishonesty: Front-running attacks on blockchain. In: Proc. of the Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 170–189. [doi: 10.1007/978-3-030-43725-1_13]

[47]

Sina A. Investigating the Bitcoin blockchain through the analysis of empty blocks [MS. Thesis]. Venice: Università Ca'Foscari Venezia, 2019.

[48]

Zhou DL, Ruan N, Jia WJ. A robust throughput scheme for Bitcoin network without block reward. In: Proc. of the 21st IEEE Int’l Conf. on High Performance Computing and Communications; the 17th IEEE Int’l Conf. on Smart City; the 5th IEEE Int’l Conf. on Data Science and Systems. Zhangjiajie: IEEE, 2019. 706–713. [doi: 10.1109/HPCC/SmartCity/DSS.2019.00105]

[49]

Mannan GS. Security of blockchain: An investigation and analysis of mining attacks on Bitcoin [MS. Thesis]. Edgbaston: University of Birmingham, 2017.

[50]

Nguyen CT, Hoang DT, Nguyen DN, Niyato D, Nguyen HT, Dutkiewicz E. Proof-of-stake consensus mechanisms for future blockchain networks: Fundamentals, applications and opportunities. IEEE Access, 2019, 7: 85727-85745.

[doi:10.1109/ACCESS.2019.2925010]

[51]

Saleh F. Blockchain without waste: Proof-of-stake. Review of Financial Studies, 2021, 34: 1156-1190.

[doi:10.2139/ssrn.3183935]

[52]

Gupta S, Sadoghi M. Blockchain transaction processing. In: Sakr S, Zomaya A, eds. Encyclopedia of Big Data Technologies. Cham: Springer, 2019. [doi: 10.1007/978-3-319-63962-8_333-1]

[53]

Daian P, Pass R, Shi E. Snow white: Robustly reconfigurable consensus and applications to provably secure proof of stake. In: Proc. of the 23rd Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 23–41. [doi: 10.1007/978-3-030-32101-7_2]

[54]

Baliga A. Understanding blockchain consensus models. Persistent Systems, 2017, 2017(4): 1-14.

[55]

Jain A, Arora S, Shukla Y, Patil T, Sawant-Patil S. Proof of stake with casper the friendly finality gadget protocol for fair validation consensus in Ethereum. Int’l Journal of Scientific Research in Computer Science, Engineering and Information Technology, 2018, 3(3): 291-298.

[56]

Cohen B, Pietrzak K. The Chia network blockchain. Chia Network White Paper, 2019.

[57]

Fanti G, Kogan L, Oh S, Ruan K, Viswanath P, Wang GR. Compounding of wealth in proof-of-stake cryptocurrencies. In: Proc. of the 23rd Int’l Conf. on Financial Cryptography and Data Security. Cham: Springer, 2019. 42–61. [doi: 10.1007/978-3-030-32101-7_3]

[58]

Sayeed S, Marco-Gisbert H. Assessing blockchain consensus and security mechanisms against the 51% attack. Applied Sciences, 2019, 9(9): 1788.

[doi:10.3390/app9091788]

[59]

Roelen E, Modeneis T. A Technical Description of the Smilo Platform. Rotterdam, Netherlands: Smilo Foundation, 2019.

[60]

Deirmentzoglou E, Papakyriakopoulos G, Patsakis C. A survey on long-range attacks for proof of stake protocols. IEEE Access, 2019, 7: 28712-28725.

[doi:10.1109/ACCESS.2019.2901858]

[61]

AlMallohi IAI, Alotaibi ASM, Alghafees R, Azam F, Khan ZS. Multivariable based checkpoints to mitigate the long range attack in proof-of-stake based blockchains. In: Proc. of the 3rd Int’l Conf. on High Performance Compilation, Computing and Communications. Xi’an: ACM, 2019. 118–122. [doi: 10.1145/3318265.3318289]

[62]

Zhang S, Lee JH. Eclipse-based stake-bleeding attacks in PoS blockchain systems. In: Proc. of the 2019 ACM Int’l Symp. on Blockchain and Secure Critical Infrastructure. Auckland: ACM, 2019. 67–72. [doi: 10.1145/3327960.3332391]

[63]

Homoliak I, Venugopalan S, Hum Q, Szalachowski P. A security reference architecture for blockchains. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 390–397. [doi: 10.1109/Blockchain.2019.00060]

[64]

Saad M, Njilla L, Kamhoua C, Kim J, Nyang D, Mohaisen A. Mempool optimization for defending against DDoS attacks in PoW-based blockchain systems. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain and Cryptocurrency. Seoul: IEEE, 2019. 285–292. [doi: 10.1109/BLOC.2019.8751476]

[65]

Saad M, Spaulding J, Njilla L, Kamhoua C, Shetty S, Nyang D, Mohaisen A. Exploring the attack surface of blockchain: A systematic overview. arXiv: 1904.03487, 2019.

[66]

Bradbury D. The problem with Bitcoin. Computer Fraud & Security, 2013, 2013(11): 5-8.

[doi:10.1016/S1361-3723(13)70101-5]

[67]

Douceur JR. The Sybil attack. In: Proc. of the 1st Int’l Workshop on Peer-to-Peer Systems. Cambridge: Springer, 2002. 251–260. [doi: 10.1007/3-540-45748-8_24]

[68]

Dinger J, Hartenstein H. Defending the Sybil attack in P2P networks: Taxonomy, challenges, and a proposal for self-registration. In: Proc. of the 1st Int’l Conf. on Availability, Reliability and Security. Vienna: IEEE, 2006. 756–763. [doi: 10.1109/ARES.2006.45]

[69]

Swathi P, Modi C, Patel D. Preventing Sybil attack in blockchain using distributed behavior monitoring of miners. In: Proc. of the 10th Int’l Conf. on Computing, Communication and Networking Technologies. Kanpur: IEEE, 2019. 1–6. [doi: 10.1109/ICCCNT45670.2019.8944507]

[70]

Rahmadika S, Ramdania DR, Harika M. A blockchain approach for the future renewable energy transaction. Journal of Physics: Conf. Series, 2019, 1175(1): 012122.

[doi:10.1088/1742-6596/1175/1/012122]

[71]

Wüst K, Gervais A. Ethereum eclipse attacks. ETH Zurich, 2016.

[72]

Wang SL, Wang CY, Hu Q. Corking by forking: Vulnerability analysis of blockchain. In: Proc. of the IEEE INFOCOM 2019-IEEE Conf. on Computer Communications. Paris: IEEE, 2019. 829–837. [doi: 10.1109/INFOCOM.2019.8737490]

[73]

Aoki Y, Shudo K. Proximity neighbor selection in blockchain networks. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 52–58. [doi: 10.1109/Blockchain.2019.00016]

[74]

Heilman E, Kendler A, Zohar A, Goldberg S. Eclipse attacks on Bitcoin’s peer-to-peer network. In: Proc. of the 24th USENIX Security Symp. Washington: USENIX, 2015. 129–144.

[75]

Gervais A, Karame GO, Wüst K, Glykantzis V, Ritzdorf H, Capkun S. On the security and performance of proof of work blockchains. In: Proc. of the 2016 ACM SIGSAC Conf. on Computer and Communications Security. Vienna: ACM, 2016. 3–16. [doi: 10.1145/2976749.2978341]

[76]

Wang K, Kim HS. FastChain: Scaling blockchain system with informed neighbor selection. In: Proc. of 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 376–383. [doi: 10.1109/Blockchain.2019.00058]

[77]

Ajayi O, Cherian M, Saadawi T. Secured cyber-attack signatures distribution using blockchain technology. In: Proc. of 2019 IEEE Int’l Conf. on Computational Science and Engineering (CSE) and IEEE Int’l Conf. on Embedded and Ubiquitous Computing (EUC). New York: IEEE, 2019. 482–488. [doi: 10.1109/CSE/EUC.2019.00095]

[78]

Qian WN, Shao QF, Zhu YC, Jin CQ, Zhou AY. Research problems and methods in blockchain and trusted data management. Ruan Jian Xue Bao/Journal of Software, 2018, 29(1): 150–159 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5434.htm

[79]

Canessane RA, Srinivasan N, Beuria A, Singh A, Kumar BM. Decentralised applications using Ethereum blockchain. In: Proc. of the 5th Int’l Conf. on Science Technology Engineering and Mathematics. Chennai: IEEE, 2019. 14–15. [doi: 10.1109/ICONSTEM.2019.8918887]

[80]

Buterin V. A next-generation smart contract and decentralized application platform. Ethereum White Paper, 2014, 3(37): 1-36.

http://lapis.epfl.ch/files/content/sites/lapis/files/VETU/VETU_SH_17/articles/Ethereum_white_paper-a_next_generation_smart_contract_and_decentralized_application_platform-vitalik-buterin.pdf

[81]

Wood G. Ethereum: A secure decentralised generalised transaction ledger. Ethereum Project Yellow Paper, 2014, 151: 1-32.

[82]

Vujičić D, Jagodić D, Ranđić S. Blockchain technology, Bitcoin, and Ethereum: A brief overview. In: Proc. of the 17th Int’l Symp. INFOTEH-JAHORINA. East Sarajevo: IEEE, 2018. 1–6. [doi: 10.1109/INFOTEH.2018.8345547]

[83]

Wei PW, Yuan Q, Zheng YL. Security of the blockchain against long delay attack. In: Proc. of the 24th Int’l Conf. on the Theory and Application of Cryptology and Information Security. Brisbane: Springer, 2018. 250–275. [doi: 10.1007/978-3-030-03332-3_10]

[84]

Gramoli V. From blockchain consensus back to byzantine consensus. Future Generation Computer Systems, 2020, 107: 760-769.

[doi:10.1016/j.future.2017.09.023]

[85]

Natoli C, Gramoli V. The balance attack against proof-of-work blockchains: The R3 testbed as an example. arXiv: 1612.09426, 2016.

[86]

Natoli C, Gramoli V. The balance attack or why forkable blockchains are ill-suited for consortium. In: Proc. of the 47th Annual IEEE/IFIP Int’l Conf. on Dependable Systems and Networks. Denver: IEEE, 2017. 579–590. [doi: 10.1109/DSN.2017.44]

[87]

Gupta BC. Analysis of Ethereum smart contracts-A security perspective [MS. Thesis]. Kanpur: Indian Institute of Technology Kanpur, 2019.

[88]

Grech N, Kong M, Jurisevic A, Brent L, Scholz B, Smaragdakis Y. MadMax: Surviving out-of-gas conditions in Ethereum smart contracts. Proc. of the ACM on Programming Languages, 2018, 2(OOPSLA): 116.

[doi:10.1145/3276486]

[89]

Atzei N, Bartoletti M, Cimoli T. A survey of attacks on Ethereum smart contracts (SOK). In: Proc. of the 6th Int’l Conf. on Principles of Security and Trust. Uppsala: Springer, 2017. 164–186. [doi: 10.1007/978-3-662-54455-6_8]

[90]

Luu L, Chu DH, Olickel H, Saxena P, Hobor A. Making smart contracts smarter. In: Proc. of the 2016 ACM SIGSAC Conf. on Computer and Communications Security. Vienna: ACM, 2016. 254–269. [doi: 10.1145/2976749.2978309]

[91]

Wang S, Yuan Y, Wang X, Li JJ, Qin R, Wang FY. An overview of smart contract: Architecture, applications, and future trends. In: Proc. of the 2018 IEEE Intelligent Vehicles Symp. Changshu: IEEE, 2018. 108–113. [doi: 10.1109/IVS.2018.8500488]

[92]

Delmolino K, Arnett M, Kosba A, Miller A, Shi E. Step by step towards creating a safe smart contract: Lessons and insights from a cryptocurrency lab. In: Proc. of the 2016 Int’l Conf. on Financial Cryptography and Data Security. Berlin: Springer, 2016. 79–94. [doi: 10.1007/978-3-662-53357-4_6]

[93]

Decker C, Guthrie J, Seidel J, Wattenhofer R. Making Bitcoin exchanges transparent. In: Proc. of the 20th European Symp. on Research in Computer Security. Vienna: Springer, 2015. 561–576. [doi: 10.1007/978-3-319-24177-7_28]

[94]

Chuen DLK. Handbook of Digital Currency: Bitcoin, Innovation, Financial Instruments, and Big Data. London: Academic Press, 2015. 5–185.

[95]

Vasek M, Thornton M, Moore T. Empirical analysis of denial-of-service attacks in the Bitcoin ecosystem. In: Proc. of the 2014 Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2014. 57–71. [doi: 10.1007/978-3-662-44774-1_5]

[96]

Huynh TT, Nguyen TD, Tan H. A survey on security and privacy issues of blockchain technology. In: Proc. of the 2019 Int’l Conf. on System Science and Engineering. Dong Hoi: IEEE, 2019. 362–367. [doi: 10.1109/ICSSE.2019.8823094]

[97]

Feng Q, He DB, Zeadally S, Khan MK, Kumar N. A survey on privacy protection in blockchain system. Journal of Network and Computer Applications, 2019, 126: 45-58.

[doi:10.1016/j.jnca.2018.10.020]

[98]

Naoumov N, Ross K. Exploiting P2P systems for DDoS attacks. In: Proc. of the 1st Int’l Conf. on Scalable Information Systems. Hong Kong: ACM, 2006. 47–52. [doi: 10.1145/1146847.1146894]

[99]

Moore T. The promise and perils of digital currencies. Int’l Journal of Critical Infrastructure Protection, 2013, 6(3−4): 147-149.

[doi:10.1016/j.ijcip.2013.08.002]

[100]

Zhao YL. Practical aggregate signature from general elliptic curves, and applications to blockchain. In: Proc. of the 2019 ACM Asia Conf. on Computer and Communications Security. Auckland: ACM, 2019. 529–538. [doi: 10.1145/3321705.3329826]

[101]

Decker C, Wattenhofer R. Bitcoin transaction malleability and MtGox. In: Proc. of the 19th European Symp. on Research in Computer Security. Wroclaw: Springer, 2014. 313–326. [doi: 10.1007/978-3-319-11212-1_18]

[102]

Zhao YL. Aggregation of gamma-signatures and applications to Bitcoin. Cryptology ePrint Archive, 2018.

[103]

Vyas CA, Lunagaria M. Security concerns and issues for bitcoin. In: IJCA Proc. on National Conf. cum Workshop on Bioinformatics and Computational Biology. 2014. 10–12.

[104]

Gennaro R, Goldfeder S, Narayanan A. Threshold-optimal DSA/ECDSA signatures and an application to Bitcoin wallet security. In: Proc. of the 14th Int’l Conf. on Applied Cryptography and Network Security. Guildford: Springer, 2016. 156–174. [doi: 10.1007/978-3-319-39555-5_9]

[105]

Lewenberg Y, Bachrach Y, Sompolinsky Y, Zohar A, Rosenschein JS. Bitcoin mining pools: A cooperative game theoretic analysis. In: Proc. of the 2015 Int’l Conf. on Autonomous Agents and Multiagent Systems. Istanbul: Int’l Foundation for Autonomous Agents and Multiagent Systems, 2015. 919–927.

[106]

Sapirshtein A, Sompolinsky Y, Zohar A. Optimal selfish mining strategies in Bitcoin. In: Proc. of the 20th Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2016. 515–532. [doi: 10.1007/978-3-662-54970-4_30]

[107]

Courtois NT, Bahack L. On subversive miner strategies and block withholding attack in Bitcoin digital currency. arXiv: 1402.1718, 2014.

[108]

Saad M, Njilla L, Kamhoua C, Mohaisen A. Countering selfish mining in blockchains. In: Proc. of the 2019 Int’l Conf. on Computing, Networking and Communications. Honolulu: IEEE, 2019. 360–364. [doi: 10.1109/ICCNC.2019.8685577]

[109]

Grunspan C, Pérez-Marco R. Bitcoin selfish mining and dyck words. arXiv: 1902.01513, 2019.

[110]

Bai QL, Zhou XY, Wang X, Xu YD, Wang X, Kong QS. A deep dive into blockchain selfish mining. In: ICC 2019–2019 IEEE Int’l Conf. on Communications. Shanghai: IEEE, 2019. 1–6. [doi: 10.1109/ICC.2019.8761240]

[111]

Eyal I, Sirer EG. Majority is not enough: Bitcoin mining is vulnerable. In: Proc. of the 18th Int’l Conf. on Financial Cryptography and Data Security. Christ Church: Springer, 2014. 436–454. [doi: 10.1007/978-3-662-45472-5_28]

[112]

Qin R, Yuan Y, Wang S, Wang FY. Economic issues in Bitcoin mining and blockchain research. In: Proc. of the 2018 IEEE Intelligent Vehicles Symp. (IV). Changshu: IEEE, 2018. 268–273. [doi: 10.1109/IVS.2018.8500377]

[113]

Liu KY, Ohsawa Y. Auction based rewards distribution method in pool mining. In: Proc. of the 2019 Int’l Electronics Communication Conf.. Okinawa: ACM, 2019. 103–110. [doi: 10.1145/3343147.3343162]

[114]

Singh SK, Salim MM, Cho M, Cha J, Pan Y, Park JH. Smart contract-based pool hopping attack prevention for blockchain networks. Symmetry, 2019, 11(7): 941.

[doi:10.3390/sym11070941]

[115]

Shi HW, Wang SL, Hu Q, Cheng XZ, Zhang JS, Yu JG. Hopping-proof and fee-free pooled mining in blockchain. arXiv: 1912.11575, 2019.

[116]

Bag S, Ruj S, Sakurai K. Bitcoin block withholding attack: Analysis and mitigation. IEEE Trans. on Information Forensics and Security, 2017, 12(8): 1967-1978.

[doi:10.1109/TIFS.2016.2623588]

[117]

Chang SY, Park Y, Wuthier S, Chen CW. Uncle-block attack: Blockchain mining threat beyond block withholding for rational and uncooperative miners. In: Proc. of the 17th Int’l Conf. on Applied Cryptography and Network Security. Bogota: Springer, 2019. 241–258. [doi: 10.1007/978-3-030-21568-2_12]

[118]

Vokerla RR, Shanmugam B, Azam S, Karim A, De Boer F, Jonkman M, Faisal F. An overview of blockchain applications and attacks. In: Proc. of the 2019 Int’l Conf. on Vision Towards Emerging Trends in Communication and Networking. Vellore: IEEE, 2019. 1–6. [doi: 10.1109/ViTECoN.2019.8899450]

[119]

Rosenfeld M. Analysis of Bitcoin pooled mining reward systems. arXiv: 1112.4980, 2011.

[120]

Barber S, Boyen X, Shi E, Uzun E. Bitter to better—How to make Bitcoin a better currency. In: Proc. of the 16th Int’l Conf. on Financial Cryptography and Data Security. Kralendijk: Springer, 2012. 399–414. [doi: 10.1007/978-3-642-32946-3_29]

[121]

Canelón J, Huerta E, Incera J, Ryan T. A cybersecurity control framework for blockchain ecosystems. The Int’l Journal of Digital Accounting Research, 2019, 19: 103-144.

[doi:10.4192/1577-8517-v19_5]

[122]

Stephen R, Alex A. A review on blockchain security. IOP Conference Series: Materials Science and Engineering, 2018, 396: 012030.

[doi:10.1088/1757-899X/396/1/012030]

[123]

Herbert J, Litchfield A. A novel method for decentralised peer-to-peer software license validation using cryptocurrency blockchain technology. In: Proc. of the 38th Australasian Computer Science Conf. (ACSC 2015). Sydney: CRPIT, 2015. 27–30.

[124]

Gangan S. A review of man-in-the-middle attacks. arXiv: 1504.02115, 2015.

[125]

Wang KC, Reiter MK. How to end password reuse on the web. In: Network and Distributed Systems Security. San Diego: NDSS, 2019.

[126]

Glazier W, Dhiman M. Automation attacks at scale-credential exploitation. 2017.

[127]

Yuan Y, Wang FY. Blockchain and cryptocurrencies: Model, techniques, and applications. IEEE Trans. on Systems, Man, and Cybernetics: Systems, 2018, 48(9): 1421-1428.

[doi:10.1109/TSMC.2018.2854904]

[128]

Shahid F, Ahmad I, Imran M, Shoaib M. Novel one time signatures (NOTS): A compact post-quantum digital signature scheme. IEEE Access, 2020, 8: 15895-15906.

[doi:10.1109/ACCESS.2020.2966259]

[129]

Wan ZG, Guan ZS, Zhou Y, Ren K. zk-AuthFeed: How to feed authenticated data into smart contract with zero knowledge. In: Proc. of the 2019 IEEE Int’l Conf. on Blockchain. Atlanta: IEEE, 2019. 83–90. [doi: 10.1109/Blockchain.2019.00020]

[130]

Harris CG. Consensus-based secret sharing in blockchain smart contracts. In: Proc. of the 2019 Int’l Workshop on Big Data and Information Security. Bali: IEEE, 2019. 79–84. [doi: 10.1109/IWBIS.2019.8935853]

[131]

Signorini M, Pontecorvi M, Kanoun W, Di Pietro R. ADvISE: Anomaly detection tool for blockchain systEms. In: Proc. of the 2018 IEEE World Congress on Services. San Francisco: IEEE, 2018. 65–66. [doi: 10.1109/SERVICES.2018.00046]

[132]

Sai K, Tipper D. Disincentivizing double spend attacks across interoperable blockchains. In: Proc. of the 1st IEEE Int’l Conf. on Trust, Privacy and Security in Intelligent Systems and Applications. Los Angeles: IEEE, 2019. 36–45. [doi: 10.1109/TPS-ISA48467.2019.00014]

[133]

Zhang SJ, Lee JH. Mitigations on sybil-based double-spend attacks in Bitcoin. IEEE Consumer Electronics Magazine, 2020.

[doi:10.1109/MCE.2020.2988031]

[134]

Zolotavkin Y, Garcia J. Incentives for stable mining in pay per last N shares pools. In: Proc. of the 2019 IFIP Networking Conf. (IFIP Networking). Warsaw: IEEE, 2019. 1–9. [doi: 10.23919/IFIPNetworking.2019.8816835]

[135]

Qin R, Yuan Y, Wang FY. Optimal block withholding strategies for blockchain mining pools. IEEE Trans. on Computational Social Systems, 2020, 7(3): 709-717.

[doi:10.1109/TCSS.2020.2991097]

[136]

Kaci A, Rachedi A. PoolCoin: Toward a distributed trust model for miners’ reputation management in blockchain. In: Proc. of the 17th IEEE Annual Consumer Communications & Networking Conf. (CCNC). Las Vegas: IEEE, 2020. 1–6. [doi: 10.1109/CCNC46108.2020.9045608]

[137]

Gao ZP, Jiang LX, Xia X, Lo D, Grundy J. Checking smart contracts with structural code embedding. IEEE Trans. on Software Engineering, 2020.

[138]

Wang W, Song JJ, Xu GQ, Li YD, Wang H, Su CH. ContractWard: Automated vulnerability detection models for Ethereum smart contracts. IEEE Trans. on Network Science and Engineering, 2020.

[139]

Samreen NF, Alalfi MH. Reentrancy vulnerability identification in Ethereum smart contracts. In: Proc. of the 2020 IEEE Int’l Workshop on Blockchain Oriented Software Engineering. London: IEEE, 2020. 22–29. [doi: 10.1109/IWBOSE50093.2020.9050260]

[140]

Zhang YY, Ma SQ, Li JR, Li KL, Nepal S, Gu DW. SMARTSHIELD: Automatic smart contract protection made easy. In: Proc. of the 27th IEEE Int’l Conf. on Software Analysis, Evolution and Reengineering. London: IEEE, 2020. 23–34.[doi: 10.1109/SANER48275.2020.9054825]

[141]

Wu Y, Tao F, Liu L, Gu JY, Panneerselvam J, Zhu RB, Shahzad MN. A Bitcoin transaction network analytic method for future blockchain forensic investigation. IEEE Trans. on Network Science and Engineering, 2020.

[2]

刘敖迪, 杜学绘, 王娜, 李少卓. 区块链技术及其在信息安全领域的研究进展. 软件学报, 2018, 29(7): 2092–2115. http://www.jos.org.cn/1000-9825/5589.htm

[8]

邹均, 张海宁, 唐屹, 李磊, 刘天喜, 陈晖. 区块链技术指南. 北京: 机械工业出版社, 2016. 109–219.

[42]

比特币区块链分叉研究. 通信技术, 2018, 51(1): 149-155.

[doi:10.3969/j.issn.1002-0802.2018.01.027]

[78]

钱卫宁, 邵奇峰, 朱燕超, 金澈清, 周傲英. 区块链与可信数据管理: 问题与方法. 软件学报, 2018, 29(1): 150–159. http://www.jos.org.cn/1000-9825/5434.htm

区块链应用实践需要解决的7大关键技术问题

用实践需要解决的7大关键技术问题最新活动产品解决方案千帆社区AI原生应用商店企业服务云市场合作与生态开发者服务与支持了解智能云备案文档管理控制台区块链应用实践需要解决的7大关键技术问题作者:半吊子全栈工匠2024.02.16 01:57浏览量:1简介:本文将探讨区块链应用实践中需要解决的7大关键技术问题,包括可扩展性、安全性、互操作性、隐私保护、共识机制、智能合约以及跨链技术。我们将深入解析这些问题,并提供一些可能的解决方案和未来发展方向。在区块链技术的实际应用中,存在许多关键技术问题需要解决。这些问题包括可扩展性、安全性、互操作性、隐私保护、共识机制、智能合约以及跨链技术。以下是针对每个问题的详细解释以及可能的解决方案。

可扩展性

区块链的可扩展性是其核心问题之一。目前,大多数区块链网络都面临可扩展性的挑战,因为它们必须在所有节点之间同步数据,这导致了网络拥堵和性能下降。为了解决这个问题,研究人员正在开发各种扩容方案,如侧链、闪电网络等。这些方案可以将部分交易从主链上移除,从而提高整个网络的吞吐量。

安全性

区块链的安全性是其核心特性之一,但在实际应用中仍需关注。尽管区块链采用了加密技术来保护数据的安全,但仍然存在被攻击的风险。为了提高区块链的安全性,研究人员正在开发更高级的加密算法和防御机制,以防止恶意攻击对区块链网络的威胁。

互操作性

互操作性是指区块链之间的交互能力。由于不同的区块链使用不同的技术和标准,因此它们之间的互操作性成为一个重要问题。为了解决这个问题,研究人员正在开发各种互操作性解决方案,如跨链技术、去中心化应用等。这些方案可以使不同的区块链网络之间进行通信和交互,从而提高整个系统的互操作性。

隐私保护

区块链的透明度是其核心特性之一,但也引发了隐私保护的问题。在某些情况下,我们需要保护用户的隐私数据不被公开。为了解决这个问题,研究人员正在开发各种隐私保护技术,如零知识证明、环签名等。这些技术可以在保护用户隐私的同时,保证区块链的透明度和可验证性。

共识机制

共识机制是区块链网络中节点之间达成一致的重要手段。然而,现有的共识机制存在效率低下和安全性问题。为了解决这些问题,研究人员正在开发更高效的共识机制,如分片技术、DPoS等。这些机制可以提高区块链的效率和安全性,使其更好地适应各种实际应用场景。

智能合约

智能合约是区块链技术的另一个重要应用领域。然而,现有的智能合约存在可编程能力有限、安全漏洞等问题。为了解决这些问题,研究人员正在开发更强大、更安全的智能合约平台,如以太坊等。这些平台可以提供更丰富的可编程能力和更高的安全性,从而更好地支持各种智能合约的应用和发展。

跨链技术

跨链技术是实现不同区块链网络之间互操作性的重要手段。然而,现有的跨链技术存在性能瓶颈和安全性问题。为了解决这些问题,研究人员正在开发更高效、更安全的跨链技术,如侧链、原子交换等。这些技术可以提高跨链交易的性能和安全性,从而更好地支持各种区块链应用的发展。

综上所述,区块链应用实践需要解决的7大关键技术问题包括可扩展性、安全性、互操作性、隐私保护、共识机制、智能合约以及跨链技术。为了更好地支持区块链技术的实际应用和发展,我们需要不断探索和研究这些问题的解决方案,并不断推动区块链技术的创新和发展。

325最热文章云数据库与自建数据库有什么不同?Windows幻兽帕鲁服务器一键搭建我的世界(minecraft) Java版一键部署分布式数据库 GaiaDB-X 金融应用实践2023 年中国数据库十大发展总结

关于智能云百度智能云2.0云智技术论坛行业白皮书智能云公告最新资讯客户案例服务案例方案手册产品手册热门产品云服务器对象存储数据可视化文字识别语音识别图像识别域名服务BML全功能AI开发平台曦灵·数字人直播平台内容分发网络CDN负载均衡智能解决方案智慧城市智能制造智慧能源智慧水务智慧金融智慧媒体智慧电信智慧教育企业上云快速入口控制台备案帮助产品促销企业服务云市场合作伙伴中心支持计划专家服务帮助文档售前服务咨询支持热线(4008-777-818)技术工单建议反馈违规举报关于百度智能云云智一体2.0AI体验中心最新资讯产品动态市场活动客户案例行业解读公告通知联系我们服务与支持文档中心入门指南视频中心培训与认证企业支持计划专家服务重大保障服务自助服务智能助手账户管理管理控制台实名认证域名管理备案管理个人中心财务与订单发票申请消息中心我的工单快速入口成为合作伙伴云市场最新活动企业服务开发者社区SDK中心API平台开发者沙龙飞桨大赛实用工具短网址域名信息查询SSL证书文字识别语音识别图片识别卡证识别文档翻译图片翻译售前咨询热线4008-777-818转1售前在线咨询售后智能助手技术工单违规举报头部7*24小时服务企业支持计划电子化备案建议反馈热门推荐云服务器云磁盘商标注册文字识别弹性公网IP海外CDN数据传输服务内容分发网络人脸与人体识别弹性裸金属服务器SSL证书域名服务容器引擎专线接入音视频直播智能推荐引擎GPU云服务器Elasticsearch云数据库HBase爱速搭低代码平台智能边缘私有网络应用引擎文件存储智能云解析MapReduce简单消息服务轻量应用服务器智能视联网平台云数据库GaiaDB-X日志服务消息服务负载均衡对象存储云虚拟主机数据仓库Palo容器镜像服务云数据库DocDB超级链BaaS平台云原生微服务应用平台解决方案智慧城市智慧金融智能制造智慧能源智慧媒体智慧水务智能图云企业上云区块链物联网热门搜索数字人云手机直播平台数据分析边缘计算域名解析数据可视化自然语言处理数据采集虚拟主机快速链接百度搜索百度大脑百度VR百度AI市场百度统计百度指数百度云加速百度阿波罗百度地图慧眼百度翻译开放平台百度营销百度如流百度安全百度短网址百度有驾百度联盟百度超级链百度数据众包百度网盘企业版百度搜索资源平台

什么是区块链技术? - IBM Blockchain

什么是区块链技术? - IBM Blockchain

什么是区块链技术?

区块链是一种不可篡改的共享账本,用于记录交易、跟踪资产和建立信任

区块链的优点

区块链成功从这里开始

IBM《区块链傻瓜书》现已发行第 3 版,已向超过 6.8 万名读者介绍了区块链。

内容:

区块链基础

区块链如何运作

区块链的实践应用:用例

由 Linux 基金会主导的 Hyperledger 项目

第一次区块链应用的十个步骤

区块链技术概述

区块链定义:区块链是一个共享的、不可篡改的账本,旨在促进业务网络中的交易记录和资产跟踪流程。 资产可以是有形的(如房屋、汽车、现金、土地),也可以是无形的(如知识产权、专利、版权、品牌)。几乎任何有价值的东西都可以在区块链网络上跟踪和交易,从而降低各方面的风险和成本。

为什么区块链很重要:业务运营依靠信息。信息接收速度越快,内容越准确,越有利于业务运营。区块链是用于传递这些信息的理想之选,因为它可提供即时、共享和完全透明的信息,这些信息存储在不可篡改的账本上,只能由获得许可的网络成员访问。区块链网络可跟踪订单、付款、帐户、生产等信息。由于成员之间共享单一可信视图,因此,您可采取端到端方式查看交易的所有细节,从而增强信心,提高效率并获得更多的新机会。

区块链的关键元素

分布式账本技术

所有网络参与者都有权访问分布式账本及其不可篡改的交易记录。 借助这个共享账本,交易只需记录一次,从而消除了传统业务网络中典型的重复工作。

不可篡改的记录

当交易被记录到共享账本之后,任何参与者都不能更改或篡改相关信息。 如果交易记录中有错误,则必须添加新交易才能撤消错误,这两个交易随后都是可视的。  

智能合约

为了加快交易速度,区块链上存储了一系列自动执行的规则,称为 "智能合约" 。 智能合约可以定义企业债券转让的条件,包括有关要支付的旅行保险的条款等等。

区块链如何运作

每个交易发生时,都会被记录为一个数据“区块”

这些交易表明资产的流动情况,资产可以是有形的(如产品),也可以是无形的(如知识产权)。 数据区块可以记录您选择的信息:人、事、时、地、数甚至条件(例如食品运输温度)。

每个区块都与其前后的区块连接

随着资产从一地移至另一地或所有权的变更,这些数据区块形成了数据链。 数据区块可以确认交易的确切时间和顺序,通过将数据区块安全地链接在一起,可以防止任何数据区块被篡改或在两个现有数据区块之间插入其他数据区块。

交易以区块形式组合成不可逆的链:区块链

每添加一个数据区块都会增强对前一个区块的验证,从而也增强对整条区块链的验证。 因此,篡改区块链很容易就会被发现,这也是不可篡改性的关键优势所在。 这不但消除了恶意人员进行篡改的可能性,还建立了您和其他网络成员可以信任的交易账本。

区块链技术的优点

需要改变的方面:运营人员常常在保留重复记录和执行第三方验证等方面浪费精力。 记录保存系统容易受到欺诈和网络攻击的威胁。 有限的透明度会延缓数据验证速度。 随着物联网的到来,交易量呈爆炸式激增。 所有这些因素都会影响开展业务的速度并侵蚀利润,因此我们需要更好的方法。 于是区块链闪亮登场。

更高的信任度

通过使用区块链技术,作为会员制网络中的一员,您可以确信自己收到准确、及时的数据,并且您的机密区块链记录只能与您特别授予访问权限的网络成员共享。

更高的安全性

所有的网络成员都需要就数据准确性达成共识,并且所有经过验证的交易都将永久记录在案,不可篡改。 没有人可以删除交易,即便是系统管理员也不例外。

更高的效率

通过在网络成员之间共享分布式账本,可避免在记录对账方面浪费时间。 为了加快交易速度,区块链上存储了一系列自动执行的规则,称为“智能合约”。

区块链基础知识五分钟简介

1

深入了解区块链技术的基础知识:数据块中如何包含代表任何有价值事物的数据,它们如何在不可篡改的数据链中按时间顺序连接在一起,以及区块链与比特币等加密货币之间有何差异。

2

了解区块链的分散性质如何使其有别于传统的记录保存,探索许可区块链在商业交易中的价值,以及区块链如何使信任和透明度达到新的水平。

3

食品行业只是通过区块链技术实现转型的行业之一。 了解如何在保护网络参与者数据的前提下,追溯食品的种植、收获、运输和加工的时间、地点和方式。

4

区块链之所以能建立信任,是因为它代表了真实的共享记录。每个人都能相信的数据将有助于推动其他新技术的发展,从而能大幅提高效率、透明度和置信度。

区块链网络的类型

可采用多种方式建立区块链网络。 它们可以是公有、私有、许可式区块链网络,或由联盟建立。

公有区块链网络

公有区块链是任何人都可以加入和参与的区块链,如比特币。 缺点可能包括需要大量计算能力,交易的私密性极低或根本没有私密性可言,以及安全性较弱。 而这些都是区块链的企业用例的重要考虑因素。  

私有区块链网络

私有区块链网络与公有区块链网络相似,也是分散的点对点网络。 但是,在私有区块链网络中,由一个组织负责管理网络,控制谁获准参与网络,并执行共识协议,维护共享账本。 这有助于显著提高参与者之间的信任和信心,具体取决于用例。 私有区块链可在企业防火墙后运行,甚至可在企业内部托管。

许可式区块链网络

建立私有区块链的企业通常也会建立许可式区块链网络。 需要注意的是,公有区块链网络也可以成为许可式网络。 这种模式对获准参与网络和执行特定交易的人员施加限制。 参与者需要获得邀请或许可才能加入。

联盟区块链

多个组织可以分担维护区块链的责任。 这些预先挑选的组织决定谁可以提交交易或访问数据。 如果所有参与者都必须获得许可才能参与,并且对区块链共担责任,那么对于企业而言,联盟区块链是理想之选。 

区块链安全性

区块链网络的风险管理系统

 

在构建企业区块链应用时,必须制定全面的安全战略,通过使用网络安全框架、保证服务以及最佳实践,缓解攻击和欺诈带来的风险。

了解有关区块链安全性的更多信息

区块链用例和应用

IBM Food Trust 通过从海洋一直到超市和餐馆全程跟踪捕捞的每一批海鲜,帮助 Raw Seafoods 增强整个食品供应链的信任度。

INBLOCK 发行了基于 Hyperledger Fabric 的 Metacoin 加密货币,旨在更迅速、更方便、更安全地开展数字资产交易。

利用区块链技术,实现变革性的医疗成果

IBM Blockchain Platform 帮助生态系统改变确保信任、数据来源和效率的方式,从而改善患者治疗和组织盈利能力。

阅读:实现变革性的医疗成果 (PDF, 188 KB)

了解 Golden State Foods 如何利用区块链的不可篡改性,跟踪供应链中的货物,帮助保障食品质量。

Vertrax 和 Chateau Software 推出了第一个基于 IBM Blockchain Platform 的多云区块链解决方案,旨在帮助防止大宗石油和天然气分销的供应链中断。

Home Depot 采用 IBM Blockchain 技术,获取有关发货和收货的共享可信信息,从而减少供应商争议并加速解决争议。

行业区块链

行业领军企业使用 IBM Blockchain 消除摩擦,建立信任,实现新的价值。 选择细分行业以了解详细信息。

供应链

医疗保健

政府

零售

媒体和广告

石油和天然气

电信

制造

保险

金融服务

旅游和交通运输 (PDF, 340 KB)

区块链常见问题解答

区块链和比特币有何区别?

比特币是一种不受监管的数字货币。 比特币使用区块链技术作为其交易账本。

这段视频说明了两者之间的差异。

IBM Blockchain Platform 与 Hyperledger 有何关系?

IBM Blockchain Platform 由 Hyperledger 技术提供支持。

这种区块链解决方案可以帮助任何开发人员顺利转变为区块链开发人员。

请访问 Hyperledger 网站以了解详细信息。

了解有关 Hyperledger 的更多信息

我可以在自己期望的任何云上进行部署吗?

IBM Blockchain Platform 软件经过优化处理,可以部署在 Red Hat 最先进的企业级 Kubernetes 平台 Red Hat® OpenShift® 之上。

这意味着您可以更灵活地选择在何处部署区块链网络组件,无论是本地、公有云还是混合云架构。

信息图:在自己选择的云环境中进行部署

我需要更多详细信息。 可从哪里获得?

如需更详细地了解区块链网络的运作方式以及使用方法,请阅读《分布式账本简介》(Introduction to Distributed Ledgers)。

学习 IBM Developer 上的区块链教程,了解更多信息

探索 IBM Blockchain Platform 的功能,这是唯一完全集成的企业级区块链平台,旨在帮助您加速多机构业务网络的开发、治理和运营。

立即注册,下载 IBM Blockchain Platform 白皮书 (PDF, 616 KB)

获取有关 Hyperledger Fabric 的详细信息,了解其独到之处、为何对业务网络至关重要以及如何开始使用。

访问 IBM Developer 上的 Hyperledger 页面

这份开发人员快速入门指南解释了如何使用 IBM Blockchain Platform Starter Plan 构建入门级区块链网络并开始编写代码。

查看开发人员快速入门指南

区块链解决方案

IBM Blockchain 解决方案

IBM Blockchain Platform 属于领先的 Hyperledger Fabric 平台。区块链创新者可充分利用这一平台,通过 Red Hat® OpenShift® 在任何计算环境中构建、运营、管理和发展区块链解决方案。

了解有关 IBM Blockchain Platform 的信息

区块链咨询

作为顶级区块链服务提供商,IBM Blockchain Services 拥有丰富的专业知识,可帮助您基于最佳技术构建强大的解决方案。超过 1,600 名区块链专家使用来自 100 多个实时网络的洞察,帮助您构建和发展。

了解有关区块链咨询的信息

所有 IBM Blockchain 解决方案

采用 IBM Blockchain 解决方案是区块链取得成功的最佳捷径。 IBM 融合了各种网络,使您能够轻松让其他成员加入,共同推动食品供应、供应链、贸易融资、金融服务、保险以及媒体和广告等领域的转型。

查看我们快速发展的区块链解决方案

区块链技术资源

通过艺术诠释区块链技术

我们请来五位对区块链技术知之甚少的艺术家,创作有关区块链主要优点的艺术作品。查看他们的作品,然后在我们最新网络研讨会系列 Blockparty 中,从 IBM 客户和业务合作伙伴那里了解更多信息。

区块链技术博客

网络上有关区块链技术的内容并不缺乏。但对于 100 多万的读者来说,IBM Blockchain Pulse 博客是区块链思想领导力和洞察分析最值得信赖的来源之一。

区块链技术播客

戴上耳机,通过聆听区块链创新者的知识来充实自我。了解区块链技术如何帮助个人重新获得对身份的控制权限、消除全球贫困和减少污染等难题。

区块链技术用例

通过了解创新者如何使用区块链技术 IBM Blockchain Platform 变革业务来获得启发。您可以加入现有的区块链网络,也可以与我们合作创建您自己的区块链网络。

客户成功案例

了解我们的客户如何运用 IBM Blockchain 区块链技术,对组织进行革新,从而获得切实可行的业务成果。

区块链技术后续步骤

浏览我们的参考指南,更深入地了解区块链的各个方面,包括运作方式、使用方法以及实施注意事项。

区块链技术主题

区块链技术的优点

智能合约

面向企业的区块链

区块链安全性

社会公益区块链

区块链和物联网

Hyperledger

区块链系统攻击与防御技术研究进展

区块链系统攻击与防御技术研究进展

  软件学报  2021, Vol. 32 Issue (5): 1495-1525

  PDF    

引用本文

田国华, 胡云瀚, 陈晓峰. 区块链系统攻击与防御技术研究进展[J]. 软件学报, 2021, 32(5): 1495-1525. http://www.jos.org.cn/1000-9825/6213.htm

  

Tian GH, Hu YH, Chen XF. Research Progress on Attack and Defense Techniques in Block-chain System[J]. Journal of Software, 2021, 32(5): 1495-1525(in Chinese). http://www.jos.org.cn/1000-9825/6213.htm  

区块链系统攻击与防御技术研究进展

田国华

,

胡云瀚

,

陈晓峰

    

西安电子科技大学 网络与信息安全学院, 陕西 西安 710071

收稿时间: 2020-07-30; 修改时间: 2020-10-20; 采用时间: 2020-11-29; jos在线出版时间: 2021-01-15

基金项目: 山东省重点研发计划(2019JZZY020129)

作者简介:

田国华(1993-), 男, 博士生, 主要研究领域为区块链, 云计算, 信息安全;胡云瀚(1997-), 男, 硕士生, 主要研究领域为区块链, 信息安全;陈晓峰(1976-), 男, 博士, 教授, 博士生导师, CCF专业会员, 主要研究领域为公钥密码学, 云计算安全, 数据安全, 区块链.

通讯作者:

陈晓峰, E-mail: xfchen@xidian.edu.cn.

摘要: 区块链作为一种多技术融合的新兴服务架构,因其去中心化、不可篡改等特点,受到了学术界和工业界的广泛关注.然而,由于区块链技术架构的复杂性,针对区块链的攻击方式层出不穷,逐年增加的安全事件导致了巨大的经济损失,严重影响了区块链技术的发展与应用.从层级分类、攻击关联分析两个维度对区块链已有安全问题的系统架构、攻击原理、防御策略展开研究.首先,按照区块链层级架构对现有区块链攻击进行归类,介绍了这些攻击方式的攻击原理,分析了它们的共性与特性;其次,分析总结了已有解决方案的思路,提出了一些有效的建议和防御措施;最后,通过攻击关联分析归纳出多个区块链攻击簇,构建了一个相对完整的区块链安全防御体系,展望了区块链技术在未来复杂服务场景下的安全态势.

关键词:

区块链    去中心化    不可篡改性    区块链安全    区块链攻击簇    

Research Progress on Attack and Defense Techniques in Block-chain System

TIAN Guo-Hua

,

HU Yun-Han

,

CHEN Xiao-Feng

    

School of Cyber Engineering, Xidian University, Xi'an 710071, China

Foundation item: Shandong Provincial Key Research and Development Program (2019JZZY020129)

Abstract: Blockchain, as an emerging service architecture integrating multi-technology, has attracted extensive attention from the academia and industry due to its decentralization and immutability. However, blockchain is vulnerable to various attacks due to its complex architecture, and the increasing security incidents year by year lead to huge economic losses, which seriously hampers the development and application of blockchain technology. This work studies the architecture, principle, and defenses of existing blockchain attacks from two dimensions of hierarchical classification and attack association analysis. Firstly, the existing blockchain attacks are classified according to the hierarchical structure of the blockchain, the attack principles of these attacks are introduced, and their commonness and characteristics are analyzed. Secondly, some efficient defenses are given based on the analysis and summary of the existing solutions. Finally, this study constructs a comprehensive blockchain defense system based on several blockchain attack clusters summarized by attack association analysis, and prospects the security situation of blockchain in complex service scenarios in the future.

Key words:

block-chain    decentralization    immutability    block-chain security    block-chain attack cluster    

区块链是一种基于P2P(peer to peer)网络、共识机制、密码学技术、智能合约等多种计算机技术的分布式账本技术, 其多元融合的技术架构赋予了自身公开透明、去中心化、不可篡改和可编程等技术特点, 为解决传统服务架构中的信任问题和安全问题提供了新思路, 给社会传统行业的快速发展带来了新的契机.因此, 区块链技术的发展受到了学术界和工业界的广泛关注[1-4], 其重要性甚至已经上升至我国的国家科技发展战略层面.

然而, 区块链的多技术融合架构在赋予区块链技术多种优良技术特性的同时, 也因为自身结构的复杂性和应用场景的多样性, 而导致区块链面临诸多安全威胁.恶意攻击者可能针对区块链应用的底层技术缺陷、低耦合性等安全漏洞展开攻击, 从而非法攫取利益[5].据区块链安全公司派盾(Peck Shield)的数据显示[6]: 2019年全年大约发生了177起区块链安全事件, 给全球造成的经济损失高达76.79亿美元, 环比增长了60%.随着区块链应用进程的不断推进, 越来越多的安全问题和攻击方式出现在人们的视野中, 其中既存在针对区块链技术架构的普适性攻击方式, 例如51%攻击[7]、双花攻击[8]、交易顺序依赖攻击[9]等, 也存在针对特殊场景的特定攻击方式, 譬如芬尼攻击[10]、粉尘攻击[11]等.这些安全问题不仅会导致直接的经济损失, 还会引起社会各界对区块链技术的质疑, 严重影响了区块链技术的发展进程.因此, 只有采用有效的防御策略和相关技术, 才能保证区块链良好的网络环境, 促进区块链技术的快速发展.

本文第1节概述区块链技术的系统架构、发展历程及安全态势, 按照区块链层级架构对区块链网络中现有的安全问题进行归纳总结, 确定层级分类、攻击关联分析两个综述维度.第2节~第6节从层级分类的横向维度出发, 分别从攻击场景、攻击目标、攻击原理等方面分析论述已有区块链攻击的共性与特性, 并在分析相应解决方案的同时, 给出一些有效的防御策略.第7节从攻击关联分析的纵向维度出发, 研究跨层级的区块链攻击场景, 分析并归纳出一系列的区块链攻击簇, 并针对性地构建出一个相对全面的区块链安全防御体系.第8节总结全文, 评估区块链技术当前的安全态势, 展望区块链技术在未来复杂服务场景中面临的机遇与挑战.

1 区块链概述

1.1 区块链简介

2008年, Nakamoto首次提出一种基于P2P网络、分布式数据存储、共识机制等技术的电子现金系统——比特币[12].该系统允许用户节点自由加入、退出, 因此具备公开透明的特点; 系统中的节点在不需要中心化机构的情况下, 通过P2P网络维护分布式账本即可实现点对点的可信交易, 所以该系统具备去中心化的特点; 全网节点间不需要彼此信任, 通过共识机制即可对各节点维护的账本达成一致认知, 因此, 该系统具备去信任化的特点; 在维护账本的过程中, 系统中的交易被矿工打包成区块并广播至全网, 用户节点根据该区块中存储的上一区块的hash值进行链式存储.当入链“深度”超过6之后, 该区块中的数据将无法被篡改, 所以该系统具备不可篡改性[13].因此, 比特币可以看作是一个由全网节点集体维护的分布式账本, 为解决传统服务架构中的信任问题带来了新思路, 在诸多领域中都具有十分重要的研究和应用价值[14].

区块链则是在比特币技术基础上提炼发展而来的新兴技术体系[15], 在比特币原有技术架构上增加了智能合约、密码学技术等计算机技术, 具备更好的可编程性和数据隐私保护.其发展历程可以大致分为3个阶段[16].

●区块链1.0, 可编程货币时代, 这个阶段奠定了区块链技术的理论基础, 初步形成了相对完善的技术体系, 应用场景主要为数字金融领域, 经典应用为比特币.

●区块链2.0, 可编程应用时代, 通过引入新型的共识算法、智能合约等技术, 赋予区块链更好的可编程性和兼容性.应用场景由金融服务领域向游戏、医疗、教育等领域延伸, 代表应用为以太坊[17].

●区块链3.0, 可编程社会时代, 各行业的区块链应用发生融合, 形成以现实社会为依托的区块链生态体系.由2.0时代的与行业相结合, 转变为与社会相结合.

随着人们对区块链技术的不断重视, 无论是区块链技术的理论研究还是应用开发都得到了快速的发展.到目前为止, 关于区块链技术的理论研究已经进入2.0, 甚至3.0阶段, 而区块链的应用开发则处于1.0到2.0的过渡阶段[18].大量数字货币钱包应用的研发部署以及交易所、商家的出现, 使得区块链技术与金融服务行业相结合, 形成了一个相对成熟的新支付体系.与此同时, 各大银行携手金融科技公司组建区块链大联盟, 例如R3 CEV[19], China Ledger[20]等, 通过成立区块链实验室来发展核心业务, 尝试对区块链2.0阶段展开深入探索, 旨在研究区块链技术与传统行业实际应用场景的兼容性, 并以此建立区块链在2.0阶段的发展标准, 加快区块链技术的应用进程.此外, Cisco[21]联合金融及其他行业公司组成超级账本(Hyperledger)[22]联盟, 对区块链在3.0阶段展开探索, 旨在制定区块链技术未来的发展规划和标准.

1.2 区块链安全态势

区块链的多技术融合架构在赋予自身公开透明、去中心化、不可篡改等特点的同时, 也因其复杂性导致区块链面临诸多安全威胁.在区块链1.0的应用进程中, 区块链技术的安全漏洞在复杂多样的应用场景中愈加明显, 攻击者可以针对这些安全漏洞发起恶意攻击, 从而非法攫取利益[5].此外, 在数据即价值的时代, 攻击者的目标不再局限于代币的双花和盗取, 蕴涵交易隐私、用户隐私的区块链数据成为了攻击者的新目标.

在区块链网络中, 针对相同的安全漏洞或攻击目标, 可能存在多种不同的攻击方式.如图 1所示, 根据攻击漏洞或目标所属的区块链层级, 可对现有区块链攻击方式做如下分类.

图 1

Fig. 1

Fig. 1 Classification of attacks in block-chain

图 1 区块链攻击分类

(1) 数据层攻击: 数据层、网络层和共识层是区块链技术体系中最基础、最必要的3个层级, 而数据层是其中最重要的一层, 主要涉及区块链的数据结构、数字签名、哈希函数等密码学工具.这些密码学工具在保护区块链数据隐私的同时, 其固有的碰撞攻击[23]、后门攻击[24]等安全问题也给区块链数据隐私带来了一定威胁.此外, 攻击者也可能通过交易延展性攻击[25]和恶意信息攻击破坏交易秩序和区块链网络环境.因此, 区块链数据层面临的安全威胁主要包含数据隐私窃取和恶意数据攻击.

(2) 网络层攻击: 网络层是区块链技术体系中最基础的层级, 主要包含P2P网络组网方式、消息传播协议等模块, 赋予了区块链去中心化、不可删除、不可篡改的技术特性.区块链网络层面临的安全威胁主要是针对P2P网络的恶意攻击, 攻击者可能通过漏洞植入、路由劫持、资源占用等方式扰乱区块链网络的正常运行, 也有可能利用交易延迟攻击来破坏区块链网络交易环境.

(3) 共识层攻击: 共识层是区块链技术体系的核心架构, 其中的共识算法可以保证全网节点在去信任化的场景中对分布式账本数据达成共识, 为区块链的去中心化、去信任化提供了保障.共识层面临的安全威胁主要是, 攻击者可以通过各种手段阻止全网节点达成正确的共识.在授权共识机制中, 各节点对共识过程的影响相同, 所以易遭受女巫攻击[26]; 而在非授权共识机制中, 各对等节点利用自身所持资源(如算力、权益)竞争记账权, 进而达成共识.投入的资源越多, 则成功率越高, 因此易遭受51%攻击.攻击者可能出于利益目的, 通过贿赂攻击[27]、币龄累计攻击[28]等方式非法获取大量资源, 从而发起51%攻击, 以实现代币双花、历史修复、期货卖空、自私挖矿等目的.此外, 攻击者还可以通过无利害关系攻击[29]、预计算攻击[30]等方式影响全网共识进程, 进而获利.

(4) 合约层攻击: 合约层是区块链实现点对点可信交互的重要保障, 主要包括智能合约的各类脚本代码、算法机制等, 是区块链2.0的重要标志.合约层面临的安全威胁可以分为智能合约漏洞和合约虚拟机漏洞: 智能合约漏洞通常是由开发者的不规范编程或攻击者恶意漏洞植入导致的, 而合约虚拟机漏洞则是由不合理的代码应用和设计导致的.

(5) 应用层攻击: 应用层是区块链技术的应用载体, 为各种业务场景提供解决方案, 可分为挖矿和区块链交易两类场景.在挖矿场景中, 攻击者可能通过漏洞植入、网络渗透、地址篡改等方式攻击矿机系统, 从而非法获利; “聪明”的矿工也可能利用挖矿机制的漏洞, 通过算力伪造攻击[31]、扣块攻击[32]、丢弃攻击[33]等方式谋求最大化的收益.在区块链交易场景中, 攻击者可能利用撞库攻击[34]、0day漏洞[35]、API接口攻击[36]等方式非法获取交易平台中用户的隐私信息, 也可能通过钓鱼攻击[37]、木马劫持攻击[38]等方式获取用户账户的隐私和资产.

在实际的区块链攻击场景中, 攻击者发起攻击旨在非法获取最大化的利益, 但并不是所有的区块链攻击方式都可以使攻击者直接获利.此外, 部分区块链攻击对实施场景和条件要求过高, 使得其可行性受到了严重的制约.因此, 攻击者通常采用一系列跨层级的区块链攻击方式来实现最大化的获利目的, 本文称这种攻击序列为攻击簇.例如: 现实场景中, 攻击者利用自身资源发起51%攻击是不现实的, 所以他们可能通过傀儡挖矿[39]、贿赂攻击、币龄累计攻击等方式非法获取记账权竞争资源, 然后发起51%攻击, 进而实现双花攻击、历史修复攻击[40]、卖空攻击[41]等.显然, 研究区块链安全态势, 不仅要从层级分类的横向维度对单个攻击展开分析, 还要从攻击关联分析的纵向维度对跨层级的攻击簇进行研究, 才有可能构建出全面有效的区块链安全防御体系.

2 区块链数据层攻击

数据层是区块链技术中最底层的技术框架, 主要封装了区块链中的各式数据结构, 其安全性从根本上决定着区块链网络的安全性.本节将从数据隐私窃取和恶意数据攻击两个方面对数据层的潜在安全威胁进行剖析.

2.1 数据隐私窃取

区块链数据层使用了大量的密码学工具来保证区块链数据的不可篡改性和安全性.然而, 这些密码学工具的固有安全隐患给区块链安全性带来了严峻的挑战.此外, 区块链网络中用户节点在参与区块链交易、账本维护时需要公开一些信息, 如交易内容、交易金额、用户身份等, 而这些信息与用户节点的行为特征密切相关, 存在泄露用户隐私的风险.因此, 区块链网络的数据隐私主要面临以下威胁.

(1) 碰撞攻击(collision attack)[23]: Hash函数是一种单向散列函数, 可以将任意长度的输入转换为固定长度的输出, 而其输出值的长度决定了输出值的数量空间.从数学角度来看, 从均匀分布的区间[1, d]中随机取出n个整数, 至少两个数字相同的概率可用如下公式表示:

$P(d, n) = \left\{ {\begin{array}{*{20}{l}}

{1 - \prod\nolimits_{i = 1}^{n - 1} {\left( {1 - \frac{i}{d}} \right)} , {\rm{ }}n \leqslant d} \\

{1, {\rm{ }}n > d}

\end{array}} \right., $

即Hash函数中, 不同的输入可能会获得相同的输出, 这种现象被称为Hash碰撞.攻击者可能利用Hash函数中存在的Hash碰撞发起碰撞攻击, 进而实现获取用户数据隐私、破坏区块链系统的目的.

(2) 后门攻击(backdoor attack)[24]: 密码算法、零知识证明[42]等工具的使用, 保证了区块链数据的机密性和完整性, 而在实际的区块链开发过程中, 开发人员更倾向于直接调用已有的开源密码算法.这些开源算法中可能存在被植入的后门, 这严重威胁到了区块链数据的安全性.比较典型的案例是: 美国国家安全局在RSA算法中安插后门[43], 一旦用户调用了被植入后门的RSA算法, 攻击者便可以直接通过用户公钥计算得出私钥, 进而解密并访问被加密数据.

(3) 量子攻击(quantum attack)[44]: 时间复杂度是衡量密码算法相对于现有计算水平安全性的重要指标, 而量子计算技术带来的计算能力提升, 打破了密码学算法的安全现状.很多原本计算上不可行的恶意攻击, 在量子计算的架构下变得可行, 这种新的攻击模式被称为量子攻击.量子攻击的出现, 将给现有信息安全体系带来毁灭性打击, 而与信息安全相关的产业势必受到强烈的冲击.在区块链技术体系中, 比特币的挖矿机制、区块链的不可篡改性、区块链数据的机密性等方面都将面临严峻的挑战.

(4) 交易特征分析(transactional analysis)[45]: 攻击者通过窃听、木马劫持等手段获取大量的用户公开信息, 并对匿名账户进行身份画像, 通过用户行为特征分析和交易特征分析相关联的方式, 获取目标用户的身份隐私和交易隐私.以比特币为例, 用户使用一次性身份(假名)进行匿名交易, 而用户资产上的签名是可以被公开验证的.恶意敌手可以通过对用户行为建模分析, 分析比对假名信息, 从而获取用户的真实身份.Androulaki等人[46]在学校中设计模拟实验, 让学生使用比特币作为日常交易货币, 分析人员采用基于行为的聚类技术对比特币交易数据进行分析, 发现即使用户采用比特币推荐的隐私保护方法(一次性地址策略), 也能够将40%的学生身份和区块链地址匹配.

2.2 恶意数据攻击

去中心化的分布式架构赋予区块链不可篡改的特性, 数据一旦上链, 则通过区块链网络广泛流传, 并且不可篡改.攻击者可能利用区块链数据结构的技术弱点, 通过以下方式影响区块链正常运转, 破坏网络环境.

(1) 交易延展性攻击(transaction malleability attack)[25]: 以比特币系统为例, 攻击者在发出提现交易A后, 可以在A确认之前, 通过修改某些交易数据, 使得一笔交易的唯一标识(交易哈希)发生改变, 得到新交易B.假设交易B先被记录到比特币账本中, 那么矿工会认为交易A存在双重支付问题, 拒绝打包进区块中.此时, 攻击者可以向交易所申诉, 尝试获取交易A中标明的代币数量.一旦申诉通过, 则将导致交易所资金大量流失.

(2) 恶意信息攻击(malicious information attack)[47]: 随着区块链技术的不断更迭, 链上数据内容也不再局限于交易信息, 这为一些文件、工程代码, 甚至个人敏感信息上链提供了可能.多元化的数据结构和类型在促进区块链技术快速发展的同时, 也为恶意信息上链提供了可能.而恶意信息攻击的主要方法就是攻击者在区块链中写入恶意信息, 例如病毒特征码、恶意广告、政治敏感话题等, 借助区块链分布式的结构广泛流传.由于区块链不可删除、不可篡改的特性, 一旦恶意信息被写入区块链, 则将导致杀毒软件报毒, 或者引起政治敏感等多方面的问题.

2.3 防御策略与方法

数据层攻击的共性在于攻击者均以区块链数据为攻击目标, 其特性则在于攻击者攻击目的和攻击原理的不同: 数据隐私窃取攻击旨在帮助攻击者获得区块链数据中蕴含的用户隐私, 从攻击原理上又可划分为基于密码学工具安全隐患的攻击和基于交易关联分析的攻击; 而恶意数据攻击则是攻击者根据区块链的技术弱点或特性生成恶意数据并上链, 从而达到妨碍区块链系统正常运行的攻击目的.

从隐私保护的角度来看, 尽管当前区块链技术体系中使用的密码学工具都被认为是安全的, 只要能在开发过程中确保使用无后门的密码算法, 即可保证区块链网络的安全性.但从长远来看, 现有密码学工具的安全性势必受到以量子计算为代表的新一代计算技术的冲击, 只有在适当的时间节点替换更安全、更高效的密码学工具, 才能保证区块链的稳健性和安全性.一方面, 尽管区块链使用的SHA-256等哈希算法目前是相对安全的, 但被攻破只是时间问题, 所以必须加快推进安全哈希算法的研究进展, 设计具备强抗碰撞性的哈希算法, 以保证区块链技术的不可篡改性; 另一方面, 区块链数据的安全性主要依靠密码算法的安全性, 而当前常用的密钥长度为1 024位的RSA加密算法, 在量子攻击下只需几秒即可完成破译, 所以必须加快以抗量子密码算法为核心的抗量子区块链技术体系的预研进程, 保证区块链技术在后量子时代的安全性和可用性.

此外, 虽然当前几乎所有的区块链技术都支持匿名交易, 用户的交易地址通常由用户自行创建保存, 且与真实身份无关, 部分区块链系统尝试利用零知识证明等技术(如Zcash[48])来保护交易过程中用户的身份隐私, 然而, 交易数据关联性分析、用户行为习惯分析等技术仍然可以在一定程度上帮助攻击者获取用户的身份隐私和交易隐私.为此, 用户节点可以考虑采用以下3种防御策略.

(1) 数据混淆: 对交易内容的数据进行混淆, 降低攻击者获取目标信息的成功率, 增加攻击难度.

(2) 数据加密: 将交易中的特定信息加密, 减少攻击者可获取的信息量, 降低其用户身份画像的准确性.

(3) 隐蔽传输: 通过隐蔽信道传输对隐私要求较高的交易数据, 阻止攻击者获取相关信息.

从区块链数据的角度来看, 攻击者之所以可以进行交易延展性攻击, 是因为当前大多数挖矿程序采用OpenSSL开源软件库校验用户签名, 而OpenSSL兼容多种编码格式, 部分编码方案的实现存在一定的问题.例如: 在OpenSSL实现的椭圆曲线数字签名算法(ECDSA)中, 签名(r, s)和签名(r, -s(mod n))都是有效的.因此, 只要签名数据没有产生太大的变化, 都能够被认为是有效签名.Wuille等人[49]提出了一种叫做隔离见证(segregated witness)的方法, 通过将区块签名信息单独存放, 使得区块头的交易哈希值完全由交易信息决定, 在交易内容没有发生变化的情况下, 即使签名信息被改变, 交易哈希也不会发生变化.此时, 攻击者只有掌握了私钥, 才能改变交易的哈希值.同时, 当遇到无法确认的交易时, 矿工应该立即停止交易验证, 并根据区块链上的交易报错信息, 查看是否在短时间内已经发起了这样的交易, 再做进一步处理.

此外, 攻击者实施恶意信息攻击则是因为区块链网络中不存在可以审查上链数据的独立节点, 简单增加内容监管节点的方式势必会弱化区块链网络的去中心化特性, 不具备可行性.所以可以尝试以下方法和策略.

(1) 从区块链通用模型设计入手, 通过设计特定的区块结构来限制可存储数据的格式, 在一定程度上限制特定格式病毒、文件等数据上链, 缓解恶意数据给区块链网络带来的威胁.

(2) 设计相应的激励和奖惩机制, 结合智能合约等技术, 鼓励矿工验证待上链数据的合理性和合法性, 对上传恶意数据的节点进行惩罚, 限制其链上交易行为.

(3) 利用机器学习[50]等技术对待上链数据进行过滤, 可以在一定程度上阻止恶意数据被写入区块链.

3 区块链网络层攻击

网络层是区块链技术体系中最基础的技术架构, 封装了区块链系统的组网方式、消息传播协议和数据验证机制等要素, 使区块链具备了去中心化、不可篡改的技术特性.本节将对P2P网络中存在的安全威胁进行剖析.

3.1 针对P2P网络的攻击

P2P网络主要涉及用户客户端和对等网络结构, 攻击者可能针对这两个方面展开如下攻击.

(1) 客户端漏洞(client vulnerability)[51]: 尽管现有全节点客户端的底层协议互相兼容, 增强了比特币网络的健壮性, 但客户端代码中可能存在诸多安全漏洞, 并且这些漏洞会随着客户端类型的增加而增加.攻击者可以利用0day漏洞扫描等技术扫描客户端中存在的漏洞, 然后利用这些漏洞发起各种攻击. 2018年, 区块链安全公司Peck Shield披露了一个安全漏洞, 攻击者可以向以太坊客户端发送特定恶意报文, 一旦成功, 将导致2/3的以太坊节点下线.

(2) 窃听攻击(eavesdropping attack)[52]: 攻击者可以通过网络窃听, 获取区块链用户节点的网络标识, 并将其与IP地址关联起来, 进而获取用户节点的隐私信息, 甚至可以追溯到用户的实际家庭地址.以比特币为例, 用户通过连接一组服务器来加入比特币网络, 这个初始连接集合就是该用户的唯一入口节点.攻击者可以通过与比特币服务器建立多个连接, 以窃听客户端与服务器端的初始连接, 获得客户端的IP地址.随着交易流经网络, 攻击者将窃听得到的IP地址与已有的客户端入口节点进行匹配, 若成功, 则攻击者便可获知交易的来源.

(3) 日蚀攻击(eclipse attack)[53]: 攻击者通过特定手段使得目标节点只能获得被操纵的、伪造的网络视图, 将其从实际的网络视图中隔离出来, 从而妨碍目标节点正常运转, 以达成特定的攻击目的.如图 2所示, 攻击者操纵多个对等节点与目标节点保持长时间的传输连接, 使其在线链接数达到目标节点的入站连接上限, 从而阻止其他合法节点的连接请求.此时, 目标节点被攻击者从P2P网络中“隔离”出来, 导致目标节点无法正常维护区块链账本.

图 2

Fig. 2

Fig. 2 Eclipse attack

图 2 日蚀攻击

(4) 边界网关协议(border gateway protocol, 简称BGP)劫持攻击[54]: BGP是因特网的关键组成部分, 敌手可以通过劫持BGP来实现操纵互联网路由路径的目的.由于区块链是基于互联网来传递信息的, 劫持BGP可以实现对区块链节点流量的误导和拦截.攻击者一旦接管了节点的流量, 就可以通过影响区块链网络的正常运行来破坏共识和交易进程.例如, 比特币系统的大部分节点都被托管至几个特定的互联网服务提供商, 大约60%的比特币连接都会通过这些特定服务商, 所以攻击者一旦接管了这部分流量, 将可以通过BGP路由劫持破坏区块链网络的完整性, 甚至导致区块链网络瘫痪.

(5) 分割攻击(segmentation attack)[55]: 攻击者通过BGP劫持攻击将区块链网络划分成两个或多个不相交的网络, 此时的区块链会分叉为两条或多条并行支链.攻击者可以在多个支链网络中将同一笔电子货币兑换成现实商品或法币.BGP劫持攻击停止后, 区块链重新统一, 以最长的链为主链, 其他的链上的交易、奖励等全部失效, 攻击者由此获利.

(6) DoS攻击(denial-of-service attack)[56]: 即拒绝服务攻击, 攻击者利用大量网络资源攻击计算机系统或网络, 使其停止响应甚至崩溃, 从而拒绝服务.实际中, 用户节点资源通常受限, 攻击者只能通过图 3所示的分布式DoS攻击(distributed denial-of-service, 简称DDoS)[57]整合零散网络带宽来实施DoS攻击. 2017年5月, Poloniex交易平台遭受了严重的DDoS攻击[58], 导致比特币价格被锁定在1 761美元, 用户无法正常执行交易.此外, 当区块链网络中的大部分矿工无法盈利时, 可能通过拒绝为区块链网络服务而发起BDoS攻击(blockchain denial of service, 简称BDoS)[59], 导致区块链网络瘫痪.

图 3

Fig. 3

Fig. 3 DDoS attack

图 3 DDoS攻击

(7) 交易延迟攻击(transaction delay attack): 比特币闪电网络(lightning network)[60]通常使用哈希时间锁定技术[61]来实现安全的资产原子交换, 其安全性主要依赖于时间锁定和资金锁定.由于每一笔资金交换都需要通过时间锁定来规定该交易必须在某个时间段内完成.一些恶意节点短时间内建立大量交易, 然后故意超时发送, 致使网络发生阻塞, 影响正常运作.

3.2 防御策略与方法

网络层攻击的主要攻击目标是区块链底层的P2P网络, 其共性在于攻击者都是通过扰乱用户的之间的通信, 从而达到不同的攻击目的.根据攻击方式的特性, 区块链网络层攻击大致可以分为信息窃取类攻击、网络路由劫持类攻击和恶意资源占用类攻击.

(1) 信息窃取类攻击: 主要包括客户端代码漏洞和窃听攻击.在针对客户端代码漏洞的攻击场景中, 攻击者利用的漏洞可能是预先恶意植入的后门, 也可能是开发人员编写错误导致的.理论上, 无法完全杜绝类似的漏洞, 所以开发商应在软件安全开发生命周期[62]内, 通过Fuzzing[63]、代码审计[64]、逆向漏洞分析[65]、反逆向工程[66]等技术对客户端的安全性进行评估, 以缓解类似漏洞带给用户的安全威胁.在窃听攻击场景中, 攻击者可以通过网络监听等手段获取用户身份、地址等隐私信息, 其关键在于用户的区块链网络标识唯一, 攻击者可以将窃听得到的IP地址与已有的客户端入口节点进行匹配, 从而获得交易数据来源和用户隐私.为了预防窃听攻击, 用户应采用混淆的交易方法来打破交易过程中用户唯一标识与IP地址之间的一一对应关系.具体地, 多个用户可以通过共享唯一网络标识, 实现“一对多”或“多对一”的交易, 以此混淆用户唯一标识与IP地址之间的一一对应关系, 使得攻击者无法通过匹配用户标识和IP地址来获取用户隐私.此外, 在交易数据的传输过程中, 应使用可靠的加密算法实现数据的加密传输, 防止恶意攻击者对网络节点的信息进行窃取.

(2) 网络路由劫持类攻击: 主要包括日蚀攻击、BGP劫持攻击和分割攻击, 它们的攻击原理相似, 攻击目标分别为单个节点、节点集合和P2P网络.攻击者通过改变节点的网络视图, 将目标节点集合从区块链网络中隔离出来, 从而达成控制区块链网络的目的.以比特币系统为例, 攻击者可以通过这3种攻击迫使部分矿工节点“离线”, 导致区块链全网实际算力的流失, 从而使攻击者的算力在全网总算力中的占比不断上升.当算力超过全网算力的一半时, 攻击者可以以远低于原全网51%的算力发动51%攻击(详见第4节).与通过提升自身算力来实施51%攻击的方式相比, 通过日蚀攻击和BGP劫持攻击来提升自身攻击优势的方式更加经济.攻击者之所以可以发起日蚀攻击, 其关键在于目标节点无法判断已连接节点的身份.为了预防日蚀攻击, Letz等人[67]提出了共识信誉机制BlockQuick.BlockQuick中的网络节点在接受新产生的区块时, 会对矿工的加密签名进行验证, 并将该矿工的身份与共识信誉表中已知矿工的身份进行比对.最终, 当共识得分大于50%时, 网络节点才会接受该区块; 否则, 节点察觉出攻击者的日蚀攻击行为并拒绝该区块.而在BGP劫持攻击和分割攻击场景中, 攻击者主要通过BGP路由劫持实现网络视图分割.针对这个问题, 研究人员提出了自动实时检测与缓解系统(ARTEMIS)[68], 可以在几分钟内帮助服务提供商解决BGP劫持问题, 使得实时流的公共BGP监控服务成为可能.

(3) 恶意资源占用类攻击: DoS, DDoS攻击属于通过恶意资源占用实现的拒绝服务攻击, 目前已经存在很多有效的防御工具, 如DoS防火墙[69]等.而BDoS和交易延迟攻击则属于社会工程学类攻击, 解决此类攻击只能通过不断完善激励制度和奖惩制度、优化网络环境等社会工程学手段.

4 区块链共识层攻击

共识层是区块链技术体系的灵魂, 主要封装了区块链的各类共识算法, 是保证区块链全网节点达成正确共识的关键.本节将从授权共识机制和非授权共识机制两个方面对共识层存在的安全威胁进行分析评估, 并尝试给出一些解决思路.

4.1 针对授权共识机制的攻击

授权共识机制是指在授权网络(联盟链、私有链)中, 节点须通过身份认证才能加入网络, 与其他节点为达成某种共识而共同运行的特定分布式一致性算法.经典的授权共识算法包括拜占庭容错机制(Byzantine fault tolerance, 简称BFT)[70]、实用拜占庭(practical Byzantine fault tolerance, 简称PBFT)[71]以及权威证明算法(proof of authority, 简称PoA)[72]等.BFT系列共识算法可以在总节点数为N=3f+1、恶意节点数不超过f的情况下确保全网节点达成正确的共识(即容错率为1/3).

(1) 女巫攻击(sybil attack)[26]: 泛指网络中攻击者通过操作多个不同身份, 以实现特定目标的攻击行为.在区块链网络中, 攻击者可能通过发起女巫攻击以实现恶意刷票、刷排名、刷信誉等攻击目的.在BFT算法中, 假设A, B, C, D中点C是攻击者, 可以获得多个伪装身份C1, C2, C3, 使得攻击者持有的节点数量超过总节点数的1/3.此时, C操纵C, C1, C2, C3不断发出错误指令, 则共有7个节点(A, B, C, C1, C2, C3, D)运行BFT算法, 最终会导致全网达成一个错误的共识.

(2) 克隆攻击(Cloning attack)[73]: 在PoA系统中, 攻击者利用系统中记账节点集合固定的缺点, 通过BGP劫持、分割攻击等手段将区块链网络视图分为两个, 然后克隆得到两个使用相同地址或公私钥对的克隆体, 并分别部署至两个视图独立的支链.此时, 攻击者可以就同一笔代币在两个网络中进行交易, 待交易结束后, 攻击者解除路由劫持, 区块链网络节点通过最长链或最大权重原则统一区块链主链, 攻击者实现了双花攻击.

4.2 针对非授权共识机制的攻击

非授权共识机制是指在非授权网络(公有链)中, 节点无需身份认证, 即可加入网络与其他节点为达成某种共识而共同运行的特定共识算法.经典非授权共识算法包括工作量证明机制(proof of work, 简称PoW)[12]、权益证明机制(proof of stake, 简称PoS)[28]、信誉证明机制(proof of reputation, 简称PoR)[74]及其衍生算法: 委托权益证明机制(delegated proof of stake, 简称DPoS)[75]、评价证明机制(proof of review, 简称PoR)[76]、PoR/PoS混合共识机制(PoR/PoS-hybrid)[77]等.授权共识算法中, 各节点达成共识消耗的是等价的参与权, 即节点共识权重相等.而在非授权共识机制中, 各节点通过消耗自身持有的“筹码”(PoW中代表算力Work, PoS中代表权益Stake)竞争记账权, 进而达成共识, 即节点共识权重不相等.非授权共识机制可以在本轮竞争“总筹码”为N=2n+1、恶意节点持有“筹码”不超过n的情况下, 确保全网节点达成正确共识(容错率为1/2).

4.2.1 恶意筹码获取

在非授权的共识机制中, 节点持有的“筹码”越多, 则其获得记账权的可能性越大.所以节点可能通过傀儡挖矿、贿赂攻击、币龄累计攻击等方式获取“筹码”, 以提高自己获得记账权的成功率.

(1) 傀儡挖矿攻击(puppet attack)[39]: 攻击者通过植入木马入侵大量网络节点, 部署挖矿程序, 盗用被入侵主机的电力、算力等资源挖矿获利.2018年初, 上百款《荒野行动》游戏辅助被植入挖矿木马, 利用游戏主机显卡的高性能来挖矿获利.同年, 攻击者在大量网站的首页植入Coinhive平台的门罗币(Monero)的挖矿代码[78], 通过网页端盗用网络节点资源挖矿获利, 导致该网站用户的系统运行变慢.

(2) 币龄累计攻击(coin age accumulation attack)[28]: 在基于“POW+POS”混合共识机制的区块链中, 节点持有的“筹码”不仅与其算力有关, 还与其持有的币龄有关.持币量越多、持币时间越长, 则节点持有的币龄越多.因此, 节点可以通过币龄累计攻击来获取更多的“筹码”: 买入一定数量代币后, 持有足够长时间后, 就可以获得足够多的币龄用于竞争记账权.

(3) 贿赂攻击(the bribing attack)[27]: 攻击者通过“恶意悬赏”, 鼓励矿工在攻击者指定的支链上进行挖矿, 当支链挖矿投入的“筹码”超过全网总筹码的一半时, 攻击者便通过51%攻击实现双花攻击、历史修复攻击、卖空攻击等.在PoW中, 贿赂攻击可以看作是一种算力租借方式, 被贿赂矿工需要消耗大量算力来挖矿, 因此攻击者的攻击成本较高; 而在PoS共识机制中, 被贿赂节点不需要消耗大量算力, 以较低成本便可赚取攻击者的悬赏, 因此贿赂攻击所需的成本较低, 常见于PoS系统.

除了通过增加“筹码”提高筹码占比的方法以外, 攻击者还可能通过网络层日蚀攻击、BGP路由劫持、分割攻击(详见第3节)等手段迫使大量节点离线, 使区块链网络的总算力流失, 从而提高自己的记账权竞争筹码占比和记账权竞争的成功率.

4.2.2 51%攻击

一旦存在恶意节点持有的“筹码”超过本轮记账权竞争总“筹码”的一半, 则其可以以较大的优势获得记账权, 并主导区块链达成特定共识, 本文称该攻击为短程51%攻击; 也可以如图 4所示, 利用资源优势计算并生成一条区块链支链, 使其长度超过当前主链, 并代替成为新的主链, 本文称这种攻击为长程51%攻击.

图 4

Fig. 4

Fig. 4 Fork of block chain

图 4 区块链分叉

在实际的区块链网络中, 攻击者可能将51%攻击作为一种子攻击, 进而实现以下几类攻击.

(1) 双花攻击(double spending attack)[8]: 以比特币系统为例, 攻击者在完成交易A后, 针对A花费的代币伪造交易B, 并发动长程51%攻击, 将一条包含交易B的支链变成新的主链.如此, 攻击者对相同的一组代币实现了“双重花费”.2016年8月, 基于以太坊的数字货币Krypton遭受了名为“51% Crew”的51%攻击[79], 攻击者通过租用Nicehash(算力买卖市场)的算力, 导致该区块链损失约21 465KR的代币.2018年, 比特币黄金社区的一位成员发文称: 有人在尝试进行针对交易所的双花攻击, 这一攻击造成了千万美元的损失[80], 同时引起了人们对于去中心化和PoW机制的质疑.

(2) 历史修复攻击(history-revision attack)[40]: 在区块链网络中, 当攻击者无法持续拥有超过竞争本轮记账权总筹码的一半以上筹码时, 攻击者和诚实节点的身份可能发生颠倒, 并导致多轮51%攻击.具体地, 当攻击者A成功发起51%攻击将他的支链变为主链时, 之前的主链变为支链, 诚实节点B变为“恶意节点”, A成为“诚实节点”.一旦B获得超过新一轮记账权总筹码的一半时, 便可作为“攻击者”发起51%攻击, 将他们的“支链”恢复为主链, 此时称B发起了历史修复攻击.

(3) 卖空攻击(shot selling attack)[41]: 51%攻击会破坏区块链系统, 导致其对应的代币贬值.尤其是在PoS共识机制下, “聪明”的矿工一般不会对基于PoS的区块链系统发动51%攻击.因为攻击者成功发起51%攻击, 意味着其持有大量代币, 而代币贬值将会给攻击者带来巨大的经济损失.但在支持证券信用交易的PoS系统中, 攻击者可能通过51%攻击发起卖空攻击来牟取暴利, 具体步骤如下.

① 攻击者持有数量为A的代币, 这些代币的权益需超过本轮投票总权益的一半以上.

② 攻击者通过证券信用交易或金融借贷等手段获得数量为B的代币, B的数量远大于A.这里的B是攻击者所借的证券, 攻击结束后, 需返还等额的代币给借贷方, 如交易所.

③ 攻击者将所借的代币套现, 兑换为具备实际价值的经济实体或货币.

④ 攻击者使用双花攻击、传统网络攻击等手段恶意影响区块链网络的正常运作, 从而使得基于该区块链的数字货币贬值, 此处将贬值率记为Δ.

⑤ 攻击者回购数量为B的代币偿还给借款方, 最终获利Δ(B-A).

(4) 自私挖矿攻击(selfish mining attack)[81]: 与双花攻击不同, 自私挖矿攻击是一种利用短程51%攻击持续性获取记账权, 进而赚取奖励的攻击方式, 常见于PoW系统中.攻击者通过短程51%攻击, 以较大优势比其他节点先挖到“矿”, 暂扣区块并赶在其他节点之前公布出来, 以获取记账权并赚取奖励.在延迟公布期间, 攻击者沿着之前的区块继续挖矿, 以积攒更多的优势, 保证他可以连续获得奖励.这种攻击不会破坏比特币的运行机制, 但会使其他节点的工作量无效化, 浪费了大量的算力.

4.2.3 其他攻击

(1) 无利害关系攻击(nothing at stake attack)[29]: 这是一种针对PoS共识机制的攻击方式, 攻击者可以在区块链产生分叉时, 使用权益同时为多个分叉出块, 以获取最大化的收益.由于攻击者无需像在PoW系统中消耗大量算力, 只需进行权益投票便可实现利益最大化, 因此也被称为“作恶无成本, 好处无限多”的无利害关系问题, 这变相地鼓励了区块链分叉的产生.“聪明”的矿工往往采取“在每条分叉上同时挖矿”的最佳策略以获取最大收益, 这将导致区块链产生过多分叉, 不再是唯一链.全网节点也因此无法达成共识, 进而引起双花攻击、非法交易的泛滥.

(2) 预计算攻击(pre-computation attack)[30]: 在“PoW+PoS”混合共识机制中, 当前区块难度取决于前一区块参数(如哈希值).攻击者可以在生成区块时, 通过随机试错法计算并选择一个对自己产生下一区块最有利的参数.通过这种方式, 攻击者有更大的优势可以获得下一区块的奖励.

(3) 长距离攻击(long range attack)[82]: PoS系统中, 区块的生成速度比PoW快很多, 所以攻击者可能尝试通过重写区块链账本, 从而实现代币双花等目的.这种攻击和PoW中的长程51%攻击的原理相似, 区别在于长距离攻击中, 攻击者不用消耗大量算力, 便可能伪造出一条新的区块链主链, 攻击成本更低, 所以带来的安全威胁更大.

4.3 防御策略与方法

共识层攻击的主要攻击目标是影响区块链的共识进程, 其共性在于攻击者都是利用共识机制的特点或缺陷来提高自身竞争记账权的成功率, 从而使区块链沿着对攻击者有利的方向发展, 以实现妨碍网络正常运行、货币双花、最大获利等实际目的.其特性则在于各个攻击的场景、目的、方式的不同.授权共识机制中, 攻击者持有的有效节点身份数量是影响共识进程的关键.而在非授权共识机制中, 算力、权益等类型的资源才是影响共识进程的关键.同时, 攻击者为了获取更多资源, 可能采用诸多恶意的筹码获取手段来提升自己竞争记账权的成功率.此外, 在一些特殊的系统中, 攻击者无需积累“资源”便可实现最大化收益.

在授权共识机制中, 攻击者需持有超过全网1/3的节点才有可能主导区块链网络达成有利于自己的共识, 即攻击者操纵了多个节点身份, 发起了女巫攻击.在女巫攻击的场景中, 攻击者可能通过伪造等手段获取多个节点身份, 也可能通过胁迫、腐化等手段控制多个节点, 而其他节点无法检测、判断出攻击者持有节点身份的数量及其之间的内部关系.因此, 阻止女巫攻击的关键在于阻止攻击者获取多重身份, 可以考虑以下策略.

(1) 采用节点身份验证机制, 通过身份验证防止攻击者伪造节点身份.目前, 部分私有链采用了PoA共识机制, 如Aura[72]、Clique[83]等, 该机制通过随机密钥分发与基于公钥体制的认证方式, 使得攻击者无法在区块链网络中伪造多个身份, 在一定程度上缓解了女巫攻击.

(2) 采用高成本的多身份申请机制, 通过提高身份伪造成本缓解女巫攻击.尽管节点身份验证机制可以阻止攻击者伪造身份, 但在实际中, 这种方式无法满足诚实节点对多节点身份的正常需求.因此, 可以考虑在区块链中引入首次申请身份免费、多次申请成本指数式升高的身份申请机制, 在满足节点对多身份正常需求的同时, 指数式增加攻击者的攻击成本, 缓解女巫攻击带来的安全威胁.

理论上, 女巫攻击也可以出现在非授权的共识场景中, 但由于非授权共识算法中的节点是通过自身持有的“筹码”竞争记账权, 多重身份伪造意味着攻击者“筹码”的分流, 但“筹码”总量不会发生变化, 而攻击者实施女巫攻击不但不能提高自己获得记账权的成功率, 反而有可能导致其成功率降低, 所以女巫攻击不会对非授权共识机制的共识过程产生实质性影响.

克隆攻击是一种专门针对PoA系统的攻击方式, 攻击者成功实施克隆攻击的关键, 一方面在于PoA系统中记账节点集合恒定不变的固有缺陷, 另一方面在于攻击者是否能通过BGP劫持攻击、分割攻击成功实现网络分区.因此, 解决克隆攻击的关键在于如何阻止攻击者成功实施BGP劫持攻击、分割攻击, 所以可以考虑采用第3.2节中的ARTEMIS系统预防攻击者进行网络分区, 从源头阻止克隆攻击.然而, ARTEMIS系统只能在网络发生异常时发现区块链网络是否发生分区, 如果攻击者仅对部分关键数据进行管控而不影响其他数据的正常传递, 则ARTEMIS也无法阻止此类“无特征”的克隆攻击.此时, 准备出块的区块链节点可以考虑引入基于权重的节点活性检测方法, 主动检测区块链网络是否发生网络分区.具体地, 区块链节点可以通过随机取样的方式选取区块链中已有的区块, 根据其中包含的交易类型、金额、数量等特征计算出该区块生成者的权重.然后随机选择节点并请求包含其心跳信息和上一区块哈希值在内的活性证明, 如果该节点成功证明自身活性, 则验证者累计已验证节点的权重, 并重复上述操作直至累计权重达到预先设置的阈值; 若被选中节点未通过或未参与活性检测, 则证明区块链网络发生分区, 应立即停止出块.尽管该方法与ARTEMIS无法从根本上阻止攻击者在PoA系统中实施克隆攻击, 但能够在一定程度上预防并缓解克隆攻击来的危害, 避免损失.

在非授权共识机制中, 攻击者在本轮“记账权”竞争中需持有超过全网1/2的“筹码”, 才有可能通过51%攻击主导区块链网络达成有利于自己的共识, 进而实现双花攻击、历史修复攻击、卖空攻击等目的.而实际中, 攻击者通常很难自己拥有足够的“筹码”来实施51%攻击, 所以可能会通过各种手段获取“筹码”.为了预防51%攻击, 区块链网络应该采取如下策略, 阻止攻击者通过傀儡挖矿攻击、贿赂攻击等方法获取“筹码”.

(1) 加强区块链客户端的入侵检测能力, 添加防火墙, 阻止攻击者通过木马病毒入侵网络节点, 盗用受害节点的挖矿资源.

(2) 采用针对“恶意悬赏”的惩罚机制, 缓解贿赂攻击带来的危害.全网节点可以对抵制恶意悬赏、恶意攻击达成共识, 缴纳保证金并签订智能合约.一旦出现恶意悬赏, 则对举报者进行奖励, 对恶意节点进行惩罚, 没收悬赏金额和保证金, 限制其网络交易权限.

(3) 在PoS中采用新型的币龄计算方法, 限制节点恶意累计币龄的行为.如: 点点币通过在币龄计算方法中设置节点持币时间上限的方式, 限制了用户所持币龄的上限, 在一定程度上阻止了51%攻击.

(4) 在PoS中采用币龄预警、清零机制, 预防51%攻击.在记账权竞争过程中, 对节点进行身份认证和权益关联.若发现单节点或关联节点所持权益超过全网一半, 则启动预警机制, 阻止共识进程, 然后清空恶意节点持有的全部币龄, 并处罚金.

尽管如此, 攻击者还可能存在其他获取“筹码”的途径.为了进一步阻止51%攻击, 以太坊提出了一种计划内置于PoS系统客户端的Casper[84]机制.Casper机制要求以太坊的矿工锁定一些以太币作为押金, 为刚产生的区块担保.如果投注者是诚实的, 他们将获得相应的交易费用作为奖励; 否则, Casper将没收大量已投注的以太币作为惩罚.显然, 类似Casper机制的保证金奖惩机制可以很好地解决一些社会工程学问题, 从而预防趋利节点发起的各种攻击.如: 在无利害关系攻击场景中, Casper机制可以惩罚大部分恶意行为, 提升了制造恶意分叉的代价, 使无利害关系攻击无法为攻击者带来收益.若矿工想参与挖矿, 则他必须抵押一定数量的以太币作为押金, 保证自己在最长链上挖矿.若该区块被确认上链, 则矿工收回保证金并获得一定的奖励.如果其他矿工尝试在多条支链上挖矿来进行无利害关系攻击, 则会被没收其在多条支链上的押金, 这种概念叫做剑手(slasher)协议[85], 即如果矿工在同一个层级的分叉上同时签署了两份承诺, 该矿工就会失去区块奖励, 甚至被没收押金.

在预计算攻击场景中, 攻击者可以通过预计算确定下一区块计算难度的关键在于区块生成算法中, 上一区块哈希值与下一区块计算难度的关联性.所以为了预防PoS系统中的预计算攻击, 应该重新制定区块生成算法.首先, 可以考虑打断当前区块链计算难度与前一区块哈希值之间的联系, 使得攻击者无法通过预计算控制后续区块的计算难度; 其次, 也可以考虑增加新的计算元素, 使得上一区块的哈希值不再是确定下一区块计算难度的唯一因素.在长距离攻击场景中, 区块链网络无法阻止攻击者伪造一条新的区块链主链, 但可以通过类似BlockQuick的方式, 通过增加身份认证、信誉值对比的方式限制全网节点对该链的接受度来预防长距离攻击.

5 区块链合约层攻击

合约层是区块链2.0技术体系的重要标志, 封装了区块链的各类脚本代码、算法机制和智能合约, 使区块链技术具备了较高的可编程性和实用性.本节将从智能合约和合约虚拟机两方面对区块链合约层存在的安全威胁进行分析, 并尝试给出应对策略.

5.1 针对智能合约的攻击

智能合约是区块链2.0的标志性技术.图灵完备的区块链网络允许用户在区块链网络上开发并部署特定的代码或应用, 但智能合约在编写过程中存在的诸多不足, 可能给区块链网络带来以下安全隐患.

(1) 整数溢出漏洞(integer overflow and underflow vulnerability)[86]: 智能合约代码中, 整数型变量都存在上限或下限, 当变量存储的数值超过上限则称为整数上溢, 超过下限则称为整数下溢.当一个整数变量发生溢出时, 可能会从一个很大的数变成很小的数或者从一个很小的数变成很大的数.利用这个漏洞, 攻击者通常通过输入异常参数致使整数溢出, 从而达到修改地址指针, 实现代码异常调用的目的. 2010年8月, 由于验证机制中存在大整数溢出漏洞[87], 比特币的第74 638块出现了一条包含超过1 844亿个比特币的交易.2018年4月, BeautyChain(BEC)智能合约中出现了一个灾难性的整数溢出漏洞[88], 导致约10亿美元的损失.

(2) 时间戳依赖攻击(time-stamp dependency attack)[89]: 智能合约的执行大多依赖于当前区块的时间戳, 不同的时间戳可能导致智能合约产生不同的执行结果.以抽奖合约为例: 假设智能合约需要根据当前时间戳和其他可提前获知变量计算出一个“幸运数”, 以确定获奖人员.攻击者则可以在挖矿过程中提前尝试使用不同的时间戳来计算“幸运数”, 从而将奖品送给自己想给的获奖者.

(3) 调用深度攻击(call deep attack)[90]: 合约虚拟机在运行过程中会为合约相互调用的深度设置一个阈值, 即使合约调用不存在任何逻辑问题, 但当调用深度超过该阈值后, 合约将不再往下执行, 即合约调用失败.例如在以太坊虚拟机中, 调用深度被限制为1 024.如果攻击者发起一系列递归调用让栈的深度到达了1 023, 之后再调用目标智能合约的关键函数, 就会自动导致这个函数所有的子调用失败.因此, 攻击者可以通过控制调用深度, 使得某些关键操作无法执行.例如在区块链上实现一个拍卖的智能合约, 由于拍卖过程中可能存在多次竞价, 需要反复调用合约中的出价函数, 攻击者可以恶意刷出价次数.当调用深度达到1 023次临界值时竞拍结束, 此时调用转账函数就会失败, 导致拍卖失败.

(4) 误操作异常攻击(misoperation attack): 攻击者通过智能合约A调用智能合约B时, B可能因为执行异常而返回合约未执行的状态, 若A不检查B的结果而继续执行, 则将导致A在B未执行的情况下完成调用.以KoET智能合约[91]为例: 网络中各节点可以通过智能合约买卖“以太币国王”称号来获利, 支付金额由现任国王来决定.当一个节点想购买“国王”称号时, 智能合约A调用智能合约B支付赔偿金给现任国王, 并指定该节点成为新的国王.如果B因为操作异常(如调用深度攻击)导致支付失败, 而A在未检查B执行结果的情况下继续执行, 将导致节点在未支付赔偿金的情况下成为新的“国王”, 原“国王”同时失去国王称号和赔偿金.

(5) 重入攻击(re-entrancy attacks)[92]: 攻击者针对智能合约代码的重入漏洞发起的攻击, 可导致两个智能合约发生循环调用.其中最具代表性的是DAO攻击[93]: 攻击者通过智能合约A向智能合约B发起提现请求, B向A转账并调用A的回调函数.此时, 若A的回调函数中被攻击者写入操作“合约A向合约B发起提现请求”.如此, A再次向B发起提现请求并重复提现过程, 直至提现失败(账户余额不足).2016年6月发生了一起史上最严重的智能合约安全事件——“The DAO”[94], 导致价值6 000万美元的以太币被盗, 迫使以太币硬分叉为以太坊ETH和以太经典ETC.

5.2 针对合约虚拟机的攻击

合约虚拟机是智能合约的调用、执行平台, 是区块链技术支持多样化应用的载体, 提高了区块链的可扩展性, 但仍然可能存在一些安全隐患.

(1) 逃逸漏洞(escape vulnerability)[95]: 攻击者在控制一个虚拟机的前提下, 通过利用虚拟机和底层监控器(virtual machine monitor, 简称VMM)的交互漏洞, 实现对底层VMM或其他虚拟机的控制.虚拟机逃逸后可以在VMM层或者管理域中安装后门、执行拒绝服务攻击、窃取其他用户数据, 甚至控制其他用户虚拟机等.在区块链系统中, 虚拟机在运行代码时会提供一个沙盒环境, 一般用户只能在沙盒的限制中执行相应的代码, 此类型漏洞会使得攻击者编写的恶意代码在运行该沙盒环境的宿主机上执行, 破坏宿主机与沙盒的隔离性.

(2) 逻辑漏洞(logic vulnerability)[96]: 逻辑漏洞是指由于程序逻辑不严谨, 导致逻辑分支被非正常处理或错误处理的漏洞.虚拟机在发现代码不符合规范时, 可能会做一些“容错处理”, 并导致一些逻辑问题.最典型的是“以太坊短地址攻击”[97]: 在ERC-20 TOKEN标准[98]下, 攻击者可以输入一个短地址并调用Transfer方法提币.EVM虚拟机在解析合约代码时, 会通过末尾填充0的方式将短地址补至预期长度.此时, 参数编码可能出现逻辑漏洞, 导致攻击者获取与交易金额不符的代币.

(3) 资源滥用漏洞(resource-exhaustion vulnerability)[99]: 攻击者在虚拟机上部署恶意代码, 恶意消耗系统存储资源和计算资源.所以在虚拟机中必须要有相应的限制机制来防止系统的资源被滥用.在以太坊中, 智能合约采用了gas机制, 攻击者想在以太坊虚拟机上做更多操作, 需要付出经济代价.

5.3 防御策略与方法

合约层攻击的共性在于, 攻击者是尝试通过干扰合约的正常调用来实现不同的攻击目的.其特性在于不同攻击方式的攻击目标和原理不同, 攻击者可以利用智能合约的代码漏洞或合约虚拟机的运行漏洞, 尝试通过非正常的合约调用, 以实现非法获利、破坏区块链网络的目的.

智能合约实质上是由开发者编写并部署在区块链上的一段代码, 其中的漏洞可能是由于开发人员编写的代码不符合标准导致的, 如整数溢出漏洞、时间戳依赖性、调用深度限制等; 也可能是攻击者(开发者)恶意植入的, 如重入攻击.所以在智能合约编写过程中, 开发人员需考虑到以下几方面.

(1) 养成良好的编程习惯, 以严谨的编程逻辑避免智能合约开发过程中出现整数溢出等常见的漏洞.

(2) 针对智能合约的时间戳依赖性, 在合约开发过程中应采用多维参数输入、随机参数输入等, 避免合约执行结果完全依赖于时间戳, 降低合约执行结果的可预测性.

(3) 针对智能合约的调用深度限制, 应在智能合约中预先设置预警惩罚机制.当合约调用次数接近上限时, 智能合约调用预警合约对用户发出提醒, 若用户继续调用合约最终导致合约运行失败, 则预警合约调用惩罚合约对最后调用合约的用户进行惩罚.

(4) 针对重入漏洞, 应在合约开发过程中设置参数检验机制.当智能合约A调用智能合约B时, 应对B返回的参数进行确认, 再继续执行.参数检验机制可以阻止攻击者通过在B植入漏洞发起重入攻击, 也可以阻止攻击者实施误操作异常攻击.

尽管良好的编程习惯和编程策略可以在一定程度上避免智能合约中出现安全漏洞, 但仍有一些安全漏洞是不可避免的.所以在部署智能合约时, 用户可以采用以下方法避免代码漏洞带来的危害.

(1) 安全评估: 在正式部署智能合约前, 应对其进行大量安全测试或白盒审计, 以评估该合约的安全性.

(2) 采用Sereum[92], ZEUS[100]等重入攻击防护工具.其中, Sereum支持多种重入攻击的识别, 不仅适用于待部署合约, 还可以保护已部署智能合约在重入攻击下的安全性, 误报率仅为0.06%.

此外, 合约虚拟机中存在的逃逸漏洞、逻辑漏洞、资源滥用漏洞可能会导致智能合约的异常运行, 攻击者可以在发现这些漏洞后, 在与其他用户订立智能合约时, 利用这些漏洞编写有利于自己的智能合约代码, 使得智能合约失去公平性.所以, 区块链网络在引入智能合约虚拟机时, 应对虚拟机进行系统的代码审计, 分析评估其安全性, 并将其可能存在的安全漏洞披露出来.而用户在部署智能合约时, 除了对合约代码进行常规审计外, 也要根据目标合约虚拟机披露的漏洞对代码进行审计, 做好双向的智能合约运行环境评估.

6 区块链应用层攻击

应用层是区块链技术的应用载体, 为各种业务场景提供解决方案.本节将从挖矿机制和区块链交易两个角度梳理分析区块链应用层存在的安全漏洞和恶意攻击, 旨在给出有效的应对策略.

6.1 挖矿场景中的攻击

“挖矿”是维持PoW系统正常运转的动力, 很多攻击者尝试利用挖矿过程中存在的漏洞获利, 这会导致严重的资源浪费, 进而降低区块链网络的吞吐量.其中, 主要包括针对矿机系统和挖矿机制的恶意攻击.

6.1.1 针对矿机系统的攻击

由于系统代码的闭源特性, 用户无法检查矿机的安全性, 所以存在诸多安全隐患.

(1) 0day漏洞攻击(zero-day (0day) vulnerability)[35]: 目前, 大多数矿机的系统都是通用的, 一旦某个矿机系统被发现存在0day漏洞, 攻击者可以利用该漏洞得到系统控制权限.

(2) 网络渗透攻击(network penetration attack)[101]: 攻击者通过利用多种安全漏洞对客户端系统(如钱包客户端、矿机系统、Web服务系统等)进行持续性渗透, 最终获取系统的控制权限, 威胁矿机的系统安全.该攻击方式不限制于某一特定漏洞, 最终以获取系统权限为目的.

(3) 地址篡改攻击(address tampering attack)[102]: 攻击者在攻陷矿机系统之后, 通过篡改挖矿奖励接收地址的方式, 劫持并盗取原属于目标矿工的挖矿奖励.

6.1.2 针对挖矿机制的攻击

在挖矿过程中, “聪明”的矿工可能利用挖矿机制的一些漏洞做出趋利行为, 导致严重的资源浪费.主要包括:

(1) 算力伪造攻击(computational forgery attack)[31]: 在比特币系统中, 矿池一般通过特定的工作量证明检验算法来检验当前矿工的实际算力.如果算法存在某些漏洞时, “聪明”的矿工可能通过虚报算力来获取更高的奖励, 这将严重影响奖励分配的公平性, 导致矿池的算力流失.

(2) 扣块攻击(block withholding attack)[32]: 也被称为藏块攻击.主要有3种形式: 第1种是矿池下发计算任务后, 恶意矿工直接返回一个错误的计算值, 然后分得矿池根据算力分发的数字货币奖励; 第2种是矿工挖出区块后, 不向矿池返回, 而是私自广播至整个网络, 独自获得相应的区块奖励; 第3种是恶意矿工不会发布自己挖到的区块, 导致矿池收益降低.扣块攻击成本较高, 恶意矿工获利较少, 甚至不获利, 所以该攻击常见于矿池恶意竞争的场景中: 恶意矿工作为“间谍”加入敌方矿池, 在领取敌方矿池奖励的同时, 通过浪费敌方矿池的算力资源来获取己方矿池的报酬, 实现两方获利.扣块攻击的出现, 激化了矿池间的恶意竞争, 严重扰乱了正常的挖矿秩序.

(3) 丢弃攻击(drop attack)[33]: 攻击者将多个具有良好网络连接的节点置于网络中, 这样不但可以方便地获知最新被广播出的区块, 也可以比其他节点更加快速地传播目标区块.当攻击者挖出新区块后不会及时公布, 直至得知有区块被公布时, 攻击者会立即发布自己的区块, 并且利用布置好的节点快速地广播到整个网络, 使得该合法节点开采的区块被丢弃, 从而获取奖励.

(4) 空块攻击(empty block attack)[103]: 空块攻击是早期比特币网络中常见的攻击方式, 攻击者通过生成空块获取比打包交易区块更快的出块速度, 从而以更大的可能性获取出块奖励.空块的产生, 意味着比特币网络有10分钟处于拒绝服务的状态.偶尔出现空块不会对网络产生太大影响, 但短期内出现大量空块, 会使交易池中的交易大量滞留, 平均交易时间延长.

(5) 通用挖矿攻击(general mining attack)[104]: 通用挖矿攻击常见于区块链系统初始化建立的阶段, 当该系统与某个已成熟区块链系统采用相同的架构和共识机制时, 后者系统中具备大量算力的攻击者可能加入新区块链进行挖矿, 以恶意竞争出块奖励.此时容易产生算力集中化问题, 甚至当攻击者算力超过新系统全网一半时, 可能发起51%攻击来实现代币双花、历史修复、卖空攻击等攻击目的.

(6) 交易顺序依赖攻击(transaction-ordering dependence attack)[9]: 区块链交易场景中, 交易的处理顺序不同, 则其产生的结果也不相同.例如: 当攻击者发布一个奖励丰富的解题智能合约时, 攻击者可以监听网络中与之相关的解题交易, 并在目标解题交易被验证、打包上链前, 发布一个具备高Gas值的交易, 将解题合约的奖励降低为0.出于最大获利的目的, 矿工会优先将高Gas值的交易打包上链, 导致解题者无法获得智能合约中原先声明的奖励.

(7) 芬尼攻击(Finney attack)[10]: 芬尼攻击是扣块攻击的一种衍生攻击, 主要发生在支持零确认交易的服务场景中, 可以作为实现双花攻击的跳板.以比特币系统为例, 每笔交易被打包后需要经过6个区块的确认才能真正上链, 这明显无法满足部分服务场景对即时性交易的需求, 所以部分商家推出零确认交易服务, 即用户在完成交易后无需等待确认便可获取服务, 商家则需等待交易数据上链才可以获得相应的费用.攻击者可以利用零确认交易的缺点, 实施芬尼攻击: 当攻击者挖到包含自己交易A的区块时扣留该区块, 然后就A对应的代币与商家完成零确认交易B, 并在B被确认前将包含A的区块广播至全网.此时, 交易B被验证为不合法, 攻击者由此实现了双花攻击.与通过51%攻击实现的双花攻击相比, 芬尼攻击的攻击成本远低于基于51%攻击的双花攻击, 因此相对常见.

(8) 种族攻击(race attack)[105]: 种族攻击可以看作是一种进阶版的芬尼攻击, 可以通过扰乱正常的交易顺序来实现双花攻击.与交易顺序依赖攻击不同的是: 交易顺序依赖攻击针对的是智能合约, 而种族攻击针对的是支持零确认交易的服务场景.如以太坊中, 攻击者在与商家完成零确认交易A后, 就A对应的代币生成一个高Gas值的交易B, “聪明”的矿工会优先将B打包进区块以获取最大化的利益, 导致零确认交易A验证失败, 而攻击者已经提前获取了相应服务, 实现了代币双花.

6.2 区块链交易场景中的攻击

随着部分国家对比特币的认可, 出现了很多区块链数字货币、交易平台, 形成了一套相对完整的区块链电子货币金融体系.用户节点可以通过交易平台进行资产转换、投资等商业行为, 也可以通过钱包账户进行点对点的可信交易.多样的交易平台和用户账户中存在的安全漏洞, 严重威胁着区块链用户的资产安全.

6.2.1 针对交易平台的攻击

交易平台是区块链电子货币金融体系中十分重要的一类实体, 为区块链用户提供了进行各种商业行为的场所.但由于用户的安全意识不足、系统潜在的安全漏洞等原因, 交易平台面临隐私泄露、资产流失的风险.

(1) 弱口令攻击(weak password attack)[106]: 实际中, 用户可能出于方便记忆等原因, 为自己的账户设置了安全级别较低的密码, 攻击者通过简单的猜测、穷举等方式, 即可获取用户的账户访问权限.

(2) 撞库攻击(credential stuffing attack)[34]: 用户由于安全意识不足, 可能在不同的网站使用相同的账号和口令.攻击者可以通过钓鱼攻击等手段收集与区块链、金融等相关网站上的用户账号和口令, 然后在目标交易平台上使用自动化程序逐个尝试, 以获取该平台中用户的账户隐私信息.

(3) 穷举攻击(brute-force attack)[107]: 如果网站不对登陆接口做请求限制或者风险控制, 攻击者可以针对目标值发送多次测试请求, 尝试通过穷举攻击破解某些关键信息.如在短信验证中, 若平台不对短信验证码的有效期或验证接口进行限制, 攻击者可以轻易对其完成破解.若平台对登陆接口未做请求限制, 攻击者可以通过大量的密码字典来暴力破解某个账户的密码.

(4) API接口攻击(application programming interface, 简称API attack)[108]: 用户通常使用私钥key, 通过交易平台中私有的API接口来执行一些敏感操作, 如交易所新订单的确认、取消等.一旦API key泄露, 很可能导致用户账户蒙受经济损失.2018年3月, 币安网大量用户API key泄露[109], 攻击者通过泄露的key直接操作用户交易, 致一万余枚的比特币被用于购买其他币种, 造成币市动荡.

(5) 单点登陆漏洞(single sign-on vulnerability)[110]: 攻击者可以通过跨站请求伪造、跨站脚本攻击等手段来窃取用户登陆的Ticket, 从而盗取目标用户账户中的资金.2017年10月, OKCoin旗下交易所出现大量账户被盗情况[111], 损失金额超过1千万人民币.

6.2.2 针对用户账户的攻击

区块链钱包、交易所账户是用户参与区块链交易的重要工具, 保管着大量的用户隐私和资产, 是攻击者的主要攻击目标.由于服务场景的多样性和复杂性, 用户账户主要面临以下安全威胁.

(1) 钓鱼攻击(phishing attack)[37]: 攻击者通过伪造网页、系统、邮件等形式, 诱导用户进行一系列交易操作, 获取用户的钱包、交易所账户口令, 进而盗取用户资产.

(2) 木马劫持攻击(Trojan horse attack)[112]: 攻击者可以向用户主机中植入木马病毒, 通过按键记录、hook浏览器的方式来获取其账户和口令, 从而盗取目标用户资产.2017年8月, 攻击者利用木马病毒Trickbot对包括Coinbase在内的几家数字货币交易所进行了Web注入攻击[113], 当受害者购买数字货币时, 木马病毒会劫持交易所钱包, 并将资金定向至攻击者钱包, 最终造成用户损失.

(3) 中间人劫持攻击(man-in-the-middle attack)[114]: 目前, 多数交易所都采用HTTPS协议进行交互, 在一定程度上保证了数据安全.但在某些API接口的子域名, 却未使用HTTPS.攻击者可以通过在流量中转处劫持网络流量, 如路由器、网关等流量出口, 从而获取相关信息.

(4) 私钥窃取攻击(private key stealing attack)[115]: 用户丢失私钥意味着用户的账户资产全部遗失, 因此, 用户通常会对钱包的私钥文件进行多次备份, 而不安全的备份存放点存在私钥泄露的风险.目前, 针对比特币的wallet.dat文件广泛出现在互联网中, 例如GitHub、NAS服务器、Web服务等互联网可接入的位置.目前, 已经有攻击者开始扫描密钥文件, 甚至开发相关的木马病毒进行私钥窃取.

(5) 钱包客户端漏洞(wallet client vulnerability): 攻击者可能利用钱包软件自身的漏洞实施攻击, 进而获取用户隐私和资产.例如: 在以太坊多重签名钱包Parity中, 攻击者可以通过间接调用初始化钱包软件的库函数, 将自己更换为受害者钱包的新主人.2017年11月, Parity钱包出现重大Bug[116], 攻击者利用该Bug成为库的主人, 然后调用自杀函数报废整个合约库, 彻底冻结了150多个地址中总计超过50万个ETH, 直接导致上亿美元资金被冻结.

(6) 粉尘攻击(dusting attack)[11]: 比特币系统中, “聪”是最小的BTC单位, 通常将100聪以内的BTC称为粉尘.而且比特币中没有余额的概念, 所有合法的交易都可以追溯到前向一个或多个交易的输出, 其源头都是挖矿奖励, 末尾则是当前未花费的交易输出(unspent transaction output, 简称UTXO).攻击者可以通过向目标用户钱包地址发送“粉尘”来实施粉尘攻击, 当用户使用这些“粉尘”交易时, 会导致其与用户自有UTXO的交易输出发生混合, 攻击者可以通过“粉尘”来追踪用户的钱包地址, 获取用户的隐私信息, 从而勒索、盗取目标用户的资产.

(7) SIM hack[117]: 在一些去中心化钱包中, 用户需要通过SIM(subscriber identity module)卡来验证身份的合法性.用户通常在丢失SIM卡后向运营商申请“移植”SIM卡, 该服务允许客户将该电话号码转移到新的SIM设备中.攻击者可以利用这一漏洞, 通过技术手段将受害者的SIM卡移植到他们控制的电话上, 然后在其电子邮件帐户上启动密码重置流程, 验证码会发送到电话号码中.由于攻击者此时控制着SIM卡, 可以轻易地对受害者账户信息进行篡改, 盗取受害者账户中的财产.

(8) 在线钱包窃取(online wallet theft)[118]: 目前, 很多用户会选择使用在线钱包, 这使得个人的资产安全严重依赖于服务商的安全性.2013年11月, 比特币在线钱包服务商Inputs.io遭受黑客攻击[119], 黑客通过电子邮件账号进行入侵, 进而劫持代管账号, 从中盗取了4 100个比特币.

(9) 重放攻击(replay attack)[120]: 主要包含单链重放攻击和多链重放攻击.单链重放攻击中, 攻击者通常在以太坊等账户余额模型的区块链系统中先发起一笔交易A(如交易所提现), 然后对A的时间戳等数据进行修改, 获得新的交易B并进行广播.因为B的私钥签名和公钥加密齐全, 所以矿工会在付款方余额足够的情况下将交易B打包进新区块.攻击者不断重复便可获取大量资金, 直至付款方账户余额不足为止.多链重放攻击通常出现在区块链硬分叉时, 此时用户的地址和私钥生成算法相同, 所有“一条链上的交易在另一条链上也往往是合法的”, 所以攻击者在其中一条链上发起的交易后, 可以重新将该交易广播到另一条链上, 并得到整个系统的确认.

6.3 防御策略与方法

相比区块链其他层级, 应用层攻击的场景更加具体、复杂, 所以攻击者的手段也十分多样.因此, 区块链应用层面临的安全问题应从实际的服务场景出发, 设计合适的防御策略和相关技术.在挖矿场景中, 攻击者采用的攻击方式大多具备社会工程学攻击特性, 即攻击者会根据矿机漏洞、挖矿机制漏洞采取趋利的挖矿行为, 通过损害矿池或其他矿工利益, 实现自身利益的最大化.

针对矿机的系统漏洞, 可以尝试以下防御策略.

(1) 开发阶段: 开发人员应在开发阶段设定软件安全开发生命周期, 建立安全漏洞管理机制, 在成品销售前对矿机系统进行代码审计、性能测试, 以预防0day漏洞攻击.

(2) 部署阶段: 矿工应该在原有的软件防护基础上增加辅助的安全检测技术, 如入侵检测、防火墙、蜜罐技术等, 进一步预防网络渗透攻击和地址篡改攻击.

此外, 攻击者可以利用挖矿机制中存在的漏洞恶意骗取、竞争出块奖励, 也可以通过扰乱交易顺序实现双花攻击等.其中, 算力伪造攻击和扣块攻击属于恶意骗取矿池出块奖励的攻击行为, 可以尝试以下防御策略.

(1) 身份管理机制: 矿池应结合保证金奖惩机制(如Casper机制)和身份认证机制, 对新加入的矿工进行身份认证, 要求其缴纳一定的保证金, 为其诚实的挖矿行为做保证.

(2) 细粒度的工作量检验算法: 矿池应定时更新其使用的工作量检验算法, 对以往算法中存在的问题进行背书, 作为新算法设计的重要依据.

(3) 合理的绩效制度: 矿池应定时对矿工进行绩效考核, 奖励表现优秀的矿工, 驱逐效率低下的懒惰矿工.对矿池内的矿工行为进行管理和约束, 保证矿池公平有序地运行.

(4) 相互监管制度: 设置矿工相互监管奖励, 一旦矿工因进行算力伪造攻击和扣块攻击而被举报, 则矿池奖励举报者, 没收恶意矿工的保证金, 将其加入黑名单后驱逐出矿池, 不再录用.

丢弃攻击、空块攻击、通用挖矿攻击则属于恶意竞争出块奖励攻击行为.丢弃攻击中, 攻击者主要依赖于网络资源优势, 可以比其他节点更快获取数据上链信息, 也可以更快地完成数据打包上链.所以丢弃攻击可以看作是女巫攻击的变种攻击, 也可以作为自私挖矿攻击的前置攻击, 提高攻击者实施自私挖矿攻击的成功率.为了防止丢弃攻击, 区块链网络可以引入身份认证机制, 对用户潜在的节点身份进行关联分析, 杜绝单个用户通过操纵多个节点获取远高于其他节点的网络优势.在空块攻击场景中, 攻击者之所以可以通过生成空块恶意竞争奖励, 是因为区块链网络不存在对新区块的有效性验证过程.因此, 区块链网络节点只要在获取新区块时执行有效性验证, 即可有效缓解阻止空块攻击.通用挖矿攻击则需要特定的场景才可以实施, 其关键在于攻击者利用新系统与旧系统之间相同的架构和共识机制导致的矿机(算力)通用问题, 通过成熟系统的中算力对新系统实现算力压制, 从而恶意竞争出块奖励, 甚至实施双花攻击、卖空攻击等恶意行为.因此, 新区块链项目必须考虑系统封闭性、专机专用等问题, 从根本上杜绝算力通用导致的通用挖矿攻击.

芬尼攻击、种族攻击、交易顺序依赖攻击属于扰乱交易顺序类的攻击方式.芬尼攻击和种族攻击主要针对的是支持零确认交易的服务场景, 前者主要利用挖矿便利, 攻击者只有在挖到包含自己交易的区块时, 才会通过零确认交易扰乱交易秩序, 实现代币双花等目的; 而后者和交易顺序依赖攻击则是通过提高交易Gas的方式扰乱交易顺序, 进而实现代币双花等目的.这两者的共性在于区块链节点在接受新区块时未验证区块内交易与交易池中的未确认交易是否存在冲突.由于零确认交易可以满足商家的即时性支付需求, 所以直接通过禁止零确认交易来阻止芬尼攻击和种族攻击的方式不具备可行性.区块链系统可以考虑开通钱包的子账户来保证零确认交易的安全性, 即, 用户需要通过专门的子账户才能完成零确认交易操作.此时, 零确认交易由矿工单独打包验证, 在一定程度上可以避免零确认交易与普通交易的冲突.此外, 为了避免攻击者扰乱交易顺序, 区块链系统可以要求矿工在打包交易时, 通过代币锁定技术缴纳保证金之后再广播新区块.其他节点在接受新区块时, 可以就区块内交易在交易池中进行遍历验证: 如果通过验证, 则接受新区块; 否则, 该节点可以通过举报矿工恶意行为来获取矿工被锁定的保证金及出块奖励.

在区块链交易场景中, 攻击者的最终目的是通过直接或间接手段获取用户节点的账户信息, 进而盗取资产, 主要存在交易平台和用户账户两个攻击目标.为了保证交易平台中用户的账户隐私, 交易平台应采取以下措施.

(1) 引入密码安全等级分析机制.系统可以在用户设置账户密码时, 对当前密码的安全性进行实时评级, 避免用户使用弱口令, 从而预防弱口令攻击.

(2) 交易平台应在用户登录账号时进行人机识别, 在一定程度上缓解撞库攻击.而用户也应该注意避免多网站的密码通用问题, 可以考虑对账户进行安全等级评估, 相同安全等级的账户采用相同的密码, 这样既可以缓解撞库攻击, 也能避免账户密码过多给用户带来的密码管理问题.

(3) 通过限制目标账户的登陆频率和限制单节点的访问请求频率, 从被访问端和访问端两个方向限制攻击者的攻击能力, 可以有效预防穷举攻击.

(4) 启用API调用接口认证机制, 合理管理交易平台的API接口, 预防API接口攻击.

(5) 提高开发工程师的安全素养, 在一些敏感系统里单独实现一些额外的认证机制, 避免单点登陆漏洞.

此外, 用户在日常交易中应该提高个人的安全意识, 采取相应的安全措施, 避免在交易过程中泄露了个人账户的隐私数据, 具体需要从以下几方面考虑.

(1) 培养好安全意识, 提高对危险网站、邮件的辨识能力, 预防钓鱼攻击.

(2) 构建全面的系统安全防护体系, 安装防火墙等安全软件, 预防木马劫持攻击.

(3) 利用安全的路由协议对区块链网络实现全方位覆盖, 预防中间人劫持攻击.

(4) 实现离线的密钥管理, 预防攻击者对在线密钥存储中的私钥窃取.

(5) 利用代码审计、逆向漏洞分析、反逆向工程等技术对钱包客户端代码的安全性进行评估.

(6) 在使用数字货币钱包时, 对一些来源不明的小额资金“粉尘”进行标记并禁用, 预防粉尘攻击.

(7) 使用专门的零钱包存储该用户持有的“粉尘”级资产, 其中既包含攻击者发送的“粉尘”, 也可能包含用户自身交易产生的小额资金.为了资产安全, 该零钱包中的资金专用于隐私性不高的交易.

在针对认证机制漏洞的SIM hack攻击场景中, 攻击者主要是利用服务商提供的“账户找回”服务中的安全隐患来成功获取目标账户.因为基于手机、邮件的二次验证并不是完全安全的方法, 因此服务商应尝试使用采取2FA等具备更高安全性的有更高级别安全设置的服务.2FA是基于时间、历史长度、实物, 例如信用卡、SMS手机、令牌、指纹等自然变量结合一定的加密算法组合出的一组动态密码, 一般每60s刷新一次.这种方法不容易被破解, 相对较安全.

理论上, 基于UTXO结构的区块链系统可以抵抗重放攻击, 因为转账是基于每一笔UTXO进行的原子级别操作, 不存在一笔UTXO被重复扣除的情况.但是在类似以太坊的账户结构中, 交易是通过余额判断合法性的, 只要余额足够就可以进行重复扣款转账, 一笔交易的信息进行多次广播的重放攻击是可行的.交易延展性攻击和重放攻击非常相似, 它们都是对交易所发起的攻击方式, 但重放攻击主要针对区块链硬分叉的情况, 而交易延展性攻击讲究的是区块标识的可变性.

此外, 基于Hyperledger Fabric的区块链也可以抵抗重放攻击, 该框架中采用Endorser节点对客户端提交的交易预案进行身份验证, 若交易信息异常, 则系统终止操作, 这种方式可以有效阻止重放攻击.以太坊的账户结构中存在一个参数Nonce, 该参数的值等于从这个账户中发出交易的数量.当交易完成验证后, 发送者账户中的Nonce值会自动增加1.当矿工验证一笔交易是否合法的时候, 矿工会对比交易包含的Nonce值, 并与该交易的发送者账户中的Nonce值进行比较, 相等才算作合法交易, 并对该交易打包出块.单链重放攻击无法修改发送者账户的数值, 因此当接受到重复交易时, 矿工会直接判定它无效, 从而阻止了单链重放攻击.面对多链重放攻击时, 可以参考以太零开发团队的做法, 建立一个交易锁.当一笔交易发起时, 交易锁将被广播到整个区块链网络.此时, 交易锁会锁定交易关联的数字资产.交易在主节点验证期间, 原交易资产被锁定无法使用, 以此达到抵御多链重放攻击的目的.

7 区块链攻击簇与安全防御体系

区块链网络中, 攻击者可能通过单个区块链攻击, 也可能通过包含多种攻击的区块链攻击簇来实现最大化获利的目的.如表 1所示, 本文对这些区块链攻击方式进行了整理和分析, 梳理了各种攻击方式之间的潜在联系.此外, 很多攻击方式不只局限于前文所述的攻击目标(场景)和攻击目的.攻击场景不同, 实施方式多样, 带来的安全威胁也不尽相同.为了更好地预防这些攻击, 本节进一步研究了区块链攻击簇的基本原理, 整理出了本文涉及的区块链攻击方式中所有潜在的攻击簇(如图 5所示), 并尝试构建出了一个较为全面的区块链安全防御体系.

表 1(Table 1)

Table 1 Summary of block-chain attacks

表 1 区块链攻击总结

分类

攻击方式

主要攻击目标

主要攻击目的

潜在前置(子)攻击

潜在后续攻击

攻击难度

数据层攻击

数据隐私窃取

碰撞攻击

Hash函数

破坏系统安全

-

卖空攻击

后门攻击

密码学算法

-

卖空攻击

量子攻击

密码学工具

-

卖空攻击

交易特征分析

交易数据

获取用户隐私

窃听攻击, 中间人劫持攻击

粉尘攻击

恶意数据攻击

交易延展性攻击

交易数据

代币双花

-

双花攻击

较低

恶意信息攻击

区块数据

破坏网络环境

-

-

网络层攻击

针对P2P网络的攻击

客户端漏洞

网络节点

获取节点控制权

0day漏洞攻击

木马劫持攻击、窃听攻击

较低

窃听攻击

获取用户隐私

客户端漏洞

交易特征分析

日蚀攻击

隔离目标节点

BGP劫持攻击、女巫攻击

51%攻击

BGP劫持攻击

区块链网络

分割网络

-

分割攻击, 日蚀攻击

分割攻击

BGP劫持攻击

双花攻击, 克隆攻击

DoS攻击

拒绝服务

-

卖空攻击

DDoS攻击

木马劫持

卖空攻击

BDoS攻击

-

卖空攻击

交易延迟攻击

影响交易进程

-

-

共识层攻击

针对授权共识机制的攻击

女巫攻击

BFT, PBFT

妨碍共识

私钥窃取攻击

日蚀攻击

较低

克隆攻击

PoA

代币双花

分割攻击

双花攻击

较高

针对非授权共识机制的攻击

恶意筹码获取

傀儡挖矿攻击

客户端资源

获取筹码

木马劫持攻击、网络渗透攻击

51%攻击

较高

币龄累计攻击

PoS, DpoS, PoW/PoS

-

51%攻击

较高

贿赂攻击

PoW, PoS, DPoS

-

51%攻击

较高

51% 攻击

双花攻击

PoW, PoS

代币双花

51%攻击、分割攻击等

卖空攻击

历史修复攻击

PoW, PoS, DPoS

代币双花、回滚交易

51%攻击

卖空攻击

卖空攻击

PoS

期货倒卖获利

DoS/DDoS攻击、双花攻击等

-

自私挖矿攻击

PoW

恶意竞争出块奖励

51%攻击、丢弃攻击等

-

其他攻击

无利害关系攻击

PoS

-

-

预计算攻击

PoS

-

自私挖矿攻击

长距离攻击

PoS

代币双花

-

双花攻击

合约层攻击

针对智能合约的攻击

整数溢出漏洞

合约代码

恶意篡改变量

-

-

时间戳依赖攻击

预测合约结果

-

-

调用深度攻击

合约调用

恶意调用获利

-

误操作异常攻击

误操作异常攻击

调用深度攻击

-

重入攻击

-

-

针对合约虚拟机的攻击

逃逸漏洞

合约运行

恶意运行获利

-

木马劫持攻击

逻辑漏洞

-

-

较低

资源滥用漏洞

虚拟机硬件资源

浪费系统资源

-

-

应用层攻击

挖矿场景中的攻击

针对矿机系统的攻击

0day漏洞攻击

应用程序或系统

入侵矿机系统

-

客户端漏洞

网络渗透攻击

网络系统

木马劫持攻击、钓鱼攻击等

篡改攻击、傀儡挖矿攻击

较低

地址篡改攻击

区块链交易

篡改奖励地址

木马劫持攻击、网络渗透攻击

-

应用层攻击

挖矿场景中的攻击

针对挖矿机制的攻击

算力伪造攻击

矿池

骗取联合挖矿奖励

-

-

扣块攻击

-

芬尼攻击

丢弃攻击

诚实矿工

恶意竞争出块奖励

-

自私挖矿攻击

空块攻击

诚实矿工

-

-

通用挖矿攻击

初始化区块链系统

-

51%攻击

较高

交易顺序依赖攻击

区块链交易

扰乱交易顺序

-

芬尼攻击、种族攻击

较低

芬尼攻击

零确认交易场景

代币双花

扣块攻击、交易依赖攻击

双花攻击

较低

种族攻击

零确认交易场景

代币双花

交易顺序依赖攻击

双花攻击

较低

区块链交易场景中的攻击

针对交易平台的攻击

弱口令攻击

用户账户

获取账户控制权

-

网络渗透、在线钱包窃取

撞库攻击

-

较低

穷举攻击

-

单点登录漏洞

-

网络渗透

API接口攻击

-

针对用户账户的攻击

钓鱼攻击

账户隐私

-

木马劫持攻击、SIM hack等

中间人劫持攻击

-

SIM hack、交易特征分析等

木马劫持攻击

钓鱼攻击、逃逸漏洞等

私钥窃取、傀儡挖矿攻击等

较低

私钥窃取攻击

木马劫持攻击

女巫攻击

钱包客户端漏洞

0day漏洞攻击

私钥窃取

粉尘攻击

获取账户资产

交易特征分析

-

较低

SIM hack

账户控制权

钓鱼攻击、中间人劫持攻击等

在线钱包账号窃取

较低

在线钱包窃取

SIM hack等

-

重放攻击

账户资产

-

-

Table 1 Summary of block-chain attacks

表 1 区块链攻击总结

图 5

Fig. 5

Fig. 5 Associations view between block-chain attacks

图 5 区块链攻击关联视图

7.1 区块链攻击簇

区块链的技术特性和安全性, 是人们考量区块链技术实用性的两个重要指标.理论上, 任何区块链攻击造成的危害达到一定程度时, 均可导致区块链网络产生动荡, 使其中流通的代币面临贬值风险.尤其是在支持证券信用交易的区块链网络中, 攻击者可以通过卖空攻击倒卖期货产品获利.因此, 本节将从卖空攻击出发, 对所有可能导致代币贬值的安全因素进行溯源分析, 探究导致区块链网络安全问题的根本原因.

在支持证券信用交易的区块链网络中, 本文涉及的所有区块链攻击均为卖空攻击的前置攻击, 即所有攻击方式构成一个卖空攻击簇.前置攻击的安全威胁越大, 则其导致的代币贬值率Δ越大, 卖空收益Δ(B-A)也越大.如图 5所示, 部分攻击方式(图 5虚线箭头标识)需要造成大规模的网络损失才有能帮助攻击者实现最大化的卖空获利, 而一些攻击方式(图 5实线箭头标识)则可以轻易帮助攻击者实现最大化的卖空获利.此外, 卖空攻击的直接前置攻击可能是单个攻击(图 5右侧), 也可能是攻击簇(图 5左侧).其中, 碰撞攻击、后门攻击、量子攻击属于区块链数据层攻击, 严重威胁了区块链底层数据的安全性.一旦攻击者通过这些攻击实现卖空攻击, 则将导致区块链系统崩溃, 由此实现最大化的卖空获利(Δ=1).攻击者也可以通过DoS系列攻击(DDoS, BDoS)使区块链网络瘫痪, 从而获取较大的代币贬值率, 实现最大化的卖空获利.

此外, 完整的攻击簇也可以作为卖空攻击的前置攻击, 其中包括:

(1) 双花攻击簇.如图 5所示, 双花攻击簇主要存在7种潜在的双花攻击前置攻击方式, 其中包括2种攻击簇初始攻击: 长距离攻击和交易延展性攻击; 还包括5种中间攻击: 芬尼攻击、种族攻击、分割攻击、克隆攻击和51%攻击, 主要涉及扣块攻击、BGP劫持攻击、通用挖矿攻击、贿赂攻击、币龄累计攻击等16种攻击簇初始攻击.这些攻击方式可以在具体服务场景中, 使攻击者生成的无效交易(代币已支出或待支出)合法化, 从而达成“代币双花”的最大获利目的.

(2) 历史修复攻击簇.历史修复攻击实质上是通过多轮51%攻击实现交易回滚、历史修复的攻击方式, 所以其潜在的前置攻击方式只有1种中间攻击: 51%攻击, 涉及通用挖矿攻击、贿赂攻击、币龄累计攻击等12种攻击簇初始攻击.这些攻击方式侧重于帮助攻击者获取超过全网一半的记账权竞争资源, 攻击者可以通过恶意竞争记账权实施51%攻击, 从而实现交易回滚、历史修复的攻击目的.

(3) 自私挖矿攻击簇.主要包括3种潜在的前置攻击方式, 其中包括2种攻击簇初始攻击: 丢弃攻击和预计算攻击以及1种中间攻击: 51%攻击, 涉及通用挖矿攻击、贿赂攻击、币龄累计攻击等12攻击簇初始攻击.这些攻击方式侧重于帮助攻击者积累并保持恶意竞争挖矿奖励的优势.这3种前置攻击的结合使用, 不仅可以帮助攻击者恶意竞争挖矿奖励, 还可以帮助攻击者积累优势, 使其可以连续获得区块奖励.其中, 51%攻击可以帮助攻击者建立前期的攻击优势, 而丢弃攻击和预计算攻击则可以帮助攻击者实现最大化的获利.如果攻击者无法拥有足够的网络资源来实现网络监听和快速的数据传播, 则其无法保证攻击者总是可以在其他节点之前将自己的区块公布至全网.一旦攻击者自私挖矿失败、连胜中断, 则其不仅无法继续获取出块奖励, 还会失去自己前期通过51%攻击和预计算攻击积累的全部攻击优势.因此, 实现丢弃攻击是提高自私挖矿攻击可行性的关键.

(4) 在线钱包窃取攻击簇.主要包含5种潜在的前置攻击方式, 其中包括3种攻击簇初始攻击: 弱口令攻击、撞库攻击、穷举攻击以及2种中间攻击: 私钥窃取攻击和SIM hack攻击, 涉及钓鱼攻击、逃逸漏洞、客户端漏洞、0day漏洞攻击等4种攻击簇初始攻击.这些攻击方式侧重于帮助攻击者获取用户的账户隐私, 攻击者通过劫持用户账户来盗取账户资金.

(5) 地址篡改攻击簇.地址篡改攻击可以分为奖励地址篡改和收款地址篡改两种, 其攻击原理基本一致, 潜在的前置攻击方式包括2种中间攻击: 网络渗透攻击和木马劫持攻击, 主要涉及弱口令攻击、撞库攻击、穷举攻击、单点登录漏洞等9种攻击簇初始攻击.这些攻击方式侧重于帮助攻击者获取交易所、矿机系统等区块链网络实体的系统漏洞, 攻击者可以根据这些漏洞进行地址篡改, 劫持并盗取攻击目标的入账资金.

(6) DDoS攻击簇.DDoS攻击的核心思想是: 攻击者通过一些网络手段, 整合零散的网络资源来攻击区块链网络, 导致网络瘫痪拒绝服务.DDoS攻击簇的潜在前置攻击方式包含1种中间攻击: 木马劫持攻击, 涉及4种攻击簇初始攻击: 钓鱼攻击、逃逸漏洞、客户端漏洞、0day漏洞攻击.这些攻击簇初始攻击旨在帮助攻击者获取用户节点的控制权, 攻击者通过这种方式控制大量的用户节点, 即可获取足够的网络资源来实施DDoS攻击, 从而实现期货卖空获利等潜在攻击目的.

(7) 粉尘攻击簇.粉尘攻击是攻击者追踪目标用户钱包、账户, 从而盗取用户账户资产的攻击方式.这种攻击簇的潜在前置攻击方式主要包括2种中间攻击: 窃听攻击和交易特征分析, 涉及3种初始攻击: 中间人劫持攻击、钱包客户端漏洞和0day漏洞攻击.攻击者可以利用这些初始攻击发动中间攻击来获取用户钱包、账户信息, 从而间接实现盗取用户钱包、账户余额的攻击目的.

(8) 误操作异常攻击簇.主要包括1种潜在前置攻击: 调用深度攻击, 旨在帮助攻击者在智能合约运行的场景中, 根据合约调用次数受限的特点实现误操作, 从而获利.

综上所述, 卖空攻击簇主要涉及37种初始攻击, 这些攻击方式反映了区块链网络最底层的安全漏洞和威胁.因此, 构建区块链安全防御体系的关键, 是在区块链系统模型设计阶段解决这些初始攻击所依赖的安全漏洞, 从根本上缓解、甚至解决区块链系统面临的诸多安全问题.

7.2 区块链安全防御体系

区块链安全防御体系的构建, 仅依靠简单堆砌现有攻击解决方案是显然不够的, 并且很多解决方案只能在一定程度上缓解相应攻击方式带来的危害, 这降低了区块链网络的安全性上限.因此, 构建区块链安全防御体系, 应当从现有的攻击方式出发, 逆向追溯并解决所有的潜在前置攻击, 从根本上缓解或解决这些区块链攻击.同时, 结合现有的一些区块链安全技术, 进一步解决遗留的安全问题.本节将在攻击关联分析的基础上, 通过设计区块链底层系统模型, 从源头解决上述37种初始攻击依赖的安全漏洞和技术缺陷; 同时, 结合已有的区块链上层安全防御技术, 为区块链网络提供追加式的安全保护, 以此构建出较为全面的区块链安全防御体系.

7.2.1 区块链底层模型设计

区块链系统模型设计的合理性, 往往决定着区块链网络的安全性和实用性.如: 密码学工具的安全性决定着区块链数据的安全性, 共识机制的方案特性决定着区块链网络交易的吞吐量和安全性等.因此, 构建区块链安全防御体系的关键在于设计出一个合理、安全、逻辑紧密的系统模型.根据卖空攻击簇涉及的37种初始攻击的特性, 本文将从以下几个层面出发设计区块链系统模型.

(1) 底层技术安全: 包括密码学工具的安全性、P2P网络的安全性, 可从以下几点考虑.

① 严格评估待选密码学工具的安全性, 避免采用被植入后门的密码学工具, 以阻止攻击者发起的碰撞攻击、后门攻击和交易延展性攻击.

② 提高系统对多种密码学工具的兼容性, 以满足用户在多样化服务场景中的安全性需求.

③ 根据实际安全需求选择备用的密码学工具作为应急预案, 以应对量子攻击、密码算法破解等安全事件带来的安全威胁, 提高系统稳健性.

④ 设计并部署数据过滤模型和数据上链协议, 避免攻击者通过恶意信息攻击破坏区块链网络环境.

(2) 运行机制安全: 科学合理的区块链运行机制是保证区块链网络良好运行的关键, 所以在构建区块链系统时, 开发者应尝试引入科学合理的挖矿机制、共识机制和交易机制.

① 公平的挖矿机制: 系统应在矿工的客户端内置Casper协议, 利用惩罚措施阻止恶意矿工通过无利害关系攻击和空块攻击实现最大化收益.在矿池挖矿的场景中, 矿池应采用矿工算力监测和工作量检验算法并行的方式, 评估矿工工作量的合理性, 以此杜绝矿工通过算力伪造攻击和扣块攻击获取额外奖励的可能性.通过这些方法, 可以在一定程度上保证矿工的平均盈利, 避免矿工因无法盈利而发起BDoS攻击.

② 安全的共识机制: 由于构造的差异性, 不同共识机制所具备的优势和缺陷也不尽相同.为了保证全网节点竞争记账权的公平性, 应从以下几点考虑.

(a) 针对授权共识机制中存在的女巫攻击, 区块链系统需要引入身份验证机制对网络节点进行身份验证和身份关联分析, 对申请多个身份的用户征收费用, 提高攻击者通过申请多个身份实施女巫攻击的攻击成本, 在一定程度上缓解女巫攻击.

(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) 用户行为安全: 用户在区块链网络中的不良行为习惯可能导致其面临隐私信息泄露和资产被盗的风险, 因此, 健全的用户行为规范是区块链安全防御体系的重要一环.首先, 用户节点在设置账户口令时应避免使用弱口令, 同时避免在多个网站使用相同的账号和口令, 预防攻击者发起的弱口令攻击和撞库攻击.此外, 在日常的区块链网络活动中应提高个人安全意识, 忽略来历不明的邮件和网址, 避免落入攻击者为实施钓鱼攻击和中间人劫持攻击而设置的陷阱.

7.2.2 区块链上层技术兼容

区块链的底层模型设计旨在从源头缓解甚至解决37种初始攻击依赖的安全漏洞, 但仍可能遗留下很多安全问题.本节在此基础上, 通过兼容一些区块链上层技术进一步完善本文的区块链安全防御体系.

(1) 基于智能合约的Casper奖惩协议: 尽管以太坊引入的Casper机制可以通过惩罚恶意节点的方式来阻止攻击者借助运行机制漏洞来获取最大化利益的“擦边球”行为, 如挖矿场景中的无利害关系攻击、空块攻击和算力伪造攻击等, 然而其内置Casper协议于PoS系统客户端的做法限制了Casper机制的扩展性和灵活性, 无法满足多样的服务需求.而独立的Casper机制则需要一个高权限的可信管理者, 这与区块链去中心化的思想相悖.智能合约技术的出现, 为解决Casper机制的应用问题提供了思路.区块链系统在初始化阶段可以提供基于智能合约的Casper奖惩协议模板, 全网节点可以在参与公共活动(如挖矿、投票等)时初始化并加入特定的Casper智能合约, 通过奖励举报者、惩罚被举报恶意节点的方式, 保证活动的公平性和有序性.

(2) 基于ARTEMIS的网络异常监测技术: 为了应对网络层存在的BGP路由劫持攻击和分割攻击, 在区块链系统中部署ARTEMIS系统是十分必要的.该系统可以在几分钟内帮助服务提供商解决BGP劫持的问题, 为实现实时的BGP劫持监控及应急响应提供可能.然而, ARTEMIS系统仅对造成网络异常的BGP路由劫持攻击和分割攻击具备较高的识别率, 而对攻击者通过选择性管控流量发起的BGP路由劫持攻击和分割攻击无效.因此, 区块链节点在出块时, 可以通过第4.3节所述的基于权重的节点活性检测方法检查网络是否发生分区现象, 此处不再赘述.通过部署由ARTEMIS技术和基于权重的节点活性检测方法组成的网络异常监测技术, 可以很好地解决网络层存在的安全隐患及其潜在的后置攻击(如克隆攻击), 保证区块链网络的正常运行.

(3) 集成式的代码评估模型: 为了应对0day漏洞攻击、逻辑漏洞等代码漏洞问题, 保证区块链网络设备和智能合约的代码安全, 系统开发者应尝试构建出一套完整全面的代码评估模型, 合理兼容现有包括Fuzzing、代码审计、逆向漏洞分析、反逆向工程等在内的代码监测评估技术.在此基础上, 可以引入机器学习等技术实现全方位的漏洞扫描与风险预测, 进一步提升代码评估模型的效率与准确性, 保证区块链网络中的代码安全.

7.3 区块链攻防技术发展态势

目前, 区块链网络中发生的安全事件以网络层、合约层和应用层攻击为主, 其中, 网络层攻击多为传统网络中的常见安全问题, 这是由当前区块链网络基于传统网络的现状导致的.因此, 传统网络中的安全防御技术也可以用于解决区块链网络层攻击.所以, 本文的区块链安全防御体系可以通过不断兼容传统网络中已有或新兴的安全防御技术, 来保证区块链网络的安全运行.此外, 合约层攻击和应用层攻击大多是由代码漏洞、客户端漏洞和用户社会行为漏洞导致的, 这些最底层的漏洞是无法完全避免的, 所以本文的区块链安全防御体系旨在不断完善区块链底层模型设计, 通过科学合理的制度不断规范用户的行为, 以此减少安全漏洞.同时, 在技术兼容方面, 区块链安全防御体系可以通过不断兼容新型的漏洞检测方法或策略来完善自身集成式的代码评估模型, 以此保证区块链系统的健壮性.

值得注意的是: 目前已发生的区块链安全事件大多只会影响区块链网络的正常运行, 但无法从根本上摧毁区块链系统, 这是因为区块链的底层技术和合理运行机制在一定程度上保证了区块链系统的安全性.一旦数据层和共识层中的大多数攻击, 如碰撞攻击、量子攻击、51%攻击等目前仅理论上可行的区块链攻击具备实际发生的条件, 则区块链系统无疑面临着崩溃的风险.因此, 构建区块链安全防御体系需要在保证当前系统安全的同时, 通过技术预研增强防御体系自身的稳健性.本文构建的区块链安全防御体系在底层模型设计阶段便要求开发者提高系统对多种密码学工具的兼容性, 以满足用户在多样化服务场景中的安全性需求.同时, 根据实际安全需求选择备用的密码学工具作为应急预案, 以应对量子攻击、密码算法破解等安全事件带来的安全威胁.此外, 本文提出的区块链安全防御体系在上层技术兼容方面同样对新兴的安全防御技术提供了较高的兼容性, 因此具备良好的可扩展性, 可以为大多数区块链系统提供安全、可靠的持续性防御.

区块链技术的理论研究目前处于2.0甚至3.0阶段, 而应用与推广将在未来很长的一段时间里处于1.0至2.0的过渡阶段, 这种预研优势是保证区块链技术在区块链攻防博弈中持续发展的根本.随着区块链技术的不断推广与应用, 多样、复杂的应用场景将使区块链技术面临着更加严峻的安全威胁, 而区块链攻击技术势必会关注区块链具体应用场景中由于技术低耦合性导致的安全漏洞.此外, 云计算、边缘计算、物联网等新兴技术体系与区块链技术的融合发展, 势必成为一种颇具前景的区块链发展模式, 而各种技术的短板及技术体系之间的耦合程度仍将成为攻击者的攻击目标.最后, 服务场景和技术架构的复杂化, 可能为攻击者实现51%攻击、双花攻击等提供一条新的攻击序列.针对这些潜在的安全威胁, 通过维护区块链攻击关联视图来准确评估系统安全性, 结合“底层模型设计+上层技术兼容”提供安全防御的模式, 将成为区块链安全防御技术的主流.尤其是在技术兼容方面, 态势感知、溯源追踪、机器学习等新兴技术的应用, 将大大提升区块链系统安全防御体系的网络监管和预警能力, 为实现快速的攻击检测与追踪溯源提供了可能.

8 总结与展望

区块链凭借其多元融合架构赋予的去中心化、去信任化、不可篡改等技术特性, 成为了一种具有里程碑意义的新一代互联网技术, 为解决传统中心化服务架构中的信任问题、安全问题提供了一种新的解决思路.因此, 区块链技术具备十分重要的科研价值和良好的应用前景.关于区块链的研究甚至一度上升至国家发展战略层面, 而安全问题更是区块链研究的重中之重.本文从区块链层级架构和攻击关联分析两个维度出发, 首先对现有60种区块链攻击方式的攻击原理和防御策略展开研究; 然后, 通过探究这些攻击之间的潜在联系, 归纳出了完整的卖空攻击簇及其8个子攻击簇; 最后, 逆向溯源这些攻击簇涉及的37种攻击簇初始攻击, 从根本上给出了缓解或解决相应区块链攻击的策略, 奠定了区块链安全防御体系的基础.同时, 结合现有的安全方案, 给出了解决遗留安全问题的防御策略, 构建出了相对完整的区块链安全防御体系.

区块链的去中心化结构特性, 使其具备了与云计算等中心化服务相同的发展前景, 这意味着区块链技术在未来不仅会被用来解决中心化服务架构中的信任问题和安全问题, 还会出现在更多的去中心化服务场景中.而在未来的一段时间中, 区块链技术的发展将侧重于多服务架构融合的场景, 愈加复杂的服务场景将给区块链技术带来更加严峻的安全挑战.因此, 针对具体情况进行具体分析, 构建支持防御策略动态更新的区块链安全防御体系, 是保证区块链技术快速发展的必由之路.

参考文献

[1]

Pawel S, Daniël R, Ivan H, Siwei S. StrongChain: Transparent and collaborative proof-of-work consensus. In: Proc. of the USENIX Security. 2020. 819-836.

[2]

Yu HF, Ivica N, Ruomu H, Prateek S. OHIE: Blockchain scaling made simple. In: Proc. of the IEEE S & P. 2020. 90-105.

[3]

Liu ZT, Xiang YX, Shi J, Gao P, Wang HY, Xiao XS, Wen BH, Hu YC. HyperService: Interoperability and programmability across heterogeneous blockchains. In: Proc. of the CCS. 2019. 549-566.

[4]

George B, Brian NL. Bobtail: Improved blockchain security with low-variance mining. In: Proc. of the NDSS. 2020. https://dx.doi.org/10.14722/ndss.2020.23095

[5]

Si XM, Xu MX, Yuan C. Survey on security of blockchain. Journal of Cryptologic Research, 2018, 5(5): 8-19(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201805002.htm

[6]

PeckShield. A report on anti money laundering (AML) for digital asset in 2019 (in Chinese). https://m.dapptotal.com/reports/PeckShield_AML_Research_Report_final

[7]

Eric B. The Economic Limits of Bitcoin and the Blockchain. National Bureau of Economic Research, Inc., 2018.

[8]

Karame G, Androulaki E, Capkun S. Double-spending fast payments in Bitcoin. In: Proc. of the ACM Conf. on Computer and Communications Security. 2012. 906-917.

[9]

Orda A, Rottenstreich O. Enforcing fairness in blockchain transaction ordering. In: Proc. of the IEEE ICBC. 2019. 368-375.

[10]

Bitcoin Stack Exchange. What is a Finney attack? 2020. https://bitcoin.stackexchange.com/questions/4942/what-is-a-finney-attack

[11]

Yuan C. Defense scheme during hard bifurcation in block chain. Modern Computer, 2019(9): 3-7, 13(in Chinese with English abstract).

[doi:10.3969/j.issn.1007-1423.2019.09.001]

[12]

Nakamoto S. Bitcoin: A peer-to-peer electronic cash system. 2020. https://bitcoin.org/bitcoin.pdf

[13]

Ma A, Pan X, Wu L, Guo JF, Huang QW. A survey of the basic technology and application of block chain. Journal of Information Security Research, 2017, 3(11): 968-980(in Chinese with English abstract).

[doi:10.3969/j.issn.2096-1057.2017.11.003]

[14]

Liu YZ, Liu JW, Zhang ZY, Xu TG, Yu H. Overview on blockchain consensus mechanisms. Journal of Cryptologic Research, 2019, 6(4): 395-432(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201904001.htm

[15]

Huang JF, Liu J. Survey on blockchain research. Journal of Beijing University of Posts and Telecommunications, 2018, 41(2): 1-8(in Chinese with English abstract).

[doi:10.3969/j.issn.1008-7729.2018.02.001]

[16]

He HW, Yan A, Chen ZH. A survey of smart contract technology and application based on blockchain. Journal of Computer Research and Development, 2018, 55(11): 2452-2466(in Chinese with English abstract).

[doi:10.7544/issn1000-1239.2018.20170658]

[17]

Ethereum. Ethereum official site. 2020. https://ethereum.org

[18]

Melanie S. Blockchain: Blueprint for a New Economy. O'Reilly Media, Inc., 2015.

[19]

R3 CEV. R3 official site. 2020. https://www.r3.com

[20]

China Ledger. China ledger official site. 2020. http://www.chinaledger.com

[21]

Cisco. Cisco official site. 2020. https://www.cisco.com

[22]

Hyperledger. Hyperledger official site. 2020. https://www.hyperledger.org

[23]

Katz J, Lindell Y. Introduction to Modern Cryptography. 2nd ed., Chapman and Hall/CRC, 2014.

[24]

Berndt S, Liśkiewicz M. Algorithm substitution attacks from a steganographic perspective. In: Proc. of the CCS. 2017. 1649-1660.

[25]

Decker C, Wattenhofer R. Bitcoin transaction malleability and MtGox. In: Proc. of the ESORICS. 2014. 313-326.

[26]

Douceur JR. The Sybil attack. In: Proc. of the IPTPS. 2002. 251-260.

[27]

Bonneau J. Why buy when you can rent? Bribery attacks on Bitcoin-style consensus. In: Proc. of the Financial Cryptography and Data Security (FC). 2016. 19-26.

[28]

King S, Nadal S. PPCoin: Peer-to-peer crypto-currency with proof-of-stake. 2012. http://people.cs.georgetown.edu/~clay/classes/fall2017/835/papers/peercoin-paper.pdf

[29]

Houy N. It will cost you nothing to 'kill' a proof-of-stake crypto-currency. 2014. https://papers.ssrn.com/sol3/papers.cfm?abstract_ id=2393940

[30]

CryptoWiki. Proof-of-work system. 2020. http://cryptowiki.net/index.php?title=Proof-of-work_system

[31]

360 Core Security. Hacker forged computational power to steal multiple digital currencies (in Chinese). https://blogs.360.cn/post/

[32]

Bag S, Ruj S, Sakurai K. Bitcoin block withholding attack: Analysis and mitigation. IEEE Trans. on Information Forensics and Security, 2017, 12(8): 1967-1978.

[33]

Narayanan A, Bonneau J, Felten EW, Miller A, Goldfeder S, Clark J. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction. Princeton University Press, 2016.

[34]

Thomas K, Pullman J, Yeo K, Raghunathan A, Kelley PG, Invernizzi L, Benko B, Pietraszek T, Patel S, Boneh D, Bursztein E. Protecting accounts from credential stuffing with password breach alerting. In: Proc. of the USENIX Security. 2019. 1556-1571.

[35]

Bilge L, Dumitras T. Investigating zero-day attacks. 2013. https://www.usenix.org/system/files/login/articles/02_bilge_6-13_online. pdf

[36]

Anderson R. Secuirty Engineering: A Guide to Building Dependable Distributed Systems. 2nd ed., Wiley Publishing, Inc., 2008.

[37]

Hadnagy C. Social Engineering: The Art of Human Hacking. John Wiley & Sons, 2010.

[38]

Jin C, Wang XY, Tan HY. Dynamic attack tree and its applications on Trojan horse detection. In: Proc. of the Multimedia and Information Technology (MMIT). 2010. 56-59.

[39]

Grustniy L. Rakhni Trojan: To encrypt and to mine. 2018. https://www.kaspersky.com/blog/rakhni-miner-cryptor/22988/

[40]

Barber S, Boyen X, Shi E, Uzun E. Bitter to better-how to make Bitcoin a better currency. In: Proc. of the Financial Cryptography and Data Security (FC). 2012. 399-414.

[41]

Lee S, Kim S. Short selling attack: A self-destructive but profitable 51% attack on PoS blockchains. IACR Cryptology ePrint Archive, 2020-019, 2020.

[42]

Santis AD, Micali S, Persiano G. Non-interactive zero-knowledge proof systems. In: Proc. of the CRYPTO. 1987. 52-72.

[43]

Schwennesen B. Elliptic curve cryptography and government backdoors. 2016. https://services.math.duke.edu/~bray/Courses/89s- MOU/2016/Papers/BAS_Paper3_EllipticCurveCryptography.pdf

[44]

Aggarwal D, Brennen GK, Lee T, Santha M, Tomamichel M. Quantum attacks on Bitcoin, and how to protect against them. Ledger, 2018, 3: 68-90.

http://arxiv.org/abs/1710.10377

[45]

Awan MK, Cortesi A. Blockchain transaction analysis using dominant sets. In: Proc. of the Computer Information Systems and Industrial Management (CISIM). 2017. 229-239.

[46]

Androulaki E, Karame GO, Roeschlin M, Scherer T, Capkun S. Evaluating user privacy in Bitcoin. In: Proc. of the Financial Cryptography and Data Security (FC). 2013. 34-51.

[47]

Fuji R, Usuzaki S, Aburada K, Yamaba H, Katayama T, Park M, Shiratori N, Okazaki N. Investigation on sharing signatures of suspected malware files using blockchain technology. In: Proc. of the Int'l MultiConf. of Engineers and Computer Scientists (IMECS). 2019. 94-99.

[48]

Zcash. Zcash official site. 2020. https://z.cash

[49]

Wuille P. Segregated witness and its impact on scalability. 2020. http://diyhpl.us/wiki/transcripts/scalingbitcoin/hong-kong/segregated-witness-and-its-impact-on-scalability/

[50]

Géron A. Hands-on Machine Learning with Scikit-learn, Keras, and TensorFlow. 2nd ed., O'Reilly Media, Inc., 2019.

[51]

Estehghari S, Desmedt Y. Exploiting the client vulnerabilities in Internet E-voting systems: Hacking Helios 2.0 as an example. EVT/WOTE, 2010, 10: 1-9.

[52]

Dai HN, Wang H, Xiao H, Li XR, Wang Q. On eavesdropping attacks in wireless networks. In: Proc. of the 2016 IEEE Int'l Conf. on Computational Science and Engineering (CSE). IEEE, 2016. 138-141.

[53]

Heilman E, Kendler A, Zohar A, Goldberg S. Eclipse attacks on Bitcoin's peer-to-peer network. In: Proc. of the USENIX Security. 2015. 129-144.

[54]

Apostolaki M, Zohar A, Vanbever L. Hijacking Bitcoin: Routing attacks on cryptocurrencies. In: Proc. of the IEEE S & P. 2017. 375-392.

[55]

Sun YX, Edmundson A, Vanbever L, Li O. RAPTOR: Routing attacks on privacy in Tor. In: Proc. of the USENIX Security. 2015. 271-286.

[56]

Elleithy KM, Blagovic D, Wang C, Sideleau P. Denial of service attack techniques: Analysis, implementation and comparison. Journal of Systemics, Cybernetics, and Informatics, 2005, 3(1): 66-71.

http://d.wanfangdata.com.cn/periodical/Doaj000002198688

[57]

Saad M, Thai MT, Mohaisen A. POSTER: Deterring DDoS attacks on blockchain-based cryptocurrencies through mempool optimization. In: Proc. of the ASIACCS. 2018. 809-811.

[58]

Cointelegraph. Bitcoin exchange poloniex under severe DDoS attack again, users outraged. 2017. https://cointelegraph.com/news/bitcoin-exchange-poloniex-under-severe-ddos-attack-again-users-outraged

[59]

Mirkin M, Ji Y, Pang J, Klages-Mundt A, Eyal I, Juels A. BDoS: Blockchain denial-of-service attacks. arXiv Preprint arXiv: 1912. 07497, 2019.

[60]

Wikipedia. Lightning network. 2020. https://en.wikipedia.org/wiki/Lightning_Network

[61]

Sun GZ, Wang JT, Gu Y. Security threat analysis of blockchain technology. Journal of Nanjing University of Posts and Telecommunications (Natural Science Edition), 2019, 39(5): 48-62(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-NJYD201905008.htm

[62]

Microsoft. Microsoft security development lifecycle (SDL). 2020. https://www.microsoft.com/en-us/securityengineering/sdl/

[63]

Sutton M, Greene A, Amini P. Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, 2007.

[64]

Dowd M, McDonald J, Schuh J. The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities. Addison-Wesley Professional, 2006.

[65]

Klein T. A Bug Hunter's Diary. No Starch Press, 2011.

[66]

Roundy KA, Miller BP. Binary-code obfuscations in prevalent packer tools. ACM Computing Surveys, 2013, 46(1): 1-32.

[67]

Dominic L. BlockQuick: Super-light client protocol for blockchain validation on constrained devices. IACR Cryptology ePrint Archive, 2019-579, 2019.

[68]

Sermpezis P, Kotronis V, Gigis P, Dimitropoulos X, Cicalese D, King A, Dainotti A. ARTEMIS: Neutralizing BGP hijacking within a minute. IEEE/ACM Trans. on Networkin, 2018, 26(6): 2471-2486.

[doi:10.1109/TNET.2018.2869798]

[69]

Amadi EC, Eheduru GE, Eze FU, Ikerionwu C, Okafor KC. Anti-DDoS firewall: A zero-sum mitigation game model for distributed denial of service attack using linear programming. In: Proc. of the 2017 IEEE Int'l Conf. on Knowledge-based Engineering and Innovation (KBEI). IEEE, 2017. 27-36.

[70]

Lamport L, Shostak R, Pease M. The Byzantine generals problem. ACM Trans. on Programming Languages and Systems (TOPLAS), 1982, 4(3): 382-401.

[71]

Castro M, Liskov B. Practical Byzantine fault tolerance. In: Proc. of the USENIX Symp. on Operating Systems Design and Implementation (OSDI). 1999. 173-186.

[72]

Microsoft. Ethereum proof-of-authority on azure. 2018. https://azure.microsoft.com/en-us/blog/ethereum-proof-of-authority-on- azure

[73]

Ekparinya P, Gramoli V, Jourjon G. The attack of the clones against proof-of-authority. In: Proc. of the NDSS. 2020. https://dx.doi. org/10.14722/ndss.2020.24082

[74]

Bitconch. A newly distributed Web protocol based on an innovative proof reputation (PoR) consensus algorithm. 2020. https://bitconch.io/download/BRWhitePaperEn.pdf

[75]

Grigg I. EOS—An introduction. 2020. https://eos.io/documents/EOS_An_Introduction.pdf

[76]

Zaccagni Z, Dantu R. Proof of review (PoR): A new consensus protocol for deriving trustworthiness of reputation through reviews. IACR Cryptology ePrint Archive, 2020-475, 2020.

[77]

Leonard K. A PoR/PoS-hybrid blockchain: Proof of reputation with nakamoto fallback. IACR Cryptology ePrint Archive, 2020-381, 2020.

[78]

Krebsonsecurity. Who and what is coinhive? 2018. https://krebsonsecurity.com/2018/03/who-and-what-is-coinhive/

[79]

Redman J. Small Ethereum clones getting attacked by mysterious '51 Crew'. 2016. https://news.bitcoin.com/ethereum-clones- susceptible-51-attacks/

[80]

Paganini P. Bitcoin gold hit by double-spend attack, exchanges lose over $18 million. 2018. https://securityaffairs.co/wordpress/72878/hacking/bitcoin-gold-double-spend.html

[81]

Grunspan C, Pérez-Marco R. On profitability of selfish mining. arXiv Preprint arXiv: 1805.08281, 2018.

[82]

Kwon J. Tendermint: Consensus without mining. 2014. https://pdfs.semanticscholar.org/df62/a45f50aac8890453b6991ea115e996c 1646e.pdf

[83]

Szilágyi P. EIP 225: Clique proof-of-authority consensus protocol. 2020. https://eips.ethereum.org/EIPS/eip-225

[84]

Buterin V, Griffith V. Casper the friendly finality Gadget. arXiv Preprint arXiv: 1710.09437, 2017.

[85]

Buterin V. Slasher: A punitive proof-of-stake algorithm. 2014. https://blog.ethereum.org/2014/01/15/slasher-a-punitive-proof-of- stake-algorithm/

[86]

Anley C, Heasman J, Lindner F, Richarte G. The Shellcoder's Handbook: Discovering and Exploiting Security Holes. 2nd ed., Wiley Publishing, Inc., 2007.

[87]

Bitcoinwiki. Value overflow incident. 2016. https://en.bitcoin.it/wiki/Value_overflow_incident

[88]

Hessenauer S. Batch overflow bug on Ethereum ERC20 token contracts and SafeMath. 2018. https://blog.matryx.ai/batch-overflow- bug-on-ethereum-erc20-token-contracts-and-safemath-f9ebcc137434

[89]

Alharby M, Moorsel AV. Blockchain based smart contracts: A systematic mapping study. In: Proc. of the Int'l Conf. on Artificial Intelligence and Soft Computing. 2017. 125-140.

[90]

Atzei N, Bartoletti M, Cimoli T. A survey of attacks on ethereum smart contracts SoK. In: Proc. of the Int'l Conf. on Principles of Security and Trust. 2017. 164-186.

[91]

Kieran E. KoET (king of the ether throne). 2020. https://github.com/kieranelby/KingOfTheEtherThrone

[92]

Rodler M, Li WT, Karame GO, Davi L. Sereum: Protecting existing smart contracts against re-entrancy attacks. In: Proc. of the NDSS. 2019. https://dx.doi.org/10.14722/ndss.2019.23413

[93]

Fang WD, Zhang WX, Pan T, Chen W, Yang Y. Cyber security in blockchain: Threats and countermeasures. Journal of Cyber Security, 2018, 3(2): 87-104(in Chinese with English abstract).

https://www.cnki.com.cn/Article/CJFDTOTAL-XAXB201802008.htm

[94]

Wikipedia. The DAO. 2020. https://en.wikipedia.org/wiki/Decentralized_autonomous_organization

[95]

Zhao HQ, Zhang YY, Yang K, Kim T. Breaking turtles all the way down: An exploitation chain to break out of VMware ESXi. In: Proc. of the USENIX Security. 2019. 1-9.

[96]

Xu Y, Li WX, Wang DY. Web security attack and defense: A practical guide to penetration testing. Beijing: Publishing House of Electronics Industry, 2018.

[97]

Chen HS, Pendleton M, Njilla L, Xu SH. A survey on Ethereum systems security: Vulnerabilities, attacks and defenses. ACM Computing Surveys, 2020, 53(3): 1-43.

http://dl.acm.org/doi/10.1145/3391195

[98]

Vogelsteller F, Buterin V. EIP 20: ERC-20 token standard. 2015. https://eips.ethereum.org/EIPS/eip-20

[99]

Daniel P, Benjamin L. Broken metre: Attacking resource metering in EVM. In: Proc. of the NDSS. 2020. https://dx.doi.org/10. 14722/ndss.2020.24267

[100]

Kalra S, Goel S, Dhawan M, Sharma S. ZEUS: Analyzing safety of smart contracts. In: Proc. of the NDSS. 2018. http://dx.doi.org/10.14722/ndss.2018.23082

[101]

Weidman G. Penetration Testing: A Hands-on Introduction to Hacking. No Starch Press, 2014.

[102]

Zhang R, Xue R, Liu L. Security and privacy on blockchain. ACM Computing Surveys, 2019, 52(3): 1-34.

[103]

McCorry P, Hicks A, Meiklejohn S. Smart contracts for bribing miners. In: Proc. of the Financial Cryptography and Data Security (FC). 2018. 3-18.

[104]

Charlie H, Squir RL. Automating attack discovery on blockchain incentive mechanisms with deep reinforcement learning. arXiv Preprint arXiv: 1912.01798, 2019.

[105]

Dasgupta D. A survey of blockchain from security perspective. Journal of Banking and Financial Technology, 2019, 3: 1-17.

[doi:10.1007/s42786-018-00002-6]

[106]

Weber JE, Guster D, Safonov P, Schmidt MB. Weak password security: An empirical study. Information Security Journal: A Global Perspective, 2008, 17: 45-54.

http://www.iacademic.info/user-api/na/articleBybaidu?j=61575&a=596447921848189477

[107]

Wu YM, Cao P, Withers A, Kalbarczyk ZT, Iyer RK. Mining threat intelligence from billion-scale SSH brute-force attacks. In: Proc. of the NDSS. 2020. https://dx.doi.org/10.14722/diss.2020.23007

[108]

Anderson R. Security Engineering. 2nd ed., Wiley Publishing, Inc., 2008.

[109]

Whittaker Z, Shu C. Binance says more than $40 million in Bitcoin stolen in 'large scale' hack. 2019. https://techcrunch.com/2019/05/07/binance-breach/

[110]

Ghasemisharif M, Ramesh A, Checkoway S, Kanich C, Polakis J. O single sign-off, where art thou? An empirical analysis of single sign-on account hijacking and session management on the Web. In: Proc. of the USENIX Security. 2018. 1475-1492.

[111]

Gao A. Chinese Bitcoin exchange OKEx hacked for $3 Mln, police not interested. 2017. https://cointelegraph.com/news/chinese-bitcoin-exchange-okex-hacked-for-3-mln-police-not-interested

[112]

Jin C, Wang XY, Tan HY. Dynamic attack tree and its applications on Trojan horse detection. In: Proc. of the Int'l Conf. on Multimedia and Information Technology. 2010. 56-59.

[113]

Cimpanu C. Banking Trojan now targets coinbase users, not just banking portals. 2017. https://www.bleepingcomputer.com/news/security/banking-trojan-now-targets-coinbase-users-not-just-banking-portals/

[114]

Karapanos N, Capkun S. On the effective prevention of TLS man-in-the-middle attacks in Web applications. In: Proc. of the USENIX Security. 2014. 671-686.

[115]

MacKenzie P, Reiter MK. Networked cryptographic devices resilient to capture. In: Proc. of the IEEE S & P. 2001. 12-25.

[116]

Schroeder S. Wallet bug freezes more than $150 million worth of Ethereum. 2017. https://mashable.com/2017/11/08/ethereum-parity-bug/

[117]

Kelso CE. $45, 000, 000 worth of BCH & BTC claimed stolen in SIM attack: Doubts linger about veracity. 2020. https://coinspice.io/news/45000000-worth-of-bch-btc-claimed-stolen-in-sim-attack-doubts-linger-about-veracity/

[118]

Bamert T, Decker C, Wattenhofer R, Welten S. Bluewallet: The secure bitcoin wallet. In: Proc. of the Int'l Workshop on Security and Trust Management. 2014. 65-80.

[119]

Sullivan B. Hackers steal 4, 100 Bitcoins from Inputs. io. 2013. https://www.cbronline.com/news/hackers-steal-4100-bitcoins-from-inputsio/

[120]

Saad M, Spaulding J, Njilla L, Kamhoua C, Shetty S, Nyang D, Mohaisen A. Exploring the attack surface of blockchain: A systematic overview. arXiv Preprint arXiv: 1904.03487, 2019.

[5]

斯雪明, 徐蜜雪, 苑超. 区块链安全研究综述. 密码学报, 2018, 5(5): 8-19.

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201805002.htm

[6]

派盾. 2019年度数字资产反洗钱(AML)研究报告. 2020.

[11]

袁超. 区块链中硬分叉期间的防御方案. 现代计算机, 2019(9): 3-7, 13.

[doi:10.3969/j.issn.1007-1423.2019.09.001]

[13]

马昂, 潘晓, 吴雷, 郭景峰, 黄倩文. 区块链技术基础及应用研究综述. 信息安全研究, 2017, 3(11): 968-980.

[doi:10.3969/j.issn.2096-1057.2017.11.003]

[14]

刘懿中, 刘建伟, 张宗洋, 徐同阁, 喻辉. 区块链共识机制研究综述. 密码学报, 2019, 6(4): 395-432.

https://www.cnki.com.cn/Article/CJFDTOTAL-MMXB201904001.htm

[15]

黄俊飞, 刘杰. 区块链技术研究综述. 北京邮电大学学报, 2018, 41(2): 1-8.

[doi:10.3969/j.issn.1008-7729.2018.02.001]

[16]

贺海武, 延安, 陈泽华. 基于区块链的智能合约技术与应用综述. 计算机研究与发展, 2018, 55(11): 2452-2466.

[doi:10.7544/issn1000-1239.2018.20170658]

[31]

360核心安全. 黑客伪造算力盗取多种数字货币. https://blogs.360.cn/post/黑客伪造算力盗取多种数字货币.html

[61]

孙国梓, 王纪涛, 谷宇. 区块链技术安全威胁分析. 南京邮电大学学报(自然科学版), 2019, 39(5): 48-62.

https://www.cnki.com.cn/Article/CJFDTOTAL-NJYD201905008.htm

[93]

房卫东, 张武雄, 潘涛, 陈伟, 杨旸. 区块链的网络安全: 威胁与对策. 信息安全学报, 2018, 3(2): 87-104.

https://www.cnki.com.cn/Article/CJFDTOTAL-XAXB201802008.htm

[96]

徐焱, 李文轩, 王东亚. Web安全攻防: 渗透测试实战指南. 北京: 电子工业出版社, 2018.