如何理解并非「100% 防弹」的区块链安全?
事实证明,「安全」是个挺难弄明白的事儿。
人们之所以选择区块链,就是为了让彼此,特别是相互不信任的彼此,以一种安全的、防篡改的方式共享「贵重」数据。区块链的数据存储背后,是一系列复杂创新且难以被攻击者操纵的数学、软件规则。但是,即便是设计最为优良的区块链系统,其高级数学、软件规则也不是「100% 防弹」的,特别是当子弹来自现实世界的舞弊高手人类时,就难办了。
解释下为什么这么讲。
首先,要说说区块链被称为「安全」的根本原因。以比特币为例,比特币区块链中,共享数据指全部比特币交易的历史记录,可以理解成核算分类账。这个分类帐被存储在计算机网络上的多个副本中,这些副本叫做「节点」。每当有人向分类帐提交交易时,节点检查提交交易确保其有效性,意思是说花掉(一个)比特币的那位仁兄首先得有(一个)比特币能花。然后部分节点(们)会竞争对有效交易打包进「区块」并将其添加至区块链的权利。这帮节点主就是矿工了,成功添加区块到区块链的矿工有比特币奖金拿。
说比特币系统是防篡改的,原因有二:首先,每个区块独有自己唯一的加密指纹;其次是「共识协议」,即网络中节点就共享历史达成一致的过程。
刚开始的时候,加密指纹(哈希)的生成需要大量的计算时间与能源。所以,这些「消耗」也证明了将区块添加到区块链的矿工确实付出了这么多计算,因此可以拿到比特币奖金(比特币的「工作量证明」协议就是这么来的)。同时,这个指纹也有封条的作用,因为更改区块需要重新生成新的哈希。但是,验证哈希是否对应正确的区块就很简单了,一旦节点(们)验证完成,就会用新区块更新自己的区块链副本,这就是共识协议了。
最后一重安全保障依旧来自哈希,这些哈希还有链接区块的作用。具体说来就是每个区块都包含前一个区块的(唯一的)哈希,因此,如 A 想要回改分类帐中的一个条目,除了计算出此条目所在区块的新哈希值,还要计算出所有后续区块的新哈希,而且更改的速度还要比其他节点添加新区块入链的速度快。也就是说,实施此操作的计算机要甩剩余节点(捆在一起)几条街的技能,但是仍不保证一定成功,因为 A 新添加的区块一定与现有区块冲突,那么其他节点一定会拒绝掉 A 的更改。这就是区块链防篡改或「不可变」的原因。
创意舞弊方式
区块链基础理论就说到这。
实施就更难了,即便有各式各样的类比特币加密货币系统运行着,也不代表其在安全性上可以与比特币同日而语。譬如,麻省理工学院数字货币计划负责人(Neha Narula)有提到过,尽管开发者都会采用那些经过验证的加密工具,但是不慎以不安全的方式将这些工具结合起来这种事也是很常见的。
另外,花式舞弊也是人们所擅长的。譬如,根据 Emin Gün Sirer 等的相关研究,即使攻击者矿力不足其他矿工的一半,也有办法颠覆区块链。具体细节技术性有点强,大概是说「自私矿工」可以诓骗其他节点投入精力在已解决的加密拼图上,以此在竞争打包权时获得优势。
另外一种(舞弊)方式是「eclipse 攻击」。区块链上的节点为了比较数据必须保持不间断通信。那么,攻击者可以控制某个节点的通信,然后骗节点接收「貌似」来自网络但其实是错误的数据,这样一来被欺骗节点只能傻乎乎的浪费掉自己的资源或者确认虚假交易了。
最后,无论区块链协议是何等的防篡改,都不意味着协议本身能「存在于真空中」。早先近期的各种加密货币黑客事件大都反映出一个事实,即区块链系统与现实世界连接的地方爱出事,譬如,软件客户端和第三方应用程序当中的种种 drama。
比如,黑客们可以闯入「热钱包」中,热钱包指用于存储私人加密密钥的互联网连接应用程序,加密货币持有者想做花费必须提供此私钥。在线加密货币交易所的钱包已然成为主要攻击目标,也有很多交易所声称大部分用户的资金已被存放在了「冷」硬件钱包中(冷钱包指与互联网断开连接的存储设备)。但是后来被某日本交易所 2018 年 1 月份价值超过 5 亿美元的黑客事件一顿打脸。
区块链与现实世界之间最复杂的接触点大概是「智能合约」了,智能合约指存储在特定类型区块链中的计算机程序,可以自动化交易。2016 年,一撮黑客利用了以太坊智能合约中的一处漏洞,从 DAO 中窃取了当时价值约 8000 万美元的 360 万个 ETH。
有鉴于 DAO 代码仅存于区块链中,以太坊社区不得不借由硬分叉这种有争议的软件升级手段追回资金。硬分叉意味着一种「新版本」的历史被创建出来,意思是这个「新世界」里干脆就没发生过资金失窃这回事。所幸,依然有一线研究人员在确保智能合约不出岔子的路上风雨兼程着。
中心化问题
去中心化被「认为」是区块链系统中保证安全的另一个因素。若将区块链副本保存在一个大而广泛分布的节点网络上,一来不存在攻击的薄弱点,二来想攒够足以颠覆网络的计算能力的人都疯子。同样,根据 Sirer 等的研究,比特币、以太坊的去中心化程度都没有想象中的高。譬如,研究发现比特币排名前四的矿池掌握了网络 53%以上的矿力,以太坊三大矿池占到 61%。
有些人认为不依赖挖矿的共识协议可能更安全,但是这种理论 / 假设尚未经过大规模测试,而且新协议往往都伴随新的安全问题。
其他人则看到了许可链的潜力。与比特币中下载软件即可加入网络的方式不同,许可链系统属于对加密货币反等级气质的整体无视,不过倒是吸引了不少金融机构前来过一把共享加密数据库的优势的瘾。
可是,许可系统也有自己的问题。 比如说,谁有权做授予许可?系统如何确保验证人不是骗子?许可系统貌似是让主人们更有安全感,但实际上这种安全感是来自更多的控制权,这也意味着掌权者可以无视其他参与者的意见做出变更,单就这一点就让区块链纯粹主义者们颇有微词了。
所以,区块链背景下的「安全」才是最难定义的。具体来说,要防着谁 / 什么?要保障谁 / 什么?
引用 Narula 的话:「安全这种事见仁见智。」
原文标题:《区块链安全性:解读》