购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 区块链的工作原理及底层技术

作为近几年兴起的新技术,区块链的技术细节还没有被大多数人了解。在学习区块链技术之前,有必要先介绍区块链的工作原理及底层技术。

1.1.1 分布式系统的概念

所有的区块链应用都是分布式系统。分布式系统是指建立在网络之上的软件系统,但是我们不能简单地把分布式系统理解为使用网络的软件系统。传统意义上的网络应用都是独立运行的,系统与系统之间往往只进行简单的数据交互。

而在分布式系统中,一组独立的计算机按照统一的规则,各司其职、密切配合,呈现给用户的是一个统一的整体,就好像只有一个服务器一样。

在大数据、云计算、物联网和本书所介绍的区块链技术等领域,分布式系统得到了广泛应用。由于篇幅所限,这里不做深入讨论,仅简单介绍分布式系统的概念。

比特币和以太坊都是由遍布全球的节点组成的分布式系统。在运转过程中,有的节点记账,有的节点验证交易、同步数据。用户在交易时感觉不到这些节点的存在和分工。

1.1.2 区块链技术的总体架构

区块链技术的总体架构和分类

“区块链”一词最早出现在中本聪的论文《比特币:一种点对点的电子现金系统》中,其中描述了一个完全不依赖任何第三方金融系统的、点对点的电子现金系统。这篇论文被视为比特币的白皮书,也有人称之为区块链的“创世圣经”。

在这篇论文中,中本聪对比特币网络的工作原理做了以下描述。

(1)我们可以把每一台参与组成比特币系统的计算机称为节点。

(2)每个节点将新交易收集到一个区块中。

(3)节点可以创建链上的下一个区块,并使用当前区块的哈希值作为新区块的“前一个哈希”字段值。

第3句话可以这样理解:对一个区块中的数据计算哈希值,并将其指向下一个区块的头部。用这种方式可以将区块串联成一个链条,这就是所谓的区块链,其示意如图1-1所示。为了便于理解,区块中包含的数据是经过简化的。

图1-1 区块链示意

哈希算法是一种加密算法,所谓“哈希值”是指数据经过哈希算法处理的结果。哈希算法将在1.1.3小节介绍。

从整体架构的角度来看,区块链应用可以分为存储层、网络层、扩展层和应用层4个层次,具体如图1-2所示。

图1-2 区块链的架构设计

1.存储层

存储层主要实现区块链的存储功能,其中涉及数据存储(存储格式、区块大小)和加密算法等技术细节。

2.网络层

网络层实现分布式网络编程,涉及网络通信(点对点通信)协议和共识算法等技术细节。共识算法包括比特币采用的工作量证明(Proof of Work,PoW,即谁的算力大,就由谁记账)和以太坊采用的权益证明(Proof of Stake,PoS,即谁的股权多,就由谁记账)。在分布式系统中,还有一个很常用的共识算法,就是投票,其会通过节点投票达成共识。

3.扩展层

扩展层是对经典区块链技术的补充和扩展。企业级应用是区块链扩展层的一个主要的发展方向。区块链技术在发展初期,应用场景多为公有链项目,所有人都可以选择参与。正因为这样,那时候很少有企业愿意应用区块链技术。另外一个因素,就是没有专门针对企业应用的区块链项目,而公有链项目大多需要使用数字货币支付。数字货币的价值浮动太大,企业很难控制项目的成本。

以Hyperledger Fabric为代表的具有完备权限控制和安全保障的企业级区块链,可以解决企业间的信用问题。产业链上下游的各环节,都可能发生企业间的信息交互和配合,如果用传统的线下记账方式,显然是低效的。很多企业都有自己的信息系统,但是它们彼此隔离,形成了一个个的“信息孤岛”。打通这些信息孤岛的成本是巨大的,而且存在彼此之间的信用问题。联盟链由产业链中相关企业共同开发、建设,信息上链后不可随意修改,可以解决企业间的信用问题。只要对相关企业做好科普工作,就可以大大提高企业间相互配合的效率,打通一个个信息孤岛,最终形成行业大数据。

4.应用层

应用层主要负责实现区块链技术在生产、交易、流通和社会生活中的应用。目前,区块链技术大规模应用的条件还不成熟。比较经典的区块链应用包括金融交易、存证、溯源、数字资产、公益(如慈善募捐、众筹等)等。

