山石岩读丨一文读懂区块链安全:区块链会带来哪些冲击?
通过上期《山石岩读》,我们了解了区块链是什么,以及在加密货币应用领域中区块链应用程序的三个可能的通用用例。区块链在带来更多可能的同时,也必然带来巨大的冲击。这些冲击将会给我们带来怎样的影响呢?
三、区块链技术带来的冲击
衡量区块链潜在影响的一个方法是考虑该技术的完整性、可扩展性,当然,还有其它安全性和隐私方面的影响。
1.完整性
公共和私有区块链环境对完整性的影响是不同的。公共区块链网络存在于一个“无许可”的环境中,任何人都可以使用适当的软件在网络上执行交易。此外,网络不受*机构控制,并且其参与者,包括执行交易的用户和验证交易的节点都不受信任,因此,用户和节点身份依赖于用户/节点的公共地址,而身份验证则是使用相应的私钥完成的。时间戳交易数据在节点之间共享,以确保实现网络的并发控制。为了验证交易的有效性,每个节点都积极检查其交易数据集合,为需要处理的交易数据创建一个新区块,并将该区块呈现给对等节点。
网络从那些能提供最快的响应时间、最高质量的新区块,且能满足一组预先确定的验证规则的节点中选择和奖励胜出的节点(例如,那些融合有效区块到每个节点账目的永久交易节点)来发布区块。满足最快的响应时间和最高的质量要求统称为工作(量)验证(PoW),于是这种共识模型对网络来说,通过消耗计算资源(如计算机硬件、电力)来确保了完整性。PoW提供了强大的完整性保证,并能容忍一定程度的攻击,它迫使攻击者至少获得网络中51%的算力,才能影响到整个网络,这就是所谓的“51%攻击”。然而,实际上这种类型的攻击需要至少75%的节点才能奏效。除了身份验证机制和不可篡改的账目之外,公共环境和私有环境的区块链之间几乎再没有相似之处了。
私有区块链网络在私有的、受许可的环境中运行,通常使用指定的网络操作员,且操作员和其他参与者彼此都认识。私有区块链的运行成本更高,并且在使用投票方案做出决策时并不奖励节点,而是通常采用“拜占庭式容错”(BFT)共识模型,在这种模型中,一组节点同意一个交易区块的有效性。BFT提供了更大程度的对恶意节点数量的容忍度,即最多33%的节点是恶意的,而PoW却只能容忍25%的恶意节点。私有区块链还对节点的隐私和交易数据的访问进行了更严格的控制,消除了与PoW相关的算力和环境方面的影响。这种机制对于为参与者(如买方/消费者和供应商/网络提供者)提供交易隐私是必要的。例如,使用相同网络的买方可能从多个供应商处获得相同的产品,这些供应商根据买方和供应商之间唯一协商的数量和其他无形条件确定不同的单价(当然,对其他供应商来说是保密的)。此外,供应商可以选择自己作为买方,在同一网络上使用自己的定价体系和其他无形条件转售产品,而不是自己为买方生产产品。
区块链的完整性等同于信任的程度。PoW需要交易数据来证明交易历史,并将这种程度的信任绑定到计算资源的花费上。消耗的资源和可查的交易越多,就越值得信任,相应地,区块链的完整性也就越高。通过用BFT替换PoW,节点不会为提交无效区块承担任何实际后果,这使它们更可能以牺牲可用性为代价产生出不一致的结果。因此,在必须保持高度交易完整性的场景中,BFT可能就是不可接受的了。对去中心化的削弱也影响了私有区块链的完整性。节点仍然必须为提供处理交易的基础设施而得到补偿,这种补偿通常来自于网络运营商所提供的法定货币。由于这种支付没有使用网络的通用令牌,网络的完整性可能就会因无需考虑提交无效区块的后果而受到影响。当可用的节点数量较少时,网络操作员对网络的影响力就会增大,这就要求参与者们更加信任网络。
所有这些因素都可能影响网络的可用性,并产生欺诈或第三方干扰,从而可能催生出审查机制。账目的一致性也会受到所处环境的影响。经过验证的交易通过使用交易的哈希值和前一区块头部的哈希值,以追加的方式在时间顺序的基础上聚合成区块,并被合并到账目中。因此,将当前区块链接到以前各区块的机制,使更改先前交易的任何尝试都变得极其困难,并且可以防止在交易被接受为有效后再对它们进行篡改。任何没有历史记录记载的交易都被认为是不存在的。
然而,如果交易记录有错误,这些错误可能是基础设施问题或智能合约编程错误所造成的,该如何纠正这些错误呢?对于公共区块链来说这是无法做到的,错误的交易不能被纠正,只能被普遍接受。在重要的应用场景中,主要的变更是通过主要代码更新(例如,一个硬分支)来完成的,这包括对所有受影响的交易进行全面的账目更新,以解决所发现的问题。硬分支违背了账目一致性的总体原则,并且经常在区块链团体内引起争议。在加密货币领域,对于硬分支的争论导致了竞争解决方案的诞生,比如以太坊和比特币。相比之下,在私有区块链中纠正交易错误则在本质上并非难事,因为这种设计允许网络运营商作为一个隐含的受信*权威机构来纠正这种错误。
2.可扩展性
当前区块链技术的一个已知限制是其有限的吞吐量,这个指标是以每秒处理的交易数来度量的。平均来说,比特币每秒可处理7笔交易,而以太坊每秒可处理15笔交易,瑞波币(Ripple)每秒能处理1500笔交易,是目前最快的主要加密货币。相比之下,Visa网络每秒能处理大约24000笔交易,较低的交易处理率通常会导致单个交易确认的等待时间更长。并且,由于可能出现事务回滚,因此交易的最终结果会更少,从而产生更高的交易费用。
应对可扩展性问题的解决方案包括:增大区块、把签名与交易数据分离、“分片”交易和链下交易等。增大区块会增加操作节点的成本,减少节点的数量,更易导致产生较强大的集中实体。区块大小的在公共区块链上比较难更改,需要硬分支,且常常受到用户社区的质疑。“分片”可以有效地将区块链分割成更小的块,这些块具有自己独立的状态片段和交易历史,这使得在所有“分片”中处理的交易总吞吐量比在单一主区块链中完成所有工作高很多。链下交易允许在主网络之外处理交易,之后再将其添加到主网络中。但链下交易也违反了去中心化原则,因为执行此类任务的节点必须获得显式信任。虽然这些技术在解决可扩展性问题方面很有前途,但它们最多只能被认为是实验性的。
四、安全与隐私
从安全和隐私的角度来看,区块链技术由于其组件的复杂性且尚处于初级发展阶段而没有被很好地理解。网络体系结构的设计和访问控制是降低网络内部威胁的关键。为了加强区块链技术的安全性,首先应要求正确连接的节点数达到最小化,且这些节点应是被指定和授权参与到联盟中的或在私有区块链共识过程中形成的。这个最小化的数量应足够大,以满足网络完整性保护需求。由于公共区块链易受到前文提到的“51%攻击”,所以应确保网络拥有足够的在地理上分散的节点数,以防止来自任何单一实体、某个特定国家或世界上特定地区的串谋行为。私钥证明了所有权和被分配的执行某些交易的权利,因此,安全性取决于对私钥的选择和保护。例如,比特币的安全模型依赖于一个由1到1077之间的整数组成的私钥。虽然这数字看起来并不多,但实际上,**空间基本上是无限的了。由于私钥包含许多数字,因此使用“钱包导入格式” (WIF)可以将私钥简化为一系列字符和数字。大多数区块链钱包可以生成一系列字符作为备份,考虑到它们的重要性,在存储或传输私钥或保护备份字符时要格外小心。大多数软件钱包提供对用户友好的PIN码、密码或口令来加/解密存储的私钥,并将加密的钱包保存在用户电脑的主硬盘上。然而,钱包的PIN码、密码或口令的**空间必须足够大,以防止被rainbow表反向**,特别是在哈希算法(例如SHA256)的弱点已知的情况下。
由于大多数区块链技术都是开源的,可用的文档可能不是最新的,所以特定区块链平台所提供的正式培训也可能是有限的,这就导致大多数开发人员通过反复试验进行自学,所以很可能会犯重大错误,进而写出bug较多的代码。这种情况使得智能合约成为区块链安全性最重要的弱点来源之一。
明白了区块链技术带来的冲击,那区块链创建和管理有哪些安全问题?区块链是否已经准备好迎接黄金发展期?
欲知更多区块链知识,请关注下期《山石岩读》。