APP下载

面向区块链系统安全测评技术研究

2021-06-10王崇宇朱宇坤陈瑞东

无线电通信技术 2021年3期
关键词:合约共识加密

王崇宇,朱宇坤,陈瑞东

(电子科技大学,四川 成都 611731)

0 引言

自2013年起,国家接连颁布多项与区块链相关的重大政策,2017年,中国信息技术部门成立区块链研究实验室。而中央在2019年则将区块链作为核心技术自主创新的重要突破口[1]。2021两会,区块链更是被纳入到五年规划中。从2016年国务院发布《“十三五”国家信息化规划》到2021年的“十四五”,短短几年,区块链技术在国内已经逐渐从理论研究走向实际应用,成为国家层面发展战略。但区块链底层平台、应用服务等方面都在飞速发展的同时,对区块链的测评研究目前还依旧处于探索阶段,行业缺乏统一的评价标准,面临着区块链安全风险难以评估对比的痛点。因此面向科学、系统的区块链测评体系构建的普遍需求,开展区块链安全测评技术研究尤为重要。基于此,本文主要针对当前区块链相关技术标准及各个层级间的安全风险问题进行了深入分析,提出了包含功能、性能、安全性及可靠性等方面测评指标的安全测评模型。

1 区块链主要技术

1.1 非对称加密

在区块链网络中,所有节点维护自己的公私钥密钥对,基于公私钥体系保障数据传输的安全性。在区块链中非对称加密主要用于数据加密和签名[2]。数据加密、签名主要都是对一个消息的内容进行处理,进而确保区块链安全。数据加密通常是用消息接收方的公钥进行加密,而数字签名则通常是用发送方的私钥加密。这两种方式分别保障了区块链网络底层数据的可靠传输和可信验证。

1.2 哈希算法

哈希散列算法通过散列函数把数据进行变换后,生成一个数据摘要,固定每个数据量的格式。函数将数据打乱混合后,重新创建由短随机字母和数字组成的字符串(散列值/哈希值),成为数据指纹[3],用来标识区块,若区块变化,则对应散列值也对应发生变化。而区块链中Merkle Tree的引入,更是灵活地将树形结构和哈希列表结合到一起,解决了哈希算法可能存在哈希冲突的问题。

1.3 P2P网络

P2P网络的出现,建立了一个相互通信的对等计算机网络,每个节点都具有路由的功能,不同类型节点包含部分功能,这种网络结合分布式存储构成了区块链网络层结构的基础,基于P2P网络去中心化等特性,区块链可以针对不同节点进行设计,划分出挖矿节点、轻节点等角色[4],从而产生后续的相关算法。

1.4 共识机制

共识机制让众多节点构成的区块链分布较为均匀。区块链解决了在不可信信道上传输信息、价值转移等问题 ,而共识机制解决了区块链如何在分布式场景下达成一致性的问题[5]。例如针对公链,中本聪在《Bitcoin:A peer-to-peer electronic cash system》中提及工作量证明(POW)共识机制,这种机制在去中心化的思想下解决了节点间相互信任的问题。

1.5 智能合约

智能合约是一种在满足特定条件时,自动执行的计算机程序。Nick Szabo 将智能合约定义为:一个智能合约是一套以数字形式定义的承诺(commitment),包括合约参与方可以在上面执行这些承诺的协议[6]。当条件成立时自动去执行,不需要三方参与共享程序代码,具有去信任、经济高效、无需三方仲裁的特点。

2 区块链安全风险分析

区块链详细架构如图1所示。与TCP/IP四层模型的分层结构有些许相近,区块链主要分为数据层、网络层、共识层、激励层、合约层和应用层,各层之间相互配合实现P2P的共识模式。通过针对区块链模型不同层级进行风险分析,使得后续评估模型的构建更为准确。区块链的数据层使用大量密码学算法确保安全,如非对称加密、哈希加密等,主要进行数据存储,具有典型中心化和封装链式结构的特点。而区块链网络层由P2P网络构成,确保节点连接和通信,进行广播验证等操作。区块链共识层包含共识机制算法,通过共识选举记账节点,同时进行账本同步,确保全网节点交易数据一致。激励层一般仅作用于公链,进行代币发行机制和分配机制,惩罚不守规则的节点。合约层封装脚本算法和合约,使区块链具有可编程的特性。应用层则封装了各种场景和案例[7]。

