APP下载

区块链关键技术与应用特点

2019-04-18宋伻阳徐海水

网络安全技术与应用 2019年4期
关键词:哈希比特共识

◆宋伻阳 徐海水

(广东工业大学计算机学院 广东 510006)

0 引言

随着移动互联网时代的到来,用户数据呈爆炸式增长,在此期间互联网企业也积累了大量的用户数据,这些企业在利用这些数据为用户提供服务的同时,用户也面临着个人隐私泄露的风险,企业也形成了相对于用户的“数据霸权”;另一方面,在金融危机爆发之后,人们看到了一些国家应对危机的无力以及滥发货币对人民财产造成的损失,中本聪提出的名为比特币的电子货币以及背后的区块链技术应运而生。

在2018年5月发布的《2018年中国区块链产业白皮书》中提出,区块链技术正在推动新一轮的商业模式变革,成为诚信社会体系的重要支撑,并且在我国的《“十三五”国家信息化规划》中把区块链作为一项重点前沿技术,明确提出需加强区块链等新技术的创新、试验和应用,以实现抢占新一代信息技术的主导权。从原来的单一的金融领域区块链的应用研究,到现在与大数据,物联网相结合的区块链研究,可见区块链技术受到国家、社会、以及广泛科研人员的关注。

本文针对区块链原理、关键技术、研究现状以及应用特点进行了详细的介绍。

1 区块链概念

区块链一词源于中本聪的论文《Bitcoin:A Peer-to-Peer Electronic Cash System》。这篇论文提出了一种可信的、去中心化的电子货币系统,也就是我们熟知的比特币,而区块链技术正是此系统的核心技术。比特币能够在没有可信第三方的条件下,没有信任基础的双方可以安全地在比特币网络中使用比特币进行交易。区块链的定义可以分为两个角度:从数据存储的角度来看,区块链可以理解为一种分布式的、去信任的账本数据库;从数据结构的方向来研究,可以认为区块链是一种基于时间戳的块链结构。

基于区块链的定义,其特点有以下三点:

(1)去中心化:节点之间通信无须通过中心节点,并且每个节点存储并转发信息到其他节点,并且任一节点停止工作都不会影响系统工作。

(2)去信任:系统中所有节点之间无须信任也可以进行交易,因为数据库和整个系统的运作是公开透明的,在系统的规则和时间范围内,节点之间无法欺骗彼此。

(3)信息不可篡改:系统中每一个节点都拥有最新的完整数据库拷贝,修改单个节点的数据库是无效的,因为系统会自动比较,认为最多次出现的相同数据记录为真。

2 常见区块链平台

(1)以太坊

以太坊是一个开源的,并且提供智能合约功能的公共区块链平台。通过使用其电子货币以太币,在以太虚拟机上处理点对点合约。以太坊于2013年到2014年间由程序员Vitalik Buterin受比特币启发后提出。其最突出的特点就是它提供了一种图灵完备的语言solidity,可以使得以太坊轻松构建去中心化的应用。

(2)Hyperledger Fabric

Hyperledger是一个 Linux基础项目,为企业开发区块链技术,仅支持注册会员使用。Hyperledger是一项开源协作,旨在推动跨行业的区块链技术。这是由 Linux基金会主办的全球合作,其中包括金融、银行、物联网、供应链、制造和技术领域的领导者。Hyperledger Fabric是一个分布式账本平台方案,也是目前在Hyperledger项目下孵化的多个项目之一,主要用于运行智能合约,利用可靠的技术以及可插拔方式实现各种商业应用场景的模块化架构。目前最新版本为fabric 1.3。Fabric在1.0版本之后引入了通道的概念。在Fabric中,通过channel,即通道隔离数据,只有在这个通道的节点才能共享账本,通道外的节点不能访问该通道账本。通过建立不同的通道,可实现按需共享的目的。更符合现实生活的商业场景。表1为区块链分类对比。

表1 区块链分类对比

3 区块链分类

