• 注册
  • 墨客科普 墨客科普 关注:34 内容:79

    【苗知秋博士】区块链底层安全

  • 查看作者
  • 打赏作者
    • 墨客科普
    • 大版主
      墨客战士

      关于区块链底层的层级划分问题,尚无权威的国家或者国际标准,一直是众说纷纭;但通常都是细节上的小分歧,对于区块链的基本架构,目前已经有比较统一的共识。


      一个典型的区块链分层架构如下图所示:

      【苗知秋博士】区块链底层安全


       分层架构,最上层的“合约层”和“应用层”,严格意义上来说不算是区块链底层。真正的区块链底层我们认为应该到“共识层”或者“激励层”为止,再往上应该算是区块链的上层应用层面了,划入底层是不太合适的。

      本文从“数据层”、“网络层”、“共识层”三个角度阐述区块链底层的安全问题。

       “数据层”是区块链底层安全的核心

      以比特币为代表的区块链从诞生之初,主要就是以“分布式账本”或“分布式数据库”的形式被世人所认知的。以分布式账本为主的底层数据是区块链安全运行的核心,区块链底层安全工作的最终归宿都是为了维护底层数据的安全、完整和无误。只要底层账本数据没有问题,那么可以认为区块链的安全是有基本保障的,相反,一旦底层数据出现错误,那么所有安全工作的成果都是差评。

       “网络层”是区块链底层安全的基础

      从结构上来看,区块链本质上是一个“分布式的P2P网络”,所有节点之间的消息传递、数据同步全都依赖于P2P网络的通信机制。这个网络层一旦出现安全问题,则区块链的安全基础会被动摇,所以,我们说网络层是区块链安全的基础。区块链底层的安全,一定要构建在一个强健、稳定的网络基础之上的。一旦网络层出现问题,区块链底层的安全将受到极大威胁。目前已出现多起瞄准网络层发起的安全攻击事件,比如面向以太坊的日蚀攻击等。

      日蚀攻击(Eclipse Attack)是发生在网络层的攻击,由其它节点通过囤积和垄断受害者的对等连接槽执行,从而导致该节点位于隔离网络。这种类型的攻击旨在通过阻止最新区块链信息到达被遮蔽的节点从而实现隔离节点的目的。

       “共识层”是区块链底层安全的关键

      “共识”是区块链技术的核心概念之一,前面提到过的底层账本数据就是“共识的结果”。底层账本数据的重要性我们前面已经强调过,为了达成一个让众多节点公认的“正确的结果”,前提就是共识机制的安全性。区块链底层数据由于各种安全机制的保护,难以被直接攻破,因此很多攻击者将目光转向产生底层数据的共识机制,企图通过对共识机制的操纵,达到更改底层数据的目的。这也使得对共识层的安全防护日益重要,成为区块链底层安全的关键所在。


       底层不安全

      上层应用就收到影响

      如果底层不安全,上层的安全将是沙上筑塔。区块链底层的安全是整体安全的基础,并且通常无法通过上层解决。如果区块链底层不安全,那么像转账、智能合约、包括最上层的应用都将处于高风险之中。因为上层的各种应用,都是基于底层提供的各种基础服务运行的,并通过底层传输各种数据。

      底层的不安全,必将给上层带来极大的安全风险。有些安全风险在上层可以采取打补丁的办法弥补,但是会造成应用的臃肿和复杂化;而有些安全风险是上层完全无法弥补的,只能从底层来解决。

      比如,虚拟机自从被以太坊引入区块链系统之后,已经成为区块链底层不可或缺的基础部件,由于虚拟机安全问题引发的区块链安全事件层出不穷,这里面最典型的就是:由于虚拟机缺乏溢出检测机制而导致计算溢出问题。

      更进一步举例,以太坊虚拟机EVM定义无符号整数为uint256,可以表示一个256位的大整数,但是底层的虚拟机模块并没有提供溢出的检测机制,这样如果使用不谨慎就造成了之前我们常见的溢出攻击,比如很热门的God.Game事件。

      此外,“GAS费用较高者优先被打包进入区块”的机制,理论上是为了让区块链更便于使用,激励用户为生态贡献力量,但是在某些情况下会被攻击者利用而成为安全漏洞,Fomo3D攻击就是利用了这点发起大量消耗巨量gas的垃圾交易获得了胜利。这也是由于底层不安全导致的上层应用安全风险案例。

      没有一步到位的安全

      也没有绝对的安全

      “安全是设计出来的,而不是打补丁修改出来的。”这里并不是把安全设计和安全补丁对立起来,这句话的主要意思是,安全需要从产品的设计之初就纳入考虑范畴,从整体框架的设计上就要融入安全的思想,而不能一开始不管不顾,只管多拉快跑,妄图事后再通过打补丁的方式提升安全水平。因为系统的基本设计一旦定型,遇到安全问题再打补丁不仅费时费力,而且很多问题已经无法在现有框架内解决,除非把整个系统推倒重来。

      因此,安全设计是必须的,安全设计是系统安全的基础,是系统的先天体质,同时也是后续安全补丁的基础。由于在设计之初不可能一步到位,同时由于安全环境的不断变化,所以安全补丁也是必须的。安全补丁是对初始设计的补充,是后天的增强,先天的安全设计和后天的安全补丁是相辅相成的,共同增强系统的安全能力。

      比特币在安全方面的优势

      比特币从2009年问世到现在,基本一直稳定运行,没出过什么大问题。

      作为一名老资格的安全专家,中本聪非常明白“越简单越安全,越复杂越危险”的道理,他为此不惜削减了大量周边功能,包括将比特币底层功能限制于转账等基本指令,而没有采用后来以太坊采用的图灵完备的指令体系,心无旁骛,专注于基于区块链技术实现电子现金系统的这一核心目标。在共识机制上比特币采用了最简单也最费力的POW机制。所有这一切,都极大限制了比特币的应用场景,但也给比特币带来了无与伦比的安全性。

      比特币不适合商用并不意味着安全性和商用性之间存在矛盾,而是与比特币的核心定位有关。中本聪从设计之初对比特币的定位就是一个安全可靠的电子货币系统,从这一点上来看,比特币完美实现了这一目标。

      总结比特币平台在安全方面的成功经验,我们认为主要有以下几点:

      1、系统设计之初即融入安全思想,为区块链平台先天注入安全基因;

      2、“如无必要,勿增实体”的奥卡姆剃刀定律,不在核心目标之外做画蛇添足的事;

      3、涉及到核心安全方案时,要慎重取巧,甚至宁拙勿巧。

      请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: