• 注册
  • 墨客科普 墨客科普 关注:33 内容:76

    【白墨子安全实验室】区块链底层安全

  • 查看作者
  • 打赏作者
  • 拉黑名单
    • 墨客科普
    • 大版主
      墨客战士
      第三讲:区块链底层安全

      前两讲的内容分别是钱包安全交易所安全,算是比较前端的应用,对于普通用户来说,平时经常会使用到。这回要讲区块链底层安全,更偏技术化和后端。首先请白墨子为大家详细介绍一下区块链底层包括哪些内容?数据层、网络层、共识层都包含在内吗?

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

      【白墨子安全实验室】区块链底层安全

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

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

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

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

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

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

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

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

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

      我们知道,区块链底层是支撑整个区块链生态的关键性基础设施。如果底层不安全,那么像转账、智能合约、包括最上层的应用等等这些,都会受到哪些具体影响?请白墨子解读一下。

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

      底层的不安全,必将给上层带来极大的安全风险。有些安全风险在上层可以采取打补丁的办法弥补,但是会造成应用的臃肿和复杂化;而有些安全风险是上层完全无法弥补的,只能从底层来解决。因此白墨子建议区块链安全问题要着眼底层,这一点对于井通、墨客这样的区块链平台公司来说尤为重要。

      上面说的内容有些抽象,下面举例说明。

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

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

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

      白墨子在第一讲中,有个观点:安全的钱包是设计出来的,而不是通过打补丁修改出来的。是否也同样适用于区块链底层?大家平时对诸如电脑端的Windows系统补丁、手机上的IOS或Android的升级等都习以为常了,区块链底层也会发展成这样吗?

      安全是一个没有尽头的事业,没有一步到位的安全,也没有百分百的安全。

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

      因此,安全设计是必须的,就像房子的地基一样,如果地基都没有建好,后面的安全机制都是空谈。

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

      电脑端的Windows系统和手机端的Android、IOS系统,随着安全环境的变化都需要不断地打补丁,但由于它们都是单机中心化系统,因此更新升级是非常方便的,一般都是在线升级,一键搞定。

      进入区块链时代之后,如果出现安全问题,依然需要通过打补丁的方式来解决,除非安全问题影响轻微可以放任不管。区块链时代最大的变化就是从中心化单机环境变成了去中心化的分布式环境。一个区块链平台经常涉及几十万甚至上百万的节点,与传统环境相比,更新升级的难度超出想象。一旦出现问题,需要更新整个网络,让每一个节点都打补丁,这个时间成本与经济成本都较高。

      在区块链时代,网络的更新升级有一个新的名词,叫做“分叉”。这是因为区块链平台的更新是需要全网节点协调一致,才能完成更新任务。由于分布式环境的复杂性,有时候无法达成全员一致,这样就会导致同一个网络中运行不同的系统,这种不一致就是所谓的“分叉”。

      区块链的更新升级打补丁是一件非常麻烦的事情,升级之前的社区协商和动员工作就是一件极有挑战性的工作,尤其涉及各种利益纠纷时,甚至是不可能完成的任务。鼎鼎大名的以太坊就发生分叉事件,统一的以太坊社区发生分裂,造成了ETC和ETH双雄并立的局面,这对以太坊生态体系而言,不能不说是一个重大损失。

      将来,区块链平台升级也有可能像游戏魔兽世界一样,固定时间——每周或每月,所有节点全部统一打补丁。当然,鉴于区块链平台未来更新升级的繁琐性和不确定性,白墨子强烈建议在设计阶段充分考虑安全性,尽量少出问题,省时省力更省心。在这方面,比特币是我们的楷模。

      白墨子是否有底层安全设计的实际经验或案例可供分享?未来白墨子也会做底层安全测评吗?

      作为墨客区块链公司的信息安全部门,白墨子积极参与了墨客区块链底层的实际设计和开发工作,同时也一直在为墨客和井通社区的技术开发人群提供安全检测、建议和咨询服务。

      区块链底层平台的开发工作一度是一个热点,大大小小的公链不下数百家。目前正慢慢从发散开始收敛,大致处于从“群雄逐鹿”到“问鼎中原”的路上。白墨子认为:

      最终问鼎中原的王者,必将是安全性突出的区块链平台,而中途夭折的逐鹿群雄,将有相当比例是在安全问题上折戟沉沙。

      区块链底层的安全测评一直是白墨子的核心安全服务之一,目前一直在对井通和墨客平台进行安全方面的检测和测评。未来白墨子将发挥自己的专业优势,继续做好区块链底层的安全测评工作,帮助区块链产业的健康发展。

      今年5月底的时候,出了一个热点事件:360团队在EOS主网即将上线之际,发布了EOS存在高危安全漏洞的消息,声称史诗级、价值超百亿。EOS创始人BM却回应称漏洞是来源于第三方代码库而非EOS核心代码,并暗指360借机炒作,引发了争议。白墨子如何看待这一事件?是否在区块链底层安全方面的具有里程碑意义?

      就事论事的说,这件事属于BM在狡辩和开脱。打个比方,BM造了一辆汽车,命名为EOS,然后360作为安全检测方来对这辆汽车进行安全检测,发现这辆车的轮胎存在安全隐患,然后作为EOS汽车的制造方,BM振振有词地说:这不关我的事,因为轮胎并不是我造的,这是轮胎公司的问题,EOS汽车是非常安全的,你这是炒作!

      在这种情况下,不知道大家还没有信心乘坐EOS牌汽车?

      还是继续拿造车做例子,BM作为EOS汽车的制造方,基于现有系统进行系统集成是很自然的事,但整车制造方要对整车的安全负责,因此选择安全的部件也是制造方的责任。对于一辆汽车来说,不仅轮胎要安全,轴承、发动机、变速箱、方向盘等等这一切都要安全,这样才能造出安全的汽车。如果只是因为轮胎不是自己生产的,就对由于轮胎可能引发的安全事故不负责任,这种态度是不可取的。

      有那么多轮胎生厂商,你为什么不选择一家安全的轮胎公司,偏偏选择了有安全隐患的那家呢?这让我们还怎么放心乘坐你们家的车?

      回归到这次事件本身,不管如何辩解,EOS存在可被利用的漏洞是确定无疑的;因360公司确实也做过很多贡献,白墨子不方便发表评论,但是对红衣教主(周鸿祎)一向比较凶悍的打法是早有耳闻的。

      经过此事之后,市场对区块链的安全有些重视,但是还没有到特别重视的地步,因为大家都在比拼公链尽早上线,关注的重点是功能完备、性能优越,人只有存活下来,才会有高端的需求。

      说到此事在区块链安全方面的里程碑意义,我认为是言过其实了。区块链安全领域的里程碑事件一般是一次次血淋淋的安全事故,这比任何公司的公告都更加发人深省,更富有说服力。正如血淋淋的事故现场对驾驶员的教育意义和心灵上的触动超过一千次照本宣科的交规宣讲,真正教育市场、警醒业界的也主要是现实中一次次的安全事件,血淋淋的现实是最有说服力的。

      还是那句老话:现实专治各种不服。

      比特币从2009年问世到现在,基本一直稳定运行,没出过什么大问题。它的底层安全性和其他底层相比,有什么独特优势吗?比特币底层不适合大规模商用,是不是意味着安全性和商用性之间存在着矛盾?其他底层该如何吸取或借鉴比特币底层的安全经验?

      说到比特币平台的安全性,不得不提起比特币的创始人中本聪大神。与随后的多家区块链平台相比,比特币平台的一大特色是创始人中本聪是安全人员出身(虽然中本聪的现实身份一直存疑,但从他活跃的社区和之前的发言,可以断定他有深厚的安全背景,这一点无疑),因此比特币在设计之初对安全考虑得非常全面、设计得非常周到,甚至很多地方为了安全舍弃了很多非核心的功能。

      【白墨子安全实验室】区块链底层安全

      举个小例子,实现比特币平台,不可避免地要用到大量的密码算法及其算法库。江湖传言,现在网络上公开的相当比例的密码学相关开源算法库,都有NSA(National Security Agency,美国国家安全局)内置的后门,但中本大神选择的算法库,正好完美地避开了NSA的陷阱,这难道只是一个巧合吗?我们更相信这是中本聪举手投足之间展露的安全大师的风范。此处可以对照前述BM关于EOS安全事件的辩解来看,孰高孰低,一目了然。

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

      比特币平台是自出现以来安全事件最少见、安全补丁打得最少的区块链平台,作为第一代区块链平台,用户可能对比特币平台有这样那样的不满,但对比特币平台的安全能力从来是非常信赖的,而比特币平台也确实没有辜负用户的信赖。这也是白墨子一直倡导的核心安全理念:“安全的系统是设计出来的,而不是打补丁修改出来的”。

      比特币不适合商用并不意味着安全性和商用性之间存在矛盾,而是与比特币的核心定位有关。中本聪从设计之初对比特币的定位就是一个安全可靠的电子货币系统,从这一点上来看,比特币完美实现了这一目标。在有的外贸公司,比特币已经成为贸易结算的选项之一,实现了远超过正常外汇结算的结算效率,解决了许多外贸公司的痛点问题。

      由于商用场景的复杂性,比特币这样单一的区块链平台无法满足其需求,因此需要像以太坊、墨客等这样的区块链2.0/3.0/4.0等平台的不断演进。演进过程中,需要同时关注平台的安全性和商用的便利性,找到这两者之间的平衡点,不可偏废。在安全方面,比特币已经成为很多区块链平台的榜样;而在商业应用方面,则需要根据具体的应用场景、核心需求,和区块链的技术优势相结合,实现商业应用和安全性的平衡。

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

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

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

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

      “在继承中创新,在创新中发展”,白墨子认为这应当是我们面对比特币这一区块链技术老前辈的正确态度。如果中本聪大神还在,我想他会向我们这些区块链领域的后进生们说:“学我者生,似我者死。”

      (第三讲完)

      请登录之后再进行评论

      登录