图1 区块链详细架构Fig.1 Blockchain detailed architecture

上述架构中激励层常用于联盟链,其他层为区块链共有层级。因此本节将对应划分的区块链架构,从区块链应用层、智能合约、共识算法、网络层和数据层五方面进行简要的风险分析,如图2所示。

图2 区块链各层安全风险分析Fig.2 Blockchain detailed architecture

2.1 应用层风险分析

风险主要来自以下十方面:

① 注入漏洞。当不可信数据作为命令或查询的一部分发送给解释器时,会发生注入漏洞,如SQL、NoSQL、OS和LDAP注入[8]。同时由于区块链部分项目及应用部署搭载在Windows系统上,因为在Window系统中,当前目录下的DLL会被先运行,攻击者可以设计伪装LPK.DLL,通过这种方式让系统优先加载有风险的代码段,在DLL中调用系统原函数。

② 失效的身份认证。当认证、会话管理等功能在落实过程中出现漏洞时,黑客就可以针对密码、密钥和会话令牌进行攻击,导致身份认证失效。此外黑客也可以利用其他实施过程的缺陷实现短时间或长期侵占用户身份。

③ 敏感数据泄漏。许多区块链Web应用程序和API不能正确保护敏感数据,攻击者可能会窃取或修改这些缺乏安全保护措施的数据[9]。例如攻击者可以获取用户在传输、存储过程中的身份数据、财务明细等信息,进一步实现信用卡欺诈、身份盗用等手段。

④ 恶意XML外部实体(XXE)。对用区块链Web应用中许多旧的或配置不佳的XML处理器评估XML文档中的外部实体引用。外部实体可用于使用文件URI处理程序、内部文件共享、内部端口扫描、远程代码执行和拒绝服务攻击来公开内部文件[10]。

⑤ 跨站脚本(XSS)。通过应用程序在未经适当验证或转义的情况下,更新用户提供数据的现有网页等方式,在受害者的浏览器中执行脚本,从而劫持用户会话,破坏网站或将用户重定向到恶意网站[11]。

⑥ 安全配置错误。操作系统、框架、库和应用程序通常出现不安全的默认配置、不完整或特殊配置、开放的云存储、错误配置的HTTP标头以及包含敏感信息的详细错误消息的结果,这些配置非常容易被黑客利用[12]。

⑦ 不安全的反序列化。反序列化是从磁盘文件或数据库读取对象。不安全的反序列化通常导致远程代码执行、重播攻击,注入攻击和特权升级攻击[13]。区块链应用由Java语言开发的占比不低,Java反序列化漏洞在应用和智能合约的开发中危害较重。

⑧ 组件(如库、框架和其他软件模块)以与区块链应用程序相同的权限运行。如果一个易受攻击的组件被利用,这种攻击可能会导致严重的数据丢失或服务器接管[11]。

⑨ 不安全的加密存储。由于加密算法的强度太弱或者没有对密码等需要保护的字段进行加密,导致存储数据很容易被破解。

⑩ 记录和监视不足,再加上事件响应缺失或无效集成,攻击者可以进一步攻击系统,维持持久性,转向更多的系统并篡改、提取或销毁数据[10]。

2.2 智能合约风险分析

针对智能合约攻击是区块链中常见的问题,相关研究较为成熟。对合约本身风险主要来源以下几种情况:代码重入、DoS攻击、庞氏攻击、权限控制问题、整数溢出、操作数异常处理问题、伪随机问题、delegatecall 委托调用、操纵区块时间戳进行时间戳依赖攻击以及竞争条件/非法预先交易。针对合约环境,存在逃逸漏洞、堆栈溢出、资源滥用及逻辑漏洞等问题,这也会导致智能合约产生风险。

2.3 共识算法风险分析

共识算法的风险主要来自以下几方面:

① 安全性假设不可靠,存在优势节点、DoS攻击和“51%”攻击。以“51%”攻击为例,如果攻击者掌握很强算力,共识算法中缺乏对算力的约束,某一个节点控制了 51% 及以上算力,就有构造累计工作量超过当前主链的能力,引起篡改账本等风险。

