《深入浅出密码学》封面

内容简介

密码学是信息安全的基础,本书教读者应用加密技术来解决现实世界中的一系列难题,并畅谈了密码学的未来,涉及“加密货币”、密码验证、密钥交换和后量子密码学等话题。

全书分为两个部分,第一部分介绍密码原语,涉及密码学基础概念、哈希函数、消息认证码、认证加密、密钥交换、非对称加密和混合加密、数字签名与零知识证明、随机性和秘密性等内容;第二部分涉及安全传输、端到端加密、用户认证、“加密货币”、硬件密码学、后量子密码、新一代密码技术等内容。

作者简介

David Wong是O(1)实验室的一位高级密码工程师,他致力于Mina“加密货币”的研发。在此之前,他曾在Facebook Novi工作,担任Diem(正式名称为Libra)“加密货币”研发团队的安全顾问。在Facebook工作前,他还在NCC集团的加密服务机构做过安全顾问。

David在他的职业生涯中多次参与开源审计工作,比如审计OpenSSL库和Let's Encrypt项目。他曾在多个会议(如“Black Hat”和“DEF CON”)上做过报告,并在“Black Hat”会议上讲授密码学课程。他为TLS 1.3协议和Noise协议框架的发展做出了贡献。此外,他还发现了许多库存在的漏洞,例如 Go 语言标准库中的CVE-2016-3959漏洞,TLS库中的CVE-2018-12404、CVE-2018-19608、CVE-2018-16868、CVE-2018-16869和CVE-2018-16870漏洞。

David还是Disco协议和基于智能合约的去中心化应用程序安全项目的开发者之一。他的研究内容包括对RSA的缓存攻击、基于QUIC的协议、对ECDSA的时序攻击或针对DH算法的后门攻击等领域的安全技术。

目录

