朱 岩,张 艺,王 迪,秦博涵,郭 倩,冯荣权,赵章界
1) 北京科技大学计算机与通信工程学院,北京 100083 2) 中国科学院软件研究所,北京 100190 3) 北京大学数学科学学院,北京 100871 4) 北京信息安全测评中心,北京 100101
区块链是一种密码学化的分布式数据库和网络交易记账系统,可不依赖于可信第三方提供安全的电子交易服务[1]. 在当前科技重大变革的时代,区块链技术凭借其密码化结构、P2P网络、共识机制、智能合约等机制,具有去中心化、防篡改、可追溯等特性,成为当前信息化发展的热点.区块链的应用已延伸到医疗[2]、版权[3]、法律[4]、媒体、资产管理[5]等多个领域.
当前,与互联网相连的计算机系统都有可能遭受来自世界范围的攻击,这不仅会影响系统的正常使用,甚至会影响信息化社会的稳定与国家安全. 我国信息安全等级保护[6](简称等保)制度的实施,不仅能引导各行业按照等保标准进行安全管理,还可以使监管、测评机构有法可依、有章可循,对网络安全具有重要意义. 随着等级保护2.0时代[7]的到来,信息安全等级保护制度也正式更名网络安全等级保护制度[8]. 《中华人民共和国网络安全法》[9]第二十一条、第三十一条规定我国实行网络安全等级保护制度,国家对关键信息基础设施在网络安全等级保护的基础上实行重点保护.
区块链技术起源于国外,在我国正处于发展阶段,其测试评价工作也正在同步推进. 按照等级保护修订思路和方法,除了具有普适性的通用要求外,还应针对特定技术及领域(如云计算、移动互联、物联网、工业控制、大数据等)制定测评规范. 鉴于区块链技术的特殊性,我国已经启动了区块链测评规范的制定工作,例如,中国区块链测评联盟出台了“区块链与分布式记账信息系统评估规范”. 然而,上述工作并没有将等级保护标准应用于区块链测评规范制定中.
针对目前仍然鲜有参照等保2.0标准开展区块链测评研究的现状,而国家关键信息基础设施的安全保护等级至少为第三级,因此本文将以“等保三级”的应用和数据安全要求为依托,以区块链功能组成为单元提出安全评估要求,并结合具体区块链进行分析. 上述工作通过对区块链进行系统化的测评,将有利于推动区块链技术在我国的持续健康发展.
等级保护是我国关于信息安全的基本政策.基本思想是对不同的保护对象分等级,以便按照标准进行管理和监督. 等级保护工作在国外早已纷纷开展:美国国防部20世纪80年代成立国家计算机安全中心,90年代公布的橘皮书带动了国际的安全评估工作;随后,欧洲借鉴橘皮书的经验,公布了欧洲白皮书,并首次提出信息安全的保密性、完整性、可用性,国际的信息安全研究再上新台阶;1996年,美国政府同加拿大及欧共体吸收了包括欧洲白皮书、加拿大的CTCPEC以及国际标准化组织ISO:SC27WG3的安全评估标准在内的各国先进经验,制定了通用安全评估准则(CC).
我国在充分借鉴他国前提下,从信息系统建设、管理和使用等方面入手,建立计算机信息系统安全等级保护制度[10],并制定安全评估标准. 国家标准《GB/T 22239—2019 信息安全技术 网络安全等级保护基本要求》在开展信息安全等级保护工作的过程中起到了非常重要的作用[11]. 为了进一步完善等级保护的适用性、时效性、可操作性,近年来出现的网络新技术,包括移动互联网、云计算[12]、大数据[13]、物联网[14]和工业控制五个领域,分别依据GB/T 22239—2019修订的思路和方法进行面向领域的等级保护标准制定.
安全等级的划分是根据等保对象在国家安全、经济建设、社会生活中的重要程度,遭到破坏后对国家安全、社会秩序、公共利益及公民、法人和其他组织的合法权益的危害程度等因素确定. 表1给出了定级要素与安全等级之间的对应关系,其中,从第一级到第五级等级保护对象遭到破坏后所产生的损失依次增加.
表1 定级要素与安全等级的关系Table 1 Relation between grading elements and safety level
等级保护2.0的标准是在等级保护1.0的基础上重新确立并发展的. 在应用层面上,如表2所示,等级保护三级2.0通用标准将原有1.0标准中的应用安全、数据安全及备份恢复两个层面合并为应用和数据安全;将通信完整性、通信保密性纳入网络和通信安全层;此外,在1.0基础上增加了剩余信息保护和个人信息保护两个控制点.
目前,主流的区块链系统包括比特币[1]、以太坊[15]和超级账本[16],并各具特点. 简单地讲,比特币是最早真正意义的去中心化区块链系统,共识采用工作量证明获得记账权. 它只能处理简单的脚本,并不具备图灵完备的智能合约执行能力. 以太坊是一个允许用户按照自己的意愿创建复杂操作并具备图灵完备的智能合约功能的可编程区块链,它的出现将区块链带入了智能合约[17]时代;IBM的超级账本系统是一种可插拔、可扩展的模块化区块链平台,它的中心化程度较高,支持通用编程语言而不是特定领域语言(DSL)编写智能合约.
上述区块链系统的不同特征无疑增大了区块链测评的难度,然而,无论何种区块链,按照其系统框架均可以划分为网络层、共识层、交易层、合约层,如图1所示. 区块链系统的核心部分包括:分布式对等网络(网络层)、共识机制(共识层)、分布式账本(交易层)、智能合约(合约层)等. 有鉴于此,本文将分别针对区块链系统上述各个部分进行测评.
分布式对等网络是仅包含具有等效控制和操作能力节点的计算机网络. 区块链信息系统底层拓扑结构是分布式对等网络,各个节点通过对等网络进行数据通信以支撑上层功能. 网络的五层模型可以分为物理层、数据链路层、网络层、传输层、应用层. 区块链系统小世界模型[18]的P2P网络是以IP协议、TCP协议为基础存在于应用层面上的逻辑覆盖网络,特点主要有非中心化、扩展性强及负载均衡[19],这些特点为区块链系统高效稳定运行提供了强有力的保证.
区块链系统维护一个在启动时可以连接的对等节点列表[20],在系统新节点接入已有网络时,首先节点会通过“种子”得到对等节点IP列表. 节点间通常采用TCP协议与相邻节点建立连接,建立连接时也会有认证“握手”的通信过程用来确定P2P协议版本、软件版本、节点IP、区块高度等.为了能够被更多节点发现,新节点会将带有自身IP地址的信息发送给相邻节点,并要求其返回其已知的对等节点的IP地址列表.
表 2 等级保护1.0与2.0三级应用层控制点对比Table 2 Comparison of application layer control points in classified protection 1.0 and 2.0 at level 3
图1 区块链框架Fig.1 Blockchain framework
表3列举了针对区块链中分布式对等网络的测评标准,并对身份鉴别、软件容错、资源控制、数据完整性、审计等五个类别逐项对区块链P2P网络[21-22]进行了分析. 测评项包括:①节点接入控制,② 自我保护与自适应,③并发连接限制,④连接超时限制,⑤单播通讯防篡改,⑥广播通信防篡改,⑦转发通信防篡改,⑧网络状态获取更新和⑨网络节点动态监测.
值得说明的是,已建立连接的节点会定期发送信息维持连接,如果某个节点长达90 min没有通信,则结束会话. P2P网络节点连接不超过117个输入连接,向其他节点发起8个输出连接,超过数量的IP地址会被忽略.
比特币采用P2P网络,每个节点邻接边数为8,如图2(a)所示我们测量了近3个月时间内比特币网络规模的变化情况,可以看出,目前该网络规模可达60万个节点,大约需要7~10次转发可实现交易的全网广播,由图2(b)可知,2009年之后网络规模呈增长趋势,因此对P2P网络的要求日益严格.
区块链网络测评需要对网络规模、节点地理分布、节点中断可用性方面的网络稳定性以及有关传输信息、传播时间等数据进行收集与分析,并总结区块链对等网络的实际使用情况,完成测评工作. 表3中提供了针对每个测评项的实施方法及预期效果,同时,给出了区块链系统的测评结果,可以看出,除第②、③、④、⑧测评项通过外,其他5项均未达到等保三级要求.
共识机制[23-24]是区块链系统成员节点在对区块链的操作(如建块、交易验证等)上达成一致确认的方式. 由于区块链是去中心化分布式系统,没有中心化记账节点确保每笔交易在所有节点上的记录一致,因此共识机制的作用就是实现区块链各节点之间的数据一致性和操作同步性,它是区块链系统的关键技术之一.
现有的主流共识技术[25]主要有工作量证明(PoW)[26-27]、拜占庭容错共识(PBFT)[28-29]、权益证明(PoS)[30]和授权权益证明(DPoS)[31]等. 采用了PoW协议的区块链,它适用于较大规模网络,也是至今为止最成熟的共识协议. 与之相比,PBFT则更适用于小型的全连通网络. 区块链可根据需求并结合实际情况(如节点数量、容错性、性能效率等指标)选择适合的共识算法. 本节将对PoW协议予以测评.
共识机制的测评以共识算法的资源耗费和共识所达到的效果两方面为核心,测评项主要包括共识资源控制、备份与恢复、共识效果三方面,具体包括:①共识资源控制,②实时备份,③系统热冗余,④共识容错性,⑤共识有效性和⑥共识结果一致性.
PoW的共识过程如图3所示,其目标是所有节点共同建立包含最近交易的新区块,共识主要分为交易收集、候选区块创建、工作量证明(挖矿[32])、广播区块、区块组装到链和交易回收几个阶段,并由通常的区块链节点(交易节点)与矿工节点共同实现,下述评测内容在此共识过程基础上进行评测.
表 3 分布式对等网络测评Table 3 Distributed peer-to-peer network assessment
图2 比特币P2P网络规模变化图. (a)近3个月比特币网络规模变化图;(b) 2009年之后比特币网络规模变化图Fig.2 Scale change of Bitcoin P2P network: (a) scale change of Bitcoin P2P network in last three months; (b) scale change of Bitcoin P2P network since 2009
图3 共识过程时序关系图Fig.3 Consensus timing diagram
区块链共识机制中矿工不断修改区块头BlockHeadern的随机数,并计算区块头的SHA 2562哈希值,直到区块头哈希值小于难度值.上述关系可由下式表示:SHA 2562(BlockHeadern)<Tn.矿工在短时间内消耗大量的计算资源以求得满足要求的随机数,进而争夺记账权. 若挖矿成功,则作为该矿工的工作量证明. 该证明生成困难(生日攻击下的平均挖矿计算复杂性为,任何节点可通过上面的公式轻易验证该矿工为成功者. 系统经过十余年的运行,挖矿难度越来越大,带来了大量(电力)资源消耗,这意味着系统运行成本的增加,共识周期的延长,严重影响系统稳定性,因此应将全网平均算力和区块生成时间分布等作为资源控制(测评项①)的测评指标,下述以比特币为例进行评测分析.
(1)全网平均算力.
算力是衡量在一定的网络消耗下生成新块的单位总计算能力;全网算力,即网络中所有参与挖矿的矿机算力综合,比特币的全网算力是所有参与挖矿的比特币矿机算力的总和. 如图4所示我们收集了2009年1月至2020年5月的全网平均算力,并画出了分布趋势图. 可以看出,随着比特币在线活跃地址数的增加和计算能力的迅捷发展,比特币全网算力也有了较大的提升.
(2)区块生成时间分布.
图4 比特币全网算力图Fig.4 Bitcoin hashrate historical chart
假设区块链中一个节点的地址为A,且其余额为bal(A),在挖矿过程中,该节点不断修改随机数的值(通常是逐渐加一),从而使计算结果小于目标阈值才能建造有效区块. 我们将建造一个新的区块时的目标值记作,挖矿难度为D,则区块链协议中所有有效区块都需要满足一个条件U≤θ≤1,式中U~[0,1]是对区块头数据进行哈希并对得到的值进行归一化后生成的均匀分布的随机变量.由于哈希函数的特性,很多共识技术都是该式的特殊情况,例如:
①在PoW情况下,θ=1/D;
②在PoS情况下,θ=bal(A)/D;
为了生成一个块,用户需要找到令U满足U≤θ≤1的数据,即不断更改随机数,并计算包含其的区块头哈希结果U,使其满足U≤θ≤1,设N为用户在找到一个有效块之前需要计算的数据组合数. 由于工作量证明PoW间隔很大,所以用户每秒只能迭代r个组合,其中r由用户的挖掘设备确定. 在权益证明PoS情况下,搜索空间较小,因此可假设r=1. 用户找到一个有效块所需的时间T与N有关:T=N/r,考虑累积概率分布:
因此,用户找到一个有效块所需的时间T以速率呈指数分布. 在PoW的情况下,这个速率等于r/D. 在PoS的情况下,r=1,速率等于bal(A)/D,生成有效区块的概率等于用户资金余额与流通货币总量的比率,若将整个网络中的所有用户的资金总额视为,则整个网络的块生成时间以速率呈指数分布. 如图5所示我们收集了近些年比特币区块的难度值,并绘制了难度变化曲线图,是一个较为明显的指数分布曲线,拟合方程为y=-1.44623×109×(1-e-0.00228x).
图5 共识机制难度变化趋势图(比特币)Fig.5 Consensus difficulty change trend diagram(Bitcoin)
针对PoW的攻击是敌手[33]以较大优势成为挖矿的获胜者,从而使用记账权改变或伪造交易.为取得挖矿成功,当前敌手采取的主要攻击包括:
(a)共识过程攻击包括51%算力攻击[34]、暴力破解[35]、私自挖矿[36]等. 以51%算力攻击为例,它并不是指拥有全网51%以上的算力才能成功攻击,而是算力超出51%这个门限,敌手计算出正确哈希值的速度就会比全网其他矿工更快,攻击成功率会大大增加.
(b)区块广播过程可受到日食攻击[37]、女巫攻击[38]等因素影响. 其中,日食攻击是敌手通过阻止正常节点通讯的方式影响共识;女巫攻击中敌手会伪装成不同角色的区块链节点监视和干扰正常网络.
资源控制(测评项①)的测评中考虑上述攻击对系统带来的影响,可通过提高资源控制难度保障系统安全. 就区块链系统而言,随着系统节点不断加入,全网总算力剧增,系统网络也愈加庞大,敌手占据全网大部分算力的可能性极小,操控网络难度巨大,因此可保证系统资源可控. 但对于小型区块链系统而言,全网算力较低,敌手可通过资源控制的方式成功攻击系统.
交易的收集阶段过程为:(1)新交易产生后将实时地被该节点通过区块链网络广播至全网;(2)矿工节点收集交易并验证交易的规范性(包括是否前一笔交易属于未花费交易等[39]);(3)如果交易内容的正确性和逻辑性符合要求,则矿工会把交易存入内存的“未确认交易池”. 因此,交易形成后,创建节点会通过P2P分布式对等网络实时广播至全网,并由矿工节点收集验证其规范性,进而放至“未确认交易池”,实现本地和异地节点的数据备份.
区块组装到链工作的具体过程为:(1)验证挖矿的正确性;(2)验证失败则丢弃区块,否则将区块附加在已有区块链之后. 节点寻找新区块的父区块,并链接到父区块完成区块的组装. 每个节点不断地将共识区块写入自己的账本中,从而达到全网节点具有相同数据副本的实时备份效果[40].
综上,区块链在交易、区块产生及共识的过程中都达到了全网节点数据备份效果,测评项②得到保证.
区块链系统节点是去中心化并包含少数恶意节点的,达到100%的共识显然很难实现,因此系统测评应充分采纳统计学中的小概率事件思想:只要共识度超过95%即代表完全共识. 由于目前区块链系统在2 h内能以99.9999%的概率确认单笔交易,因此可认为共识容错性(测评项④)达到标准. 依据上述标准,区块链系统节点是互为冗余的,少数节点的故障并不影响系统稳定性和可用性,因此系统热冗余(测评项③)达到要求.
在交易收集阶段,矿工节点通过规范性验证检查交易中签名正确性、货币是否存在、货币是否二次使用等交易数据内容,以此保证了被共识交易的有效性(测评项⑤),然而,上述验证过程并不能完全保证交易的绝对有效性,如“门头沟(Mt.Gox)事件”中交易所受到的延展性攻击[41],因此测评工作应根据最新的CVE(Common Vulnerabilities & Exposures)漏洞加以展开.
候选区块创建阶段由矿工完成,具体为:(1)新建候选区块以及Coinbase交易(创币交易,即含挖矿奖励的新交易);(2)从“未确认交易池”中按优先级提取交易并写入前述区块中;(3)计算区块头部信息并将其填充到新创建的候选区块中. 在第一步前矿工可计算本次挖矿可得奖励,奖励由当前区块奖励与将要打包进区块的交易费用总和两部分组成,因此,验证Coinbase交易中奖励的真实性和有效性可保证矿工工作的正确性(测评项⑤).
PoW共识算法根据整个网络的哈希速率动态调整难度值,当前调整周期为2周,调整值将会写入区块头部并参与下一阶段的工作量证明计算,从而建立起难度值的延续影响,保障共识数据区块顺序不变.
当主链高度超过其他分支六块(可实现在1 h内能以99.9%的概率确认[42]单笔交易)以上,分支的区块交易将会被进一步解析,未处理的交易会被重新放入“未确认交易池”. 分支的交易回收过程能够避免交易丢失进而保证了一定程度上共识的有效性.
综上,共识机制在不同阶段皆采用了一定的机制验证交易数据的正确性和逻辑性,保证了共识有效性(测评项⑤)的达标.
由PoW交易收集、候选区块创建、工作量证明(挖矿)、广播区块、区块组装到链和交易回收几个处理过程可得,区块链系统的安全性主要受挖矿节点的影响,已有挖矿算力对系统安全分析的结果表明当严格遵循共识规则的挖矿节点算力超过(微弱)多数时,可保证系统内所有节点得到相同共识,共识结果具有一致性(测评项⑥).
如表4所示,文献[43]展示了不同的区块链参数选择(区块间隔、公共节点、挖矿池、陈腐块率和区块大小)对区块链网络传输的影响. 通过以上测评,表5总结了PoW共识区块链系统在每个测评项的达标情况:从备份与恢复及共识效果来看,PoW共识区块链系统均可满足测评项①②③④⑤⑥要求.
表 4 不同区块链参数选择对网络传输影响[43]Table 4 Impact of parameter selection on network transmission in different blockchains[43]
分布式账本[44]是在各个成员之间同步共享、序列化、防篡改的分布式数据存储结构,并可为区块链系统提供运行过程中产生的各种类型数据的写入与查询服务. 针对数字货币交易,区块链系统中的分布式账本被设计用来存储当前时间段内发生的交易信息,并通过密码学哈希(hash)函数来维护交易信息的完整性和抗抵赖性等功能.
表 5 共识机制测评Table 5 Consensus mechanism assessment
分布式账本的测评是针对区块链中所存储信息的结构、功能及安全机制展开的. 在表6中,我们将测评项划分为软件容错、访问控制、数据完整性、数据保密性和账本功能等5个基本方面,同时,还把分布式账本特有的抵赖性、同步性、幂等性三个功能点作为账本功能予以重点列出. 据此,分布式账本的测评项包括:①账本格式规范性,②账本访问控制,③存储完整性,④存储保密性,⑤数据抗抵赖,⑥账本数据同步和⑦账本数据幂等.
区块链具有严格的结构定义,每个块[45]由区块头和区块体构成,如表7所示,并且数据长度有明确的数据格式规范. 区块头包含区块版本V、难度D、前区块哈希PreH、默克尔树根M、随机数N和时间戳T等信息,第个 区块头可表示为BlockHeadern:=(Vn||Dn||Mn||Tn||PreHn||Nn).
区块体存储了块中的交易数量和交易列表.图6表示了区块链系统的交易结构,且结构中信息大多有标准长度限制. 交易由交易版本和若干个输入段(Vin)与输出段(Vout)构成,每个输入段与特定的一个“未花费过的”交易输出通过哈希函数(SHA256)和签名脚本相衔接,这种结构也被称为UTXO(未花费的交易输出).
表 6 分布式账本测评Table 6 Distributed ledger assessment
根据以上分析,区块链中交易、区块等结构皆有严格的数据项要求和数据项长度规定,能够保证账本格式规范性和全局一致性,测评项①达标.
区块链平台的开放性使得所有用户均可访问账本数据,不存在具有监管功能的节点,因而测评项②未能达到标准.
区块链中引入了完整的密码学数据认证机制和严格且规范化的数据结构来保证交易、区块数据的不可篡改性,列举如下:
表 7 区块链头信息及长度限制Table 7 Information and length limit of Blockchain Header
图6 区块链交易结构Fig.6 Structure of blockchain transaction
(1)密码学hash函数的使用:利用hash算法逆向求解困难、输入的雪崩效应、抗碰撞等特性,保证区块数据永久存储且不可篡改.
(2)链式哈希结构[46]:区块头之间通过密码学哈希函数(嵌套SHA256)进行衔接,保证了区块间数据在时间轴上不可修改、插入、删除等攻击.
(3)树状哈希结构:采用默克尔树结构[47-48]对大量的交易进行封装,并在区块头中放置默克尔树根[49],保证此区块中交易内容、顺序均不可更改.
综上,区块链中利用大量密码学机制和数据结构对数据进行存储保护,可保证数据区块存储过程的完整性,测评项③达标.
区块链账本采用16进制编码(未加密)方式存储数据以方便用户对数据进行查询验证和追溯,受限于目前公钥加密技术在大规模动态群组下密钥协商、构造、分发、更新、撤销等技术上的不成熟,因此在存储保密性(测评项④)上未能达到等级保护三级要求.
在图3所示交易结构中,交易结构Vin所含“交易输出索引”字段是指前一交易中所使用输出段Vout的序号(即索引号),“脚本签名”[50]是解锁脚本的不定长数据,只有解锁脚本正确,才能对输出进行消费,“锁定脚本”定义了支付输出所需的条件(如认证货币所有者身份的公钥信息),在交易信息中,为验证货币的所属关系,前一交易的“锁定脚本”和当前交易的“脚本签名”可分别存储货币所有者的“公钥”与“签名”信息,并可通过前者对后者签名的有效性予以验证,使交易满足测评项⑤中的数据抗抵赖.
在分布式账本管理方面,区块链系统依赖“完全节点”存储账本所有数据,新加入节点可通过对完全节点克隆得到区块链数据的完整备份,保证了账本数据同步(测评项⑥). 此外,区块链系统能对同步过程中发现的数据错误予以检测及确认,并标注为确认交易和未确认交易两种,图7(a)给出了近3个月时间内比特币和以太坊确认交易数量的变化情况,图7(b)给出了比特币近三月的未确认交易增长变化情况,可知,有大量的未确认交易存在(约占20%),这表明区块链能够很好地检测并区分恶意或无效的交易.
针对账本数据的查询请求,账本中数据完整性可经过密码学哈希函数验证,hash函数冲突避免的函数特性,保障了查询结果在所有节点中的一致性,使检索幂等性(测评项⑦)得以实现.
综上,在分布式账本方面进行评测,得到最终结果如表6所示,账本访问控制(测评项②)和存储保密性(测评项④)未能达到等级保护三级要求,其它评测项皆符合等保三级标准.
智能合约是运行在区块链上的程序或脚本,区块链作为数据的载体存储着事件的关键信息,而智能合约就是在区块链中操作这些数据的规则. 例如,比特币交易使用比特币脚本及签名技术限定未花费交易的所有者;以太坊等区块链平台以计算机程序的方式代替比特币脚本,使得用户可以更加灵活地制定规则.
智能合约被称为运行在区块链上,是因为它不止被一台计算机运行,而且要被参与验证的节点执行并验证. 智能合约运行流程为:(1)执行者发起运行请求,在本地运行并检验可行性;(2)将运行状态广播到区块链网络中,挖矿节点执行智能合约并验证通过后打包到区块中;(3)区块广播到所有节点,参与验证的节点通过执行区块中交易所含有的合约来完成验证.
表8列举了针对区块链中智能合约层的测评标准,并对身份鉴别、安全审计、恶意代码防范、数据完整性、数据保密性5个类别逐项对智能合约层进行了分析. 测评项包括:①执行身份验证,②行为事件审计,③审计记录,④免受恶意代码攻击,⑤传输完整性和⑥传输保密性.
身份验证是智能合约最基础的功能. 为实现身份验证,比特币脚本被分为锁定脚本和解锁脚本,通过密码学数字签名技术,解锁“锁定脚本”的用户就是符合规定可以使用这笔交易的用户. 最常用的脚本如图8所示.
图8中,解锁脚本以签名和公钥作为输入,通过锁定脚本里设定的操作码以及存储的公钥哈希验证了签名的正确性,从而鉴别了用户身份,测评项①达标.
图7 区块链系统中已确认和未确认交易数量对比(近3个月). (a)比特币与以太坊确认交易量图;(b)比特币中未确认交易增长变化图Fig.7 Comparison between confirmed and unconfirmed transactions in the blockchain systems: (a) diagram of confirmed transactions for Bitcoin and Ethereum; (b) growth chart of unconfirmed transactions for Bitcoin
表 8 区块链合约计算层测评Table 8 Blockchain contract computing layer evaluation
图8 常用脚本机制Fig.8 Common scripting mechanism
表 9 区块链系统error审计分类Table 9 Blockchain error audit classification
审计[51]是指按照某种规范忠实地记录下系统所发生的所有行为,方便管理员对系统安全进行实时监控,及时发现异常违规行为并取证[52]. 通过对某区块链系统开源代码分析,表9列举了其初始化、交易、区块、共识、网络和远程过程调用6个功能模块输出的错误和涉及该错误的接口函数,可见系统关于审计信息的记录是较为详尽的.智能合约的每一次执行都会被其他节点所验证,合约中的行为或事件都会被审核,因此行为事件审计(测评项②)达标.
图9为系统日志生成流程,具体为:(1)给生成的日志信息添加规定格式的时间戳;(2)查看参数中是否要求输出信息中附加IP地址;(3)将处理好的日志输出到默认的debug.log中,用户也可自定义将日志信息打印到控制台. 日志文件debug.log容量最大值被系统设定,超出部分将会被丢弃,debug.log只存最新的审计信息,由此可知日志信息并不是永久保存、不可更改的.
系统的日志分为Debug、Warning、Error三个级别,目前没有Fatal致命错误,其中Debug级日志记录了系统在开发调试和运行时的状态信息;Warning记录了可能导致错误的告警信息;Error记录了系统运行过程中的异常错误.
图9 区块链日志生成流程图Fig.9 Blockchain log workflow chart
区块链系统中的审计记录在审计格式上不符合等保要求,记录的事件不够具体. 其日志可以输出也可以不输出,输出的文件内容可以被篡改甚至清除,因此审计记录(测评项③)未达到等保三级的要求. 针对系统审计情况,提出的改进措施如下:
(1)建立分布式区块链系统日志网络,日志作为交易上传到区块链上[53].
(2)细化日志记录项,审计内容至少包含事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息.
(1)单节点函数调用及状态日志应以受保护的形式存于本机,避免受到删除、修改或覆盖.
智能合约需要由参与验证的节点执行来保证合约执行结果的正确性,这就需要将不同用户编写的智能合约部署和运行在验证节点上,因此防范恶意代码是非常有必要的.
智能合约的安全问题分为两个方面:(1)智能合约程序本身的安全问题;(2)智能合约程序对执行环境造成的安全问题. 根据等保标准,本文仅讨论第二种安全问题,即恶意智能合约代码对验证节点所在的计算机、区块链程序及其他智能合约造成的安全问题.
比特币的脚本系统采用栈式运行环境,寻址规则为直接寻址,且指令相对简单,没有跳转或循环等指令,因此不会对外部环境产生影响.
以太坊智能合约运行在以太坊虚拟机(EVM)中. EVM是一种沙箱环境,与外界隔离,因此恶意代码不会对外部产生影响. 同时,以太坊设计了gas机制用来防止恶意代码占用过多计算资源与区块链存储资源. 智能合约程序每运行一步会花费一定量的gas,每修改区块链中的数据,也会按照大小花费一定量gas.
通过以上测评,表8总结了智能合约计算层在每个测评项的达标情况:区块链可以满足测评项①②④,测评项③未达标. 由于共识层可以达成共识结果一致性,因此共识层之上的合约层可以验证数据的完整性(测评项⑤达标),但区块链中没有通过密码技术对数据进行加密,因此无法保证数据保密性(测评项⑥未达标).
本文结合网络安全等级保护2.0版本三级通用要求中的应用与数据安全层面控制点,针对区块链在对等网络、分布式账本、共识机制方面提出了评估要求,并结合评估项对三种区块链系统(比特币、以太坊、超级账本)进行了测评,如表10所示. 由综合测评结果可知,比特币和以太坊的测评达标项同为19项,超级账本则为22项;超级账本在节点接入控制、网络节点动态监测、账本访问控制三项测评中更加优秀.
综上所述,区块链系统在等保2.0三级应用与数据层控制点的测评结果总结如下:
(1)达到等级保护三级要求的测评项为:软件容错、备份与恢复、资源控制和恶意代码防范;
(2)未达到等级保护三级要求的测评项有:身份鉴别、访问控制、数据完整性、数据保密性和安全审计.
此外,本文对区块链系统在分布式账本的测评上新增了数据抗抵赖、账本数据同步和账本数据幂三个测评项;在共识机制的测评中提出了共识容错性、共识有效性和共识结果一致性测评要求,区块链系统均能达标. 由此可见,为满足等级保护三级测评标准,区块链技术仍有待提高.
本文依据等保第三级的应用和数据安全要求,给出了区块链系统中对等网络、分布式账本、共识机制和智能合约等核心技术的具体测评要求及实施方案,并对比特币、以太坊、超级账本进行了评估和对比,结果表明区块链系统在软件容错、资源控制和备份与恢复等方面满足等保要求,而在安全审计、身份鉴别、数据完整性等方面则有待进一步改进. 根据《中华人民共和国网络安全法》、《GB/T 22239—2019 信息安全技术 网络安全等级保护基本要求》等的要求,近年来很多关键性计算机技术都已经进行了等级保护测评标准的制定,而区块链等级保护的测评也势在必行,建设满足我国现实需求和中国特色的区块链技术是区块链发展的必然要求,区块链等级保护标准的制定也将为我国信息基础构架和社会信息系统合规管理提供支持.