区块链技术近年来快速发展,技术应用已延伸到数字金融、物联网、智能制造、供应链管理、数字资产交易等多个领域。
作为核心技术自主创新的重要突破口,安全问题被视为当前制约行业健康发展的一大短板,区块链安全事件屡屡发生,甚至成为黑客攻击的“重灾区”。公链的安全问题对于公链发展的影响已经不言而喻,而联盟链的安全问题也不容忽视,今天我们主要来跟大家探讨下联盟链的安全问题。
PART1 什么是联盟链?
联盟链是由多个机构共同参与管理的区块链,每个组织或机构管理一个或多个节点,其数据只允许系统内不同的机构进行读写和发送。 联盟链的各个节点通常有与之对应的实体机构组织,通过授权后才能加入与退出网络。各机构组织组成利益相关的联盟,共同维护区块链的健康运转。
国内常见的联盟链有:蚂蚁链、BSN联盟链、腾讯至信链、百度超级链、京东智臻链、新版链、天河链、趣链、网易星球区块链、长安链等。
联盟链优缺点
优势
1)更高的处理效率
联盟链的信任环境允许少数节点参与生态的治理,商业决策的处理能力较高。
2)可扩展性更高
联盟链可以根据复杂的商业环境进行技术迭代。联盟链在落地时,考虑更多的是如何将过去的数据孤岛打通,同时让联盟中流通的数据是可信的,不用像过去一样做频繁的校验。
3)智能合约应用场景更多
基本上可以实现中心化机构所有的业务逻辑,且具交易最终性。
4)可控性较强
公有链是一旦区块链形成,就不可篡改,而联盟链,只要所有机构中的大部分达成共识,即可将区块数据进行更改。
5)具有更大的隐私性
不同于公有链,联盟链的数据不会默认公开,只限于联盟里的机构及其用户才有权限进行访问,隐私性更强。
缺点
1)容易被恶意用户攻击
由于联盟链半中心化结构的原因,它很容易被恶意玩家所攻击。在有限的节点内,可以假定多个参与者会出现合谋的可能性。
2)缺少行业统一标准
因为缺少行业统一标准,在解决方案上免不了会有各种障碍,但是目前整个生态距离联盟链的统一框架还是很遥远。
联盟链的典型应用场景
联盟链技术可以用来优化大多数传统信息化系统的业务流程,特别适用于没有强力中心、多方协作、风险可控的业务场景。联盟链的共享账本机制可以极大降低该类场景下的对账成本、提高数据获取效率、增加容错能力、巩固信任基础、以及避免恶意造假。
随着区块链技术的不断发展,越来越多的机构与企业开始加大对区块链的研究与应用。相比公链而言,联盟链具有更好的落地性,受到了许多企业与政府的支持。
目前,联盟链的典型应用场景有:商品溯源、公益慈善、供应链金融、电子政务、互助保险、物联网等,另外在数字版权、数字身份、教育、医疗、能源、文化娱乐及民生等垂直产业和领域也都有联盟链的身影。
PART2 联盟链有哪些安全问题?
联盟链中存在的安全问题主要包括网络安全、主机安全、链平台安全和智能合约安全。
网络安全:联盟链也易遭受到传统的网络安全威胁,包括网络钓鱼攻击、DNS劫持攻击、DDos攻击、IP欺骗、会话劫持、域名劫持等。
主机安全:主机安全主要包括服务器基础策略配置、防火墙配置策略、权限管控、第三方模块安全、应用服务安全、端口安全、数据库服务安全等。
下面重点给大家介绍下链平台安全和智能合约安全问题。
联盟链链平台安全问题
联盟链链平台安全问题包括:交易安全、共识安全、账户安全、合规性、RPC安全、端点安全、P2P安全等。
联盟链的安全事故大多发生在其算法和底层设计本身,但依然有黑客出于商业目的进行攻击。黑客攻击联盟链的手法包括:内部威胁、DNS攻击、MSP攻击、51%的攻击等。
以MSP攻击为例:MSP是Fabric联盟链中的成员服务提供商(Membership Service Provider)的简称,是一个提供抽象化成员操作框架的组件,MSP将颁发与校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。一个MSP可以自己定义身份,以及身份的管理(身份验证)与认证(生成与验证签名)规则。
针对MSP的攻击,一般来说,可能存在如下几个方面:
(1)内部威胁
a)如果某个内部人员持有了可以管理MSP的证书,他将可以对Fabric网络进行配置,比如添加或撤销访问权限,向CRL添加身份(本质上是列入黑名单的身份);
b)如果有传感器等物联网设备接入联盟链,其可能传播虚假信息到链上,并且因为传感器自身可能不支持完善的安全防护,可能导致进一步的攻击。
(2)私钥泄露
节点或者传感器的证书文件一般存储在本地,可能导致私钥泄漏,进而导致女巫攻击、云中间人攻击(Man-in-the-Cloud attack)等。
(3)DNS攻击
当创建新参与者的身份并将其添加到MSP时,在任何情况下都可能发生DNS攻击。向区块链成员创建证书的过程在许多地方都可能发生攻击,例如中间人攻击,缓存中毒,DDOS。
(4)CA攻击
数字证书和身份对于MSP的运行至关重要。Hyperledger Fabric允许用户选择如何运行证书颁发机构并生成加密材料。选项包括Fabric CA,由Hyperledger Fabric,Cryptogen的贡献者构建的过程,以及自己的/第三方CA。
这些CA本身的实现都有其自身的缺陷。Cryptogen在一个集中的位置生成所有私钥,然后由用户将其充分安全地复制到适当的主机和容器中。通过在一个地方提供所有私钥,这有助于私钥泄露攻击。除了实现方面的弱点之外,MSP的整体以及因此区块链的成员资格都在CA上运行,并且具有信任证书有效的能力,并且证书所有者就是他们所说的身份。
对知名第三方CA的攻击如果成功执行,则可能会损害MSP的安全性,从而导致伪造的身份。
联盟链智能合约安全问题
为了提升效率,支持更加友好的设计,各联盟链在智能合约上出现了不同的发展方向。联盟链智能合约相较于常规公链在规范性、和安全性都有一定的提升,但在以下几个方面仍可能存在安全风险:
01 代码语言安全性问题
一种是继续沿用主流公链编程语言,并在其基础上改进(如:BCOS使用的solidity),另一种则是以通用编程语言为基础,指定对应的智能合约模块(如:fabric的Go/Java/Node.js),不管使用什么语言对智能合约进行编程,都存在其对应的语言以及相关合约标准的安全性问题。
02 合约执行带来的安全问题
整型溢出:不管使用的何种虚拟机执行合约,各类整数类型都存在对应的存储宽度,当试图保存超过该范围的数据时,有符号数就会发生整数溢出。
堆栈溢出:当定义方法参数和局部变量过多,字节过大,可能使程序出现错误。
拒绝服务攻击:主要涉及到的是执行合约需要消耗资源的联盟链,因资源耗尽而无法完成对应的交易。
03 系统机制导致的合约安全问题
这里主要是指多链架构的联盟链:
合约变量的生成如果依赖于不确定因素(如:本节点时间戳)或者某个未在账本中持久化的变量,那么可能会因为各节点该变量的读写集不一样,导致交易验证不通过。
全局变量不会保存在数据库中,而是存储于单个节点。因此,如果此类节点发生故障或重启时,可能会导致该全局变量值不再与其他节点保持一致,影响节点交易。因此,从数据库读取、写入或从合约返回的数据不应依赖于全局状态变量。
在多链结构下进行外部链的合约调用时,可能仅会得到被调用链码函数的返回结果,而不会在外部通道进行任何形式的交易提交。
合约访问外部资源时,可能会暴露合约未预期的安全隐患,影响链码业务逻辑。
04 业务安全问题
联盟链的智能合约是为了完成某项业务需求执行某项业务,因此在业务逻辑和业务实现上仍是可能存在安全风险的,如:函数权限失配、输入参数不合理、异常处理不到位。
PART3 成都链安赋能联盟链生态安全发展
随着联盟链生态的快速发展,基于成都链安“链必安—一站式区块链安全服务平台”,我们可以为联盟链平台提供全生命周期的整体安全解决方案,为联盟链生态的安全发展保驾护航。
一方面,我们可以为联盟链链平台提供安全监测、联盟链智能合约安全审计等服务;另一方面,还可为联盟链的落地应用,诸如:区块链政务、区块链供应链金融、区块链物流等用提供“区块链+应用+安全”的综合安全解决方案。
发展在左,安全在右,重视安全发展应该也必须是联盟链生态发展的重中之重。成都链安将继续积极发挥区块链安全头部企业优势,依托我们的联盟链安全整体解决方案,助力联盟链安全健康发展。