区块链根据准入机制和节点开放程度可以分成三类:公有链、联盟链、私有链。

( 1 )公有链

任何节点都可以加入区块链网络,并且可以读取、发送交易,同时参与共识过程。公有链是完全去中心化的网络。但是公有链共识速度慢,目前应用局限于虚拟货币。典型的公有链有比特币、以太坊。

( 2 )联盟链

节点加入网络需通过授权,根据权限不同查看信息。记账节点为多个预选节点并且存在一个或者多个信任第三方机构为其背书。联盟链是部分去中心化的网络,且适合于机构间的交易、结算等B2B场景,因此金融行业应用最广泛。其中最知名的就是Hyperledger fabric、R3区块链联盟。

( 3 )私有链

只对个别实体或个人开放,去中心化程度不高,但共识速度快,常用于企业内部的数据库管理、审计等,政府的预算和执行,或者政府的行业统计数据等。北航链就是典型的私有链。

4 区块链核心技术

4.1 区块链数据结构

(1)块链结构

区块是固定时间段内区块链网络打包的所有信息。链上的每个区块包含区块头和区块体两部分,区块头中包括当版本号、前一区块哈希值、Merkle树的根值、难度值、随机数。具体的字段描述如表2所示。区块体中则封装了在一段时间内的所有交易数据,这些交易数据通过 Merkle树的结构进行组织,具体形式参见图1。

表2 区块字段详述

哈希运算后的值HashMer kleRoot 全部交易所构成的32字节Merkle树根第三部分:区块体魔法数 比特币客户端解析数据的识别码,一般用来区分币种4字节交易数量 十分钟交易总数 1-9字节交易记录 交易详情里包含着所有笔交易的详情信息,以一条一条记录的方式记载,采用的数据结构是哈希树(默克尔树);详细记载了比特币的交易记录和相关细节不定

(2)Merkle树

Merkle树由Ralph Merkle提出,它利用数据哈希构造了一种递归的树形结构。在比特币中,每笔交易通过哈希运算转换成哈希值,作为Merkle树的叶子节点,而Merkle 树的双亲节点则由其两个或多个孩子节点的哈希值合并之后哈希得到。

4.2 密码学相关加密算法

非对称加密:即加密过程与解密过程采用不同的密钥。加密效率相对于对称加密算法来说效率较低,但是它的安全性更好。非对称加密技术在区块链中有两种用途:一是数据加密, 二是数字签名。数据加密是指将信息发送者采用信息接收者的公钥对待发送的信息进行加密后发送给接收者, 接收者采用自己对应的私钥对加密信息解密,这也是比特币的交易加密。对于比特币的数字签名,每一位比特币通过对前一次交易和下一位拥有者的公钥签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。而收款人通过对签名进行检验。

图1 区块链结构

哈希函数:又称散列函数,是对不定长的输入产生输出的一种特殊函数:h=H(M),其中 M 是变长的消息,h=H(M)是定长的散列值。散列函数H是公开的,散列值在信源处被附加在消息上,接收方通过重新计算散列值来确认消息未被篡改。哈希函数通常满足不可逆、抗碰撞、雪崩效应等特性。常见的哈希函数有MD4、MD5、SHA-0、SHA-1、SHA-2、SHA-3。在比特币中使用SHA256和RIPEMD160将公钥转化为钱包地址。

4.3 点对点网络

点对点网络又称P2P网络,它不同于传统的C/S结构,P2P网络中每个节点同时具备客户端与服务端功能节点间的通信。P2P网络根据可以分为三种网络模型:集中式、纯分布式、分层式模型,其中纯分布式模型又可以分为结构化和非结构化模型。比特币使用非结构化的gossip协议作为比特币的网络协议,其过程由种子节点开始,将自己需要更新的状态随机发送给固定数量的节点,但该节点要保证未收到过此消息,收到消息的节点也会重复该过程,直到所有节点都收到消息。在比特币网络中,节点主要有四大功能:钱包、挖矿、区块链数据库、网络路由。根据包含功能的不同可以分为以下几种节点:

比特币核心节点:Bitcoin Core,拥有全部四种功能:

全节点:Full Node,包含完整的区块链数据库,拥有钱包,区块链数据库,网络路由功能。

轻节点:Lightweight Node一般只存储部分数据库,即区块头,不存储交易数据,通过“简化交易验证(SPV)”方式完成交易校验,拥有钱包功能和网络路由功能。

独立矿工:Solo Miner,具备挖矿功能的同时,拥有完整的区块链数据库。

矿池矿工:Pool Miner,非独立挖矿,通过使用矿池挖矿协议,即Stratum协议与矿池服务器通信,矿池服务器作为全节点与比特币网络进行通信。

4.4 工作量证明共识

PoW:Proof of work,即工作量证明,此算法参考了Adam Back提出的“哈希现金”,目的是在发送邮件的同时要付出一定算力,达到抑制垃圾邮件问题的目的。不同的是,在比特币中,PoW把电子货币的发行和各个节点的共识结合在了一起。PoW原理主要是分布式系统中各个节点通过自己的算力解决一个难题,第一个算出问题答案并且通过其他节点验证的节点获得系统奖励(也就是系统发行电子货币)。各个节点通过不断尝试不同随机数Nonce,使得区块哈希值小于等于目标哈希值。如果长时间不能得到符合条件的Nonce,则更改块时间直到找到合适的Nonce。具体的算法流程如图2所示:

图2 PoW 算法流程

4.5 智能合约

智能合约本质上是一段可运行的计算机脚本,允许在没有第三方的条件下执行。智能合约在1994年由Nick Szabo提出,但是当时没有一个可信的系统可以作为智能合约的基础,2009年中本聪提出了比特币,研究人员意识到比特币可以作为一个可信的运行环境。在比特币的设计中,通过使用一种图灵非完备的、基于堆栈的脚本语言实现了交易逻辑。脚本语言通过从左至右地处理每一个项目的方式来执行脚本。数字被推送至堆栈,操作符向堆栈推送或移除一个或者多个参数,对它们进行处理。条件操作符评估一项条件,会产生一个真或假的结果。这也是智能合约最初的模型。以太坊借鉴了比特币,对其应用范围进行了扩展。可以使用Solidity,Serpent,LLC编写智能合约,然后将合约编译成EVM字节码运行。而HyperLedger智能合约可以用任何语言编写,因为Hyperledger使用Docker运行智能合约,编译后打包到 Docker镜像中。节点访问区块链必须通过智能合约,其过程是通过节点启动包含合约镜像的容器,而合约通过 getState和putState来访问区块链。

5 研究现状

比特币利用密码学加密算法、点对点网络技术、工作量证明共识以及基于堆栈的脚本系统实现了去中心化的电子货币,是第一个杀手级区块链应用。现阶段的区块链技术研究集中在隐私保护、共识算法以及具体场景的区块链应用等几个方面。现阶段区块链应用场景在下一节具体阐述。

5.1 隐私保护

对于交易数据公开地存储在所有记账节点上的做法,虽然起到了防止数据篡改的作用,但也同时带来了隐私泄露的问题。在比特币中,虽然会使用假名身份,但是通过启发式武器库可以将不同的比特币交易连接到普通用户,并且在许多情况下,可以将该用户的真实世界身份连接起来,这对于个人隐私来说是致命的。针对区块链的个人隐私保护,现阶段已提出诸多解决方案:

(1)混币技术

混币技术的原理是将多个用户多个输入输出地址混合,使得攻击者无法找到确定的输入地址和输出地址,从而达到匿名身份特性。比较典型的混币方案有 Mixcoin、CoinJoin、Dash、CoinShuffle等。Mixcoin利用中央混合服务器实现交易地址的混合,并且交易的金额相同,增加了匿名性。CoinJoin通过第三方平台将多笔交易合并为一笔交易,从而隐藏输入地址和输出地址的关联性。Dash币的方案中引入了多个主节点来保护隐私,将多个主节点组成一条链,链首接收输入地址,链尾提供输出地址,攻击者入侵任意主节点都不会同时得到输入地址和输出地址。用户在发送交易请求时以固定时间间隔发送,隐藏了用户的交易习惯。CoinShuffle中多个节点组成去中心化网络,该网络中的每个节点将按照一定顺序依次打乱输入输出地址的顺序,然后在该网络广播(使用其他用户密钥加密过的)地址列表。

