转:Libra 六大安全隐患 | 墨子实验室苗知秋

Libra 依然存在很多不足。比如,富有争议的共识机制、计算溢出处理的因循守旧、实现语言的单一依赖、伪随机数问题、宣称的同地址私钥替换技术尚未落地等。

文:赵雪娇
编辑:王巧

作为一种新兴技术,区块链的安全性威胁是其面临的重要问题之一。据统计,2018 年区块链安全事件数量高达 138 起,造成经济损失 22.38 亿美元。

Libra 具有后发优势,针对区块链技术前期的安全问题提出了自己的解决方案,展示了 Facebook 公司在区块链技术方面的积累和思考。

但是,Libra 依然存在很多不足。
比如,富有争议的共识机制、计算溢出处理的因循守旧、实现语言的单一依赖、伪随机数问题、宣称的同地址私钥替换技术尚未落地等。

Libra 能否承载 Facebook 宣称的宏伟蓝图呢?区块链的安全问题有哪些?技术人员应该如何防范?

8 月 7 日,墨子安全实验室创始人苗知秋围绕“Libra 与区块链安全问题剖析”这一主题,解答上述问题。

1、Libra 在安全上有哪些比较好的设计?

苗知秋

Libra 吸取了很多前期的经验教训。

首先,在总体架构设计上,Libra 采用了可信计算方面的概念。 Libra 把可信计算基(Trusted Computing
Base)的思想用在了核心代码的架构设计和编写中。

另外,作为区块链系统的底层基础,Libra 的 P2P 网络使用了 Noise 协议,这个协议也用在国外的社交应用 Whatsapp 中,有效提升 Libra 在网络通信方面的安全等级。

其次,智能合约的实现方面,专门引入了一种新语言 Move。 Move
是从迄今为止发生的智能合约相关的安全事件中吸取经验而创造的一种编程语言,能从本质上令人更加轻松地编写符合作者意图的代码,降低了出现意外漏洞或安全事件的风险。

最后,在实现语言方面,Libra 选择 Rust 实现。 Rust 语言的特点是注重安全性,在编译环境强调安全规范的使用和检查。通俗地说,只要编译通过,安全方面就具有了较高的水准,因此 Rust 安全性较高。

2、Libra 在安全设计上还有哪些不足?

苗知秋:首先, Libra 采用了基于 LibraBFT 共识协议的 BFT 机制。这种协议的特点是几乎不会分叉,实时确定性好,特别有利于 Libra 未来很可能会重点关注的支付、汇兑和资产交易场景。

但是,前段时间有人在 eprint 上提交一篇文章,指出 Libra 的共识机制存在严重安全问题。作者称,Algorand 在 BFT 不超过 1/3 的情况下,可能发生分叉,并且指出 BFT 解决方案中的一个普遍假设“大多数节点是诚实的”并不合理。BFT 类的共识协议适合联盟链或私有链,一旦要用于公链,需要非常慎重。

其次,在区块链行业常见的计算溢出处理机制上,除了引入一个对静态代码审计更加友好的 Move 语言之外,没有看到 Libra 有什么特别的建树。如果机制仍依赖合约的自我约束和代码检查,那么距离理想的解决方案还有一段距离。

再次,在随机数种子产生机制和第三方库依赖方面,无较大创新,与之前的区块链项目持平,前期项目存在的安全问题,有很大的可能在 Libra 中依然存在。

第四,Libra 选择了一个小众但宣称安全的语言 Rust。然而,过于小众的语言往往缺乏长时间的锤炼,导致隐藏的问题较多。Rust 语言虽然具有安全的特色,但是并不完美,不排除有可能成为 Libra 项目的阿喀琉斯之踵。

第五,过于依赖 Rust 语言有可能带来单一性依赖问题,如果 Rust 语言出现安全问题,则会波及整个 Libra 系统。

