区块链是一种新型密码学化的分布式网络交易记账系统。区块链在设计中采用了一些新的安全思想、方法和技术,能够满足全球范围内各种类型大规模网络交易的现实安全需求,同时也为以区块链引领的科技创新提供了坚实的基础和发展动力。目前,区块链作为颠覆性的创新技术,已渗透到金融、资产、版权、法律、公益等各种领域中,成为新的业务增长动力。
随着对区块链技术研究的深入,近年来区块链中存在的一些安全问题逐渐暴露出来。如何针对这些安全问题展开研究,保证区块链系统的长期安全运行,成为急需解决的问题。同时,一些新的安全技术也被开发和引入到区块链系统设计中,为区块链的未来发展提供了可靠而灵活的安全保障。
本文将从区块链的设计和需求出发,探讨区块链技术中各种安全机制的属性与特征,揭示它如何解决算法安全性、协议安全性、使用安全性和系统安全性等多方面挑战,并对未来区块链发展进行展望。
驱动力:安全交易保障
随着电子商务和网络金融的迅速发展,每时每刻数以亿计的网络交易正在互联网上执行。如何保障这些交易的安全,实现海量交易数据的安全存储、交换和共享,成为需要迫切解决的问题。区块链正是解决此问题的实用化技术,它具有的开放性、全球性的特点,保证了交易活动可以在任何时间、任何地点进行,突破了传统贸易在时空上的限制。同时,区块链去信任性、公平性、交易透明性等特征,也为交易双方创造了更多的交易机会。这些特征具体表现如下:
1.去信任性:参与系统的每个节点之间进行数据交换是无须互相信任的;
2.公平可信性:具有“权力制衡”的思想,任意节点之间的权力和义务享有均等关系;
3.记账式存储:可支持以不可修改记账形式保存资产的发行、变更、交易等操作信息;
4.交易溯源机制:建立以交易介质为中心的处理机制,实现对交易记录(transaction)的溯源、跟踪;
5.强抗损性:任意小部分节点的损坏或者失去都不会影响整个系统的运作。
区块链技术就是针对上述需求而提出的一种实用化创新技术,它的新颖性体现在可以提供一种安全的、去中心化的、支撑大规模用户的、由事务驱动的海量数据协同共享服务平台。该平台集成了大量新的方法和机制,包括分布式账本技术、点对点对等(P2P)网络技术、非对称加密技术、共识机制技术以及智能合约(smart contract)技术。
这些机制使得区块链能够抵抗篡改、欺骗和泄露的威胁,保证数据的完整性、不可否认性以及隐私性,并能维护链上数据的一致性,从而保证了所有交易数据的安全。另外,为了维护区块链系统能够正常运行,人们还研究并提出了一些其他的技术手段。例如,防止交易风暴攻击的技术,保护数据隐私的密文访问控制技术,防止密码丢失或者泄露导致数据丢失的密钥管理技术。
分布式记账:安全存储模型
区块链本质上是一个分布式存储系统,但它有别于一般的分布式数据库系统,采用记账式存储模型,通常被称为分布式记账(distributed ledger)系统。作为记账本,区块链以一定时间间隔为“记账周期”,在每个周期内将全网内的交易记录收集在一起,打包成块,并按照时间先后顺序链接在一起。这种记账单式的存储,优点是允许对资产的发行、变更、交易、挂失、注销等行为进行记录,操作简单、无纸化凭证、效率高、成本低、安全可靠。
分布式存储并不是一项新的技术,但区块链与分布式数据库有一些显著的区别。首先,后者提供“增加、删除、修改、查询”四种对数据的基本操作,而区块链却只有“增加”和“查询”两个操作,没有“修改”和“删除”操作。但这并不表示区块链中的数据不能修改和变更,这两种功能需要通过添加新的交易记录来实现。这种数据操作方式从根本上避免了对数据的恶意修改,为交易数据的安全奠定了基础。
其次,在存储结构上,区块链(如同数据库)由一系列数据区块(如同数据表)构成,每个区块由包含元数据的“区块头”以及含有当前周期内多条交易记录(如同数据记录)的“区块体”组成。这种结构更加安全,原因在于它由两种带密码学哈希(Hash)机制的数据结构构成:哈希链表和默克尔树(Merkle tree)。哈希链表是指由包含前一个“区块头”的密码学摘要(被称为前区块哈希值)作为父指针构造的线性链表,它不仅将所有区块链接在一起,而且保证任何区块的添加、删除和修改可被检测;默克尔树则采用二叉树结构,对所有块内交易记录生成一个压缩后的密码学摘要(被称为本区块哈希值),它同样保证可检测任何交易记录的改变。
与传统分布式数据库相比较,上述区块链的存储方式提供了对交易数据一致性检验和完整性验证功能的支持。区块链中每个保存完整数据的节点记录了从初始到当前的所有交易数据,哈希链表能验证各节点中的数据是一致的,任何改变都会以密码验证方式被发现。其次,默克尔树保证了交易记录不会被恶意篡改,而且篡改检测也异常简单:只需要验证从它到树根路径上的哈希值正确即可。总之,区块链的这些存储和安全特征是传统分布式数据库所不具备的,在密码学上保证了记账单内数据的一致性和完整性。
到目前为止,已构造出多种区块链平台,尽管它们在诸多方面存在不同,但都遵循上述基本数据结构来保证存储数据的安全。表1比较了三种主要的区块链平台。可以看出区块链平台中技术和功能的多元化,这种特点使得我们很难为区块链提供一种统一的安全策略和安全方法。但是,一些新的安全技术无疑提高了我们应对挑战的能力。
表1 三种区块链平台的比较
比特币(Bitcoin)
以太坊(Ethereum)
超级账本(Hyperledger)
类型
公有链
公有链
联盟链,可扩展为公有链
高速网络
支持,闪电网络
雷霆网络
未知
账户
没有账户概念,采用UTXO来记录余额
有账户的概念,分为普通账户和合约账户,每个账户对应有永久存储空间,存储该账户的以太币余额、Bytecode、计数器(防止重放攻击)、其他键值对等
每个被部署的链上代码(chaincode,即智能合约)就是一个账户,每个账户也对应有永久存储空间,存储自定义的键值对
出块周期
平均10分钟一个块,是平均,不是固定。处理逻辑是只要矿工算出答案就立即出块,快到几秒、慢到几小时都有可能
平均十几秒
默认1个交易出一个块,也支持CommitTxBatch模式,多个交易一个块
共识机制
工作量证明(POW),并且设有代币,用于奖励和抵抗攻击
POW,并且设有代币,用于奖励和抵抗攻击
实用拜占庭容错算法(PBFT),不要求必须设置代币,当前没有
简单支付验证(SPV)
支持,不运行完全节点也可验证支付,用户只需要保存所有的区块头。用户只要从区块链某处找到相符的交易,就可以知道网络已经认可了这笔交易
未知
不支持
资产数量
只支持比特币一种资产
支持多种资产
支持多种资产
可编程
内置脚本支持编程能力极为有限
支持智能合约,达到图灵完备
支持智能合约,达到图灵完备
去信任化:安全运行基础
区块链的分布式记账技术体现在所有存储数据对系统内各节点的公开化与一致化,类似于一个公开透明的全社会“征信”系统,它打破了社会中信息不对称、不可信的僵局。上述特征被称为“去信任化”。这种去信任化是依靠整个系统的运作规则公开透明取得的,这里的运作规则泛指区块链中运行的各种安全协议。这些规则保证了去信任化能力在节点间无需互相信任的条件下获得,无任何附加的要求和限制。
为实现去信任化,区块链中安全协议的设计不仅要满足分布式运行的特点,而且要具有容错性和抗攻击能力。首先,针对网络交易全球化、跨地域、分散化的特点,区块链技术选择建立在非中心化的、P2P网络基础上,可支持全球范围内任意设施自由进出;同时,区块链网络中的资源和服务分散在所有节点上,信息传输和协议运行都直接在节点之间进行,无需中间环节和服务器的介入,避免了可能的瓶颈。此外,P2P的非中心化基本特点,也带来了可扩展性、健壮性等方面的优势。
其次,对等网络所具有的网络拓扑“高聚集度”和“短链”特征,使得区块链可以支撑世界各地的海量用户进行大规模、并发的交易,及时将交易数据通过记账节点存储到区块链中,实现全网内的数据快速同步。这两个特征为区块链奠定了安全高效的网络运行基础。
进而,在技术层面上,区块链的去信任化有赖于拜占庭一致协议(Byzantine agreement)所具有的鲁棒性和抗攻击能力,实现对异常行为的发现和保障记账单内数据的同步(全网一致性)。拜占庭一致协议体现了拜占庭容错特性:在n名成员构成的系统中,如果成员中的叛逆者(故障节点或攻击的共谋者)数目为t,那么只要n3t,在同步(或时延有界)通信网络环境下能够保证:(1)在有限时间内终止协议;(2)忠诚方最终达成一致结果。拜占庭容错特性对保障区块链系统安全具有重要的理论和现实意义,使得任意少数节点的损坏或者失去都不会影响整个系统的运作。在此基础上,通过安全协议的构造可以实现区块链系统极好的健壮性。
就区块链的抗攻击性而言,已有研究表明,拜占庭容错所提供的鲁棒性和抗攻击上界(tn/3)并不是不可突破的。例如,在同步广播信道存在的情况下,拜占庭容错上界理论上可以接近总节点数的一半(tn/2);如果进一步引入密码学上NP完全问题的困难假设,那么拜占庭容错上界理论上能够抵抗任意数目敌手的共谋攻击,即突破n/2上界。这些结果无疑增加了区块链系统的安全性,对区块链发展具有决定性意义,为以区块链为基础的安全协议构造扫清了理论障碍。因而,采用具有可证明安全(provable security)的安全协议分析技术,构造更高抗攻击上界的多方协议是未来区块链研究的必然选择。
上述多方协作安全机制的引入使得区块链中存储的交易记录具有“公信力”(credibility),这种公信力既是一种社会系统信任的表示,也是公共权威的真实表现。同时,这种公信力是受到各方面监督的,表现在区块链所体现的“权力制衡”思想,即任意节点之间的权力和责任是均等的,通过共识机制实现集体意志的体现,这对于未来构建数字社会具有重要意义。
共识机制:安全协同共享
共识机制(consensus protocol)是指在多方协同环境下对任务执行结果所有方达成一致(共识)的机制。在区块链中引入共识机制最早是为了解决新交易块加入哈希链表中可能出现的“块冲突”问题,也就是多个块同时被不同的块创建者加入到哈希链表中而引起的链表分叉(forking)问题,它可能会导致双重花费(double-spending)与交易无效的风险。随着区块链研究的深入,共识机制已经与信任建立机制、酬劳分配机制等设计紧密相关,成为区块链技术必不可少的基本安全元素。
实现多方共识的机制有多种,最常见的是上面所述的拜占庭一致协议,它是一种通过全体成员采用一致表决的方式对某事务达成一致性意见的过程。然而,此方法虽然具有较好的理论基础,但是具有较高的通信复杂性,仅适合于较少节点的区块链系统(如共同体区块链)。对于一个具有几十万节点的全球网络而言,实现新加入块的共识是一个具有挑战性的问题。更有效的做法是通过某种“凭证证明”方式代替“共同协商”方式来设计共识机制,这就如同用比较“劳动业绩”代替“投票选举”方式选择劳模一样。目前区块链采用和研究的共识机制包括:
工作量证明(Proof of Work, POW):它将解决计算困难问题所需要的计算代价作为新加入块的凭证并获得激励收益;
权益证明(Proof of Stake, POS):它以权益证明代替工作量证明,由具有最高权益的节点执行新块加入并获得激励收益;
股份授权证明(Delegated Proof of Stake, DPOS):它是权益证明的一个演化版本,首先通过权益证明选出代表,进而从代表中选出块生成者并获得收益。
这些共识机制的基本点是提供一种可比较、可证明的机制来推选出公认的块生成者,从而代替基于拜占庭一致的选举协议完成选择。这种方式减少了通信开销,但增加了节点的计算开销。为了弥补这种损失,共识机制也是作为一种对交易块生成的奖励而出现的。从安全协议分析上讲,上述共识协议属于“数字认证技术”的范畴,也就是通过验证某种共识性的信息实现对被选举人身份的确认。现代密码学在数字认证技术上坚实的理论基础和丰富的实践经验,对于进一步提高共识协议的完备性具有重要意义。
数字签名:安全交易证明
保证电子交易中的资产所有关系是数字资产保护的安全基础。区块链为此提供了基于标准数字签名算法的所有权认证功能,被认为是数字资产保护的一种有效途径。在区块链中,每一笔电子交易都存储在块交易记录中,包含交易内容和资产接收者的公钥证书(certification)。与通常的公钥证书相比,它去除了公钥所有者标识信息,从而保证了资产接收者身份的匿名性。资产接收者只需要保留与公钥证书中公钥相对应的私钥,即可对资产所有权进行宣称和验证。
区块链中交易的所有权证明分为两个过程:
1.交易签名:交易中资产卖出者将前一次资产买入的交易记录哈希值与交易内容和资产接收者的公钥证书绑定在一起,用自己的私钥进行数字签名的过程,其中的数字签名表明交易获得了卖出者本人的授权。
2.交易验证:对于一次有效的交易签名,任何人可依据存储在前一次资产交易中的资产卖出者公钥证书对交易签名进行验证的过程。但是这一过程并不需要透露用户的身份。
上述的匿名性并不代表交易的不可连接性。例如,用户一直只采用一个公钥证书,那么可以通过查询该公钥证书获知他的所有交易信息。因此,严格意义上的匿名性需要用户每次采用不同的公钥和私钥,但对于用户而言,管理如此多的密钥并不现实。
签名技术也是保证交易安全的基本保障,一些新的签名技术已经被引入到区块链构造中,如盲签名、群签名、环签名、聚合签名、门限签名等。这些签名技术的引入能够满足更多实际情况的需要。例如,在某些交易中,需要引入第三方来证明确实进行了交易,同时还不能让该第三方知道具体的交易内容,这种情况就需要采用盲签名技术。与传统数字签名技术相比较,这些高级签名技术具有特殊的安全属性,而且通常是可证明安全的。因此,提供更高的安全性和更好的性能,有利于拓展区块链在更多领域的创新应用。
但新的密码技术引入也会引发新的安全问题。例如,多签名技术被引入到Bitfinex/Bitgo平台。然而,由于缺乏对协议运行安全的准确把握,编程人员错误地设定了签名请求应答过程,使得Bitfinex服务器发起的提现请求Bitgo全部都会通过。由于这一错误,当Bitfinex服务器被黑客攻破并在Bitfinex服务器发起提现请求时,Bitgo就会直接把币发出去,因而引发了严重的安全事件。这表明,仅仅有先进的技术是不足以保证系统安全的,更加有效、合理的系统解决方案才能保证区块链系统的运行安全。
持续创新:挑战与新技术
尽管目前区块链技术日益成熟,但是仍然存在一些有效攻击和潜在威胁。分叉攻击是目前最受重视的一种攻击形式。解决分叉攻击通常采用“最长链原则”(longest chain rule):如果出现多条区块链分支,所有节点将最长链视为主链添加新块。然而,“最长链原则”也带来了一些问题:位于其他分支上的区块成为无效区块,区块中包含的交易将被延迟确认,有可能面临双重花费的风险。此外,为了确定一个新区块是否在主链上,通常要求该区块后面连接足够多的区块才能确认有效。但这并没有解决根本问题,而且用户确认交易完成的时间通常是不可接受的,这也是区块链需要重点解决的问题。
相对于工作量证明和权益证明系统,虽然股份授权证明系统减少了计算量,并且对分叉问题也并不敏感,但是它也带来了一些新问题:
1.初始分配问题:权益证明机制中早加入的用户铸币(建新块)收益比晚加入的用户要高;
2.长链攻击:拥有超强计算能力的攻击者,能从主链中当前区块之前很早的区块开始构建一个新的候选分支,并超越当前区块成为主链;
3.币龄累计攻击:攻击者通过将资产(钱币)拆分成多个输出并等待币龄足够长,则这些资产将以更高的成功概率实现双重花费。
除此之外,区块链还面临着各种传统安全攻击的威胁,例如,拒绝服务(DoS)攻击、女巫(Sybil)攻击、Bribe攻击等。因此,改进和增强区块链安全性仍然是任重道远的挑战性任务。针对这些挑战,工业界和学术界已经开展了大量尝试性的研究工作,从算法、协议、系统和实现等方面提高了区块链安全性,为区块链系统的长期稳定运行奠定了基础。
在密码算法方面,大量新型密码技术能被用于区块链平台和应用系统的构造,为区块链在未来应用中的安全奠定了坚实的理论基础。例如,随着SHA-1哈希碰撞已被发现,建议以此构建的区块链系统尽快更换为第二代及以上哈希函数(如SHA256)来保证区块链的完整性和一致性。以目前“天河二号”的算力来说,发现一个SHA256哈希碰撞可能需要上百年,但是随着第三代哈希函数(SHA-3)的广泛应用,其状态空间比第二代增加了2~4倍,极大地增加了攻击难度。此外,随着量子计算时代的到来,后量子密码(post-quantum cryptography)设计已经提上了日程。近年来一些抗量子计算攻击的哈希函数方案也已经被提出,可保证未来量子计算时代区块链系统的安全。
区块链中的数据(包含所有交易记录以及账户身份信息等)在平台内是公开的,账户身份信息通过非对称加密算法(如RSA)来保证隐私。随着人们隐私观念的增强,保证数据隐私已经成为必然选择。近年来,数据隐私已经从传统的加密技术向功能性加密(functional cryptography)技术方面发展,以属性基加密(Attribute-based Encryption, ABE)为代表的新一代加密技术为保障区块链隐私提供了另一种选择。属性基加密是一种通过将属性表示的(通常采用布尔函数)安全策略(security policy)用于加密数据,每个用户按照身份(可分解为一组属性)分配密钥,只有用户身份满足加密数据中的策略时,解密才能得以实现。这种基于策略和属性表示的加密方法非常有利于区块链中数据按照等级分类或定制方式进行隐私保护。
智能合约是区块链未来发展的核心动力,但是智能合约的执行安全也是一个具有挑战性的问题。对于一个被触发执行的合约程序,保证程序运行的正确性以及合约参与方秘密的隐私性是两个重要方面,而目前合约执行仍然缺乏必要的手段满足以上两方面要求。解决这一问题的较好方法是基于全同态加密(Fully Homomorphic Encryption, FHE)的密码计算技术。全同态加密在密码学领域的研究已经有很长的历史,但是直到2009年,IBM研究员克雷格·金特里(Craig Gentry)提出了一种新的全同态加密算法,才引起了广泛的关注。本质上,全同态加密就是一种实现加密数据直接进行加法和乘法运算的密码算法。在区块链中引入全同态加密,不仅可以保证区块链中数据的隐私,同时可保证数据在不可信环境下运算的正确性。尽管目前全同态加密技术距离实际应用还有一定的距离,但对于区块链平台发展具有重要潜在安全价值。
总之,攻击与反攻击一直是信息安全发展的常态,但由于区块链系统的复杂性和潜在的经济价值,使得在区块链中的安全博弈日趋激烈。如何采用新的安全技术,发展新的安全手段,并保障这些技术和手段的运行安全,无疑成为区块链安全研究的重要领域和核心内容。
结语与展望
区块链是一次互联网技术的大变革,它使得人们看到全球性的协同计算正成为可能。在区块链带来巨大科技创新的同时,区块链的安全也正日益引起科研工作者的浓厚兴趣,一系列问题还有待进一步从理论层面和应用实践中得到解决和验证。就目前区块链中的安全技术而言,仍然需要我们保持谨慎的态度,避免过于乐观而引发大规模安全事件。也建议国家或机构投入大量人力开展区块链安全问题研究,制定具有我国独立知识产权的区块链相关安全规范和标准,提升区块链安全监控能力,保障区块链产业健康发展和持续创新。
作者介绍