第一部分 密码原语:密码学的重要组成部分
第1章 引言 3
1.1 密码学使协议安全 3
1.2 对称密码:对称加密概述 4
1.3 Kerckhoff原则:只有密钥保密 6
1.4 非对称加密:两个密钥优于一个密钥 8
1.4.1 密钥交换 9
1.4.2 非对称加密 11
1.4.3 数字签名:与手写签名作用一样 13
1.5 密码算法分类和抽象化 15
1.6 理论密码学vs.实用密码学 16
1.7 从理论到实践:选择独特冒险 17
1.8 警示之言 21
1.9 本章小结 21
第2章 哈希函数 22
2.1 什么是哈希函数 22
2.2 哈希函数的安全属性 24
2.3 哈希函数的安全性考量 26
2.4 哈希函数的实际应用 28
2.4.1 承诺 28
2.4.2 子资源完整性 28
2.4.3 比特流 29
2.4.4 洋葱路由 29
2.5 标准化的哈希函数 29
2.5.1 SHA-2哈希函数 30
2.5.2 SHA-3哈希函数 33
2.5.3 SHAKE和cSHAKE:两个可扩展输出的函数 37
2.5.4 使用元组哈希避免模糊哈希 38
2.6 口令哈希 39
2.7 本章小结 41
第3章 消息认证码 42
3.1 无状态cookie——一个引入MAC的范例 42
3.2 一个代码示例 45
3.3 MAC的安全属性 46
3.3.1 伪造认证标签 46
3.3.2 认证标签的长度 47
3.3.3 重放攻击 48
3.3.4 在固定时间内验证认证标签 49
3.4 现实世界中的MAC 49
3.4.1 消息认证码 49
3.4.2 密钥派生 50
3.4.3 cookie的完整性 51
3.4.4 哈希表 51
3.5 实际应用中的消息认证码 51
3.5.1 HMAC——一个基于哈希函数的消息认证码算法 52
3.5.2 KMAC——基于cSHAKE的消息认证码算法 53
3.6 SHA-2和长度扩展攻击 53
3.7 本章小结 56
第4章 认证加密 57
4.1 密码的定义 57
4.2 高级加密标准 59
4.2.1 AES算法的安全级别 59
4.2.2 AES算法的接口 60
4.2.3 AES内部构造 61
4.3 加密企鹅图片和CBC操作模式 62
4.4 选用具有认证机制的AES-CBC-HMAC算法 65
4.5 认证加密算法的一体式构造 66
4.5.1 有附加数据的认证加密 67
4.5.2 AEAD型算法AES-GCM 68
4.5.3 ChaCha20-Poly1305算法 72
4.6 其他类型的对称加密 76
4.6.1 密钥包装 76
4.6.2 抗Nonce误用的认证加密算法 77
4.6.3 磁盘加密 77
4.6.4 数据库加密 77
4.7 本章小结 78
第5章 密钥交换 79
5.1密钥交换的定义 79
5.2Diffie-Hellman(DH)密钥交换 82
5.2.1 群论 82
5.2.2 离散对数问题:DH算法的基础 86
5.2.3 DH密钥交换标准 87
5.3基于椭圆曲线的DH密钥交换算法 88
5.3.1 椭圆曲线的定义 88
5.3.2 ECDH密钥交换算法的实现 91
5.3.3 ECDH算法的标准 93
5.4小子群攻击以及其他安全注意事项 94
5.5本章小结 96
第6章 非对称加密和混合加密 97
6.1 非对称加密简介 97
6.2 实践中的非对称加密和混合加密 99
6.2.1 密钥交换和密钥封装 99
6.2.2 混合加密 101
6.3 RSA非对称加密的优缺点 104
6.3.1 教科书式RSA算法 104
6.3.2 切勿使用PKCS#1v1.5标准中的RSA算法 108
6.3.3 非对称加密RSA-OAEP 109
6.4 混合加密ECIES 112
6.5 本章小结 114
第7章 数字签名与零知识证明 115
7.1数字签名的定义 115
7.1.1 现实应用中计算和验证签名的方法 117
7.1.2 数字签名应用案例:认证密钥交换 117
7.1.3 数字签名的实际用法:公钥基础设施 118
7.2零知识证明:数字签名的起源 119
7.2.1 Schnorr身份识别协议:一种交互式零知识证明 120
7.2.2 数字签名作为非交互式零知识证明 123
7.3签名算法的标准 123
7.3.1 RSAPKCS#1v1.5:一个有漏洞的标准 124
7.3.2 RSA-PSS:更优的标准 127
7.3.3 椭圆曲线数字签名算法 128
7.3.4 Edwards曲线数字签名算法 130
7.4签名方案特殊性质 133
7.4.1 对签名的替换攻击 133
7.4.2 签名的可延展性 134
7.5本章小结 134
第8章 随机性和秘密性 136
8.1 随机性的定义 136
8.2 伪随机数发生器 138
8.3 获取随机性的方法 141
8.4 生成随机数和安全性考虑 143
8.5 公开的随机性 145
8.6 用HKDF算法派生密钥 146
8.7 管理密钥和秘密信息 150
8.8 分布式门限密码技术 151
8.9 本章小结 154
第二部分协议:密码学的核心作用
第9章 安全传输 157
9.1SSL和TLS协议 157
9.1.1 从SSL到TLS的转化 158
9.1.2 TLS的实际应用 158
9.2TLS协议的工作原理 160
9.2.1 TLS协议的握手阶段 161
9.2.2 TLS1.3中加密应用程序数据的方法 172
9.3Web加密技术发展现状 172
9.4其他安全传输协议 174
9.5Noise协议框架:TLS新的替代方案 175
9.5.1 Noise协议框架中不同的握手模式 175
9.5.2 Noise协议的握手过程 176
9.6本章小结 177
第10章 端到端加密 178
10.1 为什么使用端到端加密 178
10.2 信任源缺失 180
10.3 邮件加密的失败案例 181
10.3.1 PGP或GPG协议的工作原理 181
10.3.2 将Web系统信任机制扩展到用户之间 184
10.3.3 寻找PGP公钥是个难题 184
10.3.4 PGP的替代品 185
10.4 安全消息传递:现代端到端加密协议Signal 187
10.4.1 比Web信任机制更友好:信任可验证 188
10.4.2 X3DH:Signal协议的握手过程 190
10.4.3 双棘轮协议:Signal握手结束之后的协议 193
10.5 端到端加密最新进展 197
10.6 本章小结 198
第11章 用户认证 200
11.1认证性的定义 200
11.2用户身份认证 202
11.2.1 用一个口令来控制所有口令:单点登录以及口令管理器 204
11.2.2 避免口令的明文传输:使用非对称的口令认证密钥交换协议 205
11.2.3 一次性口令并不是真正的口令:使用对称密钥进行无口令操作 208
11.2.4 用非对称密钥替换口令 211
11.3用户辅助身份认证:人工辅助设备配对 213
11.3.1 预共享密钥 215
11.3.2 CPace对称口令认证密钥交换 216
11.3.3 用短认证字符串避免密钥交换遭受MIMT攻击 217
11.4本章小结 219
第12章 “加密货币” 221
12.1 拜占庭共识算法介绍 222
12.1.1 数据恢复问题:分布式数据可恢复协议 222
12.1.2 信任问题:利用去中心化解决信任问题 223
12.1.3 规模问题:无许可和不受审查的网络 224
12.2 Bitcoin的工作原理 225
12.2.1 Bitcoin处理用户余额和交易的方式 226
12.2.2 挖掘数字黄金BTC 227
12.2.3 解决挖矿中的冲突 230
12.2.4 使用Merkle树减小区块的大小 233
12.3 “加密货币”之旅 234
12.3.1 波动性 235
12.3.2 延迟性 235
12.3.3 区块链规模 235
12.3.4 机密性 236
12.3.5 电能消耗 236
12.4 DiemBFT:一种拜占庭容错共识协议 236
12.4.1 安全性和活跃性:BFT共识协议的两大属性 236
12.4.2 一轮DiemBFT协议 237
12.4.3 协议对不诚实行为的容忍度 238
12.4.4 DiemBFT协议的投票规则 238
12.4.5 交易最终得到确认 240
12.4.6 DiemBFT协议安全性的直观解释 240
12.5 本章小结 242
第13章 硬件密码学 244
13.1现代密码学中常见的攻击模型 244
13.2不可信环境:让硬件提供帮助 245
13.2.1 白盒密码学不可取 246
13.2.2 智能卡和安全元件 247
13.2.3 硬件安全模块——银行业的宠儿 248
13.2.4 可信平台模块:安全元件的有效标准化 250
13.2.5 在可信执行环境中进行保密计算 252
13.3何为最优解决方案 253
13.4防泄露密码 255
13.4.1 恒定时间编程 256
13.4.2 隐藏与盲化 258
13.4.3 故障攻击 258
13.5本章小结 259
第14章 后量子密码 261
14.1 震动密码学界的量子计算机 261
14.1.1 研究小物体的量子力学 262
14.1.2 量子计算机从诞生到实现量子霸权 264
14.1.3 Shor和Grover算法对密码学的影响 265
14.1.4 可抵抗量子算法的后量子密码 266
14.2 基于哈希函数的一次性签名 266
14.2.1 Lamport一次性签名 267
14.2.2 具有较小密钥长度的Winternitz一次性签名方案 268
14.2.3 XMSS和SPHINCS+多次签名 270
14.3 基于格密码的短密钥和签名方案 272
14.3.1 格的定义 273
14.3.2 格密码的基础:LWE问题 274
14.3.3 基于格的密钥交换算法Kyber 275
14.3.4 基于格的数字签名算法Dilithium 277
14.4 有必要恐慌吗 278
14.5 本章小结 280
第15章 新一代密码技术 281
15.1安全多方计算 282
15.1.1 隐私集合求交 282
15.1.2 通用MPC协议 284
15.1.3 MPC发展现状 285
15.2全同态加密及其在云技术中的应用 286
15.2.1 基于RSA加密方案的同态加密方案示例 286
15.2.2 不同类型的同态加密 287
15.2.3 Bootstrapping:全同态加密的关键 287
15.2.4 一种基于LWE问题的FHE方案 289
15.2.5 FHE的用武之地 290
15.3通用零知识证明 291
15.3.1 zk-SNARK的工作原理 293
15.3.2 同态承诺隐藏部分证据 294
15.3.3 利用双线性对改进同态承诺方案 294
15.3.4 简洁性的来源 294
15.3.5 程序转换为多项式 295
15.3.6 程序转换为算术电路 296
15.3.7 R1CS运算电路 296
15.3.8 将R1CS转换为多项式 297
15.3.9 隐藏在指数中的多项式 297
15.4本章小结 299
第16章 密码技术并非万能 300
16.1 寻找到正确的密码原语或协议 301
16.2 如何使用加密原语或协议——文雅标准与形式验证 302
16.3 哪里能找到出色的密码库 304
16.4 滥用密码技术:开发者是密码学家的敌手 305
16.5 可用安全性 306
16.6 密码学并非一座孤岛 308
16.7 不要轻易亲自实现密码算法 309
16.8 本章小结 310
附录习题答案 312
······

[ 深入浅出密码学下载地址 ]【免费下载】
最后修改:2024 年 12 月 28 日