● 金融交易:区块链技术起源于数字货币,目前应用极为广泛的领域之一是金融交易,比如各种数字货币的钱包和交易所。支付宝、微信支付等平台都推出了与区块链相关的应用。

● 存证:区块链具有时间戳和不可篡改的特性,这两个特性决定了区块链技术可以用于数据的存证。目前在电子合同和知识产权等应用中已经使用区块链技术实现存证。

● 溯源:在商品流通的过程中,其通常要经过厂家(农户)、批发商、物流、仓储、零售商等诸多环节才能最终来到消费者手中,无论哪个环节出现问题都可能影响商品的质量。基于区块链的存证功能,可以将商品在各个环节的流通信息上链存证,从而有效避免假冒伪劣的情况发生。

● 数字资产:除了数字货币,现实生活中的一切资产都可以上链存证。链上数字资产流通(确权和转让)也是区块链技术的经典应用场景。

● 公益:公益活动对公平、公正、公开的要求很高,采用区块链技术可以有效地记录、保障善款的流向和使用,因此慈善募捐和众筹也是区块链技术的经典应用场景。

1.1.3 加密算法

加密算法

加密算法是区块链领域的核心技术,是将区块连成链的关键,也是数据防篡改和操作不可抵赖的算法保障。

从工作原理的角度划分,目前常见的加密算法可以分为三类:除了1.1.2小节提及的哈希算法,还包括对称加密算法和非对称加密算法。从算法来源的角度划分,加密算法可以分为两类:国际加密算法和国密算法。如果没有明确说明,则本小节介绍的加密算法均指国际加密算法。

1.哈希算法

哈希算法可以将不同长度的数据映射为固定长度的数据。常用的哈希算法包括MD5、SHA1、SHA-224、SHA-256、SHA-384、SHA-512和 SM3(国产哈希算法)。这些算法支持的最大待处理消息长度与得到的摘要数据长度各不相同,具体如表1-1所示。

表1-1 各种哈希算法支持的最大待处理消息长度与得到的摘要数据长度

例如,比特币系统中采用SHA-256算法计算区块的摘要信息。

为了演示哈希算法的效果,可以搜索在线哈希计算网站来查看对数据进行MD5处理的效果。编者随机选择了一个网站,如图1-3所示。

在左侧文本框中输入待处理的数据,单击“加密”按钮,右侧文本框中即会出现摘要数据。

图1-3 在线哈希计算网站对数据进行MD5处理

MD5被称为单向加密算法,这是因为MD5的处理结果并不能被解密出原始数据。很多所谓的MD5解密工具实际上是将已知的MD5处理结果保存在字典中,然后根据字典中的结果数据反推出原始数据,也就是暴力破解。MD5处理结果实际上是原始数据的唯一特征值。这个特征值通常被称为数字指纹,它可以标识原始数据是否被修改,因为哈希算法具有很强的抗碰撞能力。也就是说,2个不同的数据,它们具有相同数字指纹的可能性非常小。

例如,表1-2所示是一组对数据进行MD5处理的结果。

表1-2 一组对数据进行MD5处理的结果

可以看到,无论是非常短的数据(例如1)还是大段的文字,经过MD5处理,都会得到一个32位的十六进制字符串。有人对这种情况做了形象的比喻:无论是蚂蚁还是大象,在经过MD5处理后都会得到一只猴子。

可能有的读者已经注意到了,在图1-3所示的网页中,可以选择摘要数据为16位的十六进制数据。实际上16位摘要数据是从32位摘要数据中截取(9~24位)出来的。

2.对称加密算法

对称加密算法是使用密钥对数据进行加解密的算法。之所以称之为对称加密算法,是因为加密方和解密方使用相同的密钥。对称加密算法的加解密过程如图1-4所示。

图1-4 对称加密算法的加解密过程

常见的对称加密算法有DES、3DES和AES等。

对称加密算法的优点是算法公开、计算量小、加密速度快、解密效率高;缺点是一旦密钥丢失,加密的信息将被公开,而且无法证明信息是谁发送的,因为双方都拥有同样的密钥。

通常,区块链应用中不会使用对称加密算法。

3.非对称加密算法

