APP下载

区块链安全、隐私与性能问题研究综述

2021-08-12曹雪莲张建辉

计算机集成制造系统 2021年7期
关键词:分片合约共识

曹雪莲,张建辉,刘 波

(西南大学 计算机与信息科学学院软件研究与创新中心,重庆 400715)

1 问题的提出

信息通信技术(Information and Communication Technology, ICT)领域历经基于互联网的信息互联时代、基于移动互联网的人人互联时代、基于物联网的万物互联时代,即将进入基于低成本信任通道的价值互联时代。区块链开创了一种低成本建立信任的新型计算范式,其概念源于中本聪在2008年发表的论文《比特币:一种点对点的电子现金系统》[1],文中描述了一种加密数字货币(比特币)可在无第三方可信机构情况下支持不可信交易双方的直接支付。比特币避免了传统中心化系统中高度依赖中央权威机构、信任成本高、可靠性和安全性差等问题。随着智能合约的引入,区块链被赋予可编程特性,使其从加密数字货币领域的专有技术,拓展为面向制造、金融、教育、医疗等诸多垂直领域构建信任关系的关键使能技术[2]。显然,作为一种信任体系构造技术,区块链蕴含着支持价值自由流转、优化生产关系、破除中心垄断(如美元霸权、SWIFT清算)、推动产业创新的巨大潜力,有望成为未来数字经济新时代实现价值互联的基石。

区块链的研究与发展已引起各界高度重视。工业界竞相开展相关应用研发与标准研制:谷歌、微软、腾讯、华为等已相继推出各自的区块链研发计划;R3联合全球42家银行成立区块链联盟,致力于制定面向银行业的区块链标准。欧、美、澳等多国(地区)政府已将区块链纳入其国家数字经济战略,而加快建立我国国家主权区块链基础平台也已迫在眉睫。区块链还被认为在推动工业4.0、工业互联网及中国制造2025等重大发展战略中具有巨大应用前景[3-12]。区块链相关研究正成为软件工程、计算机科学、网络与信息安全、工业制造、数学等多个学科/方向共同关注的焦点之一。软件工程(International Conference on Software Engineering, ICSE),计算机与通信安全(Computer and Communications Security, CCS),分布式计算原理(Principles of Distributed Computing, PODC),可靠系统与网络(Dependable Systems and Networks, DSN) 等著名国际会议近年均纳入了区块链主题,以区块链为专题的国际会议如IEEE Blockchain、BlockSys等也大量出现。可见,该领域的研究热度正呈现出加速升温的态势。

随着区块链的深入研究和广泛应用,其面临越来越多的技术挑战。例如,在安全性方面,针对区块链共识和智能合约的攻击手段层出不穷,造成的经济损失累计超过142亿美元[13];在隐私方面,区块链公开透明的特性致使交易数据和网络节点地址等信息面临严重的隐私泄露问题[14];在性能方面,现有区块链平台性能远低于传统中心化系统,难以在大规模交易场景中实际应用[15];在互操作方面,大量基于不同底层技术的区块链应用之间无法进行可信数据流通和价值交换[16]。本文统计了近五年来620篇区块链研究综述所论及的相关挑战问题后发现:在近几年区块链技术发展趋势中,安全、隐私和性能已成为区块链研究关注的焦点与主要瓶颈。如图1所示,关注安全[17-20]、隐私[21-23]和性能[24-26]单一话题的综述文献数量远超其余综述文献数量的总和;一些综述工作也已涉及安全和隐私[27-28]、隐私和性能[29]、安全和性能[30]等交叉话题。截至2020年12月,已有一篇综述文章开始论及区块链在云存储领域应用中的安全、隐私和性能挑战,表明三者的综合性话题已引起关注[31]。

尽管如此,为了更好地扫除破解区块链安全、隐私和性能关键挑战的障碍,仍缺乏一项综合性研究:①不限于某种特定区块链平台(如比特币、以太坊等)或领域(如云计算、制造等)来讨论安全、隐私和性能问题,而是针对区块链普遍存在的上述挑战分析既往及最新研究;②不限于围绕区块链实施文献情报学方面的分类分析,而侧重从技术视角出发,沿着问题本质与基础原理、技术发展与作用机制、现存问题与未来方向,给予深刻的技术性评估与总结;③综合展现安全、隐私和性能的整体研究概貌,并为各自话题未来的深入研究与交叉领域融合研究提供指引。

鉴于此,本文从技术视角针对区块链安全、隐私与性能问题展开综述,工作贡献包括:

(1)基于区块链层次结构与运行原理,就对等网络、共识机制和智能合约层面的安全问题及攻防措施进行分析评估。

(2)基于区块链隐私威胁基本原理,比较分析不同隐私保护对象的分级隐私保护策略。

(3)通过分析性能制约因素,评估基于链上与链下两种扩容路线的最新研究进展。

(4)针对安全、隐私和性能的现存问题,提出可能的解决思路并指出未来研究方向。

2 核心技术

区块链概念自提出以来,经历不断的拓展和延伸,故学术界及工业界仍未对其形成统一严格的定义。一般认为,区块链是一种按时间顺序将包含有效交易的数据区块连接形成的链式数据结构,并以密码学方式保证不可篡改和不可伪造的去中心化共享账本[2];利用密码学产生的链式数据结构来存储和验证数据,利用对等网络和共识机制来生成和更新数据,利用脚本代码(智能合约)操作数据;系对等网络、密码学、共识机制、智能合约等核心技术的综合。

2.1 对等网络

对等网络是一种在对等节点之间分配任务和工作负载的分布式应用架构,是对等计算模型形成的一种组网技术或网络通信形式[32]。该网络中不存在中心权威节点,所有节点具有同等地位,且交互时无需通过中心节点,均承担着新节点发现、网络路由、数据验证等任务,并可在任意时刻加入或退出网络。利用对等网络的上述特性,区块链得以组织各节点完成数据生成、传播、验证和存储。

2.2 密码学

区块链运用哈希函数、非对称加密技术等多种密码学技术来保证区块链的完整、不可篡改及可校验等特性。其中哈希函数是一种将任意长度的数据输入映射为固定长度输出的数学函数[33],一般具有单向、无关联、抗碰撞等特性。这些特性使其特别适合对数据进行快速计算、比较和验证,因而广泛运用于区块链中。由于区块链网络环境开放且复杂,交易和区块数据的传播需依赖非对称加密技术如信息加密、数字签名来保障节点间的可信通讯。

