安全问题成短板,联盟链发展背后的安全如何保障?

成都链安

    区块链技术近年来快速发展,技术应用已延伸到数字金融、物联网、智能制造、供应链管理、数字资产交易等多个领域。
    作为核心技术自主创新的重要突破口,安全问题被视为当前制约行业健康发展的一大短板,区块链安全事件屡屡发生,甚至成为黑客攻击的“重灾区”。公链的安全问题对于公链发展的影响已经不言而喻,而联盟链的安全问题也不容忽视,今天我们主要来跟大家探讨下联盟链的安全问题。
    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 业务安全问题
    联盟链的智能合约是为了完成某项业务需求执行某项业务,因此在业务逻辑和业务实现上仍是可能存在安全风险的,如:函数权限失配、输入参数不合理、异常处理不到位。