顾名思义,非对称加密算法就是加密方和解密方使用不同的密钥的算法。这一对密钥分别被称为公钥和私钥。私钥是保密的,只有它的拥有者才知道。公钥由私钥生成,可以公开。公钥和私钥是匹配的一对。非对称加密算法包括下面两种应用方法。

(1)当向一个用户A发送数据时,可以使用他的公钥对数据进行加密。然后将加密数据发送给用户A。用户A收到加密数据后,使用私钥进行解密。因为数据是使用用户A的公钥加密的,所以只能使用与公钥相匹配的私钥解密,其他人即使截获了加密数据也无法解密,从而实现数据传输的安全性。但是,用户A的公钥是公开的,很多人都知道,用公钥加密的数据不能证明发送者的身份。这就引入了非对称加密算法的第2种应用——数字签名。

(2)当向一个用户A发送数据时,可以首先对数据进行哈希加密,然后使用用户B的私钥对哈希摘要数据进行二次加密。使用用户B的私钥对数据进行加密,所有拥有其公钥的用户都可以解密。但是解密得到的是原始数据的哈希摘要,而哈希摘要是不可逆的,因此这么做并不会泄露原始数据。但是其他人使用用户B的公钥可以解密数据,这就证明了这条数据是用户B发送的,因为只有他拥有私钥。这就是数字签名的过程。

非对称加密算法的应用如图1-5所示。

图1-5 非对称加密算法的应用

4.国密算法

密码学在相当长的一段时间内都作为军用科技被各国政府严密管控。随着经济的发展,企业对于商用密码的需求愈发强烈。为保障商用密码的安全性,国家密码管理局制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)等。在《中华人民共和国网络安全法》中规定:“国家实行网络安全等级保护制度。”

在进行等级保护评测时,要求被评测系统对敏感数据使用国密算法加密。国密算法的基本情况如下,读者可以在需要时选择使用。

● SM1:对称加密算法,密钥长度为128bit,算法不公开,固化在芯片中。

● SM2:开源的非对称加密算法,可以用于数据的加解密和数字签名。

● SM3:开源的哈希算法,用于生成数据摘要。

● SM4:开源的对称分组加密算法,密钥长度为128bit。

● SM7:对称分组加密算法,密钥长度为128bit,适用于非接触式IC卡。

● SM9:标识密码算法,标识密码将用户的标识(如邮件地址、手机号码、QQ号码、微信账号等)作为公钥,省略交换数字证书和公钥的过程,使安全系统变得易于部署和管理,非常适合端对端离线安全通信。

● ZUC:我国自主研究的流密码算法,是运用于移动通信网络中的国际标准密码算法。

1.1.4 区块链的分类

区块链可以分为公有链、私有链和联盟链3种类型。

1.公有链

任何人都可以参与公有链的运作,其包括以下操作。

● 读取区块中的数据。

● 发起交易。

● 作为“矿工”参与“挖矿”。

公有链可以最大程度地实现去中心化,但是由于参与的节点太多,因此运行效率通常较低。比特币和以太坊都是公有链。

2.私有链

私有链是由特定组织控制的区块链,整个网络由该组织的成员机构组成。共识算法由指定的一组节点完成。私有链只有一定限度的去中心化特性,通常用于企业内部的经营和管理。私有链可以有效地保护企业的商业秘密;因为参与共识过程的节点比较少,所以交易速度很快,而且不需要给矿工支付交易的手续费,成本较低。

3.联盟链

联盟链是各机构(企业)共同搭建的区块链,适用于商业伙伴之间的交易、结算和清算等B2B应用场景。本书的主题Hyperledger Fabric区块链就是知名的联盟链。

对企业而言,需要考虑区块链的以下需求。

● 参与者必须经过认证,已经被标识或可以被标识。

● 需要对参与者进行授权。

● 可以高效地处理交易,以免影响商机。

● 低时延的交易确认,以便交易可以快速地记录在区块链中。

● 交易数据的隐私性和保密性应满足商务交易的需求。

本书后面将讲解Hyperledger Fabric区块链是如何实现这些需求的。 OrZq3E3yZ2op9CK4aIhaShU6/jLeyVIvjlGo/7vCnoP3h2HOnsB9sFdO8UzvSVNZ

点击中间区域
呼出菜单
上一章
目录
下一章
×