区块链安全部分解读(区块链公链三元悖论)
区块链安全部分解读(区块链公链三元悖论)BTC系统全节点分布图(数据来源:京东智联云BDS区块链数据服务)所以,在笔者看来,安全性对于区块链系统来说,既不能粗略的以充要条件的方式来定义,也不能脱离去中心化、可扩展性等场景需求而单独评价;这也是区块链安全技术中最有魅力的地方。从这段文字中可以看出,区块链公链系统的安全范围有两个方面,一是系统自身的安全性(防崩溃机制)方面,二是系统参与者的数据、交易安全性(隐私保护)方面。区块链公链系统区别于中心化系统的很重要的一部分,就是“安全性”是作为系统中一种性能指标(通过密码学和共识机制等技术作为保障),可根据系统的整体需要,进行弹性选择,甚至在系统迭代过程中可以进行更换。另外,从本质上讲,区块链技术是一种在信息不对称的情况下,无需相互担保信任或第三方中介参与,采用技术手段,实现节点间“普遍通过即为认可“的信任机制。
京东智联云 潘熙之
上两期我们讲了区块链公链系统“三元悖论”中的“可扩展性”和“去中心化”,本期我们结合区块链公链系统中所存在的安全问题和挑战,以及一些实际案例,来讲一下这个系列文章的压轴话题:安全性(Security)。
在很多人看来,对于一个系统来说,安全性是必要条件,而非充分条件;甚至有人说,“去中心化”和 “可扩展性” 是“二元悖论”的说法反而比“三元悖论”更为精准,仅仅二元即可说明一个区块链公链系统的性能状况。但实际情况真的是这样吗?
首先,我想引用BTC系统在白皮书中对安全性的描述,来对区块链公链系统的安全性进行一个范围上的定义:以密码学为基础,基于工作量证明(POW)的共识机制,使得整个系统中只要恶意节点的总算力不超过50%,系统就能保证大概率上的安全,并且不会发生致命的“双花”( double spending双重花费问题)欺诈。
从这段文字中可以看出,区块链公链系统的安全范围有两个方面,一是系统自身的安全性(防崩溃机制)方面,二是系统参与者的数据、交易安全性(隐私保护)方面。
区块链公链系统区别于中心化系统的很重要的一部分,就是“安全性”是作为系统中一种性能指标(通过密码学和共识机制等技术作为保障),可根据系统的整体需要,进行弹性选择,甚至在系统迭代过程中可以进行更换。
另外,从本质上讲,区块链技术是一种在信息不对称的情况下,无需相互担保信任或第三方中介参与,采用技术手段,实现节点间“普遍通过即为认可“的信任机制。
所以,在笔者看来,安全性对于区块链系统来说,既不能粗略的以充要条件的方式来定义,也不能脱离去中心化、可扩展性等场景需求而单独评价;这也是区块链安全技术中最有魅力的地方。
BTC系统全节点分布图(数据来源:京东智联云BDS区块链数据服务)
说到区块链安全技术,就不得不提一下针对区块链系统的各种攻击手段,目前来看,根据区块链的技术特性,具体的技术攻击手段主要分为以下三种:
(一)以共识机制为目标的针对性攻击:共识机制是维持区块链系统有序运行的基础,相互间未建立信任关系的区块链节点通过共识机制,共同验证写入新区块中的信息的正确性。区块链中使用的共识机制有很多,包括PoW、PoS、BFT等(之前两篇文章中均有所提及)。目前,PoW、PoS和DPoS(DelegatedProof of Stake,委托权益证明)机制已经过大规模长时间的实践检验,发展较为成熟。但在区块链共识机制的长期发展应用中,也衍生出了算力攻击、分叉攻击、女巫攻击等大量针对性的攻击手段,造成链上记录被篡改等后果,如下图所示;
区块链典型攻击策略表
(二)对区块嵌入恶意代码,利用分布式存储机制进行快速传播:区块链通过构建开源的共享协议,实现数据在所有用户侧的同步记录和存储。与传统中心式数据库在一个或几个中心集中存储数据的方式不同,在区块链系统中,所有用户侧均有可能存放完整的数据拷贝,因此,单个或多个节点被攻击均不会对全网数据造成毁灭性的影响,提高了存储的可容错性。但是这种分布式的存储机制也在一定程度上扩大了安全威胁面,最典型的是恶意节点可在新区块中嵌入病毒、木马等恶意代码,利用分布式机制自发向全网传播,伺机发起网络攻击,如下图所示;
利用区块链分布式存储机制进行恶意代码攻击示意图
(三)针对密码学机制固有安全风险的各类攻击:非对称算法、哈希函数等密码学机制在区块链中的应用解决了消息防篡改、隐私信息保护等问题,但这些密码学机制的固有安全风险仍将面临各类攻击,主要有两点,一是ECC、RSA等复杂加密算法本身以及在算法的工程实现过程中都可能存在后门和安全漏洞,进而危及整个区块链系统和其上承载的各种应用的安全性。二是随着量子计算等技术的飞速发展,当计算机算力达到一定级别后,即可在秒级时间内破解非对称密码算法中的大数因子分解问题(例如通过量子计算机破解1024位密钥的RSA算法只需数秒),这也成为区块链公链系统未来很大的安全隐患。
所以,尽管区块链的防篡改、分布式存储、用户匿名等技术优势为其发展应用提供了大量的创新空间,但目前区块链技术在各领域的应用模式仍处于大量探索阶段,其深入应用仍需漫长的整合和发展过程;在《信通院区块链安全白皮书》中,就对区块链技术在应用中的安全问题进行了描述,总结后如下所示:
区块链典型应用架构对应的安全风险
上图中,对于四个层级的安全风险归纳如下:
存储层:主要风险来源于环境的安全威胁,如基础设施的安全风险、网络攻击威胁、数据丢失和泄露等,最终影响区块链数据文件的可靠性、完整性及存储数据的安全性,具体包括以下三点:基础设施安全风险、网络攻击威胁、数据丢失和泄露;
协议层:主要风险来源于核心机制(共识机制、P2P网络机制、密码学技术)的设计缺陷,前两章我们对这些核心机制做过介绍,当这些核心机制的规则设计被恶意节点利用,则很容易使系统的自身安全和交易安全遭到破坏,具体包括以下三点:协议漏洞、流量攻击以及恶意节点的威胁;
扩展层:主要风险来源于代码实现中的安全漏洞,由于这一层较典型的实现是智能合约(或称可编程合约),但智能合约的应用起步相对较晚,很多开发人员尚缺乏对智能合约的安全编码能力,从而造成代码中存在大量的安全漏洞,具体包括以下两点:合约开发漏洞、合约运行安全;
应用层:这一层由于直接面向用户,涉及不同行业领域的应用场景和用户交互,因此也成为攻击者实施攻击、破坏系统的重点目标层,具体包括以下5点:私钥管理安全、账户窃取、应用软件漏洞、DDoS攻击、环境漏洞。
而综上所述,目前应对以上风险的措施简单总结如下图所示:
区块链风险应对框架
这里我们列出几个具体方法作为参考:
(一)提升参与同步与验证节点的数量:在区块链公链系统中,公链网络的正确性与安全性依赖于一些节点的背书。例如,在比特币或以太坊中,根据协议,每一个矿工挖出区块时,要保证新区块和历史上的每一个区块每笔交易都是正确的。也就是说,比特币矿工出块时,在为之前所有的区块进行正确性背书;在 EOS 中,超级节点通过签名对区块的正确性背书。我们这里称为“参与共识的节点”。所以,如果每一个被确认的交易,都得到过更多参与共识节点(攻击者除外)的同步与验证,这样就能够提高系统整体的安全性。
(二)提高节点参与系统的门槛:上一篇我们讲到,降低用户参与门槛即可提升系统去中心化程度,所以,当提升系统参与门槛时,就可以相应的提升系统的安全性以及可扩展性;在一些共识机制中,普通用户不参与对交易的同步与验证,而是通过一些方式选出少数特殊的节点来进行共识;这时,我们可以假设每一个参选的节点都准备了足够的计算机资源,例如更好的 CPU 更大的硬盘 更大的网络带宽;这时,也就没必要将“最低配置要求”设的很低了;相应的,系统整体安全性就会高一些。
(三)攻击应对监测:在区块链中创建某种“交易配置文件”,监控特定区块链上的交易,检测包括51%攻击,Sybil攻击等恶意攻击。
(四)项目安全管理:智能合约代码的安全审计和法律合规方案的制定。
总之,区块链系统安全设计的挑战,是保障该系统不能被坏人破坏;在一个开放并与经济利益挂钩的区块链系统中,不仅会有好人加入这个系统,也会有更多的坏人企图希望通过破坏该系统获利;那么,如何在系统内部存在坏人的情况下,保证系统的安全性,这已不仅是传统意义上安全架构的技术挑战,也是安全机制设计的挑战;
区块链在网络安全领域的典型应用
最后,如上图所示,我们讲一下如何利用区块链技术的特性,来对传统网络安全领域的安全性进行加固。
由于区块链分布式、点对点的通信具有易连接、大协作的特点,基于哈希加密的匿名性也能够很好保护用户隐私和证明唯一性,依托公私钥的权限控制方式更是赋予数字资产丰富的管理权限,因此,这些技术特性使得区块链可以成为解决网络和数据安全存储、传播和管理问题的有效手段,在攻击发现和防御、安全认证、安全域名、信任基础设施建立、安全通信和数据安全存储等方面得到了积极的探索。
下面列举几个区块链网络安全的具体应用案例:
(一)Guardtime攻击发现和防御案例:为数据或系统的状态创建时间戳哈希,根时间戳哈希对状态持续监测,以发现文件、系统或程序是否受到未授权访问,目前已在英国核电站、防洪系统等国家关键基础设施应用。
(二)Startup Filament安全通信认证案例:将物联网传感器数据直接编码到区块链中,为分散交互和交换提供安全的基础。
(三)Blockstack安全域名:将域名基础设施建立在区块链之上,建立域名哈希映射,在每个网络节点处进行域名注册、转移等操作,存储域名所有人的公私钥对并记录解析后的域名,分散了原本集中的域名服务,由于不存在可被黑客攻击或修改的中心化记录,也防止了域名劫持、缓存投毒等传统攻击行为。
区块链系统安全性的核心:共识
作为这个系列文章的结尾,笔者认为,无论从可扩展性、去中心化、还是安全性来说,区块链技术最核心的属性都是“共识”这两个字;因为有了“共识”这个属性,一个系统才得以从“管理者”转变为“组织者”;参与系统搭建的各节点通过共同的努力,来维护一个区块链系统的正常运转,这样即能达到系统自治的目的,也能够很大程度上抵御各种外部攻击,最终保证了系统的整体安全性。
不可能三角”并不是一个严格经过论证而得出的结论,它只是业内对各公链的实际运行状况作出的一个总结;不可能三角的意义,是在告诉设计者,在进行区块链系统架构设计时,必须根据具体的应用场景做出取舍,而无需过多的花精力研究如何兼顾这三要素。
另外,需要特别强调的是,不可能三角并不是一种限制,它反而在正确的道路上开拓了设计师的思路,让他们在多样化的取舍方案下设计出了各式各样的系统。
最后的最后,衷心的希望这个系列文章能够帮您从更多的角度出发,去认识并理解区块链技术,以及区块链系统能够为我们带来的实际价值。
在之后的文章中,我们会对京东智臻链等区块链具体应用项目进行解读与分享,欢迎大家继续支持哦!