区块链技术及其在数字加密货币中的应用*

2018-03-21 00:56文,秦静,2
通信技术 2018年3期
关键词:梅克尔哈希攻击者

刘 文,秦 静,2

0 引 言

区块链技术由比特币等数字货币的兴起而被大家熟知。区块链这一概念由中本聪在论文《Bitcoin:A Peer-to-Peer Electronic Cash System》中首次提出[1]。狭义上讲,区块链是一个公开、透明、可追溯、不可篡改的分布式总账系统,是下一代云计算的雏形。广义的区块链技术则被认为是大型计算机、个人计算机、互联网、移动/社交网络之后计算范式的第五次颠覆式创新,是人类信用进化史上继血亲信用、贵金属信用、央行纸币信用之后的第四个里程碑[2]。

区块链技术的实质是不同的节点共同参与的分布式数据库,是一个开放式的公共账簿。具体地,从数据包形成区块,中间有一个加密的哈希值计算,把不同时间段的交易信息链接起来,形成区块链。区块链是一个公开、透明、可追溯、不可篡改的分布式总账系统[2]。区块链技术是一串技术组合。第一,它是分布式账本,全部机构一本总账,各种事务一本总账;第二,它是一个去中心化的新型数据库,没有中心机房,没有运维人员,第三方按共识算法录入数据,非对称加密算法保证数据安全,数据客观可信,不可篡改;第三,它是智能合约,是一段能够自动执行约定的计算机程序;第四,它是TCP/IP模型(互联网模型)中的点对点价值传输协议[3]。区块链技术是具有普遍适应性的底层技术框架,除了应用于金融、经济等领域,其潜在的应用领域包括医疗、选举、版权、公证汽车租赁以及网络安全等[4]。

比特币等数字加密货币是区块链技术应用最成功的场景之一。截至目前,全球数字加密货币市值将突破2 000亿美元,比特币更是被人们称为数字黄金。1比特币现行价格达到7 000美元,市值占到了数字加密货币总市值的一半以上。数字加密货币相对于传统货币不存在中央银行的背书,货币价值与市场紧密相关,不受货币当局的管控,使得数字加密货币具有高度流通性。同时,作为底层技术,区块链在保证安全性的同时,也兼顾了市场匿名性的需求,使得数字加密货币在跨国资金流动中的占比逐渐上升,给中央银行带来了资金监管的困扰,冲击着传统银行业。2017年9月,中国央行开始对数字加密货币实施监管。中国国内三大比特币交易平台——比特币中国、火币网、币行网于2017年10月底全面停止所有数字资产兑换人民币业务,各交易平台也逐渐将业务重心转移到区块链技术应用和研发上,区块链开始在真正意义上由1.0时代逐步走向更为高级、智能的2.0时代。

1 预备知识

1.1 区块链基本原理

近几年,由于数字加密货币(比特币、莱特比、以太坊币等等)的兴起,区块链技术开始逐渐进入大众视野。下面通过对数字加密货币——比特币的运行机制来介绍区块链技术的基本原理。

区块链技术的理论基础由来已久。Haber和Stornetta在1991年开始提出安全地对数字文件进行时间戳记录。用户发送文件时,Haber和Stornetta设计的系统能够向用户提供时间戳服务。服务器收到文件后,会用当前时间和指向之前文件的指针作为签名,来签名该文件并产生包含签名信息的认证。如果某份文件中的数据被篡改,那么指向该文件的指针将自动失效,从而确保了整个文件系统不会被更改。之后他们又提出了一种效率更高的方案,即将文件通过树状结构连接形成“块”,再将各个块之间链接起来形成一条链,以大大减少查找特定文件所需的时间[5]。这便是区块链数据结构的雏形。

将由哈希指针构建的链表的数据结构称作区块链(Blockchain),如图1所示。哈希指针(Hash Pointer)是一个指向数据存储位置和某时间戳下该数据的哈希值的指针。哈希函数具有碰撞阻力,被修改过的数据哈希值与之前的哈希值将不会匹配,所以哈希指针不仅可以指向该数据的存储位置,而且可以用于验证数据是否被篡改过[6]。

图1 区块链

1.2 数据结构

区块链中数据的存储使用了梅克尔树(Merkle Trees)的数据结构。梅克尔树最常见和最简单的形式是二进制梅克尔树(Binary Merkle Trees)。在这种梅克尔树的数据结构中,所有的数据区块被两两分组,而这些数据区块就是树的节点。每个数据区块对应的哈希指针被存储在上一层的父节点(Parent Node)中,这些指向节点的哈希指针再次被两两分组。重复这个过程直至得到一个单一区块,即树根节点(Merkle Root)。最终,通过Merkle Tree算法生成梅克尔数根哈希(Merkle Root Hash),并以此作为交易列表的摘要存到区块头部(Block Header)中。二进制梅克尔树结构如图2所示。

图2 二进制梅克尔树

如果篡改了树节点的数据区块,将会导致父节点的哈希值与其不匹配。层层向上传递,最终改动数据的行为会传递到梅克尔树的顶端。因此,只要保存根节点的哈希值,就能检测任何企图修改节点中数据块的行为。

比特币货币系统中的二进制梅克尔树使得数据区块的隶属证明变得简单,支持中本聪所描述的“简化支付验证”(Simplified Payment Verification)。简化支付验证是指,在验证某笔交易时,一个“轻客户端”(Light Client)只需要下载区块链的区块头部数据即可,而无须下载每一笔交易和每一个区块。区块头部数据大小为80字节,由4字节的版本号(Version)、32字节的上一个区块的哈希值(Prev Hash)、32字节的梅克尔树根哈希(Merkle Root Hash)、4字节的时间缀(Time Stamp)、4字节的当前难度值(Bits)和4字节的随机数(Nonce)组成[7]。比特币货币系统中的交易验证只需包含一个数据块和梅克尔树的根哈希,以及所有沿数据块到根节点路径的哈希分支。简化支付验证的过程如图3所示。

图3 简化支付验证

为了验证数据4,只需要知道数据4的信息以及该数据块到根节点路径上所有分支的哈希值,然后与根哈希进行比对,即可知道数据4是否属于该梅克尔树。

1.3 核心特点及运行机制

区块链技术成功解决了比特币等数字加密货币领域长期必需面对的两个问题:分布式共识(Distributed Consensus)问题和双重支付(Double Spending)问题[8]。

建立一个去中心化的数字货币系统的关键问题,在于达成分布式共识。分布式共识协议是指在一个有n个节点的系统中,存在延迟、故障等问题,甚至有的节点是恶意的,一个分布式共识协议必须使得当多个主机通过异步通讯方式组成网络集群时,这个网络默认是不可靠的,那么在这些不可靠主机之间复制状态需要采取一种协议,以保证每个主机的状态最终达成一致性状态,取得共识。而关于分布式共识是否能够达成,学界普遍持悲观态度。经典案例拜占庭将军问题(The Byzantine Generals Problem)指出,在缺少信任的中央节点的情况下,当恶意节点(叛徒)数超过1/3时,问题将无解[9]。更有Fischer-Lynch-Paterson不可能结果表明,在一个多进程异步系统中,只要有一个进程不可靠,那么就不存在一个协议能够保证在有限时间内使所有的进程达成一致。

双重支付是指同一个数字货币被两次或者多次使用,在没有可信第三方的情况下,若一个数字加密货币系统无法有效抵抗双重支付攻击,那么将无法完成货币职能。传统金融体系下,货币实体(现金)的流通过程中不存在一币多花的情况,数字货币由可信第三方(银行、大型企业)背书,从而有效避免双重支付攻击[10]。

在比特币货币系统中引入奖励机制和工作量证明,巧妙地解决了上述问题。

奖励机制包含两部分:区块奖励和交易费。区块奖励:当节点打包的区块被纳入长期共识链中就会获得区块奖励,最初4年是50个比特币,每生成210 000个区块金额减半,按照区块生成速度,大概每四年减半一次。交易费:交易者发起交易时,将一部分比特币作为交易费。

工作量证明(Proof of Work)。比特币网络中任何一个节点如果想生成一个新的区块并将其纳入长期共识链以获得区块奖励,则必须解出相应的工作量证明的谜题,这一过程被形象地比喻为“挖矿”,参与解谜的节点被称作“矿工”[11]。比特币货币系统利用哈希函数(SHA256)解谜来证明工作量。80字节长度的区块头部数据作为哈希函数解谜的输入字符串,解谜成功与否的依据是哈希函数的输出值小于当前难度值。难度值(Difficulty)是矿工们在挖矿时的重要参考指标,决定了矿工大约需要经过多少次哈希运算才能产生一个合法的区块。比特币的区块产生速度约是每10 min生成一个,网络会根据全网算力的变化自动调整难度值,使得区块间隔时间长期均值维持在10 min。

奖励只有当区块被纳入长期共识链才会实现。因此,网络中的理性节点会为了得到区块奖励而遵循既定规则去延展长期共识链。工作量证明有效降低了恶意节点被选中的概率,除非攻击者掌握了全网51%的哈希算力(Hash Power),才能对网络发起有效攻击,而这种攻击成本十分巨大,基本不用考虑。

1.4 安全性分析

假设网络中存在恶意攻击者想掠夺或者创造不属于自己的数字加密货币,就必须使得自己产生的区块被纳入长期区块链中。但是,网络中其他诚实的节点不会接受恶意节点所创造的区块。攻击者只能以比诚实节点更快的速度产生区块,才能使自己的区块保留在长期区块链中,否则攻击者的区块只能被遗弃,使得自己的算力被浪费。如图4所示,攻击者利用自己算力对长期区块链进行攻击所出现的两种情况。

图4 恶意攻击

可以看出,当恶意攻击者掌握一定算力时,就会出现图中第一种情况。恶意攻击者产生区块的速度大于诚实节点产生区块的速度,区块链出现分叉。随着时间的推移,恶意攻击者所产生的区块被纳入长期区块链,而诚实节点所产生较短的分支则被遗弃。反之,则出现第二种情况,即诚实节点产生的区块被纳入长期区块链,区块链安全性得到保证。

1.3 节利用工作量证明形式化,说明了区块链的安全性。下面将利用Python3.6.1编码说明其安全性。

图5分别为q取不同值时z和p的变化情况。

图5 不同算力下的区块攻击

可以看出,当攻击者掌握算力较小时,那么攻击者创造下一个区块的概率相应较小(即q值较小),追上诚实节点所创造的区块概率呈指数级下降。但是可以看出,当攻击者掌握算力达到50%时,攻击者可以轻易将自己创造的区块纳入长期区块链中,区块链安全性受到极大挑战。不过,实际中这种情况很难出现。

2 匿名性挑战

2.1 区块链应用类别

实际应用中,区块链技术大致可分为三种。

公有区块链(Public Block Chains)。对于节点的加入和退出没有任何限制,任何节点都可以读取、发送交易信息,参与区块链的共识过程,不依赖于特定的组织或中心机构,是完全意义上的“去中心化”。例如,比特币货币系统就是一个完全去中心化的公有区块链。

私有区块链(Private Block Chains)。私有区块链是指写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制,主要应用于公司、政府内部的审计和测试等方面。

联盟区块链(Consortium Block Chains)。联盟区块链是指共识过程受到预选节点控制,访问控制权限掌握在几个组织或个人手中的区块链。这种区块链可视为“部分去中心化”,主要应用于行业内各企业之间的清算、结算等方面。

2.2 地址簇的构建

以比特币为例,在比特币货币系统中,虽然个人可以生成多个地址以保证自己的身份不被轻易发现,但是由于每笔交易在区块链网络中被永久记录,所以当攻击者追溯某个人的历史交易数据时,可以根据交易特点建立地址簇,再将每个地址簇与现实中某个特定的人或者机构对应起来。例如:Alice计划购买一套稀有的纪念邮票,价格是100个比特币。假设她的比特币分散在三个不同的比特币地址中,分别是20、30和40个比特币。因为没有一个比特币地址有100个币,且总的比特币数(90个)也不足100,所以在购买支付时,她可能创建一个新的地址通过交易再得到10个比特币,然后将三个已有的比特币地址和新创建的比特币地址输入合并,以支付100个比特币,如图6所示。

