APP下载

区块链典型应用架构安全风险和应对分析

2019-01-18戴方芳樊晓贺崔枭飞

信息通信技术 2018年6期
关键词:应用层合约区块

戴方芳 樊晓贺 崔枭飞 孟 楠

中国信息通信研究院 北京 100191

引言

区块链最初作为构建比特币的基础技术被提出[1],尽管由于其价值波动过高和监管困难等原因,比特币在中国、俄罗斯、欧盟曾一度被叫停[2-4]。但区块链技术却凭借其在推动数据存储方式转型和信任机制重塑方面的技术优势,在金融、医疗、能源、通信等各行业领域得到了大量的探索应用。区块链技术以牺牲适量的计算力、带宽或存储资源的方式换取了安全性,但其分布式、自组织等颠覆性本质也引发了一些不容忽视的安全影响,如隐匿性强导致网络安全事件难以追溯、无中心化特性扩大威胁面、数据安全责任边界模糊等。目前,国内外学者已对区块链的技术局限性和潜在风险进行了多方面的研究。文献[5]指出一旦一个或一群节点控制了整个区块链网络51%以上的算力,并联合起来攻击整个系统,则可能篡改生成的区块内容,甚至开展拒绝服务攻击影响整个区块链系统的运行;文献[6-7]分析了区块容量限制对区块链大量增长的业务存储需求的制约;文献[8]指出了交易延迟可能引发区块链中的业务欺骗攻击;文献[9]分析了区块链的强隐匿性给网络安全事件和网络犯罪追踪溯源带来的挑战,指出基于区块链技术的加密货币已成为不法分子勒索赎金、实施暗网交易的主要手段。

因此,为研究区块链技术本身的安全缺陷和应用过程中可能面临的安全问题,本文对区块链的典型架构及其安全风险框架进行了分析,并提出了应对举措。具体如下:第1部分梳理了区块链技术的典型应用架构,第2部分分析了区块链典型应用架构对应的安全风险框架,第3部分提出了风险应对举措,第4部分对文章进行了总结。

1 区块链典型应用架构

作为一种全新的数据存储、传播和管理机制,区块链通过让用户共同参与数据的计算和存储,并互相验证数据的真实性,以一种去中心和去信任的方式实现了数据和价值的可靠转移。随着区块链技术在各行业领域的不断探索应用,其应用模式日趋成熟,由存储层、协议层、扩展层和应用层构成的区块链技术典型应用架构逐渐趋于共识,如图1所示。

图1 区块链技术典型应用架构

1.1 存储层

区块链的存储层负责存储上层应用所需及产生的各类数据文件,存储方式较为灵活,多结合文件系统、关系数据库、键值数据库等方式,在各参与节点侧实现区块链中数据的存储和检索,如依托键值数据库等非关系型数据库,实现“区块+链”的数据结构的存储和检索;或是采用传统文件系统存储区块数据,只是在检索时使用“Key+Value”的键值数据库检索区块数据等,如图2所示。

图2 典型区块链底层数据存储方式

1.2 协议层

区块链协议层通常采用P2P网络组网,结合各类密码学安全机制和共识机制,为上层应用构建对等、安全、信任的网络和通信基础,具体包括以下三点。

1)P2P机制构建对等通信网络:区别于传统C/S结构的服务型网络,区块链的每个参与者都将作为P2P网络的节点,可同时充当客户端和服务端,参与到校验区块信息、广播交易、新节点识别等。

2)非对称加密机制提供安全属性保障:在区块链中,数据的加密解密、签名验签、认证校验等均以非对称加密机制实现,为数据的机密性、完整性、不可伪造性和隐私保护提供不同程度的安全保障。

3)共识机制维持区块链有序运行:通过共识机制,相互间未建立信任关系的区块链节点可共同对数据写入等行为进行验证,以大多数节点达成一致的信任构建方式,摆脱对传统中心化网络中信任中心的依赖。

1.3 扩展层