2.3 共识机制

如何使信任关系薄弱的节点针对区块有效性达成一致意见,并保存一致的数据副本是区块链中的共识问题。在分布式计算领域的早期研究中,为解决一致性问题,即如何保证分布式集群中所有节点的数据完全相同并能对某个提案达成一致意见,提出了共识机制[34]。通过借鉴分布式计算领域的共识研究,区块链采用共识机制使节点维持一致的区块链视图实现系统稳定、可靠运行。

区块链中的共识机制主要解决两个问题:

(1)区块数据写入 各节点都独立维护一份区块链副本并拥有向区块链中写入数据的权利,为避免各自写入数据后节点保存的区块链不同而出现数据混乱的情况,需选择节点负责写入数据。

(2)区块同步 当节点写入数据后,其余节点能及时地同步更新数据。

共识机制的目标是使所有节点维持一致的区块链视图,并满足两个基本性质[35-36]:①一致性,所有诚实节点保存的区块链的前缀部分完全相同;②有效性,由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。

2.4 智能合约

智能合约最早由密码学家SZABO[37]提出并定义为“一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”。但因缺乏安全可信的执行环境,智能合约难以在无可信第三方的情况下保证合约条款的正确执行,故很长一段时间内未得到实际应用。

区块链的出现推动了智能合约迅速发展,其去信任、不可篡改等特性为智能合约提供了良好的执行环境,同时智能合约也赋予区块链底层数据可编程性,拓展了区块链的应用范围。目前,智能合约已在许多区块链平台上成功实现,如最早引入智能合约概念的开源公有链平台以太坊[38],以及面向企业级应用的区块链平台Hyperledger Fabric[39]。区块链中的智能合约具有如下特点:①公开透明,智能合约继承了区块链公开透明的特性,任何节点都可查看合约代码;②不可更改,区块链保证存储数据的不可篡改性,因此智能合约一旦部署到区块链便不可更改;③可“自动”执行,外部事件触发预设条件后,智能合约按照预先封装的响应规则执行相应操作。

智能合约虽已用于许多区块链系统中,但也缺乏严格统一的定义。一些学者认为它是运行在区块链上的程序[40-42],但这未能囊括智能合约的所有特征;也有文献描述智能合约是可自动执行的程序代码[43-45],但忽略了智能合约执行需外部事件触发且永远不会完全自动执行。本文通过现有相关文献分析认为:区块链中的智能合约是部署在区块链上的可共享程序代码,它封装了预定义的若干状态、转换规则、触发条件和响应规则,可在不依赖任何中心机构的情况下被多个节点执行,并得到各参与方认可的执行结果。

3 区块链安全

在设计之初,区块链通过一系列技术为所设计系统提供一定安全保障,以避免系统因外部恶意攻击而受到破坏、更改和数据泄露。例如:利用密码学技术来保证数据无法被篡改;通过对等网络和共识机制防止数据丢失和恶意更改;利用虚拟机作为智能合约执行环境来对合约调用所需资源进行隔离和限制,以限定合约漏洞或恶意合约的影响范围。

然而,随着区块链的广泛应用,其安全问题也日益突出。攻击者通过对网络发起日蚀攻击[46]、DDoS攻击[13]、EREBUS攻击[47]、DNS劫持攻击等方式破坏区块链安全性并从中获利,如BlackWallet, EtherDelta, MyEtherWallet等基于以太坊智能合约的交易系统在2017和2018年多次遭受DNS劫持攻击,造成经济损失逾82万美元[48-49]。在共识机制层面,攻击者通过区块截留攻击、51%攻击等获取更多收益,如Eligius矿池在2014年遭受区块截留攻击而损失300余枚比特币(价值约16万美元)[50],以太经典在2020年8月先后遭受三次51%攻击[51];在智能合约层面,恶意攻击所引发的安全事件约占区块链安全事件总数的三分之一[13]。据不完全统计,截至2020年12月,区块链重大安全事件已逾358起,造成的经济损失超过142亿美元。可见,区块链的应用与发展面临严峻的安全挑战。

就区块链安全话题,学者们已展开探索并取得较多成果。本文对近5年ACM,IEEE Xplore,ScienceDirect等主流数据库上区块链安全相关文献进行关键词统计分析,并结合区块链技术架构与运行机制,发现其安全威胁可主要定位于对等网络、共识机制和智能合约3个层面,当然密码学层面也存在一定隐患。接下来针对上述层面中的主要安全问题及攻防措施进行分析总结。

3.1 对等网络安全

对等网络为区块链网络中的节点提供分布式、自组织的连接模式,使得全部节点可在不需要中央权威机构的情况下同步交易和区块。相较于传统中心化网络,对等网络具有健壮性、隐私保护、负载均衡等优点。然而,因缺乏身份验证、数据验证、网络安全管理等机制,对等网络的拓扑结构和路由协议极易被攻击者利用来实施攻击,影响网络中的数据传输,进而影响共识过程。

3.1.1 安全威胁

攻击者通过拓扑结构获得目标节点的路由信息,并伪造多个身份或干扰路由以阻碍目标节点与其余节点通讯。例如,攻击者利用公有链中缺乏身份验证机制的漏洞来伪造多个身份的女巫攻击[52],通过控制目标节点的数据传输以限制目标节点与其余节点交互的日蚀攻击[46],以及通过创建多个身份将网络分区而使得冲突交易或双重支付在分离的分区中也能被验证通过的克隆攻击[53]。

区块链对等网络依赖节点间通讯来传输数据,弱连接和不正确的协议将导致传输过程中数据被窃听、丢弃或延迟转发,增加数据传输延迟而影响共识。例如,攻击者利用边际网关协议漏洞将网络划分为多个分区,使分割的网络无法交换任何数据;或在确保连接不中断的情况下,减缓区块向其余节点或从给定节点集的传输速度,但区块传输延迟的增长将降低全网新区块的生成及验证速度[47,54]。

3.1.2 安全攻防

