区块链与安全随想
从区块链诞生的那一刻起,区块链的安全事件就层出不穷,无论是比特币、以太坊还是最近的 Filecoin 都在不断地改进中,不断地提升自身的安全性。但是,这个一个新生事物,多数都是包含着无数的缺陷诞生的,同样受到各种追捧和持续快速地迭代。
在区块链领域流行着一句话:In BlockChain We Trust。为什么?区块链运行起来,参与的人员众多,良莠不齐,许多节点经常遭受攻击,但是大家还是说 “In Blockchain We Trust”。也就是说,我们就是相信区块链。
这一方面表明区块链是颠覆性的,其本身就是一种建立信任的技术,另一方面,大家也相信,区块链是一种安全的技术。这一点有些意思,因为许多人看到的是区块链领域发生的安全时间,而很少思考区块链所带来的安全变革。
区块链的安全问题
大家经常提到的区块链安全,涉及到的方面非常多,但其实,多数都是与传统的软件系统的安全性有共通之处。大体说来,可以考虑以下一些方面(我对这些安全问题加一些评注,以蓝色斜体表示):
代码安全:许多安全问题来自于代码漏洞,非常著名的就是 Ethereum 的 DAO 事件,直接导致以太坊分叉至两个网络:ETH 和 ETC;Filecoin 前段事件发生的网络暂停事件,也是一个代码问题导致的安全事件,所幸的是,未发生资金方面的问题。(评:代码问题是一个通用的问题,在任何的软件系统和网络中都存在,与是不是区块链没有直接关系。)
私钥遗失或被盗:这是大家谈论的比较多的安全问题,业界也在不停地教育和改善系统,一些对私钥的保存和找回的机制和方式也逐渐成熟。(评:这和一般系统中的账号和密码丢失类似,但中心化系统一般可以通过身份认证找回,而区块链系统的去中心化特性,使得找回私钥需要一些其他的方式。)
黑客入侵:最著名的就是直接导致门头沟(Mt.Gox)倒闭的黑客事件了,当然几乎所有交易所都发生了黑客入侵和丢币的事件,这似乎也是区块链领域的常见安全问题。(评:这些安全事件都发生在中心化交易所,这些安全事件与区块链技术本身关系不大。反而,这些安全事件正说明去中心化的安全性更高,你什么时候听说过去中心化交易所的黑客事件?)
钓鱼攻击:完全与区块链没有关系,中心化系统的常规安全问题
女巫攻击/路由攻击:这通常发生在有些区块链系统还不成熟,或者参与人比较少的情况,需要对链和网络有一定的控制权
51% 攻击:老生常谈了。(评:这是区块链真正的安全问题。但这也正是区块链的设计基础,即网路朝着符合大多数人(或投票权)的方向走。同时这也要求一条链必须要有足够的去中心化,和足够的参与度来保障安全)
我们看一看,上面提到的安全问题,除了 51% 攻击区块链特有的,而其他部分,都基本上与区块链没有直接的关系,是通用网络都会遇到的问题。而 51% 攻击,从另一份方面来讲,也体现了区块链的安全性之高,要作恶的成本之高昂,在一条成熟的、参与人众多的链面前,这种攻击显得太难而不可行。
区块链对网络安全的提升
如果我们提升一个层次,真正考虑网络的安全问题,而不是拘泥于一个一个点来看。我们会发现,实际上,区块链技术解决了非常多的安全问题。这也是为什么说区块链是第三代互联网的基石的重要原因。因为第三代互联网(Web3.0)是一个可信的网络,可信的基础就来自于区块链。
区块链赋能 Web3.0,通过去中心化技术建立信任,那么没有那么多的安全软件,没有防火墙,没有安全专家为每一个网络软件的运行把关,行吗?区块链说,这都不需要。
开源是安全的基础:没有绝对的代码安全,但是,一条成熟的公链,其代码必然是开源的,共享的,经过很多人验证和测试的,经过审计的。在安全的世界里,早就有一条共识,加密要用大家都认可的开源算法和实现,安全机制要采用标准的开源的经过验证的机制,而不是私有的、未公开的。区块链作为一个去中心化的系统,其运行机制和经济激励都以开源为基础,当持续运行下去,其安全和信任度会越来越高。如今的比特币网络就是一个最好的例证。
开放和去中心化使攻击无处借力:第二代互联网的基础设施被网络寡头把控,尽管这些寡头投入重金来保障安全,但是安全事件常年不断,Gmail 停服,Twitter 故障,微博罢工,信用卡账号被盗等等。但是,一条区块链网络运行起来,除非代码问题(前面提到,非常少而且会快速成熟),绝不会停工,长久服务,这就是技术和架构本身带来的安全性。
密码学技术保障运算和存储安全:黑客入侵是传统软件和系统非常头疼的问题,但是,你听说过有黑客入侵一条区块链吗?有黑客能够为一个上线的智能合约植入木马吗?区块链的验证技术使得这些安全攻击不可行,Bitcoin 的一个交易一旦发生,Ethereum 的一个合约一旦上链就不可篡改。Filecoin 的一份内容上线后任何时候检索出来都保证没有任何偏差。这些技术,是区块链的基础,也是天然地保证交易、计算和存储的安全。
激励机制导致攻击成本高昂:区块链世界欢迎任何形式的运算,因为本身区块链世界就是开放的,你可以上传自己的应用,有人用就好。按照传统的观点,这不是为病毒泛滥大开方便之门?不然,因为区块链的经济激励机制使得病毒传播和运行并不可行,因为每一个运算、每一份存储都有定价,区块链世界没有免费的午餐。要传播、要运行,那就付费。这从根本上解决了无阻碍传播和攻击的问题。
模块重用提升安全:一条公链很重要的特性就是智能合约之间的相互调用,也就是说,你可以把一条链看成一台计算机,而不是像 Web2.0 世界中网络是联通的,但实际上各种应用之间是割裂了。相似的程序实现相似的功能,但代码各不相同,带来无数的安全问题。而在区块链世界中,已经经过验证的合约和接口直接使用,使得应用的建立变得更简单也更安全。试想,一个传统的借贷系统需要多么复杂,会有多少的安全问题,然而,在区块链世界,借用已经诞生的应用和模块,你可以利用数百行代码,构建复杂的应用,代码量减少几个数量级,安全问题也就更容易处理。
透明性和可追踪性提升安全:也就是我们常说的 Availability/Transparency 和 Tracibility。如果一个应用的所有事物都被记录,并能够追踪,其安全性就更容易把握。而这恰恰是区块链的重要特性之一。
安全的另一个维度
In BlockChain We Trust
业界有无数的安全公司,从不同的角度来处理安全问题,提出了无数的安全方案和设想。但如果我们要真的安全,必然做颠覆式的思考。提升一个维度来看问题。
从另一个角度来看问题,你会发现,新的范式下,以前你看见的问题都不再是问题了,自然地被解决了。一些新的问题还会出现,但是角度完全不同了。
传统的安全更注重个体,如何保障个体的安全从而保证网络的安全,它基于的基础是,网络是由个体组成的,没有个体就没有网络;而对于区块链而言,网络是基础,运算、存储、网络链接等等不再依赖于哪一个个体,网络就是网络,每一个个体网络构建的细胞,它基于的基础是:网络是一个整体,个体依赖网络而存在。每一个个体都可以随意进入或退出网络,个体构成的整体更重要,这就如我们身体的细胞,每天在更新,但人还是那个人,我们的记忆,发展都是延续的。
有了这个理解,安全就是一个整体的设计。区块链中密码学技术的广泛应用,所有事务和交易的强制验证,代码开源和共享,激励机制的采用都在更上一个维度来建立一个更安全和更可信任的网络。
评论