(2)环签名

环签名是一种特殊的群签名,它没有群管理者。环签名最初是由Rivest根据“如何安全地匿名泄密”这一问题提出的解决方案,得到了学者广泛关注,并且提出了门限环签名、代理环签名等概念。环签名过程是首先确定一个临时的成员集合(包括匿名泄密者),集合中每个成员都有自己的公私钥对,然后匿名泄密者利用自己的私钥和集合中所有成员的公钥对消息进行签名,环签名由于它的自发性、无条件匿名性和群特性具有广泛的应用领域,如门罗币在它的 CryptoNote协议中由 RingCT实现了环签名技术。

(3)零知识证明

零知识证明是由S.Goldwasser、S.Micali及C.Rackoff提出。可以在不透露消息的情况下,证明者可以向验证者证明某个论断是正确的。对于零知识证明在区块链也有诸多尝试。Miers等人提出了基于零知识证明的零币协议Zerocoin,Sasson等人提出了基于非交互性零知识证明技术 zk-SNARK的零钞方案 Zerocash以及Kosba等人提出的Hawk方案。

(4)其他方案

还有一些其他方案做到了区块链的隐私保护,如比特币的闪电网络只记录第一次与最后一次交易,直接用减少数据库的交易记录保护个人隐私,微软的Coco框架加强了对智能合约的隐私保护。

5.2 共识算法

(1)股权证明算法PoS

PoS:Proof-of-Stake,股权证明。PoS最先由点点币投入使用。该算法通过计算节点持有币的数量和时间的乘积,即币龄,用来作为获得记账权的标准。节点在获得记账权之后币龄会清空,每清空规定数量币龄会得到相应奖励。由此可见,PoS依靠最大币龄获得记账权,这与PoW使用最高算力获取记账权有很大不同,这使得即使攻击节点获得强大算力也无法对使用 PoS共识的区块链系统进行攻击。由PoS共识衍生出的还有Tendermint、Casper、Ouroboros等。

(2)股权授权证明算法DPOS

DPoS:Delegated Proof-of-Stake,股份授权证明。此算法由比特股Bitshares提出,让每个持有币的人对系统中的注册的受托人投票,获得票最多的101个受托人将对交易进行打包计算。这与人民代表大会制度类似,选出的受托人在进行高效共识的同时,还可避免资源的浪费。

(3)拜占庭容错算法

PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错。PBFT由MIT的Miguel和Barbara Liskov提出,是一种状态机副本复制算法,状态机在分布式系统的不同节点进行副本复制。PBFT可以分为请求、预准备、准备、提交这四个阶段。

(4)Paxos与Raft算法

Paxos由Lamport提出,使用了提案-批准的两阶段提交模型,通过三种角色和多轮交互保证消息内容和顺序一致。Paxos及其变种Raft算法都是通过对状态机的复制实现容错(如表3)。

表3 共识算法对比

6 应用场景

6.1 能源治理

如何利用区块链技术解决能源转型和可再生能源的利用问题已经成为区块链的研究热点之一,Caroline Plaza和Julien Gil提出了一种基于区块链的解决方案,通过定义能量交换规则,利用智能计量基础设施作为能源数据可信赖方,解决能源治理问题。PowerLedger项目中提出了双区块链层次结构:在公共层,利用以太坊区块链将微电网生态系统与其他代币的交换联系起来;另一区块链层次结构使用PowerLedger生态链,令应用程序在链上实现能源交易。

6.2 身份认证

