事实证明,“安全”是一个很有趣的词。
使用区块链的全部意义,特别是对于那些互不信任的人来说,是让人们以一种安全、可靠的方式分享有价值的数据。这是因为区块链使用了复杂的数学和创新的软件规则来存储数据,而这些规则对于攻击者来说是极其困难的。但是,即使是设计的最好的区块链系统,它的安全性也可能在那些数学和软件规则与人类接触的地方出问题,在现实世界中,有些人都是熟练的作弊者,在现实世界中,事情可能会变得一团糟。
要理解其中的原因,首先要从探究什么可以使区块链在原则上变得“安全”。比特币就是一个很好的例子。在比特币的区块链中,共享数据是每一笔比特币交易的历史:一个账本。这个账本被存储在一个叫做“节点”的计算机网络中。每当有人向账本提交交易时,节点就会检查以确保交易是有效的——消费了比特币的人都是有比特币可以消费的。其中的一个子集会将有效的交易打包成“块”,并将它们添加到以前的链中。拥有这些节点的人被称为矿工。成功地将新区块添加到该链条上的矿商将获得比特币作为奖励。
使系统在理论上防篡改的原因有两点:一是加密的指纹,这使每个区块都是独一无二的;另一点是“共识协议”,即网络中的节点在共享历史上达成一致的过程。
指纹被称为散列,它需要大量的计算时间和能量来产生最初的结果。因此,它证明了将区块添加到区块链的矿工进行了计算工作来获得比特币奖励(因此,比特币被称使用了一种PoW协议,即算力证明机制)。它也可以作为一种密封方式,因为改变块需要生成一个新的散列。然而,验证散列是否与它的块相匹配是很容易的,一旦节点完成了,它们就会用新的块更新各自的区块链副本。这就是共识协议。
最后一个安全元素是,散列也作为区块链中的链接:每个区块包含前块的惟一散列。因此,如果你想以追溯的方式更改分类账中的条目,不仅需要计算新的散列值,还要计算每个后续的块。而且你必须比其他节点更快地完成这件事,才能在链上添加新的块。因此,除非你的计算机比其他节点组合的功能更强大(即使这样,也不能成功保证),否则你添加的任何块都将与现有的节点相冲突,而其他节点将自动拒绝你所做的更改。这就是区块链防篡改或“不可变”的原因。
创造性的作弊方式
这是仅仅是理论的基础。在实践中更难实现。就如同许多加密货币那样做的,像比特币这样运作的系统,并不意味着它同样安全。MIT数字货币计划主任Neha Narula说,即使开发人员使用经过验证的真实密码工具,很容易不小心地使它们变得不安全。比特币的历史是最长的,所以它久经最彻底的考验。
人们也找到了创造性的欺骗手段。康奈尔大学的Emin Gün Sirer和他的同事们已经证明,即使你的矿业力量还不到其他矿商的一半,你也有办法颠覆区块链。细节在某种程度上是技术性的,但实质上一个“自私的矿工”可以通过愚弄其他节点来浪费时间在已经解决的加密难题上,从而不公平的获得优势。
另一种可能是“eclipse攻击”。区块链上的节点必须保持在持续的通信中,以便比较数据。一个设法控制一个节点通信的攻击者,误导节点接受来自其他网络的错误数据,这可能会造成浪费资源或使它确认虚假的交易。
最后,无论区块链协议如何防篡改,它“不存在于真空中”,Sirer说道。在区块链系统与现实世界连接的地方,例如在软件客户端和第三方应用程序中,这些加密货币的黑客攻击通常是失败的。
例如,黑客可以侵入“热钱包”,即连接互联网的应用程序,一种用于存储加密密钥,而任何拥有加密货币的人都需要使用这个加密密钥。在线加密货币交易所拥有的钱包已成为主要目标。许多交易所声称,他们将大部分用户的资金用于“冷”的硬件钱包里,这会使存储设备与互联网断开。但正如一月份日本交易所Coincheck的价值超过5亿美元的加密货币抢劫案所显示的那样,情况并非总是如此。
也许区块链和现实世界之间最复杂的接触点是“智能合约”,它是存储在某些可以使交易自动化的区块链中的计算机程序。2016年,黑客利用以太坊的区块链上的一份智能合同,从DAO(一种基于区块链的新型投资基金)中窃取360万乙醚,价值约8000万美元。
由于DAO代码位于区块链中,因此以太坊社区不得不推出一项名为“硬分叉”的具有争议的软件来升级,以获得收益。这在本质上是创建了一个新版本,在这个版本中,钱从未被偷过。研究人员仍在研究方法,以确保智能合同不会出现故障。
集权问题
区块链系统的安全保障之一就是“分权”。如果区块链的副本被保存在一个巨大且分布广泛的节点网络中,那么它就没有一个弱点可以被攻击,而且任何人都很难建立足够的计算能力来破坏此网络。但是,Sirer及其同事最近的工作表明,比特币和以太坊都不像你想象的那样分散。他们发现,排名前4位的比特币开采业务的平均开采能力超过了该系统每周平均开采能力的53%。按照同样的标准,三名以太坊的矿工占了61%比重。
一些人说,也许是那些不依赖于采矿协议的替代的共识协议,可能会更加安全。但是这个假设还没有经过大规模的测试,新的协议可能会有他自己的安全问题。
其他人则看到需要获得加入的区块链的潜力,这与比特币的情况不同,在这种情况下,任何下载该软件的人都可以加入该网络。这种系统讨厌加密货币的反等级制度,但这种方法吸引了金融和其他机构,它们希望利用共享加密数据库的优势。
但是,许可系统提出了一些他们自己的问题。谁有权力授予许可?系统将如何确保验证器是如他们所说的那样?
一个被许可的系统可能会让它的所有者感到更安全,但它确实给了他们更多的控制权,这意味着他们可以在不管其他网络参与者是否同意的情况下做出改变,一些真正的信徒则会认为这样的做法违反了区块链的概念。
所以,“安全”最终难以在区块链中定义。对谁来说安全?安全的又是什么?“这取决于你的视角。”Narula说道。