作为区块链应用方向延伸的支撑平台,在上层应用和底层技术机制之间,以可执行代码的方式,为用户实现复杂业务流程的自动化;或是通过设置激励/惩罚机制,规范区块链节点贡献自身存储和计算资源,共同推动网络和业务的高效运行。目前,扩展层的实现主要以在以太坊之上开发和运行的智能合约为主,实现在各类交易场景中,交易双方或多方间协议在满足条件时的自动执行。

1.4 应用层

应用层是区块链技术在不同行业领域的各类应用场景和案例最直接体现。在支付结算、证券、票据、医疗健康、供应链等应用方向上通过App、Web平台等不同形式服务于最终用户。与区块链技术架构的其他层次相比,应用层最直观地体现了区块链技术的应用价值,因此,目前在国内外区块链技术生态中,对区块链技术应用方向的探索尤为活跃,覆盖加密货币、交易清算、能源交易、商品溯源等金融和实体领域。

2 安全风险

尽管区块链的防篡改、分布式存储、用户匿名等技术优势为其发展应用提供了大量的创新空间,但目前区块链技术在各领域的应用模式仍处于大量探索阶段,其深入应用仍需漫长的整合和发展过程。区块链技术本身仍存在一些内在安全风险,去中心化、自组织的颠覆性本质也可能在技术应用过程中引发一些不容忽视的安全问题,如图3所示。

图3 区块链安全风险框架

2.1 存储层:来源于环境的安全威胁

如前所述,区块链存储层通常结合分布式数据库、关系/非关系型数据库、文件系统等存储形式,存储上层应用运行过程中产生的交易信息等各类数据,可能面临基础设施安全风险、网络攻击威胁、数据丢失和泄露等,威胁区块链数据文件的可靠性、完整性及存储数据的安全性,具体包括以下三点。

1)基础设施安全风险:主要为来自区块链存储设备自身以及所处环境的安全风险,如LevelDB、Redis等数据库中可能存在未及时修复的安全漏洞,导致未经授权的区块链存储设备访问和入侵,或者存放存储设备的物理运行、访问环境中存在的安全风险;

2)网络攻击威胁:包括DDoS攻击、利用设备软硬件漏洞进行的攻击、病毒木马攻击、DNS污染、路由广播劫持等传统网络安全风险。

3)数据丢失和泄露:针对区块数据和数据文件的窃取、破坏,或因误操作、系统故障、管理不善等问题导致的数据丢失和泄露,以及线上和线下数据存储的一致性问题等。例如,EOS的IO节点可通过原生插件,将不可逆的交易历史数据同步到外部数据库中,外联数据库数据在为开发者和用户提供了便利的同时,也可能引发更多的数据丢失和泄露风险。

2.2 协议层:核心机制的安全缺陷

协议层结合共识机制、P2P网络、密码机制等,实现区块链用户网络的构建和安全机制的形成。该层安全风险主要由区块链技术核心机制中存在的潜在安全缺陷引发,包括来自协议漏洞、流量攻击以及恶意节点的威胁等。

1)协议漏洞:容易引发算力攻击、分叉攻击、女巫攻击的共识机制漏洞 ,以及引发DDoS攻击的P2P协议缺陷等。不安全的协议以及协议的不安全实现,给攻击者提供了大量的可乘之机,不仅影响整个区块链系统的一致性,也可能违背区块链的防篡改性。

2)流量攻击:攻击者可通过BGP劫持、窃听、TCP Flood攻击等多种手段,接管区块链网络中一个或多个节点的流量,达到迫使区块链网络分割、交易延迟、用户隔离、交易欺诈等攻击目的。尽管目前并未有此类攻击案例被披露,但相关攻击代码已在部分网络开发社区上公开。

3)恶意节点:完全公开透明的区块链——公有链对加入其中的用户不设任何访问授权机制,恶意节点可在加入后刻意扰乱区块链运行秩序、破坏正常业务;而私有链、联盟链中尽管设置了不同等级的访问权限控制机制,也可能有恶意节点通过仿冒、漏洞利用等手段非法获取或提升权限进而开展攻击,或节点间联合作恶的情况发生。

2.3 扩展层:成熟度不高的代码实现

目前,在区块链扩展层较典型的实现是智能合约或称可编程合约,由于智能合约的应用起步较晚,大量开发人员尚缺乏对智能合约的安全编码能力,其风险主要来源于代码实现中的安全漏洞。

