区块链的安全风险评估方法与流程

文档序号:18835564发布日期:2019-10-09 05:13阅读:894来源:国知局
区块链的安全风险评估方法与流程

本发明涉及金融、财政等应用领域,尤其是涉及区块链技术在金融、财政等领域应用的安全相关问题。



背景技术:

区块链起源于比特币,凭借去信任、防篡改、可追溯等安全优势,成为未来金融、财政等领域的重要应用技术。随着计算机计算能力的大幅提升和隐藏在应用领域背后经济利益的加大,区块链技术的安全问题日趋显著。因此,区块链的安全风险研究正成为国内外的研究热点。

最近几年,多种方法已经被提出用于检测和评估区块链的安全风险。目前,大部分研究使用数学方法分析区块链中每个攻击(比如51%的攻击、日蚀攻击和物理攻击等)的影响力,从而评估区块链的安全性。区块链中的攻击种类和数量繁多,至今还没完全被发现,因此,单独分析每个攻击的作用是不全面的。为了全面地评估区块链的安全性,叶聪聪等人的文献——区块链的安全检测模型提出了一种基于区块链状态的安全评估方法,分析每个状态变成攻击成功状态的概率,从而判断系统安全性。根据文献查阅,现有方法没有从技术体系架构和算力的角度研究区块链的安全风险,而技术组合和算力会对区块链的安全风险产生很大的影响。因此,本文从技术体系架构和算力的角度提出了一种评估区块链安全风险的新方法。

该方法由定量影响因素和定性影响因素共同决定,定量影响因素包括区块链算力、区块链分叉深度等。定性影响因素构成了区块链的安全基础,如基于数字签名的各种加密算法、哈希函数、共识机制、智能合约等。我们首先根据区块链技术体系架构建立区块链可信计算基(btcb),进而提出了一种结合层次分析(ahp)和配对比较两种方法的安全敏感性分析方法,为每个影响区块链安全风险的因素分配安全敏感权重,最后设计了一个区块链的安全风险评估方法。



技术实现要素:

1)区块链可信计算基

我们评估方法的核心是从区块链技术架构的角度充分揭示受评区块链项目的安全风险,为此,需要对影响区块链安全风险的各种技术进行全面分析。基本思路是从安全风险的内涵触发,以技术的安全性为落脚点,充分考虑区块链的数据模型、加密算法、共识机制、网络设计、去中心化程度、激励机制和智能合约等安全影响因素。区块链的发展与演进大致经历了区块链1.0、区块链2.0和区块链3.0三个阶段,尽管在具体实现上有所不同,但整体体系架构存在许多共性。邵奇峰等人的文献——区块链技术:架构及进展认为该体系架构整体上可划分为五个层次:网络层、共识层、数据层、智能合约层和应用层,多种技术一起构成了区块链系统,见图1。

为了给下文区块链安全风险的定性评估提供逻辑严密的分析过程,我们根据区块链的技术架构建立了区块链可信计算基——btcb,如图2所示。btcb包含了影响区块链安全的所有要素,并按功能差异将它们分层分类,以便分析统计区块链的潜在安全风险或安全保护机制。

定义1(区块链可信计算基——btcb)区块链可信计算基表示安全区块链系统的所有安全保护机制的集合,包括数据结构、数据模式、数据存储、加密算法、哈希函数、网络结构、网络协议、共识机制、智能合约等各种区块链安全要素。

与区块链技术架构相比,btcb的内容更广泛,除了技术类的安全要素外,btcb还包含区块链行业环境、发展趋势、政策和监管措施等企业外部安全要素,企业项目、团队组成、技术实力、资本投入和运营维护等企业内部安全要素,及其他特殊安全要素。但本文的重点是从技术架构的角度量化区块链项目的安全风险,因此,我们只讨论btcb的技术类安全要素,并将其作为区块链安全风险评估的内容。

(1)数据层。评估方法对数据层安全风险分析的主要关注点:(a)信息攻击;(b)加密算法攻击。对应的安全保护机制分别是基于merkle树的数据存储[10]和基于数字签名的加密算法。数据存储通过区块方式和链式结构实现,大多以kv数据库的形式实现持久化。基于数字签名的多种密码学算法、哈希函数和非对称加密技术,保证了账户和交易的安全实现。

