本书详细介绍了信息安全领域的基础理论和常见解决方案。本书共12章,第1~6章以密码学基本原理为主线,聚焦信息安全的核心概念和范式,介绍了古典密码、现代分组密码、公钥密码、报文鉴别与哈希函数、流密码、国密对称密码;第7~12章介绍了信息安全领域的经典解决方案和前沿内容,包括公钥基础设施、身份认证、Web安全、区块链、防火墙与入侵检测系统、数字水印。本书从教材使用的角度考虑,概念清晰、结构合理、通俗易懂、深入浅出,方便教师在教学过程中的实施。从学生的角度考虑,力求学生能够领会信息安全领域经典科学问题的提炼和思考过程。同时,本书涵盖信息安全领域的部分新研究成果,学习本书学生能够了解本学科的发展趋势和方向。本书可作为高等学校网络空间安全、计算机方向相关专业本科生和研究生的教材,也可作为软件工程师、通信和网络工程师等从业人员的参考教材。
李景涛,任教于复旦大学计算机科学技术学院。从事信息安全、物联网、密码学与区块链、网络安全等领域的理论研究和应用开发。在国内外权威期刊和国际会议上发表学术论文20余篇。近年来承担并完成多项国家自然科学基金、地方与企业合作项目的研究和开发工作,还担任多个国内外重要学术期刊(如IEEE TIFS、通信学报等)和国际会议的审稿人。2018 年被选为复旦大学"我心中的好老师”。《计算机网络》为上海市教委本科重点课程,《密码学基础》为复旦大学精品课程。获得上海市教学成果二等奖1次,复旦大学教学成果一等奖、二等奖各二次。
第1章 古典密码 1
1.1 古典密码方案 1
1.1.1 羊皮传书 2
1.1.2 藏头诗、藏尾诗 2
1.1.3 恺撒密码 2
1.2 对称密码模型 2
1.2.1 对称密码模型的概念 3
1.2.2 古典密码方案讨论 3
1.2.3 对称密码模型再讨论 4
1.3 密码分类 5
1.3.1 替代密码、置换密码和乘积
密码 5
1.3.2 对称密码和公钥密码 6
1.3.3 分组密码和流密码 6
1.4 如何设计好的密码算法 6
1.4.1 单表替代密码 6
1.4.2 Playfair密码 8
1.4.3 Vigenere密码 9
1.4.4 自动生成密钥密码 13
1.4.5 Vigenere密码的安全性 13
1.5 对称密码的标杆 13
1.6 简单的置换密码 14
1.6.1 Rail Fence密码 14
1.6.2 行置换密码 14
1.7 转子机 14
1.8 隐写术 15
1.8.1 伪装式保密通信 15
1.8.2 数字水印 16
习题 16
第2章 现代分组密码 17
2.1 分组密码的一般原理 17
2.1.1 理想的分组密码 17
2.1.2 SPN 18
2.1.3 Feistel密码 23
2.2 DES算法 24
2.2.1 DES算法的历史 24
2.2.2 DES算法的结构 25
2.2.3 DES算法的安全分析 31
2.3 AES算法——Rijndael 32
2.3.1 Rijndael的数学基础和设计
思想 33
2.3.2 算法说明 36
习题 43
第3章 公钥密码 44
3.1 对称密码的密钥交换问题 44
3.2 公钥密码模型的提出 45
3.2.1 公钥密码模型 45
3.2.2 密码学的两种密码 46
3.2.3 公钥密码的历史 46
3.3 设计公钥密码的基本要求 46
3.4 数字签名 47
3.5 RSA算法 48
3.5.1 数论知识 48
3.5.2 算法原理 49
3.5.3 RSA密钥生成 50
3.5.4 RSA算法的加密和解密
过程 51
3.5.5 模指数算法 51
3.5.6 RSA算法的可逆性证明 52
3.5.7 RSA算法的安全性 53
3.5.8 对RSA算法的其他攻击 55
3.6 公钥密码的特征总结 57
3.6.1 公钥密码的原理总结 57
3.6.2 公钥密码算法的基础 57
3.6.3 单向函数 58
3.7 DH算法 59
3.7.1 DH算法的数学基础 59
3.7.2 DH算法的具体内容 60
3.8 椭圆曲线密码算法 61
3.8.1 椭圆曲线 61
3.8.2 有限域上的椭圆曲线 62
3.8.3 椭圆曲线上的点数 64
3.8.4 明文嵌入椭圆曲线 64
3.8.5 椭圆曲线上的密码算法 65
3.9 SM2算法 67
3.9.1 基本参数 67
3.9.2 密钥产生 68
3.9.3 加密算法 68
3.9.4 解密算法 69
习题 70
第4章 报文鉴别与哈希函数 72
4.1 安全服务与安全需求 72
4.1.1 保密性 72
4.1.2 完整性 72
4.1.3 可用性 73
4.1.4 可认证 73
4.1.5 抗抵赖 73
4.1.6 总结 74
4.2 报文鉴别的安全需求 74
4.2.1 报文鉴别安全需求的三重
含义 74
4.2.2 实现报文鉴别的方案 75
4.3 报文加密 75
4.3.1 对称密码加密报文实现报文
鉴别 75
4.3.2 公钥密码加密报文实现报
文鉴别 76
4.3.3 公钥密码加密报文方案的
总结 78
4.4 报文鉴别码 78
4.4.1 报文加密的缺点 78
4.4.2 报文鉴别码的定义 78
4.4.3 报文鉴别码的用法 78
4.4.4 报文鉴别码的性质 80
4.4.5 构造报文鉴别码算法 80
4.5 哈希函数 81
4.5.1 哈希函数的定义和性质 81
4.5.2 哈希函数的应用 82
4.5.3 经典的哈希算法 85
4.5.4 SHA-512 85
4.6 生日攻击 87
4.7 HMAC 89
4.7.1 HMAC的设计目标 90
4.7.2 算法描述 90
4.7.3 HMAC的安全性 92
4.8 SM3算法 93
4.8.1 SM3算法的描述 93
4.8.2 SM3算法的安全性 95
习题 96
第5章 流密码 98
5.1 简单流密码 98
5.1.1 同步流密码与LFSR 99
5.1.2 异步流密码 100
5.2 对流密码的攻击 101
5.2.1 已知明文攻击 101
5.2.2 攻击方法实例 102
5.3 随机比特序列生成 104
5.3.1 随机数生成的原则 104
5.3.2 TRNG、PRNG和PRF 104
5.3.3 对PRNG的随机性测试 105
5.3.4 设计PRNG 107
5.3.5 专门的PRNG 107
5.3.6 基于分组密码的PRNG 110
5.4 RC4算法 114
5.4.1 初始化S 115
5.4.2 产生密钥流 115
5.4.3 RC4算法的强度 117
习题 117
第6章 国密对称密码 118
6.1 国密算法的概况 118
6.1.1 对称密码算法 118
6.1.2 非对称密码算法 119
6.1.3 哈希算法 120
6.2 SM4算法 120
6.2.1 算法参数 120
6.2.2 基本密码构件 121
6.2.3 加密算法和解密算法的
描述 123
6.3 ZUC算法 125
6.3.1 算法中的符号及含义 125
6.3.2 算法结构 126
6.3.3 算法运行 130
6.3.4 基于ZUC的保密性
算法128-EEA3 131
习题 133
第7章 公钥基础设施 134
7.1 公钥密码回顾 134
7.1.1 公钥密码提供的安全服务 134
7.1.2 公钥的用途 135
7.2 PKI的动机 135
7.2.1 公钥应用面临的主要问题 135
7.2.2 单CA模型 136
7.3 数字证书的格式 138
7.3.1 X.509证书 138
7.3.2 证书实例 139
7.3.3 证书注销机制 140
7.4 PKI的组成 141
7.4.1 组件之间的关系 141
7.4.2 核心组件 143
7.5 PKI中的信任关系 144
7.5.1 层次结构信任模型 145
7.5.2 交叉认证 147
7.5.3 其他信任模型与桥CA 149
7.6 PKI的应用 151
7.6.1 PKI相关标准 151
7.6.2 PKI安全服务与应用 152
习题 153
第8章 身份认证 155
8.1 身份认证的基本概念 155
8.2 基于口令的身份认证 156
8.2.1 基于口令的身份认证的一般
过程 156
8.2.2 字典攻击与UNIX口令 157
8.2.3 动态口令 159
8.3 口令猜测攻击 160
8.3.1 口令猜测攻击的类型 161
8.3.2 基于规则的方法 162
8.3.3 基于统计学模型的方法 162
8.3.4 基于深度学习的方法 163
8.4 质询与应答认证技术 166
8.4.1 对称密钥实现质询与应答认证
技术 166
8.4.2 公钥实现质询与应答认证
技术 169
8.5 Needham-Schroeder协议 169
8.5.1 Needham-Schroeder协议解决的
问题 170
8.5.2 Needham-Schroeder协议的
细节 171
8.6 Kerberos协议 173
8.6.1 Kerberos协议解决的问题 174
8.6.2 Kerberos协议的引入协议 176
8.6.3 Kerberos协议的完整对话 179
习题 181
第9章 Web安全 183
9.1 Web和电子商务安全问题
分析 183
9.1.1 Web系统的脆弱性 183
9.1.2 HTTP的安全性分析 183
9.1.3 在网络基础设施中提供安全
服务 185
9.2 SSL协议和TLS协议 185
9.2.1 SSL协议总述 186
9.2.2 SSL记录协议 187
9.2.3 SSLv3.0到TLSv1.2的握手
协议 189
9.2.4 TLSv1.3的握手协议 193
9.2.5 低延时握手设计思想 198
9.2.6 SSL协议和TLS协议版本
总结 200
9.3 IPSec协议 202
9.3.1 安全联盟 202
9.3.2 工作模式 203
9.3.3 AH协议 204
9.3.4 ESP协议 206
9.3.5 IKE协议 207
9.4 SET协议的双重数字签名 208
9.4.1 SET协议介绍 208
9.4.2 双重数字签名 209
9.4.3 在线交易的案例 210
习题 213
第10章 区块链 214
10.1 分布式账本的安全需求 214
10.2 完整性需求 215
10.2.1 哈希指针 216
10.2.2 Merkle树 217
10.3 共识协议解决的基本问题 218
10.3.1 出块节点选举与主链
共识 219
10.3.2 公开链与许可链 220
10.4 出块节点选举 221
10.4.1 工作量证明机制 221
10.4.2 权益证明机制 223
10.5 主链共识 224
10.5.1 比特币共识案例分析 224
10.5.2 概率性共识 227
10.5.3 确定性共识 231
10.6 身份标识与交易签名 233
10.6.1 交易的记录与验证 233
10.6.2 匿名性与安全需求总结 235
习题 236
第11章 防火墙与入侵检测系统 237
11.1 防火墙基本介绍 237
11.1.1 内网与外网 237
11.1.2 防火墙的发展历程 238
11.2 防火墙类型 239
11.2.1 包过滤防火墙 240
11.2.2 电路级网关防火墙 243
11.2.3 应用层网关防火墙 244
11.2.4 状态检测防火墙 246
11.3 防火墙的部署 247
11.4 入侵检测 249
11.4.1 入侵检测的概述 249
11.4.2 IDS与防火墙的比较 250
11.5 入侵检测的方法与案例 251
11.5.1 端口扫描攻击的原理 252
11.5.2 端口扫描检测的目标与
困难 252
11.5.3 端口扫描的一般防御 253
11.5.4 端口扫描的常见检测
算法 253
11.5.5 阈值随机游走算法 254
习题 256
第12章 数字水印 257
12.1 数字水印的概述 257
12.1.1 数字水印的定义 257
12.1.2 数字水印的应用 257
12.1.3 数字水印的框架 258
12.2 图像介质水印的分类 258
12.3 基于空域的水印算法 259
12.3.1 加性噪声水印算法 259
12.3.2 LSB算法 260
12.3.3 Patchwork算法 261
12.4 基于频域的水印算法 262
12.4.1 基于DCT的水印算法 262
12.4.2 基于DFT的水印算法 263
12.4.3 基于DWT的水印算法 266
12.5 其他图像介质水印算法 268
12.5.1 基于SVD的水印算法 268
12.5.2 基于分形的水印算法 268
习题 269