为解决拓扑结构所引发的安全问题,研究学者提出限制节点创建、合理设置节点间的连接(连接数目、时长和更新频率)、增加连接选择和异常检测机制等[46,55-57]。例如,HEILMAN等[46]提出确定性随机驱逐过程、试探连接和驱逐前验证等方案解决比特币中的日蚀攻击,其中确定性随机驱逐过程已被比特币社区采纳;MARCUS等[55]提出设置节点TCP连接请求上限、IP地址和椭圆曲线数字签名密钥一一映射等方案,将以太坊中日蚀攻击所需的恶意节点数量从两个增加到数千个。

针对传输延迟问题,多种中继网络FIBRE[58]、Falcon[59]、SABRE[60]相继被提出。这些中继网络一定程度上减少了传输延迟,但在具有特殊需求的节点间提供额外连接时仍需与原有网络同时运行;此外,现有中继网络大多基于比特币对等网络,缺少在其他区块链平台的研究和应用实践。

3.2 共识机制安全

为保障系统稳定运行,共识机制提供一定程度的容错能力,即在硬件或网络故障、恶意节点等情况下系统仍可针对区块数据达成共识。例如,工作量证明/权益证明共识机制中假设攻击者掌握不超过全网一半的算力/权益(即加密数字货币)时系统是安全的;实用拜占庭容错共识机制可容忍不超过三分之一的节点失效或恶意节点。然而,实际情况下,区块链共识机制仍面临着严峻的安全威胁。

3.2.1 安全威胁

在最初设计中,攻击者难以控制全网一半算力/权益,因而基于工作量证明/权益证明共识机制的区块链系统被认为是安全的,难以成功实施51%攻击。但节点聚集算力/权益形成的矿池使得51%攻击成为可能,GHash.IO矿池曾在2014年拥有超过全网一半的算力[51]。矿池的出现也使得网络逐渐中心化,区块记账权逐渐掌握在少数矿池手中,如比特币前五大矿池算力占比之和超过71.15%[61]。

随着矿池的出现,各种偏离共识规则的策略也不断被提出。恶意矿池利用共识过程中各矿池对网络中区块生成情况和其余矿池算力等信息掌握的差异,选择偏离共识规则的策略来获得更多收益。例如,计算出新区块后隐藏而择机公布的自私挖矿策略[62],选择部分节点入侵其余矿池的区块截留策略[63]以及这些策略的优化、扩展和结合方案[64-68]。此类策略的提出使得矿池获得与其算力占比不相匹配的收益,降低攻击所需的算力阈值要求,破坏区块链安全性并降低区块链整体性能。

在实用拜占庭容错共识机制和一些新共识机制中,节点共识的形成依赖一些特殊节点,这使得基于此类共识机制的区块链系统的安全性依赖于这些特殊节点。例如,实用拜占庭容错共识机制中负责处理交易和区块的主节点,Byteball[69]和HarmonyDAG[70]项目中负责发布和排序交易的见证人,COTI项目中负责解决双重支付问题的防双花节点[71]。当这些特殊节点的行为偏离共识规则时,如主节点重新排序交易顺序以延迟交易验证和区块生成过程,将导致区块链面临安全威胁。

3.2.2 安全攻防

为减缓网络中心化,LUU等[72]提出SMARTPOOL方案来降低节点间的收益差距,避免形成大矿池。通过利用博弈论和机器学习,DEY等[73]实时监测节点间潜在的合作行为,并及时采取应对措施以减小形成矿池的可能性;WANG等[74]提出矿池“关闭”(拒绝更多节点加入)策略,以防范区块截留攻击和避免形成大矿池。然而,这些方案多是理论研究,难以在实际区块链中有效应用。

针对层出不穷的策略攻击,研究学者主要关注不同影响因素下各种策略的盈利能力,以及共识过程中对类策略的监测并提出对策。以自私挖矿策略为例,文献[75-78]分析存在多个矿池选择自私挖矿策略的情况下该策略的盈利能力;文献[79-81]分别研究交易数量、网络连通情况、挖矿难度调整等因素对该策略的影响;SAAD等[67]通过计算一笔交易的期望高度(预先估计的会封装该笔交易的区块高度)和实际封装该交易的区块高度差额来检测是否存在自私挖矿,并提出算法以在检测出该策略后拒绝接受攻击者隐藏的私有块;类似地,CHICARINO等[82]通过观察区块链构建过程中的分叉情况,当分叉高度超过两个区块则可认为自私挖矿策略已经存在。相较于策略分析、优化和扩展研究,策略的检测和应对方案仍然较少且主要关注自私挖矿策略,更多策略的检测和有效对策的提出仍需大量的研究。

此外,改进或提出新的共识机制和优化激励机制也是区块链共识安全近年来的研究热点之一。例如,Ouroboros共识机制在权益证明共识机制基础上引入新的奖励机制使得诚实节点的行为构成一个近似纳什均衡,可有效抵御自私挖矿等策略攻击[83];Flux[84]、FruitChains[85]、Bobtail[86]等则通过改变区块结构设计和奖励机制来减小节点间的收益差距,使得借由策略攻击获取利益的方式失去意义。

3.3 智能合约安全

区块链中多数智能合约控制着数额巨大的数字资产,极易成为黑客的攻击目标;区块链的公开透明特性也使得智能合约透明化,大幅降低了攻击成本;同时智能合约一旦部署上链便不可更改,且运行过程不受任何干预,合约中的漏洞一旦引发也难以被修复。因此,针对智能合约的攻击将造成难以挽回的损失,而近年来频频爆发的智能合约安全事件也表明合约执行存在严重的安全威胁。

3.3.1 安全威胁

智能合约编写过程中,编程语言本身的设计缺陷、开发人员对编程语言的理解偏差等情况都会导致开发出的智能合约存在漏洞[42]。智能合约执行过程中,执行环境和执行所需数据的安全性也会影响执行结果。因此,智能合约安全威胁的来源可分为不安全的合约编程和不可靠的合约执行。

(1)现阶段,智能合约编程语言以领域专用语言(如Solidity)为主。领域专用语言通常引入一些特性以支持特定场景下的智能合约开发,如面向金融场景的合约开发语言引入交易手续费(Solidity中的gas)和调用栈深度来限制合约执行时计算消耗,但这些特性引入的漏洞极易被攻击者利用。例如,攻击者利用以太坊GovernMental合约中未检查合约调用返回值和虚拟机调用堆栈深度限制(不超过1 024)两个漏洞成功实施GovernMental攻击[57]。除编程语言本身设计缺陷外,开发人员对编程语言的理解偏差使得开发出的合约更易遭受攻击。例如,攻击者利用开发人员对Solidity中调用原语的错误理解对以太坊上的DAO合约发起了DAO攻击[87],致使损失逾6 000万美元;Parity钱包因合约函数的越权调用漏洞致使大约3 000万美元资产被盗[88]。事实上,编写的智能合约经过多次测试也难以检测出所有的漏洞,合约中潜在的漏洞在部署之后很有可能被攻击者发现并加以利用。