1)合约开发漏洞:合约处理逻辑的正确性、完备性是智能合约的基本要求,由于智能合约的开发者能力、安全编码水平良莠不齐,或是出于利益原因,智能合约的开发中可能存在安全漏洞和后门,使区块链钱包、众筹、代币发行等智能合约典型应用中出现不安全的代码实现,可能引发合约控制流劫持、未授权访问、拒绝服务等后果。

2)合约运行安全:作为区块链2.0的核心,智能合约运行环境的安全性是区块链安全的关键环节,目前,部分区块链项目会设计并使用自己的虚拟机环境,一旦在运行环境中存在虚拟机自身安全漏洞,或验证、控制等机制不完善等,攻击者可通过部署恶意智能合约代码,扰乱正常业务秩序,消耗整个系统中的网络、存储和计算资源,进而引发各类安全威胁。

2.4 应用层:各类传统安全隐患集中

应用层直接面向用户,涉及不同行业领域的应用场景和用户交互,该层业务类别多样、交互频繁等特征也导致各类传统安全隐患集中,成为攻击者实施攻击、突破区块链系统的首选目标。应用层安全风险涉及私钥管理安全、账户窃取、应用软件漏洞、DDoS攻击、环境漏洞等。

1)私钥管理安全:私钥的安全性是区块链中信息不可伪造的前提 ,区块链中用户负责生成并保管自己的私钥于本地,并可能根据使用需求在单点或多点进行私钥文件备份,该环节不安全的存储可导致私钥文件泄露或被窃取,威胁用户数字资产安全。

2)账户窃取:攻击者可利用病毒、木马、钓鱼等传统攻击手段窃取用户账号,进而利用合法用户账号登录系统进行一系列非法操作。

3)应用软件漏洞:应用层的开源区块链软件中存在大量因开发问题而引发的输入验证、API误用、内存管理等安全漏洞。

4)DDoS攻击:除对底层协议缺陷的DDoS攻击外,攻击者也可在应用层发起针对性的DDoS攻击,影响各类应用业务的可用性。

5)环境漏洞:区块链应用所在服务器上的恶意软件、系统的安全漏洞、配置不当的安全管理策略等都可能成为攻击者攻破区块链应用的脆弱点。

3 风险应对框架

图4 区块链安全风险应对框架

区块链技术的安全应用需综合考虑其技术架构本身,以及应用在不同场景中可能面临的各类安全风险。基于区块链技术的系统应用普遍拥有较高的复杂度,需要根据存储层、协议层、扩展层、应用层等不同层面的风险来源和成因,从编码、部署、管理等环节实施针对性的应对措施以降低风险。因此,本文基于区块链安全风险应对四要素,构建风险应对框架,具体包括以下四点。

1)要素1:安全风险,包括从技术架构各层次梳理的4大类13小类安全风险;

2)要素2:应对措施,应对各类安全风险应实施的安全措施;

3)要素3:映射,风险和应对的映射关系;

4)要素4:责任主体,包括区块链开发者、区块链用户和区块链平台运行者。

区块链安全风险应对框架如图4所示。

1)安全开发:包括区块链应用开发者、智能合约开发者、区块链平台开发者等在内的各类区块链开发者,应实施规范的开发流程,使用规范的开发和编译工具,预留充分的上线试运营周期等,降低编码过程中引入安全风险的几率。

2)代码审计:区块链开源的特性使得攻击者可以便捷地获得代码,通过分析代码的逻辑缺陷找到攻击突破口。因此,区块链开发者应在产品上线发布前,采用自动化或人工的方式,对代码架构、逻辑流程、关键功能模块开展足够的静态代码分析、交互式代码审计等源代码安全检查工作,以检查代码中的安全缺陷和安全隐患。

3)安全评估和测试:通过对区块链技术架构、应用场景、攻击模式等开展针对性的安全评估和测试,及时识别运行环境、基础设施、核心协议、智能合约以及应用软件等各层面存在的安全漏洞,发现并采取措施应对安全风险;对算力的集中度、节点的分散度以及基础设施的可靠性和安全性进行评估。一方面,区块链开发者可借助贯穿开发生命周期的安全评估和测试,在相关产品投入市场前及时降低产品安全隐患;另一方面,区块链平台、系统的运行维护者也可在产品运行过程中定期或不定期地开展安全评估和测试,及时发现和解决安全问题。