② 一致性不稳定,如针对POW、POS算法进行双花攻击,结合MPC会导致POS节点离线问题的出现。同时区块链的POS也常常受到长程攻击,区块链本身会被攻击者利用可信硬件进行后门攻击。

③ 扩展性差,针对区块链共识层拓展性差的问题可以实现粉尘攻击、空块攻击等。

④ 初始化困难,存在中心化、优势节点等问题。以中心化问题为例,较为典型的攻击方式是币龄累计攻击,因为挖矿难度受到当前节点账户中的余额、每个节点持币时间两点因素的影响。因此攻击者持有的节点在等待足够长时间后,可以通过 Age 的增加来进一步攻击整个P2P网络。

⑤ 还有多种针对共识层的攻击方式,如预计算攻击。当POS 中攻击者的节点占有了一定数量的算力,攻击者就可以在当前算力范围中通过控制 Hprev 计算Hnext,产生安全问题。此外短距离攻击也较为常见,例如“贿赂攻击”,这种攻击主要影响POS共识机制。只要贿赂攻击的成本小于货物或者服务费用,此次攻击就是成功的,但这种攻击成本较高,对于共识算法风险影响较小。

2.4 网络层风险分析

区块链网络层遭受的风险与传统安全中网络层遭受风险极其相近,传统安全中大部分针对网络层的攻击也可在区块链网络层实现。其原理都是从网络通信层面对网络进行破坏,进而引起一系列的安全问题,常见的有针对路由表的日食攻击、针对P2P网络的DDoS攻击。在数据进行跨域传输时,代理节点不安全也会为网络带来风险。此外对于区块链中个别节点进行入侵,会导致失去节点掌控权或引发节点身份问题,从而方便黑客实现女巫攻击等一系列攻击方式,在此不多赘述。

2.5 数据安全风险分析

数据安全风险常常来自以下几方面:

① 离链存储的策略风险。这种策略使敏感的用户数据远离区块链,允许连续的区块链记录和数据删除功能。但外部链接系统通过传统方法存储数据,在很大程度上破坏了区块链的目的,这意味着数据更容易受到黑客攻击、编辑和其他欺骗。

② 删除加密密钥的策略风险。GDPR明确要求删除数据,但删除加密密钥实质上是通过使数据不可访问而删除数据,从技术上讲并不能清除数据。因此仍然易受攻击。

③ 匿名化的风险。链上指针将主链信息连接到敏感的离链信息[14]。一旦脱链数据被破坏,链路就会中断,链上的信息将是匿名的。但这种方法仍然会在主链上留下数据,虽然很困难,但仍然可以从区块链中获得识别信息。

④ 集中式后端系统。创建集中式的后端系统,使数据可以匿名,不中断任何链,让GDPR、区块链和平共存,但破坏了区块链的基础。集中式管理的后端将数据控制反馈给企业,增加了数据安全风险。

3 区块链安全测评模型

按照《区块链与分布式记账信息系统评估规范》中要求的保密性、完整性、抗抵赖性、真实性以及可追溯性等质量特性,结合区块链安全风险分析,针对区块链技术标准及安全防护体系,构建了一套区块链安全测评模型架构/关键指标分析模型,如图3所示。

图3 区块链安全测评模型Fig.3 Blockchain security evaluation model

3.1 数据层安全测评指标

数据层针对数据存储方式、密钥管理体系、密码算法标准、信道安全、硬件安全以及区块安全的详细测评项进行了划分。

① 数据存储方式:检测区块链是否使用了离线存储。

② 密钥管理体系:针对密钥的生命周期,从创建、使用到结束进行分析,同时检测密钥使用范围是否合规,避免出现因密钥管理体系导致的安全问题。

③ 密码算法标准:部分区块链底层密码参考标准较低,因此评估时应结合国家最新出台的通用密码标准进行检测,确保待评估区块链底层密码算法符合最新国密标准。

④ 信道安全:结合针对信道的攻击检测手段,对待检测区块链进行分析,防止区块链硬件存在风险。

⑤ 硬件安全:测评区块链中硬件是否存在后门植入等问题,避免从底层引入安全隐患。

