算法安全与分析

密码学算法、共识机制及智能合约的安全性是区块链安全的基础和核心。现有的区块链项目在数字签名算法的设计与实现、PoW与PoS共识机制与图灵完备智能合约算法等方面仍然存在以下安全问题及潜在的应对方法。

签名算法

区块链技术基于密码学算法保证了现实世界中资产价值的安全转移,基于散列链及时间戳机制保证了数据的可追溯、不可篡改特性,密码算法是区块链技术体系的基础支撑,其安全性是区块链技术的核心。

传统的非对称加解密算法基于计算安全性来设计,在面对量子计算时安全性大大降低。2017年11月12日,IBM宣布基于20量子比特的量子计算机,可在年底向客户开放,基于50量子比特的量子计算机原理样机也将开放。2018年3月6日,谷歌发布基于72量子比特的量子计算机“Bristlecone”。由于使用量子计算,基于公钥有可能推算出私钥,因此,量子计算技术的快速发展必将会威胁区块链系统,给区块链安全算法提出挑战,需要设计和使用抗量子攻击的数字签名算法。

自2006年起,国际上致力于抗量子计算密码的研究,主要形成了以多变量公钥密码体制、基于Hash函数的数字签名方案、基于编码的密码体制和基于格的密码体制为主的四大类抗量子密码体制。这些密码体制可望成为未来区块链的基础算法,以抵抗量子计算攻击。

共识机制

主流的区块链共识算法包括工作量证明PoW、权益证明PoS、代理人权益证明DPoS以及实用拜占庭容错PBFT等,由于共识的达成是由大部分参与者的投票决定的,当超过半数的参与人(不论其是否为做怀者)投票赞成时,共识达成,因此,共识算法面临51%攻击的安全威胁。

PoW共识算法因其由算力决定,而算力是可以租用的,很多矿场提供算力租用,而且成本并不高,当算力超过51%时,即可成功实施该攻击。当使用其他手段实现恶意挖矿时,更会加剧51%攻击的发生。

PoS和DPoS共识算法基于权益证明,要想实现51%攻击,攻击者持有的币必须超过总币数的51%,从这一点来看,其遭受51%攻击的可能性较小。然而,同样是由于权益证明的原因,PoS和DPoS存在长链攻击和共识垄断的缺陷,权益能力较强的参与者一直处于共识达成的决定性角色,一旦其成为做怀者,将给整个系统带来致命威胁。

PBFT算法的本质是多数人投票,会遭受1/3攻击。当系统中做坏节点的数量大于1/3时,有可能造成共识永远不能达成或达成错误共识的问题。如果参数共识的节点总数量较少,恶意攻击者有可能控制1/3的节点,发起1/3攻击。

以Hashgraph为代表网状链接方式的新型区块链技术自带共识机制,但是容易受到内部攻击和外部黑客攻击,同时也存在中心化风险。

此外,现有共识算法还缺乏有效的安全性证明方法,也还没有业界认可的安全性证明方法的提出。

智能合约

智能合约是区块链系统的核心功能,也是最复杂和最容易出现安全问题的部分。当前,区块链项目的大部分安全漏洞都是由于智能合约的编译、合约代码编写不当或执行环境实现不当引起的。

在提供了安全的区块链环境之后,智能合约的安全性主要取决于合约代码。如果合约代码里的实现逻辑存在缺陷就会严重影响到区块链的安全。因此,有必要对上链的智能合约进行慎重的代码审计与安全检查。

当前,智能合约的安全实现的主要方法包括合约开发模板、合约审计、合约语言设计和赏金猎人机制等。智能合约模板是一种效率较高的解决方案,智能合约模板经过了专业审核、试用验证,用户在使用智能合约模板时只需要填写相关输入数据即可。OpenZeppelin、Etherparty等项目是提供规范化合约模板的先驱。这种做法规范了合约的实现形式,可以较好的实现对合约代码的限制和安全检查,也为合约代码开发提供了方面,但同时,该方法也限制了合约开发的灵活性,而且如果某个模板出现安全问题,使用该模板的其他合约代码都会出现安全问题。合约审计方法是对合约代码进行安全审计,包括人工的代码审计和机器辅助的安全审计。人工审计方法主要依赖审核人的安全经验。机器辅助安全审计方法又包括规则验证、语义验证和形式化验证方法。规则验证的方法是一种匹配方法,将安全缺陷描述为规则,对被审计代码进行安全审计。语义验证基于程序语义检查方法,基于合约语言针对某些属性实现安全检查。合约语言设计方法是从程序设计语言的安全性考虑,主要使用函数式编程语言实现合约开发,如haskell、OCaml等,并设计经过验证的合约开发库,简化合约开发,并提高安全性。赏金猎人机制基于付酬的方式,吸引高水平安全研究者对自己项目代码进行安全漏洞检查,提交确认后给予奖金。

基于形式化验证的合约代码安全审计方法受到安全研究者的重视。与面向一般代码安全审计的形式化方法类似,形式化验证技术基于已建立的形式化约束,对目标系统的相关特性进行分析和验证,以审计系统是否满足期望的安全属性,如不一致性、模糊性、不完备性等。形式化验证的主要包括模型验证和定理证明两大类,模型检验的方法把系统所有可能的状态列出兵进行一一检验,自动化程度高,但效率低,仅适合小型系统。定理证明方法把系统代码标记为抽象数学模型,然后对定理进行证明,该方法适合大型系统,但人工参与度高,工作量较大。CertiK、链安科技、Runtime Verification等几个区块链安全公司给出了智能合约形式化验证方法。

曹源

博士。资深区块链技术专家和网络安全专家,从事区块链技术研究与应用近10年,对DAG技术有深入研究,基于DAG技术的明星区块链项目InterValue的创始人兼CEO。

西安电子科技大学区块链应用与评测实验室副主任、浙江大学计算机学院区块链研究中心特聘研究员、湘江区块链研究院副院长、矩阵数字经济智库专家成员。

此外,他还是北京理工大学机电学院特聘研究员、湘潭大学硕士生导师、湖南宸瀚信息科技有限公司董事长、哈希奈特(北京)科技股份有限公司董事长、四川宸瀚信息科技有限公司董事长、浙江物信科技有限公司董事长。

矩阵数字经济智库由矩阵财经依托“MATRIX贝叶斯研究基金”(MATRIX与清华大学教育基金会联合成立)和MATRIX与“一带一路研究中心”的战略合作协议发起。智库将联合区块链、人工智能、金融、数字资产管理与投资领域的专家,聚焦传统产业转型和技术/商业创新,以新技术赋能实体经济,推动技术进步,引领数字经济的变革。

矩阵财经出品

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181114G09U3R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券