4)安全配置:软件、硬件、协议、系统等层面不安全的配置也可能成为引入安全风险的原因,如开放了不必要的系统服务访问、设置了不当的权限管理原则等。为此,区块链平台、系统的运行维护者需要实施安全的配置以限制脆弱性的暴露,从各方面缩小攻击面,包括关闭和限制不必要的服务和端口,对系统资源、用户权限等采用“最小特权原则”管理,合理部署智能合约外部调用接口安全参数,为私钥文件配置硬件冷备份,尽量引入无关联利益关系的实体以降低节点间联合作恶的可能性等。

5)输入校验:从入口侧降低输入数据对业务逻辑的影响,包括对区块链交易平台Web端、智能合约输入变量等参数的合理妥善校验。鉴于输入数据与业务逻辑之间曲折复杂的关联关系,尽管输入校验无法完全解决DDoS攻击、利用漏洞的攻击等安全问题,但区块链开发者仍应对区块链应用层、扩展层、协议层等不同层面的输入进行合法性校验,以降低恶意代码执行和逻辑错误风险。

6)加密存储/传输:一方面,私钥的安全管理是所有非对称加密系统中安全保障的重要环节,区块链中也不例外。与明文存储的私钥相比,采取加密存储的方式可大大降低私钥信息泄露的可能性;亦可将加密存储应用于重要配置文件、核心数据库记录中,以减少各类数据泄露风险。另一方面,在协议层、扩展层等层面可通过部署TLS等可靠的加密传输,在一定程度上防止恶意节点攻击、流量窃取或劫持以及针对合约运行安全的攻击方式等。

7)节点/数据安全验证:区块链中各节点根据共识机制共同维护网络和相关业务的有序进行,试图向区块链中植入恶意节点也成为攻击者控制区块链,窃取经济利益和实施破坏的主要手段,因此,针对区块链网络中的未授权节点或恶意节点实施必要的节点/数据安全验证,可有效减弱因恶意节点带来的安全隐患。

8)身份认证和权限管理:与节点/数据安全验证类似,必要的身份认证和权限管理也是对区块链用户、节点和操作进行安全控制的有效手段,可应对协议层可能出现的未授权节点、流量攻击,以及因验证控制机制不完善引发的智能合约运行安全问题等。

9)流量清洗:主要针对存储层、协议层、应用层等不同层面可能面对的流量攻击威胁,尤其是DoS、DDoS攻击威胁,通过对流量的实时监控,及时识别和剥离隐藏在网络流量中的异常攻击流量,以服务、产品或内嵌安全功能的模式按需在区块链应用场景中部署。

10)必要的安全防护产品/服务:防火墙、入侵检测、WAF、安全审计等传统安全的部署尽管未必能解决所有层面的安全问题,但能从各自的角度实施针对性的防护,持续监测发现异常交易、异常节点行为、安全漏洞等,对各类安全事件进行及时处理响应,给区块链系统、平台等带来整体安全性的提升,间接提高攻击者发起攻击的成本和被发现的可能性。任何技术的安全的落地应用,都离不开必要的安全防护产品或服务的有效部署,区块链也不例外。

4 总结

作为网络时代的新一轮变革力量,在与现有技术结合催生新业态新模式的同时,区块链技术发展和深入应用仍需要漫长的整合过程,其核心机制、应用场景中存在的潜在风险也给技术应用和现有网络安全监管政策带来新的挑战。未来,需理性看待区块链的技术优势,强化应对潜在风险,从强化应用领域引导、创新安全监管手段、加强技术风险研究、重视区块链网络犯罪风险防范等方面加强应对,切实保障区块链技术的健康、有序发展和应用。

猜你喜欢

应用层合约区块
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
区块链将给媒体业带来什么
区块链+媒体业的N种可能
基于分级保护的OA系统应用层访问控制研究
物联网技术在信息机房制冷系统中的应用
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair