区块链技术具有去中心化、可追溯性和去信任化等特性,已被广泛应用于诸多领域。然而,人们往往忽略区块链自身的安全问题,较少有相关问题研究及解决方案的成果。文章着重剖析区块链所受安全威胁问题并提出其安全保护措施,从技术风险、内容风险等不同视角阐释区块链所受的安全攻击,在多个层面给出了区块链的安全保护机制,尤其对日蚀攻击防御中IP地址信用评价模型进行了思索。最后,从技术和监管两个方面,对区块链技术的发展进行了展望。

区块链技术利用时间顺序将数据区块以链的形式组合而成实现了可追溯性,利用点对点通信技术实现了对等连接,利用分布式共识技术实现了系统数据的一致性,利用加密技术防止数据被篡改或者被伪造,利用智能合约技术实现了交易的自主处理。

通过加密算法、点对点通信技术、分布式共识机制和智能合约技术的结合,构建数据存储和处理的分布式账本技术。由于跨行业融合发展,它也从最初的“为比特币而生”发展为横跨银行、保险、医疗等各行各业的“开拓者”,实现计算机技术与大数据、云计算、互联网时代的“区块链+”创新模式。

区块链技术最早被提出是在2008年中本聪发表的论文《比特币白皮书:一种点对点的电子现金系统》中。伴随人们对比特币的重视,作为比特币底层技术的区块链也引起了极大关注。

依据Gartner公布的成熟度曲线图,2016年区块链技术达到顶峰。区块链技术要进一步发展,则必须应用于实际中,否则只是虚的概念。近几年,区块链在多方信任共识、数据存证、溯源防伪等方面呈现较好的发展态势。例如,信息安全方面,当前环境对其提出了高效性、可追踪性和分布式等要求,而区块链的去中心化、不可篡改性和可追溯性正好能够更优地解决身份认证、数据保护和访问控制等方面的问题。

身份认证是对网络中用户的身份鉴定技术,目前基于数字证书的集中式PKI认证面临CA不可信的问题,而基于区块链的分布式公钥管理基础设施(Public Key Infrastracture,PKI)系统Certcoin,通过公共账本记录用户证书,并将其公开,任何用户都可查询,解决了证书公开程序和CA问题。

01、区块链安全威胁

区块链的去中心化,很好地实现了可扩展性、健壮性、隐私性和负载均衡性,避免了中心化结构出现的单点崩溃的风险,因此刚开始出现时从不同方面解决了一些安全问题。

但是,随着规模逐步增大,安全问题越来越多。正如著名网络安全专家Benjamin Kunz Mejri在我国互联网大会上所说“没有攻不破的系统”,区块链的安全性也是相对的。

1.1 51%的攻击和双花攻击

51%攻击未必是双花攻击,而双花攻击一定要在51%攻击的前提下进行的。51%算力攻击的根源是共识机制,因为比特币使用算力作为竞争条件,51%算力攻击就是攻击者掌握超过51%的资源,使新的交易不能被确认,从而终止交易。也可快速完成交易的确认,使攻击者的交易信息更多地接入区块链,造成区块链的安全隐患。

双花攻击的起因是验证机制,若在控制51%算力的基础上创建新分支来进行交易回滚,即需两次相同资产来得到第一笔交易的资产,从而影响了区块链的完整性,造成双花攻击。例如,2018年5月,一名矿工通过获得至少51%的算力,对比特币黄金网络进行双重攻击,从而盗取了超过388 200个比特币黄金,损失1 860万美元。

1.2 智能合约漏洞和智能合约虚拟机漏洞

智能合约实际上是构建信任关系网络中的代码,使程序可能出现错误或者漏洞。现存智能合约安全问题包括存储损坏、整数溢出等,通过控制合约中的令牌对合同用户造成破坏。

网络中每个节点都在本地机上运行程序,攻击者可造成虚拟机执行无限次循环程序甚至完全控制机器,从而造成智能合约虚拟机漏洞。例如,2016年6月17日,攻击者利用智能合约中的SplitDAO函数的漏洞对区块链的众筹项目TheDAO进行攻击,导致6 000万美金的数字货币被获取。

1.3 DDoS攻击

分布式拒绝服务(Dsitributed Denial of Service,DDoS)是从拒绝服务(Denial of Service,DoS)发展来的。所谓DoS是指攻击者通过阻止合法用户访问网络资源来达到自己的目的。而DDoS将攻击的网络包从很多的DoS攻击源一起涌到主机,致使合法请求无法被响应。

在区块链中,DDoS通过向节点发送大批量请求,使造成拒绝服务攻击的威力成倍放大;通过漏洞占用节点的内存,造成系统崩溃。DDoS攻击造成的经济方面的损失只是一部分危害,最重要的是造成信任度降低。

1.4 分叉

分叉问题指的是当区块链的系统升级时,共识机制也产生了新协议,已经升级了的节点称为新节点,而没有升级的节点为旧节点。当新节点掌握超过51%算力的时候,出现了链上扩容的硬分叉和采用隔离见证SegWit软分叉。

硬分叉。发布新的共识机制之后,未升级的节点没有办法验证已经升级的节点所产生的区块,在此区块链中会有分叉的两条链。一旦出现硬分叉,则区块链的信任度会大大降低。例如,2013年3月,比特币曾发生硬分叉,最终解决方案是0.8版本的节点退回0.7版本。

软分叉:系统升级时,未升级的节点会产生不合法的区块,造成临时出现分叉,但其有很好的兼容性,允许逐步升级,实现平稳过渡,所以对系统的稳定性影响较小。

1.5 日蚀攻击

日蚀攻击(EclipseAttack)是指攻击者通过修改节点的路由表,将足够多的坏节点添加到该节点周围,以独自占有与受害节点的所有连接,控制大量的IP地址,从而造成此节点“孤立”于区块链网络之外,然后利用受害者来攻击共识系统,进而造成对抗性分叉、伪造挖矿等,实现网络层面的攻击。

1.6 矿池攻击

1.6.1 自私的挖矿

一组恶意的矿工挖到新块后暂时封锁消息,并且新建一个分叉,而其他矿工并不知道新块的存在而是继续在旧块上挖矿。当恶意建造的分叉长过公共链后,发布其私有的分叉。由于它是最长的,所以被接受,而原有的公共链被丢弃,从而使其他节点做了无用功。

1.6.2 块扣攻击

矿池中的恶意成员不对外公布挖到的区块,从而浪费同伴矿工的算力,降低所有矿池的收入。

1.6.3 块丢弃攻击

攻击者将多个有较好网络连接的节点放在网络中,实现快速知道新挖的区块并迅速传送区块。当挖到新块时先不公开,知道其他节点要公布区块时,它立刻公布自挖的区块并快速传播到网络,从而造成合法节点的区块被丢弃。

1.6.4 增加难度攻击

攻击者通过挖矿来增加难度,当其认为难度达到顶峰后,自动离开系统,而剩下的矿工面临非常艰难的采矿过程,从而使生成区块的时间大大增大。

1.6.5 链跳跃攻击

攻击者通过难度低时切入、难度高时切出,从而达到最大化利润,造成块的生成时间非常不稳定。

1.6.6 时间戳攻击

攻击者利用恶意时间戳而不是系统时间来欺骗难度调整算法,使得具有正确时间戳的块不能被其他节点所接受。

1.7 私钥被泄漏

利用私钥对数据进行签名并确认数据的所有权,若通过逆向分析代码致使节点的私钥被盗,那么节点的身份则有可能被伪造。私钥被破解是因为交易设计缺陷,一方面椭圆曲线数字签名算法ECDSA存在被破解的风险,另一方面密钥生成算法有风险。例如,Android安全漏洞致使比特币失窃的例子,可能是由随机数产生过程中的漏洞造成的。

1.8 西比尔攻击

西比尔攻击(SybilAttack)是指攻击者通过控制网络中的大多数节点来浪费其他节点的算力,从而实现对共识机制的攻击。攻击者引入多个恶意节点来控制网络,从而发布监控和破坏备份机制等,实现对网络的攻击。

1.9 区块链自身Bug

由于区块链绝大部分都是开源的,虽然很多人关注,但也会存在风险。例如,2017年4月22日,韩国比特币交易平台yapizon被攻击,市值500万美金的BTC被盗;2017年7月19日,多重签名钱包Parity 1.5及以上版本出现漏洞,导致3 000万美元的以太坊ETH被盗;Mt.Gox交易平台由于底层技术的可锻造性漏洞,导致攻击者可重复提现,致使2014年2月28日申请破产保护,最终倒闭。

1.10 内容风险

1.10.1 内容安全问题

由于允许用户将一些自定义信息写在交易数据中,从而造成不法分子乘虚而入。例如,2014年5月,攻击者将病毒DoS/STONED的签名嵌入区块链中,虽未对用户造成实际危险,但Windows杀毒软件发出持续性报警信号,直到将区块链文件隔离才停止。

1.10.2 数据泄露

由于信息是通过网络分发的,若应用被植入恶意代码,则可导致隐私泄露,即使无恶意代码也可以通过邮件地址等来访问数据,虽然其与真实身份无直接关系,但仍可利用聚类分析和污点分析来识别个体,进而造成数据泄露。例如,金融应用中,利用交易记录可追溯此账户的具体交易,进而分析金融趋势,造成公司重要数据的泄露。

1.11 违法风险

1.11.1 非法内容

攻击者在系统中建非法应用程序或放置一些非法内容,如反动言论、色情内容等。由于区块链的分散性,很难阻止攻击者的行为;由于区块链的不可逆性,很难实现删除非法内容。

1.11.2 犯罪活动

以比特币为代表的数字密码货币应用,因没有发行机构,想破解拥有者的身份比较难,若被不法分子利用,会成为非法交易或洗钱的载体。例如,2011年2月,暗网中“丝绸之路”的交易平台利用比特币在网络中匿名交易的特征进行毒品交易、走私军火等非法活动。

02、区块链安全保护措施

2.1 区块链工作过程

发送节点将构造的交易在全网广播,若经接收节点检验合法后,交易被打包成区块。区块头包括哈希值、时间戳、Nonce和前一区块等。Nonce证明矿工完成了工作量,由于包括前一区块哈希值,所以构造类似数据结构中的链式存储结构。接收节点利用共识机制对区块检验,若检验通过则被按顺序添加到区块链中作为一个区块,从而完成一个操作,如图1所示。

图1 区块链的工作过程

区块链的安全性首先通过共识机制来管理节点,从而保持不变性,然后用加密技术和数字签名技术验证区块链上交易的真实性。

2.2 安全模型

区块链的安全框架模型,如图2所示。

图2 安全框架模型

2.3 数据安全性

在做数据挖掘和数据分析时,有80%的时间是用在有效数据的收集和数据清洗上。有了区块链后,基于区块链的分析和挖掘成本会被降低,区块链的数据保护采用去中心化的数据管理系统,通过区块链和外面数据库相配合来实现。区块链的去中心化、加密、P2P等特性,实现保护数据的完整性和未被授权不可访问。个人数据在区块链中转化为密文,当需要用到这类信息时,只需将密文传送过去,接收方将信息同区块链上的加密数据对比,不涉及真实信息。

比特币的基础是区块链,而区块链的基础是密码学,通过密码学实现了区块链的防篡改性。具体原理是利用哈希算法在每个区块生成一个包含上一个区块的哈希值,通过哈希算法具有的正向计算快速、逆向计算较难的特性完成数学签名等的验证,实现了安全访问、隐私的保护,如图3所示。

图3 区块链的数据结构

目前,常用的哈希函数有MD系列、RIPEMD系列和SHA系列。图3中,A0、A1、A2、A3表示用户,通过将前一笔交易和后面那个人的公钥来签一份数字签名,并附加到交易的末尾。非对称加密中的加密密钥是公开的,称为公钥;解密密钥由用户自己持有,称为私钥。利用非对称加密算法发送信息前,发送方先得到接收方的加密密钥,然后使用密钥将明文转化为密文,接收者使用解密密钥将密文还原为明文,通过公钥和私钥分开,使其在不安全通道也可传送,如图4所示。

图4 非对称加密体系结构

由于RSA不够安全,区块链中建议用椭圆曲线密码系统(Elliptic CurveCryptosystems,ECC)。通过Hash函数,又叫哈希函数,将任意输入转化成固定长度的输出。Merkel树也叫哈希树,是一种二叉树,如图5所示。

图5 Merkel树

分析Merkel结构可以发现,底层数据的变化会引起父亲节点的变化,进而辐射到树根,最终存储于区块头的值是Merkel根的值。数字签名是由非对称密码发展而来的,为不安全通道的发送信息提供了进一步保证,使接收者确认信息是由发送方发送的。

2.4 网络安全性

2.4.1 垃圾交易防御

设定最低交易费用,尽量减少垃圾交易量。例如,交易以前在智能合约中存入一些令牌,若发现大批量的垃圾交易,可以通过智能合约没收存款。

2.4.2 Eclipse攻击防范

为了防止Eclipse攻击,可考虑构建IP地址的信任评价模型,利用18世纪英国学者贝叶斯提出的贝叶斯定理,判定一个IP地址是否值得信赖。式(1)是一个条件概率,利用它可以实现对一个事件的重新认识,也称为后验概率。

设IP地址为可信的和不可信的概率分别为0.5:

设B为可信的IP地址的情况下正常工作和非正常工作的概率分别为0.9和0.1:

设B为不可信的IP地址的情况下,正常工作和非正常工作的概率分别为0.5和0.5:

则正常工作的概率求解如下:

通过一次正常工作其后验概率上升为0.64:

通过分析发现IP地址可通过正常工作提升了系统对它的信任度,当连续正常工作4次后可以提升到91%。虽然若真正构建具体模型会更加复杂,但具体原理就是贝叶斯定理。通过检查网络中行为不端的IP连接,检查传入和传出连接,从而减少日蚀攻击对其造成的影响。

2.4.3 路由攻击防范

区块链中的私有链、联盟链可以由第三方认证链中的节点,从而保证节点所发送的路由信息的可靠性。

2.4.4 隐私防御机制

(1)接入受限

只允许授权的节点接入网络,在联盟链和私有链中使用较多,如超级账本中的节点要经CA认证才可接入。

(2)屏蔽恶意节点

公有链中通过检测若发现有恶意节点,则立刻加入黑名单。文献[10]提到一种恶意节点的检测方法,可减少恶意节点带来的泄露问题。

(3)数据混淆

区块链在隐蔽的网络中运行,能较好地隐藏IP地址,使恶意节点很难发现网络中真实的IP地址。

2.5 共识安全性

去中心化是区块链的本质特征,而共识机制是去中心化的核心内容。它是在同一时间内就交易顺序达成共识的算法,用于实现数据和账本的正确记录。共识机制本质上实行少数服从多数原则。

2.5.1 工作量证明

工作量证明(Proof of Work,PoW)是用来证明用户做过一定量的工作,也可以说通过辛勤劳动获得说话权。首先监听网络中的数据,若合法则对其保存,对不同的随机数进行哈希计算的过程中找到合理的随机数,从而生成区块信息,然后对外广播此区块。若验证通过,则连接到区块中。这种拼算力获得记账权的方式称为佃农模式。

2.5.2 股权证明

股权证明(Proof of Stake,PoS)是节点记账权的获得难度与节点持有的权益成反比。通常用持有的token时间或token数量来决定,若权益越高,则挖矿的难度会越低。这种拼财力获得说话权的方式称为地主模式。

2.5.3 授权股份证明

授权股份证明(Deletated Proof of Stake,DPoS)是指用户通过抵押权益成为记账候选人,然后用投票来决定排名,排名靠前的节点拥有某个时间片内的记账权。因为共识节点少且通信快,所以为迅速完成打包,广播及验证增加了可用性。这种靠拉票能力获得记账权的方式称为党鞭模式。

2.5.4 实用拜占庭容错协议

实用拜占庭容错协议(Practical Byzantine Fault Tolerance,PBFT)主节点对请求进行排序,从节点支持。这种根据多数人的意志而达成共识的做法称为民主模式。

2.5.5 51%的攻击防御和双花攻击防御

为了防御51%的攻击,需尽量扩大利益资源或整个网络的计算能力。计算能力越大,攻击者进行51%攻击的成本将会更高,防止双花随着确认数量的增加而成功的可能性降低。区块链中的回交事务越长,网络中接收恶意链之前需要捕捉到更多的块,从而从更大程度上降低修改交易历史的可能性。为防止快速支付系统中发生双花攻击,可以使用监听时段技术来监视所有接收事务,只在没有双重花费的情况下发送产品,但此法只可增加双重花费攻击的难度,无法从根本上消除。

2.5.6 自私挖矿攻击防御

(1)新鲜度首选

矿工选择具有最近时间戳的块来扩展,使块保留技术失去对新鲜块的保留优势。

(2)ZeroBlock

若自私矿工将新挖的块私自占用超过给定的时间,当此块在网络上发布时,诚实矿工将拒绝,从而防止保留块攻击。

(3)随机选择

若矿工遇到相同长度的分叉,它将随机选择一个分叉进行扩展,降低自私池增加其他矿工扩展分叉的可能性的能力。

2.6 应用安全性

2.6.1 私钥存储

私钥可以保存在密码加密的安全性能较低密钥库文件中。当用户使用它时需输入密码获得私钥,也可存储在安全性较高的硬件安全模块(HSM)中,防止私钥被非法访问。

2.6.2 身份认证

身份认证是为了确保网络中用户身份的合法性而使用的一种认证技术。每个用户都有一个公钥和一个私钥,通过密码学原理,利用私钥来实现对用户的身份验证,而不会绑定用户的身份信息。

2.6.3 隐私泄露防御

区块链中,利用对核心数据的加密,使只有获得密钥的人才可读懂数据,包括交易的数据、交易的输出和输入,从而避免泄露交易数据。利用数字签名证明信息由被请求方发送。

(1)聚合签名

Boneh等学者提出基于co-GDH和双线性映射的聚合签名,将W个不同用户的W个不同信息上的W个签名,汇总成一个简短的签名,防止攻击者伪造签名。

(2)群签名

Chaum等学者首选提出,其允许群中的成员基于不可否认签名来匿名代表群签名消息,从而实现系统的可靠性,以有效抵抗联合攻击。

(3)环签名

Rives等学者提出基于RSA的环签名。它是利用所有成员的公钥和某个成员的私钥而构成的机制。任何成员都可选择任意签名者且无需对方批准,从而实现即便有某个成员的私钥也无法找到谁是签名者。

(4)代理签名

基于离散对数问题而提出代理签名,是允许代理签名者代表原来的签名者的一种直接形式。利用它只需较少的计算,且无需除了原始签名者以外的客户成员的公钥。

(5)零知识证明

证明此交易是有效的,但不会泄露关于交易内容的任何信息,从而实现发送方地址和交易内容本身的隐私保护。

(6)非对称加密

利用公钥加密甚至更加复杂的同态加密来保护隐私。

2.6.4 非法内容防御

(1)Merkle哈希树

利用哈希树表示每个块。哈希树中的节点代表了一个交易哈希,通过投票机制或委员会删除非法内容,保证区块链的不可逆性。

(2)人工智能技术

利用人工智能检测非法内容,并丢弃有非法内容的交易,而不是打包到新块中,从而减少犯罪活动。

2.6.5 犯罪活动防御

了解你的客户KYC(Know Your Customer)政策,验证客户的身份并评估业务关系非法意图的风险,也可利用人工智能技术识别系统中潜在的犯罪活动。

2.6.6 内容损坏漏洞防御

软件工程中常利用源代码审计、渗透测试和模糊测试,可以降低内存损坏漏洞的风险。此法在区块链中也适用。

2.6.7 访问控制

利用访问控制只允许有权限的用户访问系统,如基于智能合约的访问控制,满足合同要求自动执行的特点,定做特定的虚拟机来运行智能合约。虚拟机中建议关闭访问系统资源和文件系统交互等功能。

2.6.8 区块链自身Bug防御

文献[16]研究了8个具有代表性的区块链故障,动手检查了1 108个报告并总结出了10个故障类型。03

03、应用展望

3.1 司法行政体系方面

最新的《民事诉讼法》中增加了“电子证据”这一证据类别,而互联网中的数据易出现“失真”现象,基于区块链的不可篡改性可解决“电子证据”失真现象,提升法院判决的合理性。

3.2 网络资产管理方面

开发基于区块链技术的网络资产管理系统,网络服务提供商利用区块链账号的管理系统加强对各种财产的管理,充分利用区块链技术带来的安全性,减少针对网络财产的犯罪问题。

3.3 电子签名应用方面

国务院于2015年5月制定的《关于大力发展电子商务加快培育经济新动力的意见》第一次明确提出“建立电子合同等电子交易凭证的规范管理机制,确保交易各方的合法权益”。目前主要是以电子签名的形式保证真实性,借助区块链技术、电子合同将拥有更高的安全性,可以使合同文书和合同内容紧密联系在一起。

3.4 隐私保护实现方面

2013年工业和信息化部制定的《电信和互联网用户个人信息保护规定》中规定,个人信息指用户姓名、出生日期、身份证号码、住址和电话等数据。《中华人民共和国刑法修正案(九)》中设置了“侵犯公民个人信息罪”,区块链的可追踪降低了执法侦破成本,可更好地保护个人隐私。

04、结语

伴随区块链的漫漫发展长路,机遇与危险并存,会出现诸多问题。例如,随时间的增加存储成本逐步增大,因此应关注存储的优化升级;区块链的数据安全性依赖密码学来实现,但也带来加密算法较难升级的问题。基于区块链的数据安全性使其被广泛应用于各行各业,但安全威胁问题日益凸显。建议结合当前区块链发展现状,加大立法监督,规范区块链的应用;引入先进技术积极研发区块链平台的监测机制,以实现科学有力的监管;进一步加大投入,积极研发区块链的底层技术,实现技术的自主创新。

作者简介 >>>

刘宗妹,女,硕士,讲师,主要研究方向为区块链技术。

选自《通信技术》2020年第1期 (为便于排版,已省去原文参考文献)