图6 构建地址簇

攻击者可以由此推断,三个已有地址可能是由同一个用户所控制,且新创建的地址与已有三个地址合并输出,那么攻击者就会认为这四个地址属于同一个人,因此可以建立一个地址簇(Clustering of Addresses)。如果一个新地址的输出与该地址簇中任意一个已知地址被一起花费,那么新的地址也会被加入到地址簇中。

文献[12]中,美国研究人员通过大量数据进行分析,在一组没有姓名的用户中,研究者将联合支付的地址和全新的零钱地址(Change Address)归类到一个比特币的地址簇。但是,这种地址簇没有标签(Tag),即簇没有与真实身份关联。研究者为了辨识并标识这些簇在真实世界中的身份,进行了344项各类交易。通过对这些实际交易的地址跟踪,可以为各个地址簇打上身份标识标签。所以,在区块链网络上关联一些小的地址簇,再通过交易图谱分析(Transaction Graph Analysis),个人身份被暴露的可能性极大。

3 结 语

随着大数据时代的到来,人们对数据的存储和保护提出了更高要求。区块链技术的去中心化、不可篡改和可编程等特点,使其在各个数字化领域有着巨大的应用前景。目前,区块链技术刚刚兴起,在金融领域受到了极大关注,但其他实际场景应用还未能有所突破,区块链基础理论研究和相关科研项目还需要得到更多的技术与资金支持。本文对区块链技术的原理、特点、运行机制做出了详细阐释,希望能为未来区块链技术的研究提供参考。

[1] Nakamoto S.Bitcoin:A Peer-to-peer Electronic Cash System [EB/OL].[2017-10-28].https://bitcoin.org/bitcoin.pdf.

[2] Swan M.Blockchain:Blueprint for a New Economy[M].O’Reilly Media, Inc.,2015.

[3] Bonneau J,Miller A,Clark J,et al.SoK:Research Perspectives and Challenges for Bitcoin and Cryptocurrencies[C].Security and Privacy IEEE,2015:104-121.

[4] 张宁,王毅,康重庆等.能源互联网中的区块链技术:研究框架与典型应用初探[J].中国电机工程学报,2016,36(15):4011-4022.ZHANG Ning,WANG Yi,KANG Chong-qing,et al.Blockchain Technology in Energy Internet:Research Framework and Typical Application[J].Proceedings of the CSEE,2016,36(15):4011-4022.

[5] Haber S,Stornetta W S.Secure Names for Bit-strings[C].ACM Conference on Computer and Communications Security ACM,1997:28-35.

[6] Wright A,De Filippi P.Decentralized Block Chain Technology and the Riseof Lex Cryptographia[EB/OL].[2017-08-27].https://ssrn.com/abstract=2580664.

[7] Antonopoulos A M.Mastering Bitcoin:Unlocking Digital Crypto-Currencies[M].O’Reilly Media Inc.,2014.

[8] Burton R.Handbook of Financial Cryptography and Security[M].England:Taylor and Francis,2010.

[9] Lamport L,Shostak R,Pease M.The Byzantine Generals Problem[J].ACM Transactions on Programming Languages & Systems,2016,4(03):382-401.

[10] 袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016,42(04):481-494.YUAN Yong,WANG Fei-yue.Blockchain:The State of the Art and Future Trends[J].ACTA Automatica Sinica,2016,42(04):481-494.

[11] Gervais A,Karame G O,Glykantzis V,et al.On the Security and Performance of Proof of Work Blockchains[C].ACM Sigsac Conference on Computer and Communications Security ACM,2016:3-16.

[12] Meiklejohn S,Pomarole M,Jordan G,et al.A Fistful of Bitcoins:Characterizing Payments Among Men with No Names[C].Conference on Internet Measurement Conference ACM,2013:127-140.

猜你喜欢
梅克尔哈希攻击者
基于特征选择的局部敏感哈希位选择算法
哈希值处理 功能全面更易用
文件哈希值处理一条龙
正面迎接批判
正面迎接批判
有限次重复博弈下的网络攻击行为研究
巧用哈希数值传递文件