(2)区块链中的智能合约在各节点的隔离沙箱环境中执行,沙箱环境可对合约执行所需资源进行隔离和限制,也使合约执行免受恶意攻击。因而沙箱环境的安全性对于智能合约的可靠执行至关重要。自2018年以来,广泛使用的以太坊虚拟机相继被发现存在重大安全漏洞,这些漏洞可被恶意攻击者用来进行异常触发或发起DoS攻击[89-90]。此外,针对执行过程中需要从区块链外部获取数据(关于现实世界状态和事件的数据)的非确定性智能合约[91-92](如执行过程需要最新天气信息的合约),攻击者可通过向合约输入虚假数据来破坏合约的正确执行,获取更多利益。

3.3.2 安全攻防

针对编程语言引发的不安全合约编程,研究学者引入安全的编程语言,以期在合约的设计开发过程中消除潜在的安全问题。相比于领域专用语言,通用编程语言对大部分开发人员来说更为熟悉,且已有大量的测试和验证技术/工具。因此,通用编程语言可用于开发安全的智能合约,如Hyperledger Fabric支持Go和Java编写智能合约。同时,新的领域专用语言也不断被提出,包括关注于安全智能合约开发的高级语言,如引入线性资源类型来保护合约中的数字资产的Flint[93]和Move[94];便于合约形式化分析工作的中间语言,如Tezos项目中引入的中间语言Albert[95]。

在智能合约安全分析工作中,符号执行技术常被用来检测合约编译后的字节码中的漏洞,如工具Oyente可检测合约中的可重入、交易顺序依赖等漏洞[41];模糊测试技术通过提供非预期或无效的输入来发现合约执行中的漏洞,如工具ContractFuzzer在6 991个合约中检测出包括可重入、超出调用栈深度等在内的459个漏洞[96]。此外,由于合约代码规模较小,形式化验证技术也常用于验证合约的安全性,如工具SODA利用实时验证技术能够在合约实时运行过程中进行安全性验证[97]。近年来,研究学者也尝试将深度学习和博弈论等用于智能合约安全分析工作。例如,智能合约验证平台Certik通过深度学习技术对合约代码进行语义识别并形成自动标记,将代码按层分解为小的模块进行验证,然后通过分布式协作完成区块链上应用整体的代码审计并且提高验证效率[98];LANEVE等[99]利用博弈论对执行合约的节点行为进行建模分析,博弈分析结果可进一步用于建立形式化模型以实现自动验证。

上述工作旨在检测和消除智能合约自身或执行的沙箱环境中潜在的漏洞,而部分智能合约执行安全也依赖于外部数据源提供数据的可靠性。鉴于此,ZHANG等[100]开发出可作为外部数据源和智能合约间可信第三方的Town Crier(TC)工具,为智能合约的执行提供已通过验证的数据。在TC工具基础上,ADLER等[101]通过一个基于投票的分散式预言机来解决TC中面临的单点故障问题。

3.4 安全问题研究总结与展望

随着区块链的不断发展和广泛应用,安全问题已成为区块链相关研究亟需解决的研究问题。由前述区块链安全威胁和安全攻防措施可知,现有研究并未很好地解决区块链面临的安全威胁,区块链安全研究仍存在较大的发展空间。

(1)对等网络安全 对等网络安全攻防方案主要通过修改节点网络连接的设置、增加网络异常检测机制以及在原有网络基础之上为节点提供额外连接等措施来解决节点间网络通信所面临的安全威胁。然而,这些方案多是针对比特币和以太坊网络的理论研究,缺乏在更多区块链网络的研究和实践。同时,交易和区块的传播延迟对于共识过程也起着重要作用,最新研究也已开始讨论对等网络对共识安全的影响,未来仍需要更多这方面的研究。此外,对等网络中节点并不完全对等,如全节点拥有比轻节点更多的数据资源,当全节点隐藏部分数据时,轻节点将面临数据可用性问题。

(2)共识机制安全 在共识机制层面上,相关安全研究一方面关注PoW、PoS、PBFT等共识机制的安全性分析,尤其是针对PoW和PoS的中心化安全威胁和各种挖矿策略攻击的分析;另一方面尝试提出新的共识机制以克服共识机制层的安全挑战。然而,现有研究很少有对各种挖矿策略有效检测和应对措施的讨论,且缺乏对新共识机制的安全性分析。因此,挖矿策略的安全性分析、实时检测和有效攻防措施是共识机制未来安全研究中需要重点关注的方向。此外,部分研究尝试优化公有链中的共识机制或激励机制,而激励机制也会对共识机制安全产生影响。因此,在各自进行独立优化后,共识机制和激励机制还可以实现联合优化,进一步保障区块链共识过程的安全。

(3)智能合约安全 学术界和工业界已针对区块链上的智能合约开展了安全研究,产生了一系列针对智能合约开发的编程语言和安全检测技术/工具。然而,现有研究多针对已发现的一种或几种漏洞,难以应对更多潜在的安全威胁。智能合约的安全开发和可靠执行仍是智能合约未来研究的热点与重点方向,而且在产生错误时能够停止执行并自我恢复的容错合约也将是未来研究的热点方向之一。此外,在性能提升和隐私保护方案中,应更加关注智能合约运行所需数据的可用性及可信性问题,以及如何通过密码学技术和可信硬件等措施为智能合约提供更加安全可信的执行环境。

区块链安全受到对等网络、共识机制、智能合约等多个层级的共同影响,单一层级的安全研究并不能解决区块链整体安全问题。因此,未来研究在解决单一层级的安全威胁时,应考虑各层级的相互影响,得到系统性的区块链安全方案。

4 区块链隐私

传统区块链通常采用假名机制为用户提供一定程度的匿名保护,即用密码学技术计算出的地址代表用户身份。一般地,用户可以生成任意数量的地址,同一用户的不同地址可单独使用且不存在任何关联关系,因而仅通过地址无法关联到用户的真实身份。