(2)网络层。评估方法对网络层安全风险分析的主要关注点:(a)p2p网络风险;(b)广播机制风险;(c)验证机制风险。区块链利用p2p网络设置了传播、验证等机制,p2p模式的信息传播,会将包含自身ip地址的信息发送给相邻节点,容易受到日食攻击、窃听攻击、bgp劫持攻击、节点客户端漏洞、拒绝服务(ddos)等攻击。在广播机制中常见的攻击方式有双花攻击及交易延展性攻击。验证机制更新过程易出现验证绕过现象,一旦出现问题将导致数据混乱,而且会涉及到分叉问题。安全保护机制主要包括不断改进的网络协议、安全严谨的网络结构。

(3)共识层。在btcb中,共识层位于网络层之上,由丰富多样的共识机制构成。评估方法对共识层安全风险分析的主要关注点:共识机制的可靠性。共识机制是对一个时间窗口内的事务先后顺序达成共识的算法。区块链可支持不同的共识机制,目前存有的共识机制有pow、pos、dpos、pool验证池机制和pbft等,面临的攻击包括女巫攻击、short-range攻击、long-range攻击、币龄累计公积、预计算攻击等。

(4)激励层。评估方法对激励层安全风险分析的主要关注点:(a)发行机制风险;(b)分配机制风险。目前暂无安全风险事件曝光,但不排除激励层发行机制中存在安全隐患。分配机制将大量小算力节点集中加入矿池,易对去中心化趋势造成威胁。

(5)应用交互层。应用交互层作为区块链技术的一个实际落地场景,是目前所有区块链产业的架构中发生安全性事件最频繁的一个层级。评估方法对应用交互层安全风险分析的主要关注点:(a)应用扩展风险;(b)应用环境风险;(c)市场反馈。应用扩展风险主要指对各类脚本、算法及智能合约的攻击。目前的潜在安全威胁主要包括solidity漏洞、逃逸漏洞、短地址漏洞、堆栈溢出漏洞、可重入性攻击、交易顺序依赖攻击、时间戳依赖攻击、整数溢出攻击等。应用环境风险包括经济形势、货币政策、企业团队背景和资本等带来的安全风险。市场反馈主要集中在与加密资产相关的领域,例如在用户节点、数字资产钱包以及交易平台之中,每一次的安全事件所带来的实际损失可达千万至上亿美元。

2)配对比较

配对比较可以帮助领域专家更好地描述敏感性级别,比较的内容包括敏感属性对和特定属性可能值对,图3是敏感属性和特定属性可能值的配对比较示例。我们选择了层次分析法(ahp),这种方法基于配对比较的集合推断偏好,是一种决策支持工具,在一致率(cr)小于0.1时有效。配对比较方法在同一级别上权衡每个可能值相对于其他可能值的重要性,然后可以通过将树中相同路径上的权重累乘来提取树中路径的重要性。

在我们的例子中,我们将安全敏感性评分函数的设计定义为一个3级ahp问题。见图4,顶层定义了查找给定安全敏感属性可能值权重的问题,该层只有一个选项且权值为1,下一层包括安全敏感属性,ahp树的叶子节点表示安全敏感属性可能值。我们使用配对比较,让专家先比较每个属性对,然后比较同一属性的可能值对,最后每个可能值路径上权值的累乘就是其安全敏感性评分。例如,使用图4中的ahp树,如果想要推断“私有链”的安全风险评分,只需计算:

安全风险评分(私有链)=权重(查找安全敏感属性值的权重)

*权重(网络结构)*权重(私有链)=1*0.4*0.1=0.04

图4中的层次结构有一些有趣的特性。同一层中所有节点的权重之和为1,父节点权重等于子节点的安全敏感性得分之和,层次结构中所有可能值的安全敏感性得分总和为1,即根节点的权重。如果一个敏感性属性有n个不同的可能值,则专家需要比较(n(n-1)/2)次才能获得属性值的权重。btcb具有层次性,并且是多级分层结构,想要依赖btcb全面、合理地评估区块链安全风险,我们需要按照层次逐个分析同子层的所有属性和属性值。本文中针对区块链安全风险相关属性的列举会有所取舍,但不影响推导过程的合理性、方法的可行性和读者的理解。

3)安全风险评分函数的推导

为了测量区块链的安全风险,我们提出了一种新的方法——基于区块链算力和技术体系架构的测量方法,并确定了定量安全风险评分和定性安全风险评分的函数关系,以表明区块链系统潜在的安全风险程度。值得注意的是,安全风险评分函数值越高,区块链的风险程度越低。下面列出了本节涉及的主要符号及其定义。(描述项——符号)