最后,Libra 曾含混地提到当私钥泄露时,可更换公私钥对,而账户地址保持不变,用户也可轮换一个账户里的密钥。由于传统区块链地址是由公钥变换得到的,而私钥和公钥是一一对应的,不知道 Libra 采用什么方式实现公钥和地址的脱离。但是我们看目前代码中的账户地址还是公钥的 keccak 哈希值,不具备更换的能力。我们也很期待看到 Libra 项目在这里有所突破。

3、区块链安全主要涉及哪些方面? 有哪些热点问题?核心问题是什么?

苗知秋:

对于区块链行业来说,没有安全就没有一切。 目前信息安全已经成为区块链产业发展的关键环节。

高额收益、容易变现、极易逃避追查、攻击门槛低,这四者的叠加,使区块链安全事件将持续处于高危期。

墨子安全实验室把区块链安全分成两类。

第一类,区块链自身安全,这一类包括两个方面:区块链底层安全和上层智能合约安全。

第二类,区块链配套设施安全,这一类包括三个方面:钱包、交易所和矿池。

这五个方面都属于区块链安全范畴,我们认为其中三个方面是需要特别关注的热点问题,即智能合约、交易所和钱包。这也是安全问题比较多、安全事件比较频发的地方。

如果要说区块链安全的核心是什么?我们认为就目前的区块链发展现状,安全问题虽然很多,但核心只有一个,那就是数字资产安全。区块链安全领域的攻守两方基本上都是围绕着这一点来的。

这也影响到了区块链安全行业对安全漏洞的评级标准的制定。与其他行业不同的是,区块链行业中,凡是威胁到数字资产安全的,一律评定为高危漏洞,否则评定为中危或低危漏洞。

4、为什么智能合约安全问题如此频发? 请分析以太坊 the DAO 智能合约出现漏洞。

苗知秋:

智能合约安全的本质是,合约意图和实际实现之间的差异。换句话说,开发人员以为要做的事,跟合约实际执行中所做的事出现了不一致。

合约安全问题频发的原因有三个:第一,智能合约涉及数字资产的发放和管理,黑客有足够的动机。第二,智能合约存在一些缺陷,开发环境也不够完善。第三,一些合约开发人员对智能合约的本质理解不到位,对合约的分布式运行环境理解不清,照搬之前的老思路,导致问题频发。

DAO 事件的启示有两点:

  1. 发生安全事件并不可怕,重要的是能否采取正确的应对措施,并吸取教训,教育社区。对于 ETH 来说,通过 DAO 事件的考验并成熟起来了。

  2. 处理问题的正确态度应当是面对现实,原则性和灵活性兼备,极端的理想主义并不可取。

ETH 社区的发展明显优于 ETC 社区,后者不断萎缩。前者处理问题的态度更值得我们借鉴,后者的极端化思路需要警惕。

5、请分析 EOS 彩虹攻击事件的原因、影响,以及对从业者的启示。

苗知秋:

EOS 彩虹攻击事件的本质是随机数问题。根源在于部分私钥生成工具允许用户采用强度较弱的助记词组合,这样生成的私钥很容易被“彩虹”攻击,导致账户数字资产被盗。

钱包的安全基础是随机数种子,凡是随机性不够的,如使用“12345678”等弱口令当助记词,或使用各网站已泄露的密码库中的密码当助记词,都存在账户被盗的风险。

随机数的核心要义是不可预测性,一旦被预测到,基于随机性的安全体系将立刻崩塌。

随机数生成器有真随机和伪随机之分,伪随机数生成方便,成本低,但是随机性有限,真随机数生成条件苛刻,要求高,但是可以实现真正的随机性。

对于区块链涉及大额数字资产保护的行业,建议大家尽快从使用伪随机数转到真随机数。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2020-03-21 15:24
  • 阅读 ( 1862 )
  • 学分 ( 21 )
  • 分类:Libra

0 条评论

请先 登录 后评论
施义飞
施义飞

10 篇文章, 166 学分