在实际应用中,区块链中所有交易数据、合约代码等都可以公开获取。因此,攻击者能轻易获取区块链中的数据,并通过分析数据窥探更多隐私信息。例如,攻击者通过分析比特币历史交易数据的输入输出关系,可将用户的不同地址、交易金额等信息进行关联,进一步推断出用户的真实身份。此外,在无身份认证机制的公有链网络中,攻击者可通过部署恶意节点加入网络,以监听网络中其余节点的隐私信息以及网络通信信息。因此,区块链的隐私泄露问题十分严峻。

4.1 隐私威胁

目前,区块链隐私威胁主要源于攻击者对交易、网络通信、智能合约等信息的恶意窃取和利用。当前的区块链系统一般通过未花费交易输出(Unspent Transaction Output, UTXO)模型或账户/余额模型记录节点间的交易历史。针对特定的交易记录模型,攻击者可发起攻击(如针对UTXO模型的交易网络构造攻击和资产追踪攻击)获取包括交易发起方、接收方、交易金额和附带数据等信息,通过数据分析进一步挖掘出单笔交易的内容和隐藏在多笔相关交易中的用户身份、账户余额等信息。

公有链对等网络中没有身份认证机制,节点可自由加入或退出。攻击者可任意部署恶意节点加入网络,监听网络中其余节点的隐私信息(如节点网络IP)以及网络通信(如节点间通信的数据内容)信息,甚至对其余节点的正常通信发起攻击。

除交易和网络通信的隐私威胁外,部署在区块链上的智能合约也面临隐私威胁。如前文所述,智能合约是区块链上可共享的程序代码,涉及账户地址和数字资产等信息。智能合约也具有公开透明的特性,致使其难以安全地存储或计算敏感数据(如拍卖合约中的竞价金额)。

4.2 隐私保护

4.2.1 交易内容的隐私保护

交易的隐私保护内容包括交易发起方(输入地址)、接收方(输出地址)、交易金额等信息。针对交易双方地址的隐私保护,研究学者提出地址混淆机制,使得攻击者难以获得地址间的关联关系。此外,研究学者还提出信息隐藏机制,以更好地实现交易内容的隐私保护。

地址混淆机制是一种不同用户间通过交易来实现资产交换、混淆用户地址的一种隐私保护机制,典型应用如CoinJoin协议[102]。CoinJoin协议中,参与混淆的用户通过协商交易输入输出地址、统一输出金额等参数构造一笔混币交易,并在检查自身输出无误后对输入进行签名。当所有参与用户完成签名后,广播交易到网络中,攻击者无法通过分析混币交易分辨出不同的输出,因而无法分析每个输入地址和输出地址间的关联关系。地址混淆机制可在一定程度上保护交易内容隐私,但地址混淆的结果仍存储在区块链中并可公开获取,攻击者可以通过分析带有特征的混淆交易窃取交易内容。

为增强交易内容的隐私性,研究学者提出多种信息隐藏机制,如通过密码学技术将交易内容进行加密隐藏。目前,应用于区块链交易内容的信息隐藏技术主要用于隐藏交易输入地址、输出地址、交易金额等信息,典型应用包括门罗币、Zcash以及ZK2Rollup(即ZK-ZK Rollup)。

门罗币基于CryptoNote协议[103],通过一次性可链接环签名和隐蔽地址来隐藏交易双方地址。具体地,交易发送方将自己置于匿名集中生成可链接的环签名,通过混淆发送方与其余节点来保证发送方匿名性。隐蔽地址指接收方收到交易密文后利用自身私钥解密交易,除接收方外的节点无法将其与密文联系起来,以此保证接收方匿名性。此后,门罗币借助区间证明无需透露具体数额的特性来开发环保密交易,实现交易金额的隐藏。门罗币中发送方匿名性取决于匿名集大小,匿名集越大则匿名性越强,但生成的环签名所需存储和验证复杂度也随之增长。

Zcash是首个采用简洁非交互式零知识证明(zk-SNARKs)的加密数字货币,包含透明地址和隐蔽地址,可同时支持透明和隐私交易[104]。透明地址间的交易与比特币中的交易相同,不具有隐私性;透明地址和隐蔽地址间的交易可保证隐蔽地址方的匿名性;交易双方均为隐蔽地址可实现交易隐私。与门罗币不同,Zcash中隐私交易的发送方提供不会泄露交易双方地址和具体金额的零知识证明来保证交易的有效性,非交易双方的第三方和验证交易的矿工无法获得交易地址和金额等信息。隐私交易虽能提供较高隐私性,但发送方提供零知识证明需要高昂的计算成本,导致用户更倾向于选择透明交易。据统计,实际应用中隐私交易占比不足5%[105]。

基于以太坊的性能提升方案ZK Rollup,AZTEC团队提出ZK2Rollup以实现每秒数百笔的隐私交易,同时降低每笔交易的隐私成本[106]。ZK2Rollup首先利用zk-SNARKs创建隐私交易,校验多笔隐私交易后提供一个zk-SNARks证明,校验所花费的高昂成本将会分摊给所有交易,如此可同时实现交易隐私保护和吞吐量提升。目前ZK2Rollup还处于早期研发阶段,亟需突破证明递归难题。

目前,区块链中交易内容的隐私保护方案主要关注各种信息隐藏技术,通过采用环签名、零知识证明、同态加密等密码学技术实现交易双方地址、交易金额等不同程度的隐私保护。然而,这些方案也面临计算成本高和安全性依赖于密码学技术等问题,缺乏更多实际应用。

4.2.2 网络通信的隐私保护

攻击者通过部署任意多的恶意节点监听网络通信信息,进一步将节点IP地址与链上交易、用户身份等进行关联。因此,研究学者提出混淆网络来增加隐私获取难度,以保护网络通信信息。

在混淆网络Nym[107]中,为使所有数据包具有统一大小而采用的Sphnix数据包格式、相近时期的流量混淆以及为确保用户不必信任单个节点而采取的多跳传递可保护网络通信信息。同时,Nym设计激励系统以激励节点参与流量混淆,混淆流量越多所提供的隐私性越强。此外,Nym提供基于零知识证明的匿名身份凭据,允许用户披露自己选择的个人数据,从而实现用户身份的隐私保护。