区块链安全风险评分——s

区块链定量安全风险评分——s-quanti

区块链定性安全风险评分——s-quali

3.1正式定义

在本节中,我们将提供本文的正式定义。在不损失通用性的情况下,我们假设只有一个区块链系统存在,该方法可以很容易地扩展以处理多个区块链的组合系统。

定义2(区块链的安全敏感属性)能影响区块链安全风险程度的属性称为区块链的安全敏感属性。安全敏感属性相互排斥且按类可分层,位于ahp结构树的非叶子结点。

根据btcb,在区块链安全风险分析的ahp结构树的第二层,有五类不同的安全敏感属性——数据层、网络层、共识层、激励层和应用交互层,其中数据层又可以分为数据结构、数据模式和数据存储三个属性。我们用集合a=(a1,…,ai,…,an)表示区块链的所有安全敏感属性,ai表示其中一个属性。

定义3(安全敏感属性的可能值)定义安全敏感属性的特定特征或参数称为安全敏感属性的可能值。

一个安全敏感属性ai用集合pi=(pi1,…,pi2,…,pin)表示,其中pij表示属性ai的第j个可能值。安全敏感属性的可能值相互排斥且位于ahp结构树的最末端——叶子结点。比如,在我们的ahp结构树中,“私有链”、“联盟链”和“公有链”是区块链属性“网络结构”的可能值,见图4。

定义4(安全敏感性评分函数)安全敏感性评分函数f[pij]:a*pij∈[0,1]根据属性对区块链安全风险的影响力大小将安全敏感性评分分配给属性的每个可能值,函数的自变量包括属性ai和属性可能值pij。

我们利用图4的信息举例说明安全敏感性评分函数的计算过程:

f[私有链]=安全风险评分(私有链)=权重(查找安全敏感属性值的权重)

*权重(网络结构)*权重(私有链)=1*0.4*0.1=0.04;

f[联盟链]=安全风险评分(联盟链)=权重(查找安全敏感属性值的权重)

*权重(网络结构)*权重(联盟链)=1*0.4*0.3=0.12。

3.2s-quanti函数求解

中本聪提出了比特币的原理,将诚实链和攻击链之间的竞争描述为二项随机游走,即成功事件是将诚实链扩展一个块,将其领先度增加1,而失败事件是攻击者的链扩展一个块,将差距减少1,并计算了攻击者在不同攻击力度下成功攻击的概率。一个攻击链能够追上诚实链的概率如式(1)所示:

p是诚实节点制造出下一个区块的概率,q是攻击者制造出下一个区块的概率,p+q=1,qz是攻击者最终消弭z个区块落后差距并改变当前区块交易内容的概率。根据中本聪的51%攻击观点,当q>0.5时,攻击者一定能够追赶上诚实者,因为攻击者的算力大于诚实节点的算力。假设诚实节点将耗费平均预期时间产生一个区块,那么攻击者的潜在进展就是一个泊松分布,分布的期望值为:λ=z×(q/p)。我们将攻击者取得进展区块数量k的泊松分布的概率密度,乘以在该数量下攻击者依然能够追赶上的概率,最终求和得到攻击者追赶上z个区块的总概率:

从概率层面分析,若攻击者出块概率比诚实矿工高,则攻击者一定可以更改某个区块的交易内容。为了避免对无限数列求和,式子(2)可以转化为式子(3)的形式:

区块链安全性与成功攻击概率成反比关系,因此s-quanti函数可以设计为:

算法1是计算s-quanti函数值的算法.:

算法1计算s-quanti函数值

输入:诚实矿工成功挖矿概率p,攻击链区块落后差距z

输出:s-quanti函数值

1.计算攻击者成功挖矿概率q,q=1-p

2.计算lambda=z*(q/p)

3.令sum=0

4.for攻击者取得进展区块数量k=0到z

5.计算poisson=pow(lambda,k)*exp(-lambda)

6.如果k<=1,mul_k=1;否则mul_k*=k

7.poisson=poisson/mul_k

8.sum+=poisson*(1-pow(q/p,z-k))

9.返回sum

值得注意的是,从概率层面分析,当q>0.5时,攻击者一定能够追赶上诚实者,因此,我们只讨论q≤0.5(即p≥0.5)的s-quanti值变化规律。根据图5我们发现固定p值,s-quanti值随z值非线性增大,表示攻击链离攻击成功的目标越远,此时区块链越安全,所以得分越高;固定z值,s-quanti值随p值非线性增大,因为诚实链算力越大,此时区块链越安全,所以得分越高。

