本书围绕区块链技术的基础密码理论和安全攻防技术展开论述。全书共6章,主要内容包括区块链的基本概念及安全问题、区块链的密码学技术、区块链共识机制、比特币和以太坊等密码货币系统、区块链系统的攻击与防御等。本书从区块链基础密码学原语和共识机制入手,采用区块链“六层结构(数据层、网络层、共识层、激励层、合约层和应用层)”+“应用演变(比特币—以太坊—其他区块链应用)”框架对区块链系统面临的安全问题进行系统化阐述,有助于帮助读者从宏观上掌握区块链系统安全技术体系。
本书内容丰富,通俗易懂,可作为高等学校网络空间安全等专业的教材或者教学参考书,也可作为网络与信息安全从业人员的学习参考书。
区块链被认为是继蒸汽机、电力、互联网之后的下一代颠覆性创新技术。它利用块链式结构验证和存储数据,利用分布式共识生成和更新数据,利用密码学算法传输和访问数据,利用智能合约编程和操作数据,具有可验证、防篡改、能溯源、去中心化等特性,以较低成本解决了信任与价值的可靠传递难题,逐步成为价值互联网的重要基础设施。随着移动互联网和数字经济的飞速发展,区块链技术引起了世界各国的广泛关注,我国已将区块链技术上升为国家战略。然而,区块链技术本身固有的匿名性、分布式、开放性等难以匹配传统的安全防护模型,带来了诸多新的安全问题。当前针对区块链的攻击方式层出不穷,严重制约了区块链技术的发展与应用。
本书主要阐述区块链基础理论与安全攻防技术。全书共6章:第一章介绍区块链的基本概念及安全问题;第二章介绍区块链底层的密码学原语等;第三章介绍区块链系统中常见的共识算法;第四、五章分别介绍比特币和以太坊两类最具代表性的密码货币系统,给出从基本原理到开发示例的全面论述;第六章介绍区块链系统面临的安全威胁及其原理,并对现有防御方法进行分析归纳,提出区块链安全防御体系构建建议。
本书选材紧扣区块链基础理论,侧重于从密码学角度对区块链基础理论和关键技术展开系统阐述,按照“区块链层次结构”+“原理—应用—开发”两条主线来论述区块链技术体系,同时详尽介绍了区块链技术面临的50余种攻击方式及其内在联系,力求为读者呈现区块链系统攻防技术体系全貌。
本书主要由王剑锋、陈晓峰、王连海编写,参与本书编写的还有博士生田国华、沈珺、吴姣姣、曹艳梅、吕春阳,硕士生赵尹源、张夫猷、张萌、王一凡、宿雅萍、冯珮柔、张中俊等,在此一并向他们表示感谢。另外,本书的编写得到了山东省重点研发计划项目“区块链网络监管与安全防护关键技术”(批准号:2019JZZY020129)和西安电子科技大学科技专著出版基金资助项目的支持,特此表示感谢。
由于作者水平有限,书中不妥之处在所难免,恳请读者提出宝贵意见。
作 者
? 2022年2月于西安
第一章 绪论 1
1.1 区块链的起源与发展 2
1.1.1 区块链简介 2
1.1.2 区块链的发展历程 3
1.2 区块链的分类 4
1.3 区块链的层次结构 6
1.4 区块链的安全问题 7
参考文献 8
第二章 区块链的密码学技术 10
2.1 哈希函数 10
2.1.1 哈希函数概述 10
2.1.2 区块链中常用的哈希函数 11
2.2 数字签名 15
2.2.1 数字签名概述 16
2.2.2 区块链中常用的数字签名算法 17
2.3 Merkle树 19
2.3.1 Merkle树概述 19
2.3.2 Merkle树在区块链中的应用 20
2.4 零知识证明 20
2.4.1 零知识证明概述 21
2.4.2 零知识证明在区块链中的应用 21
参考文献 22
第三章 区块链共识机制 24
3.1 共识机制的分类 24
3.2 系统模型与特性 25
3.2.1 系统模型 25
3.2.2 成员选举共识特性 26
3.2.3 状态共识特性 27
3.3 成员选举共识 27
3.3.1 PoW 27
3.3.2 PoS 30
3.3.3 DPoS 31
3.3.4 其他成员选举共识算法 33
3.4 状态共识 43
3.4.1 中本聪共识 44
3.4.2 GHOST 45
3.4.3 拜占庭类共识算法 46
3.4.4 Paxos共识 53
3.4.5 Raft共识 55
3.4.6 基于排序的共识算法 60
3.4.7 Thunderella共识算法 62
3.4.8 混合共识算法 62
参考文献 64
第四章 区块链1.0:密码货币 68
4.1 比特币简介 68
4.2 比特币的核心概念 69
4.2.1 比特币交易 69
4.2.2 比特币脚本 73
4.3 比特币技术原理 74
4.3.1 比特币架构 74
4.3.2 数据层 75
4.3.3 网络层 79
4.3.4 共识层 80
4.3.5 激励层 82
4.3.6 应用层 83
4.4 比特币钱包 83
4.4.1 钱包概述 83
4.4.2 非确定性钱包 83
4.4.3 确定性钱包 84
4.4.4 分层确定性钱包 84
4.4.5 助记词 85
4.4.6 钱包地址生成 86
4.5 骨架协议 88
4.5.1 骨架协议的概念 88
4.5.2 骨架协议的应用 93
4.6 比特币安全 97
4.6.1 比特币安全原则 97
4.6.2 最佳用户安全实践 99
4.7 区块链应用 100
4.7.1 染色币 102
4.7.2 合约币 102
4.7.3 比特币现金 103
4.7.4 RootStock平台 103
4.7.5 HiveMind预测市场 103
4.8 其他密码货币 104
4.8.1 Primecoin 104
4.8.2 Permacoin 104
4.8.3 PPCoin 105
4.8.4 Litecoin 105
4.8.5 Zcash 106
4.8.6 Dogecoin 106
参考文献 106
第五章 区块链2.0:以太坊 108
5.1 以太坊简介 108
5.1.1 以太坊1.0 108
5.1.2 以太坊2.0 110
5.2 数据层 111
5.2.1 编码技术 111
5.2.2 数据结构 112
5.3 网络层 116
5.3.1 以太坊节点 116
5.3.2 以太坊网络 117
5.3.3 以太坊测试网络 119
5.3.4 以太坊本地私链 122
5.4 共识层 123
5.4.1 Ethash算法 123
5.4.2 Ghost协议 129
5.4.3 Casper算法 130
5.5 激励层 130
5.5.1 以太币 130
5.5.2 Gas机制 131
5.5.3 挖矿奖励 133
5.6 合约层 134
5.6.1 智能合约 134
5.6.2 运行环境 135
5.6.3 编程语言 139
5.6.4 开发环境 143
5.7 应用层 146
5.7.1 DApp概述 147
5.7.2 以太坊开发环境搭建 148
5.7.3 Geth使用 151
5.7.4 搭建以太坊私有链 153
5.7.5 以太坊编程接口 161
5.7.6 DApp开发工具及框架 167
5.7.7 Truffle开发案例:宠物商店 177
参考文献 186
第六章 区块链系统的攻击与防御 188
6.1 区块链安全态势 188
6.2 区块链数据层攻击 191
6.2.1 数据隐私窃取 191
6.2.2 恶意数据攻击 193
6.2.3 防御策略与方法 193
6.3 区块链网络层攻击 195
6.3.1 针对P2P网络的攻击 195
6.3.2 防御策略与方法 200
6.4 区块链共识层攻击 201
6.4.1 共识机制对比 201
6.4.2 针对授权共识机制的攻击 201
6.4.3 针对非授权共识机制的攻击 203
6.4.4 防御策略与方法 207
6.5 区块链合约层攻击 210
6.5.1 针对智能合约的攻击 210
6.5.2 针对合约虚拟机的攻击 214
6.5.3 智能合约安全的开源工具 215
6.5.4 防御策略与方法 218
6.6 区块链应用层攻击 219
6.6.1 挖矿场景中的攻击 220
6.6.2 区块链交易场景中的攻击 224
6.6.3 防御策略与方法 228
6.7 区块链攻击簇与安全防御体系 231
6.7.1 区块链攻击簇 235
6.7.2 区块链安全防御体系 236
参考文献 239
附录 英文缩略词中文对照 246