除Nym外,Tor混淆网络采用洋葱路由技术保护网络通信的真实发送节点和接收节点,实现节点间的匿名通信[108]。然而,基于Tor混淆网络的区块链项目存在一定的安全隐患。例如,攻击者通过监听Tor混淆网络中各节点的流量收发情况来分析网络中的流量变化,进一步根据各节点同一时刻的流量进出情况判断节点间的链路关系并挖掘出通信的真实发送方与接收方地址信息[109]。

4.2.3 智能合约的隐私保护

目前,针对区块链的隐私保护方案主要关注对交易和网络通信的隐私保护,而针对智能合约的隐私保护工作相对较少。现阶段,智能合约隐私保护方案包括Ekiden和Origo。

Ekiden是一个结合区块链和可信硬件来实现高性能和隐私的智能合约平台[110]。在智能合约初始化阶段,Ekiden会对合约进行加密,并提供与合约相关的公私钥对及初始化正确性证明,共识节点验证证明后将加密合约存储到区块链上。合约调用首先需要节点提供合约公钥加密输入,加载合约代码和当前状态,从密钥管理器获取合约对应私钥后解密合约并在可信执行环境中执行,最后将合约加密后的新状态、正确执行证明提交给共识节点验证。Ekiden中区块链仅存储加密后的合约状态,实现了智能合约的隐私保护,但其可用性和安全性依赖于选用的可信硬件及设计的密钥管理协议。

针对以太坊智能合约的Origo协议[111]通过密码学中的承诺保护合约输入的隐私性,并结合可信硬件和零知识证明为合约执行过程及结果提供隐私保护。此外,协议要求合约参与方质押一定数量的货币以防止参与方选择恶意行为或泄露他人隐私。若存在恶意行为,质押的代币将会被没收。与传统区块链不同的是,Origio中并不是每个节点都会执行合约,而是由参与方从网络中选择一个节点负责合约执行和零知识证明构造,但项目白皮书中未就各参与方如何选择节点作出详细说明。

针对智能合约的隐私保护方案,通常选择可信硬件作为智能合约链下执行的可信计算环境,同样采用零知识证明技术为智能合约的执行提供证明。因此,这些方案也面临计算成本高,安全性依赖于可信硬件和密码学技术等问题。

4.3 隐私问题研究总结与展望

随着区块链的发展与应用,区块链的隐私威胁逐渐成为研究学者和工业应用的关注热点。本节从交易内容、网络通信和智能合约等方面分别介绍区块链所面临的隐私威胁,并归纳总结针对不同对象的隐私保护方案,如针对交易内容的地址混淆机制和信息隐藏机制。现有隐私保护方案存在诸多不足,距离解决区块链隐私威胁仍存在较大发展空间,具体表现如下:

(1)有限的隐私保护 现阶段的隐私保护方案主要关注交易或网络通信的隐私保护,对智能合约的隐私保护关注较少。即使是在同一层面,一些隐私保护技术也难以覆盖到单一层面的全部内容,如可保护交易发起方地址的环签名技术、保护交易接收方的隐蔽地址以及保护交易金额的环保密交易。因此,未来研究可结合多种技术来实现区块链上更多信息的隐私保护。

(2)安全风险 部分隐私保护方案借助环签名、零知识证明等密码学技术、混淆网络、可信硬件等应对隐私威胁,但这些方案也引入一定的安全风险。例如,Zcash和ZK2Rollup方案中所采用的zk-SNARKs需要可信第三方生成私密参数,而生成的私密参数可能会影响整个系统的安全性。

(3)性能限制 除安全性外,现有隐私保护方案在性能上也存在一定不足,如针对交易内容保护的信息隐藏机制中所采用的各类密码学技术需要大量的计算验证时间和存储空间,这使得此类隐私保护方案难以应用到大规模场景中。

综上所述,现有区块链隐私保护方案对密码学技术、可信硬件等的依赖致使其在实现隐私保护的同时也将引入安全和性能问题。因此,除应实现对交易内容、网络通信、智能合约等多方面内容隐私的保护外,未来也应考虑兼顾区块链的安全攻防、性能提升和隐私保护。

5 区块链性能

5.1 性能现状

与传统数据库相比,区块链在性能上也存在诸多不足,具体体现在吞吐量、数据存储和可扩展性3个方面:①吞吐量远远低于VISA等传统支付系统,极大限制了区块链在金融系统等高频交易场景中的应用;②全网存储的方式使得数据存储愈加困难,如比特币中完全同步自创世区块至今的全部历史数据大约需要318.1 GB(每年增长61.59 GB)存储空间[112];以太坊则大约需要604.29 GB(每天以2~3 GB的速度增长)存储空间[113];③单链结构使得区块链系统的交易能力受限于单个节点,而共识机制也对区块链系统为适应交易增长而具有的动态扩展能力产生一定影响。

吞吐量低、数据存储困难和可扩展性差等引起的性能问题极大地限制了区块链的发展和广泛应用,是学术界和工业界重点关注和深入研究的核心问题,也是更多区块链应用落地所需攻克的壁垒。鉴于此,众多研究学者对区块链性能主要影响因素进行了深入分析。

在以比特币为代表的区块链1.0[28]中,其性能制约因素可归纳为区块容量、广播通信和出块时间。一方面,在全网节点针对新区块达成共识前,区块需要历经封装、全网广播和验证等阶段。这些阶段涉及大量密码学运算和广播通信,所需时间随着区块容量增加而增长。另一方面,一些共识机制通过延长出块时间间隔来降低分叉概率(如工作量证明共识机制),这也将影响区块链性能。在以以太坊为代表的区块链2.0[28]中,除区块容量、广播通信和出块时间外,智能合约执行时间也是制约区块链性能的影响因素。在未来的智能化物联网时代,当区块链应用领域覆盖到人类生活的方方面面时,异构区块链之间的跨链交易执行、合约调用、共识形成等操作也将影响区块链性能。目前,研究学者提出了多项性能优化方案以期突破性能瓶颈,满足区块链广泛应用的需求。

5.2 性能优化