3.3诚功挖块概率估算

根据区块链的设计特点,矿工所掌握的所有矿机占区块链全网总算力的百分比代表着他成功挖矿的概率。举个例子,如果比特币现在全网算力是100,而某个矿工拥有10的算力,那么他每次竞争记账成功的概率就是0.1。假设已知攻击节点加入之前的区块链全网算力为m,攻击节点的算力为a,那么诚实节点成功挖块的概率为攻击节点成功挖矿概率目前主流的矿机为14t左右的计算量级,每一台矿机每秒至少能做14乘以2的20次方的哈希碰撞,我们可以说,这一台14t规格的矿机就有14t的算力。如果用一台算力为14t的莱特币矿机挖莱特币(目前莱特币的全网算力大概为390th/s),此时,该矿机成功的概率为值得注意的是,不用的币种之间的算力,是没有任何关系的,比如莱特币矿机不能挖比特币,因为挖矿算法不一样,他不会解莱特币的函数题。

3.4定性分析

已存在共识算法可以部分解决51%攻击问题,比如pos、dpos,这说明仅从定量上分析区块链的安全风险是不足的,我们还需要定性分析区块链的安全风险。前文中我们把技术体系架构对区块链安全风险的影响因素定义为区块链安全风险的定性影响因素,并建立了btcb,用于全面、合理地分析区块链安全风险。此外,我们又根据ahp分析法,为定性影响因素评分。

基于安全敏感属性结构树的定义和函数推导的需要,我们先做如下假设和定义:

(1)倒数第二级的安全敏感属性数量为p,因此安全敏感属性可能值可以分为p组;

(2)每组安全敏感属性可能值的数量为q1,q2,q3,…,qp;

(3)每组安全敏感属性可能值的高度分别为n1,n2,n3,…,np;

(4)每组安全敏感属性可能值表示为::

第一组安全敏感属性可能值分别为:

第二组安全敏感属性可能值分别为:

……

第p组安全敏感属性可能值分别为:

(5)将集合定义为安全敏感属性可能值的安全敏感性得分;

(6)安全敏感属性可能值的路径权重为:

s11的路径权重:

s12的路径权重:

……

的路径权重:

s21的路径权重:

……

的路径权重:

(7)用x表示输入变量的集合,记如果该区块链包含sij,i∈[1,p],j∈[1,max(q1,q2,……qp)],则相同下标的xij取值为1,否则为0。

我们将输入与其路径权重的乘积求和得到式子(5),

又因为

所以式子(6)可以写成式子(7)的形式:

3.5安全风险评分函数的计算

如上所述,区块链定量安全风险评分(s-quanti)和定性安全风险评分(s-quali)共同影响了区块链安全风险评分(s),调整前二者的影响因子,使其满足下列限制:

α+β=1(8)

α,β>=0。我们将s与s-quanti、s-quali的函数关系设计为:

s=α×s-quanti+β×s-quali,s∈[0,1](9)

3.6复杂度分析

我们分析区块链安全风险评分函数计算的复杂性。为此,我们将z表示为攻击者落后的区块个数,n表示为安全敏感属性的ahp层次数量,p表示为安全敏感属性的数量,q表示各个安全敏感属性可能值的数量。

定理.区块链安全风险评分函数计算的复杂性是o(max(z,n×p×q))。

证明.区块链安全风险评分函数计算的复杂性主要受三个因素的影响:定量安全风险评分s-quanti;每个安全敏感属性可能值的安全敏感性得分w[xij];定性安全风险评分s-quali。

