本書共10章,主要介紹密碼學的基本原理與設計方法,其中包括對稱密碼算法與非對稱密碼算法、數字簽名算法及哈希函數的設計原理、密鑰管理體制的設計方法,以及主流密碼庫的使用說明等。本次修訂的內容體現在第2章至第10章,特別新增了中國流密碼、國產分組密碼、認證加密、基于屬性的加密、國產公鑰加密、國產哈希算法、基于屬性的數字簽名、國產數字簽名、后量子簽名、國產密鑰交換協議、聚合簽名、旁路攻擊和掩碼防護技術,以及全同態(tài)運算密碼庫和雙線性對運算密碼庫等內容。本書涵蓋了傳統密碼體制、基于屬性的密碼體制、后量子密碼、抗泄露對稱密碼、主要的國產密碼算法和主流密碼庫,體現了經典與前沿熱點相融合、理論與應用相結合的特色。本書可作為高等院校計算機、信息安全和網絡空間安全等專業(yè)本科生的教材,也可作為電子信息與通信和信息管理等專業(yè)研究生的選讀教材,還可供信息安全、計算機及通信等領域的工程技術人員和管理人員參考。
鄭東,教授,西安郵電大學網絡安全學院副院長(主持工作)。任中國密碼學會理事、中國密碼學會教育與科普委員會副主任委員、陜西省百人計劃特聘專家。主持國家級項目多項。
第1章 密碼學引論 1
1.1 密碼學在信息安全中的作用 2
1.1.1 信息安全面臨的威脅 2
1.1.2 信息安全需要的基本安全服務 3
1.2 密碼學導引 3
1.2.1 密碼學歷史 3
1.2.2 密碼學基本概念 4
1.2.3 密碼體制的分類 4
1.3 信息論基本概念 5
1.4 計算復雜性 7
本章小結 8
參考文獻 8
問題討論 9
第2章 流密碼 10
2.1 概述 11
2.2 流密碼的結構 12
2.2.1 同步流密碼 12
2.2.2 自同步流密碼 13
2.3 反饋移位寄存器與線性反饋移位寄存器 13
2.3.1 反饋移位寄存器 13
2.3.2 線性反饋移位寄存器 14
2.3.3 LFSR示例 15
2.3.4 m序列與最長移位寄存器 17
2.3.5 m序列的破譯 18
2.3.6 最新研究方向 19
2.4 偽隨機序列的性質 20
2.4.1 隨機序列 20
2.4.2 Golomb隨機性公設 21
2.4.3 m序列的偽隨機性 21
2.4.4 線性復雜度 22
2.5 基于LFSR的偽隨機序列生成器 23
2.5.1 濾波生成器 23
2.5.2 組合生成器 23
2.5.3 鐘控生成器 24
2.6 其他構造方法 24
2.6.1 勒讓德序列 25
2.6.2 橢圓曲線序列 25
2.7 實用流密碼 26
2.7.1 A5算法 27
2.7.2 RC4算法 29
2.7.3 中國流密碼 31
2.7.4 歐洲序列密碼計劃(eStream) 34
本章小結 36
參考文獻 36
問題討論 37
第3章 分組密碼 38
3.1 分組密碼概述 39
3.2 分組密碼的研究現狀 39
3.3 分組密碼的設計原理 40
3.3.1 乘積組合 40
3.3.2 擴散 40
3.3.3 混淆 40
3.4 數據加密標準DES 41
3.4.1 DES簡介 41
3.4.2 DES加密算法 41
3.4.3 初始置換IP和逆序置換 43
3.4.4 輪函數 43
3.4.5 擴展E變換 44
3.4.6 S盒 44
3.4.7 P盒 46
3.4.8 子密鑰的產生 47
3.4.9 DES解密算法 48
3.4.10 DES的弱密鑰 49
3.4.11 DES示例 49
3.4.12 三重DES的變形 50
3.5 國際數據加密算法 51
3.5.1 IDEA算法的特點 51
3.5.2 基本運算單元 52
3.5.3 IDEA的速度 53
3.5.4 IDEA加密過程 53
3.5.5 IDEA的每一輪迭代 54
3.5.6 輸出變換 55
3.5.7 子密鑰的生成 56
3.5.8 IDEA解密過程 56
3.6 AES算法Rijindael 56
3.6.1 算法結構 57
3.6.2 Rijindael加密過程 58
3.6.3 輪函數 59
3.6.4 字節(jié)替換 59
3.6.5 行移位 60
3.6.6 列混合 61
3.6.7 輪密鑰加 62
3.6.8 子密鑰的產生 62
3.6.9 Rijindael解密過程 63
3.6.10 小結 64
3.7 SM4算法 64
3.8 分組密碼工作模式 67
3.8.1 電子密碼本模式 67
3.8.2 密文塊鏈接模式 67
3.8.3 密文反饋模式 68
3.8.4 輸出反饋模式 69
3.8.5 AES CTR 70
3.8.6 AES GCM 71
3.8.7 XTS-AES 72
3.9 認證加密 73
3.9.1 概述 73
3.9.2 HMAC 74
3.9.3 OCB認證加密模式 75
3.9.4 Ascon 77
3.9.5 帶相關數據的認證加密之由來 80
3.10 差分密碼分析 81
3.11 線性分析 83
本章小結 88
參考文獻 88
問題討論 89
第4章 公鑰密碼 90
4.1 普通公鑰加密 91
4.1.1 公鑰密碼概念的提出 91
4.1.2 基于大整數分解問題的公鑰密碼體制—RSA公鑰密碼體制 93
4.1.3 基于二次剩余問題的公鑰密碼體制 94
4.1.4 基于離散對數問題的公鑰密碼體制 94
4.1.5 基于背包問題的公鑰密碼體制 95
4.1.6 橢圓曲線公鑰密碼體制 96
4.2 基于身份的加密 98
4.2.1 雙線性Diffie-Hellman假設 98
4.2.2 Boneh和Franklin的IDB密碼體制 98
4.3 基于屬性的加密 99
4.3.1 樹形訪問結構 99
4.3.2 密文策略的屬性基加密方案的定義 100
4.3.3 密文策略的屬性基加密方案的安全模型 100
4.3.4 密文策略的屬性基加密方案的設計 101
4.4 后量子公鑰加密 102
4.4.1 NTRU公鑰密碼體制 102
4.4.2 基于編碼的公鑰密碼體制 103
4.4.3 基于解碼問題的公鑰密碼—McEliece公鑰密碼 104
4.4.4 多變量公鑰密碼體制 105
4.4.5 基于格的公鑰密碼體制 107
4.5 SM2公鑰加密 109
4.5.1 SM2公鑰加密算法 109
4.5.2 相關符號 109
4.5.3 加密算法及流程 110
4.5.4 解密算法及流程 111
4.6 SM9公鑰加密 112
4.6.1 SM9公鑰加密算法 112
4.6.2 相關符號 112
4.6.3 加密算法及流程 113
4.6.4 解密算法及流程 113
本章小結 115
參考文獻 116
問題討論 116
第5章 認證和哈希函數 117
5.1 消息認證 118
5.2 消息認證方法 118
5.2.1 消息加密 118
5.2.2 消息認證碼 119
5.2.3 哈希函數 120
5.3 MD5 122
5.3.1 MD5的整體描述 122
5.3.2 單個512比特的HMD5處理過程 123
5.4 SHA-1 127
5.4.1 SHA-1的整體描述 127
5.4.2 單個512比特的HSHA處理過程 128
5.5 MD5與SHA-1的比較 131
5.6 對哈希函數的攻擊現狀 131
5.6.1 直接攻擊 131
5.6.2 生日攻擊 131
5.6.3 差分攻擊 132
5.7 SHA-256算法 134
5.7.1 SHA-256算法描述 135
5.7.2 SHA-256算法在區(qū)塊鏈中的應用 137
5.8 SHA-3(Keccak算法) 137
5.9 SM3算法 141
5.9.1 常量和函數 141
5.9.2 SM3算法描述 142
本章小結 143
參考文獻 143
問題討論 144
第6章 數字簽名 145
6.1 數字簽名體制 146
6.2 RSA數字簽名體制 146
6.3 Rabin簽名體制 147
6.4 基于離散對數問題的簽名體制 147
6.4.1 ElGamal簽名體制 147
6.4.2 Schnorr簽名體制 148
6.4.3 數字簽名標準 149
6.5 基于解碼問題的數字簽名 149
6.6 基于橢圓曲線的數字簽名體制 150
6.7 基于身份的數字簽名體制 150
6.7.1 基于身份的數字簽名體制的定義 151
6.7.2 基于身份的數字簽名體制的安全性需求 152
6.7.3 使用雙線性對技術的IBS 152
6.7.4 不使用雙線性對技術的IBS 153
6.8 基于屬性的數字簽名算法 154
6.8.1 基于屬性的數字簽名體制的定義 154
6.8.2 基于屬性的數字簽名體制的安全性需求 155
6.8.3 使用雙線性對技術的ABS 156
6.9 后量子簽名算法 156
6.9.1 基于格的后量子簽名算法 157
6.9.2 基于哈希函數的后量子簽名算法 160
6.9.3 基于安全多方計算的后量子簽名算法 162
6.10 SM2數字簽名算法 163
6.10.1 相關符號 164
6.10.2 數字簽名的生成算法及流程 164
6.10.3 數字簽名的驗證算法及流程 165
6.11 SM9數字簽名算法 166
6.11.1 相關符號 167
6.11.2 數字簽名的生成算法及流程 168
6.11.3 數字簽名的驗證算法及流程 168
本章小結 169
參考文獻 170
問題討論 171
第7章 密鑰管理 172
7.1 概述 173
7.2 基本概念 173
7.2.1 密鑰分類 173
7.2.2 密鑰生命周期 174
7.2.3 密鑰產生 175
7.2.4 密鑰生命期 175
7.2.5 密鑰建立 175
7.2.6 密鑰的層次結構 176
7.2.7 密鑰管理生命周期 176
7.3 密鑰建立模型 178
7.3.1 點對點的密鑰建立模型 178
7.3.2 同一信任域中的密鑰建立模型 178
7.3.3 多個信任域中的密鑰建立模型 179
7.4 公鑰傳輸機制 181
7.4.1 鑒別樹 181
7.4.2 公鑰證書 183
7.4.3 基于身份的系統 183
7.5 密鑰傳輸機制 184
7.5.1 使用對稱密碼技術的密鑰傳輸機制 185
7.5.2 使用對稱密碼技術和可信第三方的密鑰傳輸機制 186
7.5.3 使用公鑰密碼技術的點到點的密鑰傳輸機制 186
7.5.4 同時使用公鑰密碼技術和對稱密碼技術的密鑰傳輸機制 187
7.6 密鑰導出機制 188
7.6.1 基本密鑰導出機制 188
7.6.2 密鑰計算函數 188
7.6.3 可鑒別的密鑰導出機制 189
7.6.4 線性密鑰導出機制 189
7.6.5 樹狀密鑰導出機制 190
7.7 密鑰協商機制 191
7.7.1 Diffie-Hellman密鑰協商機制 192
7.7.2 端到端的協議 193
7.7.3 使用對稱密碼技術的密鑰協商機制 193
7.8 基于SM2的密鑰交換協議 194
7.9 基于SM9的密鑰交換協議 196
7.10 密鑰的托管/恢復 198
7.11 現實中的密鑰管理方案 199
7.12 硬件輔助的密鑰管理 200
本章小結 201
參考文獻 201
問題討論 201
第8章 高級簽名 202
8.1 數字簽名概述 203
8.2 盲簽名 204
8.2.1 盲簽名的基本概念 204
8.2.2 盲簽名的安全性需求 204
8.2.3 盲簽名的基本設計思路 204
8.2.4 基于RSA問題的盲簽名 205
8.2.5 基于離散對數問題的盲簽名 206
8.2.6 部分盲簽名 207
8.3 群簽名 208
8.3.1 群簽名的基本概念 209
8.3.2 群簽名的安全性需求 209
8.3.3 一個簡單的群簽名體制 210
8.3.4 另一個簡單的群簽名體制 210
8.3.5 短的群簽名體制 211
8.3.6 成員撤銷 213
8.4 環(huán)簽名 214
8.4.1 環(huán)簽名的基本概念 215
8.4.2 環(huán)簽名的安全性需求 215
8.4.3 不具有可鏈接性的環(huán)簽名 216
8.4.4 具有可鏈接性的環(huán)簽名 217
8.5 民主群簽名 218
8.5.1 民主群簽名的定義 218
8.5.2 民主群簽名的安全性需求 220
8.5.3 Manulis民主群簽名 220
8.6 具有門限追蹤性的民主群簽名 222
8.6.1 群體初始化 223
8.6.2 密鑰生成 223
8.6.3 簽名生成 223
8.6.4 簽名驗證 224
8.6.5 簽名人追蹤 225
8.7 多重簽名 225
8.7.1 流氓密鑰攻擊 226
8.7.2 安全模型 226
8.7.3 多重簽名的不可偽造性 227
8.7.4 一種多簽名體制 228
8.7.5 具有更緊歸約的多重簽名體制 230
8.8 聚合簽名 231
8.8.1 聚合簽名的定義 231
8.8.2 復雜度假設 231
8.8.3 具有指定驗證者的聚合簽名方案 232
8.8.4 具有常數個雙線性對運算的聚合簽名方案 233
8.8.5 基于身份的聚合簽名方案 233
8.9 數字簽密 234
8.9.1 研究現狀 234
8.9.2 SC-KEM與SC-tKEM 235
8.9.3 SC-KEM與SC-tKEM的保密性模型 235
8.9.4 新的SC-KEM與SC-tKEM保密性模型 237
8.9.5 SC-KEM與SC-tKEM的不可偽造性模型 239
8.9.6 具體方案設計 240
本章小結 242
參考文獻 242
問題討論 245
第9章 抗泄露對稱密碼 246
9.1 概述 247
9.2 抗泄露密碼的基本概念、定義與引理 248
9.2.1 最小熵、Metric熵、HILL熵與不可預測熵 248
9.2.2 最小熵的鏈式規(guī)則與密集模型定理 249
9.2.3 隨機數提取器、通用哈希函數族及剩余哈希引理 250
9.3 抗泄露流密碼算法的設計 251
9.3.1 FOCS 2008/Eurocrypt 2009抗泄露流密碼 252
9.3.2 CCS 2010/CHES 2012/CT-RSA 2013抗泄露流密碼 255
9.4 旁路攻擊 257
9.4.1 簡單功耗分析 257
9.4.2 差分功耗分析 259
9.5 掩碼防護技術 260
9.5.1 基本定義 261
9.5.2 掩碼方案 262
9.6 抗泄露密碼的未來發(fā)展趨勢 263
本章小結 264
參考文獻 264
問題討論 266
第10章 OpenSSL與其他相關密碼庫 267
10.1 OpenSSL背景 268
10.1.1 SSL/TLS協議背景 268
10.1.2 OpenSSL開源項目 268
10.2 OpenSSL在Linux平臺上的快速安裝 269
10.3 OpenSSL密碼算法庫 270
10.3.1 對稱加密算法 270
10.3.2 非對稱加密算法 270
10.3.3 摘要算法 271
10.3.4 密鑰分發(fā)和有關PKI的編碼算法 271
10.3.5 其他自定義功能 271
10.4 SSL/TLS協議庫 272
10.5 OpenSSL中的應用程序 278
10.5.1 指令 278
10.5.2 基于指令的應用 280
10.5.3 基于函數的應用 280
10.6 NTL 280
10.7 GmSSL 281
10.8 全同態(tài)運算密碼庫 282
10.8.1 SEAL密碼庫簡介 282
10.8.2 BFV方案的使用 283
10.8.3 CKKS方案的使用 286
10.9 雙線性對運算密碼庫 289
10.9.1 JPBC庫簡介 289
10.9.2 BLS簽名算法使用示例 290
本章小結 292
問題討論 292