从性能制约因素角度出发,性能优化方案可分为算法层面的提升和架构层面的改进。算法层面的性能优化方案主要从共识机制、对等网络和密码学等技术着手,通过提供高速的网络连接、采用减少广播的共识机制或更高性能的加密算法等方法来提升区块链性能。然而,此类优化方案无法解决区块链的可扩展性问题,性能提升有限。在架构层面,关注于区块链性能提升的前沿方案主要采用可扩展性强的扩容技术。根据是否改变区块链架构,扩容技术可进一步分为第一层扩容技术和第二层扩容技术,也被称作“链上扩容(on-chain scaling)”和“链下扩容(off-chain scaling)”。

5.2.1 链上扩容

链上扩容主要通过增加区块容量、有向无环图(Directed Acyclic Graph,DAG)和分片(Sharding)等方案来提升性能。

(1)增加区块容量

比特币社区曾提出多项与区块扩容相关的比特币改进提案(Bitcoin Improvement Proposals,BIPS),其中BIP100-109[114]等方案研究通过增加区块容量使得单个区块包含更多的交易,从而提升区块链性能。比特币现金和比特币SV分别将区块容量扩充至32 MB和128 MB,期望解决性能过低的问题。增加单个区块容量的方案可在一定程度上提升交易吞吐量且逻辑简单易实现,但容量过大的区块会增加区块传输时间,区块链可能会频繁分叉,进而引发严重的共识安全问题。

(2)有向无环图

传统区块链采用单链数据结构,除创世区块外,每个区块有且仅有一个前驱区块,区块间按照出块时间通过哈希指针连接形成单链。这种数据结构使得区块间的连接只能以串行方式进行,区块链性能受到极大限制。

与传统链式数据结构不同,有向无环图中的每一个基本单元都可连接多个前驱单元,也可同时连接多个后继单元。为此,研究学者基于有向无环图提出了多个性能优化方案,以期突破传统链式数据结构所带来的性能瓶颈。例如,IOTA[115]方案中创建新交易需验证和引用账本上已有的两笔交易,每笔新交易对其验证和引用的交易贡献累计权重,当某笔交易累计权重足够高时可被认定合法;为及时确认旧交易,引入协调器来定期发布检查点进行交易确认。Byteball[69]和HarmonyDAG[117]采用“见证人+主链”的共识机制,节点创建新交易时指定12个仅发布交易的见证人,并根据见证人列表选择一笔交易回溯至创世交易形成主链。随着见证人发布新交易,稳定点(不同主链在某个交易位置的交叉)将沿着主链不断前进,其直接或间接引用的交易也将被确认,从而形成一条确定的交易序列。COTI[118]采用信任证明共识在创建新交易时赋予新交易节点自身信任分数,并选择信任分数与新交易最为接近的交易进行验证。当一笔交易及其后连接所有交易的累计信任分数超过一定阈值时,可认为交易已被确认。

有向无环图的性能优化方案中,交易无需被打包进区块等待确认,而是直接由后继交易进行验证和引用,其性能相较于比特币、以太坊等平台可得到显著提升。但是这些方案的验证规则均基于新交易对旧交易的验证与引用,在网络交易数较少时,易出现交易迟迟无法确认的情况。引入的协调器、见证人或防双花节点也表明现阶段这些方案存在中心化问题,而去除此类特殊节点可能会引入更多新的问题[116]。同时,DAG分布式账本多采用新共识机制,这些共识机制缺乏严格的安全分析和证明。此外,DAG分布式账本的智能合约支持较弱(IOTA暂不支持智能合约,COTI于2020年推出的MultiDAG[119]支持处理不同代币和智能合约),多数方案的智能合约还处于研究或开发阶段。

(3)分片

分片源于数据库的扩容技术,通过将数据库分割成多个小且可处理的部分以提升性能。根据分割对象可将分片技术划分为网络分片、交易分片和状态分片。网络分片将区块链网络划分为多个子网络以便所有分片可并行处理网络中的交易;交易分片将全网交易按照特定属性划分到不同分片中,全网多个分片可同时打包和验证不同的交易,从而提升整体性能;状态分片将完整的区块链状态信息存储至各个分片,各节点负责存储所在分片的数据,而不用存储完整的区块链状态。

基于分片技术的公有链Zilliqa[120]首先运行PoW构建目录服务委员会,委员会根据剩余节点再次运行提交的PoW将节点划分至不同网络分片,同时每一笔交易将根据发送者地址进行交易分片划分(同一账户的交易将被分到相同分片内验证)。每个网络分片内部运行改进PBFT并将各自产生的微块发送给委员会,由委员会验证和生成一个共同签名的全局区块,并将全局区块广播给所有分片。而以太坊2.0[121]中,节点首先质押以太币以成为信标链中的验证者,每隔一个周期(一个周期被分为32个插槽,每个插槽对应一个区块)信标链根据RANDAO合约和可验证延迟函数计算出的随机数将所有验证者重新分配到不同分片,分片内部采用权益证明共识打包交易生成区块。以太坊2.0中各分片独立处理分片内的交易和生成区块,同时定期通过交联的方式将分片区块链的状态记录在信标链上。当信标链上的区块被最终确定,在包含的交联中引用的分片区块也被视为最终确定。

从分片模式上看,网络分片加上交易分片可提高交易的并发处理能力。网络节点数越多,分片数增长,交易吞吐量和可扩展性可线性提升,但所有节点仍需存储完整的区块链状态。状态分片可减少状态的冗余存储,使区块链具有存储可扩展性。但由于各分片仅存储自身状态和交易数据,完成跨分片交易时需要进行分片间通信,这增加了分片通信的复杂度且难以保障跨分片交易的原子性。

5.2.2 链下扩容

不同于对区块链架构本身进行修改的链上扩容方案,链下扩容是将复杂的计算和高频率的交易转移到链外进行,而链上仅存储最终结果,主要包括侧链和支付通道等方案。

(1)侧链

侧链可理解为为某种主链(如比特币或以太坊)提供支持和服务的区块链,如BTC Relay、Plasma。BTC Relay[122]通过智能合约连接以太坊、比特币网络,使用户可在以太坊平台上验证比特币交易、存储比特币区块链头部并检查智能合约内部最新的比特币信息,但通过智能合约获取比特币网络中的数据存在一定程度的中心化,同时奖励Relayers使得合约的维护成本比较高。Plasma[123]通过树状结构创建多条子链,大量计算过程被转移到子链中进行,以减轻以太坊主链交易负荷,从而提高区块链性能。但是Plasma需要节点不断验证子链以保障资产安全,而且当恶意节点拒绝提供交易数据时将面临数据的不可用性,以及节点大规模退出时可能引发主链拥堵。

