本書圍繞區(qū)塊鏈技術(shù)的基礎(chǔ)密碼理論和安全攻防技術(shù)展開論述。全書共6章,主要內(nèi)容包括區(qū)塊鏈的基本概念及安全問題、區(qū)塊鏈的密碼學(xué)技術(shù)、區(qū)塊鏈共識(shí)機(jī)制、比特幣和以太坊等密碼貨幣系統(tǒng)、區(qū)塊鏈系統(tǒng)的攻擊與防御等。本書從區(qū)塊鏈基礎(chǔ)密碼學(xué)原語和共識(shí)機(jī)制入手,采用區(qū)塊鏈“六層結(jié)構(gòu)(數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層和應(yīng)用層)”+“應(yīng)用演變(比特幣—以太坊—其他區(qū)塊鏈應(yīng)用)”框架對區(qū)塊鏈系統(tǒng)面臨的安全問題進(jìn)行系統(tǒng)化闡述,有助于幫助讀者從宏觀上掌握區(qū)塊鏈系統(tǒng)安全技術(shù)體系。
本書內(nèi)容豐富,通俗易懂,可作為高等學(xué)校網(wǎng)絡(luò)空間安全等專業(yè)的教材或者教學(xué)參考書,也可作為網(wǎng)絡(luò)與信息安全從業(yè)人員的學(xué)習(xí)參考書。
區(qū)塊鏈被認(rèn)為是繼蒸汽機(jī)、電力、互聯(lián)網(wǎng)之后的下一代顛覆性創(chuàng)新技術(shù)。它利用塊鏈?zhǔn)浇Y(jié)構(gòu)驗(yàn)證和存儲(chǔ)數(shù)據(jù),利用分布式共識(shí)生成和更新數(shù)據(jù),利用密碼學(xué)算法傳輸和訪問數(shù)據(jù),利用智能合約編程和操作數(shù)據(jù),具有可驗(yàn)證、防篡改、能溯源、去中心化等特性,以較低成本解決了信任與價(jià)值的可靠傳遞難題,逐步成為價(jià)值互聯(lián)網(wǎng)的重要基礎(chǔ)設(shè)施。隨著移動(dòng)互聯(lián)網(wǎng)和數(shù)字經(jīng)濟(jì)的飛速發(fā)展,區(qū)塊鏈技術(shù)引起了世界各國的廣泛關(guān)注,我國已將區(qū)塊鏈技術(shù)上升為國家戰(zhàn)略。然而,區(qū)塊鏈技術(shù)本身固有的匿名性、分布式、開放性等難以匹配傳統(tǒng)的安全防護(hù)模型,帶來了諸多新的安全問題。當(dāng)前針對區(qū)塊鏈的攻擊方式層出不窮,嚴(yán)重制約了區(qū)塊鏈技術(shù)的發(fā)展與應(yīng)用。
本書主要闡述區(qū)塊鏈基礎(chǔ)理論與安全攻防技術(shù)。全書共6章:第一章介紹區(qū)塊鏈的基本概念及安全問題;第二章介紹區(qū)塊鏈底層的密碼學(xué)原語等;第三章介紹區(qū)塊鏈系統(tǒng)中常見的共識(shí)算法;第四、五章分別介紹比特幣和以太坊兩類最具代表性的密碼貨幣系統(tǒng),給出從基本原理到開發(fā)示例的全面論述;第六章介紹區(qū)塊鏈系統(tǒng)面臨的安全威脅及其原理,并對現(xiàn)有防御方法進(jìn)行分析歸納,提出區(qū)塊鏈安全防御體系構(gòu)建建議。
本書選材緊扣區(qū)塊鏈基礎(chǔ)理論,側(cè)重于從密碼學(xué)角度對區(qū)塊鏈基礎(chǔ)理論和關(guān)鍵技術(shù)展開系統(tǒng)闡述,按照“區(qū)塊鏈層次結(jié)構(gòu)”+“原理—應(yīng)用—開發(fā)”兩條主線來論述區(qū)塊鏈技術(shù)體系,同時(shí)詳盡介紹了區(qū)塊鏈技術(shù)面臨的50余種攻擊方式及其內(nèi)在聯(lián)系,力求為讀者呈現(xiàn)區(qū)塊鏈系統(tǒng)攻防技術(shù)體系全貌。
本書主要由王劍鋒、陳曉峰、王連海編寫,參與本書編寫的還有博士生田國華、沈珺、吳姣姣、曹艷梅、呂春陽,碩士生趙尹源、張夫猷、張萌、王一凡、宿雅萍、馮珮柔、張中俊等,在此一并向他們表示感謝。另外,本書的編寫得到了山東省重點(diǎn)研發(fā)計(jì)劃項(xiàng)目“區(qū)塊鏈網(wǎng)絡(luò)監(jiān)管與安全防護(hù)關(guān)鍵技術(shù)”(批準(zhǔn)號(hào):2019JZZY020129)和西安電子科技大學(xué)科技專著出版基金資助項(xiàng)目的支持,特此表示感謝。
由于作者水平有限,書中不妥之處在所難免,懇請讀者提出寶貴意見。
作 者
? 2022年2月于西安
第一章 緒論 1
1.1 區(qū)塊鏈的起源與發(fā)展 2
1.1.1 區(qū)塊鏈簡介 2
1.1.2 區(qū)塊鏈的發(fā)展歷程 3
1.2 區(qū)塊鏈的分類 4
1.3 區(qū)塊鏈的層次結(jié)構(gòu) 6
1.4 區(qū)塊鏈的安全問題 7
參考文獻(xiàn) 8
第二章 區(qū)塊鏈的密碼學(xué)技術(shù) 10
2.1 哈希函數(shù) 10
2.1.1 哈希函數(shù)概述 10
2.1.2 區(qū)塊鏈中常用的哈希函數(shù) 11
2.2 數(shù)字簽名 15
2.2.1 數(shù)字簽名概述 16
2.2.2 區(qū)塊鏈中常用的數(shù)字簽名算法 17
2.3 Merkle樹 19
2.3.1 Merkle樹概述 19
2.3.2 Merkle樹在區(qū)塊鏈中的應(yīng)用 20
2.4 零知識(shí)證明 20
2.4.1 零知識(shí)證明概述 21
2.4.2 零知識(shí)證明在區(qū)塊鏈中的應(yīng)用 21
參考文獻(xiàn) 22
第三章 區(qū)塊鏈共識(shí)機(jī)制 24
3.1 共識(shí)機(jī)制的分類 24
3.2 系統(tǒng)模型與特性 25
3.2.1 系統(tǒng)模型 25
3.2.2 成員選舉共識(shí)特性 26
3.2.3 狀態(tài)共識(shí)特性 27
3.3 成員選舉共識(shí) 27
3.3.1 PoW 27
3.3.2 PoS 30
3.3.3 DPoS 31
3.3.4 其他成員選舉共識(shí)算法 33
3.4 狀態(tài)共識(shí) 43
3.4.1 中本聰共識(shí) 44
3.4.2 GHOST 45
3.4.3 拜占庭類共識(shí)算法 46
3.4.4 Paxos共識(shí) 53
3.4.5 Raft共識(shí) 55
3.4.6 基于排序的共識(shí)算法 60
3.4.7 Thunderella共識(shí)算法 62
3.4.8 混合共識(shí)算法 62
參考文獻(xiàn) 64
第四章 區(qū)塊鏈1.0:密碼貨幣 68
4.1 比特幣簡介 68
4.2 比特幣的核心概念 69
4.2.1 比特幣交易 69
4.2.2 比特幣腳本 73
4.3 比特幣技術(shù)原理 74
4.3.1 比特幣架構(gòu) 74
4.3.2 數(shù)據(jù)層 75
4.3.3 網(wǎng)絡(luò)層 79
4.3.4 共識(shí)層 80
4.3.5 激勵(lì)層 82
4.3.6 應(yīng)用層 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 骨架協(xié)議 88
4.5.1 骨架協(xié)議的概念 88
4.5.2 骨架協(xié)議的應(yīng)用 93
4.6 比特幣安全 97
4.6.1 比特幣安全原則 97
4.6.2 最佳用戶安全實(shí)踐 99
4.7 區(qū)塊鏈應(yīng)用 100
4.7.1 染色幣 102
4.7.2 合約幣 102
4.7.3 比特幣現(xiàn)金 103
4.7.4 RootStock平臺(tái) 103
4.7.5 HiveMind預(yù)測市場 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
參考文獻(xiàn) 106
第五章 區(qū)塊鏈2.0:以太坊 108
5.1 以太坊簡介 108
5.1.1 以太坊1.0 108
5.1.2 以太坊2.0 110
5.2 數(shù)據(jù)層 111
5.2.1 編碼技術(shù) 111
5.2.2 數(shù)據(jù)結(jié)構(gòu) 112
5.3 網(wǎng)絡(luò)層 116
5.3.1 以太坊節(jié)點(diǎn) 116
5.3.2 以太坊網(wǎng)絡(luò) 117
5.3.3 以太坊測試網(wǎng)絡(luò) 119
5.3.4 以太坊本地私鏈 122
5.4 共識(shí)層 123
5.4.1 Ethash算法 123
5.4.2 Ghost協(xié)議 129
5.4.3 Casper算法 130
5.5 激勵(lì)層 130
5.5.1 以太幣 130
5.5.2 Gas機(jī)制 131
5.5.3 挖礦獎(jiǎng)勵(lì) 133
5.6 合約層 134
5.6.1 智能合約 134
5.6.2 運(yùn)行環(huán)境 135
5.6.3 編程語言 139
5.6.4 開發(fā)環(huán)境 143
5.7 應(yīng)用層 146
5.7.1 DApp概述 147
5.7.2 以太坊開發(fā)環(huán)境搭建 148
5.7.3 Geth使用 151
5.7.4 搭建以太坊私有鏈 153
5.7.5 以太坊編程接口 161
5.7.6 DApp開發(fā)工具及框架 167
5.7.7 Truffle開發(fā)案例:寵物商店 177
參考文獻(xiàn) 186
第六章 區(qū)塊鏈系統(tǒng)的攻擊與防御 188
6.1 區(qū)塊鏈安全態(tài)勢 188
6.2 區(qū)塊鏈數(shù)據(jù)層攻擊 191
6.2.1 數(shù)據(jù)隱私竊取 191
6.2.2 惡意數(shù)據(jù)攻擊 193
6.2.3 防御策略與方法 193
6.3 區(qū)塊鏈網(wǎng)絡(luò)層攻擊 195
6.3.1 針對P2P網(wǎng)絡(luò)的攻擊 195
6.3.2 防御策略與方法 200
6.4 區(qū)塊鏈共識(shí)層攻擊 201
6.4.1 共識(shí)機(jī)制對比 201
6.4.2 針對授權(quán)共識(shí)機(jī)制的攻擊 201
6.4.3 針對非授權(quán)共識(shí)機(jī)制的攻擊 203
6.4.4 防御策略與方法 207
6.5 區(qū)塊鏈合約層攻擊 210
6.5.1 針對智能合約的攻擊 210
6.5.2 針對合約虛擬機(jī)的攻擊 214
6.5.3 智能合約安全的開源工具 215
6.5.4 防御策略與方法 218
6.6 區(qū)塊鏈應(yīng)用層攻擊 219
6.6.1 挖礦場景中的攻擊 220
6.6.2 區(qū)塊鏈交易場景中的攻擊 224
6.6.3 防御策略與方法 228
6.7 區(qū)塊鏈攻擊簇與安全防御體系 231
6.7.1 區(qū)塊鏈攻擊簇 235
6.7.2 區(qū)塊鏈安全防御體系 236
參考文獻(xiàn) 239
附錄 英文縮略詞中文對照 246