根据计算s-quanti函数值的算法,我们用变量存储k-1次的计算结果,则每一次循环的计算复杂度为o(1),循环z次,因此s-quanti函数的计算复杂度为o(z)。计算w[xij],即是计算每个安全敏感属性可能值的安全敏感性评分函数f[xij],见定义4。属性的集合大小是p,属性可能值的集合大小是q,w[xij]的计算复杂度为o(n),每个安全敏感属性的安全敏感性评分函数f[ai]的计算复杂度为o(n×q)(属性ai可能值的安全敏感性得分和),最后的定性安全风险评分s-quali的计算复杂度为o(n×p×q)(各属性ai的安全敏感性得分和)。然而,如果对区块链安全敏感属性可能值进行提前预处理和计数,则可以在o(1)中提取每个安全敏感属性可能值的安全敏感性得分w[xij],区块链定性安全风险评分函数的计算实际上可以在o(p×q)中进行。根据时间复杂度的加法规则t(n,m)=t1(n)+t2(m)=o(max(t1(n),t2(m)),区块链安全风险评分函数计算的复杂性是o(max(z,n×p×q))。

附图说明

图1描述了区块链技术体系架构

图2描述了区块链可信计算基

图3描述了属性和属性可能值的配对比较

图4描述了ahp树的三层结构示例

图5描述了s-quanti值随z值变化趋势

图6描述了s-quanti值随p值变化趋势

图7描述了安全敏感权重问卷样例

图8描述了实验结果与ratingtoken评分的对比分析

具体实施方式

下面结合实例对本发明作进一步的说明:

1)实验环境描述

到目前为止,全球仅有两个权威机构对区块链进行技术安全风险评估并公开数据,一个是中国信息产业发展中心——赛迪区块链研究院,评估对象是公有链,评估数目31项,评估内容包括实现功能、基础性能、安全性和中心化程度;另一个是美国独立评级机构——weissratings,评估对象是公有链,评估数目93项,评估内容包括功能、基础性能、安全性和能耗处理。为了验证本模型的可行性,本实验选取了当下有名的30个公有链系统作为实验对象。

2)实验数据描述

模型计算结果作为实验组数据,赛迪全球公有链技术评估指数和weiss加密货币评级作为实验的对照组,计算得出赛迪和weiss两个系统评分的平均绝对偏差是0.1632,平均相对偏差是20.1278%,图7是两个系统评分的可视化对比分析,结合计算结果和图分析,我们发现两个不同评估系统的评分结果偏差较大但仍然有相对一致的地方,且weiss评分普遍高于赛迪评分。

在实验中,我们尝试回答以下研究问题:

1.区块链安全风险评估方法是否实现了区块链安全风险的量化目标?

2.区块链安全敏感属性和属性值的安全敏感权重从何而来?

我们解释了实验的过程,并给出了所使用的问卷样例。为了简单起见,我们进行实验时就好像存在单个上下文一样,我们相信,我们所提供的方法可以很容易地扩展到处理多个上下文(即通过从领域专家那里获取有关上下文的数据,并创建适用于每个上下文的评估方法),然而,这个问题留给了未来的工作。

3)实验图表描述

图1描述了区块链技术体系架构

图2描述了区块链可信计算基

图3描述了属性和属性可能值的配对比较

图4描述了ahp树的三层结构示例

图5描述了s-quanti值随z值变化趋势

图6描述了s-quanti值随p值变化趋势

图7描述了安全敏感权重问卷样例

图8描述了实验结果与ratingtoken评分的对比分析

4)实验结果分析

我们根据公式(4)计算区块链系统的s-quanti值,根据公式(7)计算区块链系统的s-quali值,根据公式(9)计算区块链系统的s值。统计检验得出如下结论:

(1)大部分评级机构对bitcoin、ethereum和litecoin评级较高,四家机构都认为ethereum安全性极高,这与我们的模型评估结果一致;

(2)大部分评级机构都认为decred、bitcoinsv和sia安全性较低,而我们的模型认为其安全性适中,这是由于它们的全网算力较大导致其定量安全风险评分较高;

(3)大部分评级机构都认为bytecoin、bitcore和etn安全性较低,这与我们的模型评估结果一致;

(4)我们的模型评估结果普遍低于市场已有评测数据,这是因为我们只分析了12个指标的评测结果,未评测项计零处理,导致我们的评测数据偏低,但评测级别与已有评测数据大体一致,这一定程度上能说明该模型的可行性。

图8是实验计算结果与ratingtoken评分的图形化对比分析,经观察,我们发现两个不同的评分模型计算的结果在安全风险的级别上大体一致。我们以dash项目为例,详细介绍我们评估方法的计算原理。dash项目的定性安全风险评分s-quali为0.5,在这15个区块链项目中属于偏低级别,但他的全网算力较高,为3190.88th/s,位居第四。根据前文介绍的诚实挖矿概率计算公式,dash的诚实挖矿概率p为(3190.88th/s)/(3190.88th/s+7×14th/s)=0.97(本实验的攻击算力统一设置为7×14th/s),进而计算出定量安全风险得分s-quanti为1。综合评估得出dash项目的安全风险得分s为0.55,属于中等安全级别,这与客观事实相符合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1