类似地,Rollup(分为ZK Rollups[124]和Optimistic Rollups[125])通过智能合约管理子链和主链之间的数据传输,并将包含大量交易的状态变化打包,进行简洁的加密,为主链提供数据可用性证明而无需提交所有交易数据。ZK Rollups使用zk-SNARKs来验证新区块,避免Plasma中为检测恶意交易设定的挑战期,但为每个区块生成zk-SNARKs需付出高昂的计算成本。Optimistic Rollups规定验证者在1~2周的挑战期内提供错误性证明来验证已发公布的区块,若该区块被证明无效则回滚,若无节点提交错误性证明则无需验证区块。但这将导致挑战期结束前没有交易被确认,难以保证交易安全性。目前,两种方案都还处于早期研发阶段,需要克服安全和区块中交易最终确认时长等挑战。

(2)支付通道

支付通道是指在不同用户间或用户和服务间建立一个通道,将大量计算移到链外,待计算完成并经多方签名确认后在区块链上存储最终结果。支付通道可根据交易方式简单分为单向支付通道和双向支付通道。单向支付通道仅支持单向的支付,无法支持交易的双向传输,因此应用十分受限。

现有支付通道方案主要以双向通道为主,典型应用包括闪电网络、雷电网络等。闪电网络[126]是一个针对比特币区块链吞吐量低、难以支持小额交易等缺陷而建立的支付系统,使用户能够在一个低费用、高吞吐量的环境中进行交易。用户只需定期将支付通道的交易结果记录到区块链上,而无需提交全部交易,从而提高比特币区块链的吞吐量。若交易过程中一个节点出现问题,将导致整条通道中断,闪电网络将面临单点故障问题;此外,交易的支付额度受节点的锁入金额限制,致使闪电网络难以支持大额交易。在最新的研究进展中,闪电网络已测试通过多路径支付方案,通过将大额交易分为多笔小额交易,分别经由不同的路由抵达交易方,由此可解决大额交易的支付问题。

多数双向支付通道方案需要为交易双方建立一个通道,而建立通道需要依赖一个中间节点,这与区块链去中心化的理念相悖。为此,Perun[127]引入一种虚拟支付通道的技术,以直接为交易双方建立一条虚拟通道,从而避免引入中间节点。此外,支付通道方案中需要在通道中将交易双方的保证金锁定一段时间。当恶意节点不断发起交易时,可能导致一条路径(多个支付通道连接形成)上的保证金都被锁定,从而引发悲伤攻击。鉴于此,EGGER等[128]针对锁定在通道中的保证金提出一种新的度量方式,以解决保证金锁定时间过长的问题和抵御可能的悲伤攻击。

5.3 性能问题研究总结与展望

一直以来,区块链在吞吐量、数据存储和可扩展性等方面的表现远不如传统数据库,性能问题成为区块链广泛应用必须突破的瓶颈。为此,研究学者针对区块容量、网络通信、出块时间等性能影响因素提出了多项性能优化方案。根据笔者对现有性能优化方案的介绍和分析可知,现有研究工作重点在改进并提出可扩展性强的扩容技术,但仍面临着诸多未能破解的挑战问题。

(1)链上扩容主要从区块链架构本身进行改进,通过直接增大区块容量、提升区块的出块速度来提升全网的交易处理能力,主要包括各类基于有向无环图或分片的性能提升方案。此类方案多受限于网络中的节点数和交易数,性能提升有限。此外,一些方案中采用了新的共识机制,这些共识机制缺乏安全性分析和证明,增加了区块链中心化和遭受安全攻击的风险。

(2)链下扩容通过分离链下计算和链上存储的思想,在保障一定程度去中心化情况下提升性能。链下扩容面临节点离线、交易数额大小和保证金锁定等问题。此外,链下计算的安全性、复杂计算的结果验证和对复杂操作的支持(如智能合约调用)也是链下扩容方案所需要解决的难题。

在现有区块链性能优化方案中,链上扩容和链下扩容均能在一定程度上实现不同效果的性能提升却又各自存在一定的局限性(如表1)。未来研究中,除链上扩容和链下扩容各自的深入研究外,还应关注二者的协同研究,以及协同方案对区块链去中心化程度、安全性、隐私性等的影响。

表1 区块链性能提升方案对比

6 结束语

区块链是对等网络、密码学、共识机制和智能合约等技术的综合,具有去信任、防篡改、可追溯、高可用等特性,在制造、金融、医疗健康、司法存证、版权管理等各行业正加快应用落地的步伐。但整体上,区块链的相关理论研究与应用探索目前仍处于初级阶段且面临着诸多挑战,主要表现在对等网络、共识机制和智能合约等核心技术层面所蕴含的安全、隐私和性能等关键问题,且存在较大的相关研究与技术缺失,制约着区块链的广泛应用和深入发展。

本文主要从技术视角完成了对区块链安全、隐私与性能问题的分析评估工作,包括:①基于区块链层次结构与运行原理,就对等网络、共识机制和智能合约层面的安全问题及攻防措施进行了分析评估;②基于区块链隐私威胁基本原理,比较分析了不同隐私保护对象的分级隐私保护策略;③通过分析性能制约因素,评估了基于链上与链下两种扩容路线的最新研究进展。

笔者认为:

(1)现有研究并未很好地解决区块链面临的安全威胁。受对等网络、共识机制、智能合约等多层级共同影响,单一层级的安全研究并不能解决区块链整体安全问题。故未来研究应考虑各层级的相互影响,得到更加完善且有效的区块链安全方案。

(2)现有区块链隐私保护方案对密码学技术、可信硬件等的依赖,致使这些方案在实现隐私保护的同时也将引入安全和性能问题。未来研究中在隐私保护之外,应考虑兼顾区块链的安全与性能。

(3)现有区块链性能工作重点关注扩容技术研究,链上和链下扩容各自能在一定程度上实现不同效果的性能提升却又存在局限。未来研究应关注二者的协同研究,以及协同方案对区块链去中心化程度、安全性、隐私性等的影响。

猜你喜欢

分片合约共识
上下分片與詞的時空佈局
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
商量出共识
基于模糊二分查找的帧分片算法设计与实现
“慢养孩子”应成社会普遍共识
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望