⑥ 区块安全:针对底层区块生成时间、区块间关系进行测评,确保底层区块安全性。

3.2 网络层安全测评指标

测评模型网络层主要针对节点安全、文件配置、P2P网络和通信过程进行测评。

① 节点安全:检测入网验证时节点是否安全、节点入网流程是否安全、入网过程中耗时是否可接受。对比网络中可接受的节点损毁数量,分析节点损毁时对于网络安全和性能带来的问题。当节点出现叛变时,评估叛变节点数量是否在网络可接受的欺骗范围内。分析区块链对节点行为的审计流程、审计结果,从而确保节点为区块链带来的风险可被管控。

② 文件配置:针对文件配置合规性进行分析,判断文件配置是否会为当前区块链带来风险。

③ P2P网络:参考较为安全的网络,对于带测评区块链网络时延平均值进行测试。分析待测评区块链网络环境复杂度、抗DDoS程度,针对路由算法的安全性进行等级划分。在传输环境保障方面,首先检测区块链是否构建了可信环境;之后分析网络中数据是否使用同态加密确保数据安全;最后针对网络中边界网关进行安全性检验。

④ 通信过程:检测区块链节点通信时是否使用了双向认证方式。针对联盟链和私有链,判定是否对节点数据传输进行了限制,例如数据能否被未授权的节点读取或修改。

3.3 共识层安全测评指标

共识层测评主要从共识算法、账本安全和分叉管理三方面进行划分。

① 共识算法:通过统计学方式,检测区块链中节点共识程度,保证全网各节点共识一致。当节点共识不一致时,对当前共识算法的容错性进行测评。针对优势节点、后门问题进行检测,确保共识过程中全网每个节点权利尽可能一致。

② 账本安全:检测全局账本在各个节点的同步情况。针对全局账本查询的准确程度进行分析,评估出错次数是否为可忽略值。分析账本同步到节点的策略、局部账本和全局账本冲突的处理机制。对账本备份恢复机制、可用情况和同步情况进行评估。

③ 分叉管理:针对当前区块链对软分叉或硬分叉的管理策略进行横向对比评估。

3.4 合约层安全测评指标

合约层针对智能合约和合约环境两方面进行评估。

① 智能合约:判断智能合约是否图灵完备。对部署前注册审批、发布时后台审计进行评估。对生产、使用、销毁分别测试,记录合约生命周期中相关操作,如设置合约的过期时间、销毁所需条件等。在不同账户部署不同数量的合约,查询某一账户下的所有智能合约、某一合约对应的部署账户地址[15]。测试合约的可用性。

② 合约环境:评估监视策略(详细约束和规则),检查区块链是否对操作码结构进行维护。从而避免整数溢出及其他问题无法被发现,确保合约虚拟机安全。

3.5 应用层安全测评指标

应用层针对账户体系、插件安全和区块链应急响应进行评估。

① 账户体系:分析待测评区块链是否严格实行分级策略,各级间访问控制机制是否可以确保不出现越权等问题。

② 集成插件安全:分析插件本身是否具有漏洞。对于接口进行分析,检测接口是否存在越权等问题。评估引入插件后,是否会对区块链点对点传输等应用特点产生影响。

③ 区块链应急响应:评估待测评区块链是否使用风险感知平台进行风险管控,区块链预警平台遭受攻击时报警时延。

4 结束语

本文主要针对区块链安全风险进行分析,面向区块链提出了一套较为完整的安全测评模型。基于当前人们对区块链各层架构的共识,从系统组成结构的角度对每层易受到的安全风险进行分析,指出当前各层可能存在的风险隐患,并对于一些攻击产生的效果和攻击实现的难易程度进行说明。结合国家发布的相关白皮书等技术指导,对于指标进行划分,对指标中的关键点进行阐述,形成一套评估模型,便于后续的科研人员在此基础上面向区块链进行进一步的安全测评。

猜你喜欢

合约共识加密
一种新型离散忆阻混沌系统及其图像加密应用
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
商量出共识
一种基于熵的混沌加密小波变换水印算法
加密与解密
认证加密的研究进展
“慢养孩子”应成社会普遍共识
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望