域名系统和证书颁发机构在实现中可能存在安全性和信任问题。针对这些问题,麻省理工学院的CertCoin项目是第一个基于区块链技术的PKI实施。CertCoin删除中心化CA并使用区块链将其替换为分布式账本存储域名和公钥。Enis Karaarslan 和Eylul Adiguzel提出了基于区块链的域名系统(DNS)和分布式的公钥基础设施(DPKI)。

6.3 文件存储

在文件存储方面区块链依然有大胆的尝试。ChainSQL设计了具有区块链去中心化,同时具有可审计、数据库的快速查询特性的数据库应用平台。星际文件系统(IPFS)针对HTTP协议低效、高成本等弊端,发明了基于区块链且使用内容寻址方式的去中心化的存储网络。

6.4 物联网

物联网经过长期发展,为智慧城市,智能家电等领域提供了有效的解决方案。但是仍然面临网络信任体系难以建立、安全性差,设备维护升级难度大等问题,同时考虑到数据中心运营成本高的问题,Shuling Li等人提出了一种基于区块链的轻量级备份架构。在乘坐共享方面,现有的AV/IoT设备通常需要可信第三方,这会引发信任问题,CoT框架利用HyperLedger Fabric构建了安全可靠的服务。

6.5 社交通信

在主流的社交媒体已经被少数几个互联网巨头所垄断的情况下,建立一个去中心化的社交体系逐渐成为新的技术诉求。比特信提出了基于 P2P的去中心化且无需第三方提供信用担保的协议,通过隐藏非内容数据的方式保护个人隐私。BeeChat基于量子链,构建了为用户提供加密即时通讯、新闻资讯、加密钱包多元化社区服务。

7 存在的问题与挑战

7.1 安全问题

共识算法的安全隐患:在使用PoW共识的初期,极易受到51%的算力攻击,这样可以通过控制超过50%的算力来伪造区块使之成为最长链,从而撤销已生成的区块来达到攻击的目的,后期根据51%攻击延伸出了自私挖矿和坚强挖矿等攻击手段。使用PoS共识虽然可以避免PoW的资源浪费以及免受51%算力攻击,但是容易受到权益粉碎攻击。PoS共识的核心思想是在区块链中的最大利益相关者获取挖矿权,就会使得矿工间的贫富差距加大,令少数富有矿工决定区块的生成,这与区块链的去中心化思想极为不符。因为DPoS的共识节点有限的问题,所以DPoS还面临着中心化的安全风险。

智能合约的安全漏洞:由于智能合约使用了图灵完备的语言,使得合约更容易产生漏洞,如著名的DAO安全漏洞。有安全漏洞的智能合约可分为浪子合约、贪婪合约、自杀合约、死后合约等,如何有效的规避每种智能合约漏洞,是当今区块链亟待解决的问题之一。

7.2 隐私问题

虽然针对比特币的假名系统提出了许多隐私保护的解决方案,但仍面临着一些问题。比如一些混币方案去中心化不足和零知识证明验证时间过长以至于应用受限等,同时随着数据分析技术的发展,通过分析交易匿名集方法将输入输出交易进行关联,这对区块链的隐私保护提出了更高要求。

7.3 效率问题

由于公有链的共识过程全网节点的验证,随着网络节点的增加,共识速度会更加缓慢。目前比特币的TPS为7笔/秒,与支付宝等交易软件的速度相差甚远。这与由于区块链使用了全节点备份,使得共识过程要通过全网大部分节点验证,并且要经过六次确认之后交易才生效,这使得交易上链变得极为缓慢,从而也导致区块链不适用于对时间敏感的应用场景。如何在兼顾安全性的同时提高共识效率,这是区块链应用落地的关键问题。

猜你喜欢

哈希比特共识
基于特征选择的局部敏感哈希位选择算法
共识 共进 共情 共学:让“沟通之花”绽放
哈希值处理 功能全面更易用
论思想共识凝聚的文化向度
文件哈希值处理一条龙
商量出共识
比特币还能投资吗
比特币分裂
比特币一年涨135%重回5530元
巧用哈希数值传递文件