本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。
第一部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第二部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第三部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技术在现实生活中的应用。
第1部分 密码1
第1章 环游密码世界3
1.1 本章学习的内容4
1.2 密码4
1.2.1 Alice与Bob4
1.2.2 发送者、接收者和窃听者4
1.2.3 加密与解密6
1.2.4 密码保证了消息的机密性7
1.2.5 破译7
1.3 对称密码与公钥密码8
1.3.1 密码算法8
1.3.2 密钥8
1.3.3 对称密码与公钥密码9
1.3.4 混合密码系统10
1.4 其他密码技术10
1.4.1 单向散列函数10
1.4.2 消息认证码10
1.4.3 数字签名11
1.4.4 伪随机数生成器11
1.5 密码学家的工具箱12
1.6 隐写术与数字水印13
1.7 密码与信息安全常识14
1.7.1 不要使用保密的密码算法14
1.7.2 使用低强度的密码比不进行任何加密更危险15
1.7.3 任何密码总有一天都会被破解15
1.7.4 密码只是信息安全的一部分16
1.8 本章小结16
1.9 小测验的答案17
第2章 历史上的密码——写一篇别人看不懂的文章19
2.1 本章学习的内容20
2.2 恺撒密码20
2.2.1 什么是恺撒密码21
2.2.2 恺撒密码的加密21
2.2.3 恺撒密码的解密22
2.2.4 用暴力破解来破译密码23
2.3 简单替换密码24
2.3.1 什么是简单替换密码24
2.3.2 简单替换密码的加密25
2.3.3 简单替换密码的解密26
2.3.4 简单替换密码的密钥空间26
2.3.5 用频率分析来破译密码26
2.4 Enigma31
2.4.1 什么是Enigma31
2.4.2 用Enigma进行加密通信31
2.4.3 Enigma的构造32
2.4.4 Enigma的加密34
2.4.5 每日密码与通信密码36
2.4.6 避免通信错误36
2.4.7 Enigma的解密36
2.4.8 Enigma的弱点38
2.4.9 Enigma的破译38
2.5 思考40
2.5.1 为什么要将密码算法和密钥分开呢40
2.6 本章小结41
2.7 小测验的答案42
第3章 对称密码(共享密钥密码)——用相同的密钥进行加密和解密45
3.1 炒鸡蛋与对称密码46
3.2 本章学习的内容46
3.3 从文字密码到比特序列密码46
3.3.1 编码46
3.3.2 XOR47
3.4 一次性密码本——绝对不会被破译的密码50
3.4.1 什么是一次性密码本50
3.4.2 一次性密码本的加密50
3.4.3 一次性密码本的解密51
3.4.4 一次性密码本是无法破译的51
3.4.5 一次性密码本为什么没有被使用52
3.5 DES53
3.5.1 什么是DES53
3.5.2 加密和解密54
3.5.3 DES的结构(Feistel网络)54
3.6 三重DES60
3.6.1 什么是三重DES60
3.6.2 三重DES的加密60
3.6.3 三重DES的解密63
3.6.4 三重DES的现状64
3.7 AES的选定过程64
3.7.1 什么是AES65
3.7.2 AES的选定过程65
3.7.3 AES最终候选算法的确定与AES的最终确定65
3.8 Rijndael66
3.8.1 什么是Rijndael66
3.8.2 Rijndael的加密和解密66
3.8.3 Rijndael的破译68
3.8.4 应该使用哪种对称密码呢68
3.9 本章小结70
3.10 小测验的答案71
第4章 分组密码的模式——分组密码是如何迭代的73
4.1 本章学习的内容74
4.2 分组密码的模式75
4.2.1 分组密码与流密码75
4.2.2 什么是模式75
4.2.3 明文分组与密文分组76
4.2.4 主动攻击者Mallory76
4.3 ECB模式77
4.3.1 什么是ECB模式77
4.3.2 ECB模式的特点78
4.3.3 对ECB模式的攻击78
4.4 CBC模式80
4.4.1 什么是CBC模式80
4.4.2 初始化向量81
4.4.3 CBC模式的特点82
4.4.4 对CBC模式的攻击82
4.4.5 CBC的应用实例84
4.5 CFB模式85
4.5.1 什么是CFB模式85
4.5.2 初始化向量86
4.5.3 CFB模式与流密码86
4.5.4 CFB模式的解密87
4.5.5 对CFB模式的攻击87
4.6 OFB模式88
4.6.1 什么是OFB模式88
4.6.2 初始化向量89
4.6.3 CFB模式与OFB模式的对比89
4.7 CTR模式90
4.7.1 计数器的生成方法92
4.7.2 OFB模式与CTR模式的对比92
4.7.3 CTR模式的特点92
4.7.4 错误与机密性93
4.8 应该使用哪种模式呢93
4.9 本章小结94
4.10 小测验的答案95
第5章 公钥密码——用公钥加密,用私钥解密97
5.1 投币寄物柜的使用方法98
5.2 本章学习的内容98
5.3 密钥配送问题98
5.3.1 什么是密钥配送问题98
5.3.2 通过事先共享密钥来解决100
5.3.3 通过密钥分配中心来解决101
5.3.4 通过Diffie-Hellman密钥交换来解决密钥配送问题102
5.3.5 通过公钥密码来解决密钥配送问题102
5.4 公钥密码103
5.4.1 什么是公钥密码103
5.4.2 公钥密码的历史104
5.4.3 公钥通信的流程104
5.4.4 各种术语106
5.4.5 公钥密码无法解决的问题106
5.5 时钟运算106
5.5.1 加法107
5.5.2 减法109
5.5.3 乘法110
5.5.4 除法110
5.5.5 乘方114
5.5.6 对数114
5.5.7 从时钟指针到RSA115
5.6 RSA116
5.6.1 什么是RSA116
5.6.2 RSA加密116
5.6.3 RSA解密117
5.6.4 生成密钥对118
5.6.5 具体实践一下吧121
5.7 对RSA的攻击124
5.7.1 通过密文来求得明文124
5.7.2 通过暴力破解来找出D124
5.7.3 通过E和N求出D125
5.7.4 中间人攻击126
5.8 其他公钥密码128
5.8.1 ElGamal方式128
5.8.2 Rabin方式128
5.8.3 椭圆曲线密码128
5.9 关于公钥密码的问答128
5.9.1 公钥密码的机密性129
5.9.2 公钥密码与对称密码的密钥长度129
5.9.3 对称密码的未来129
5.9.4 RSA与质数130
5.9.5 RSA与质因数分解130
5.9.6 RSA的长度131
5.10 本章小结132
5.11 小测验的答案133
第6章 混合密码系统——用对称密码提高速度,用公钥密码保护会话密钥135
6.1 混合动力汽车136
6.2 本章学习的内容136
6.3 混合密码系统136
6.3.1 对称密码与公钥密码136
6.3.2 混合密码系统137
6.3.3 加密138
6.3.4 解密140
6.3.5 混合密码系统的具体例子141
6.4 怎样才是高强度的混合密码系统141
6.4.1 伪随机数生成器141
6.4.2 对称密码142
6.4.3 公钥密码142
6.4.4 密钥长度的平衡142
6.5 密码技术的组合142
6.6 本章小结143
6.7 小测验的答案144
第2部分 认证 145
第7章 单向散列函数——获取消息的“指纹”147
7.1 本章学习的内容148
7.2 什么是单向散列函数148
7.2.1 这个文件是不是真的呢148
7.2.2 什么是单向散列函数151
7.2.3 单向散列函数的性质153
7.2.4 关于术语156
7.3 单向散列函数的实际应用157
7.3.1 检测软件是否被篡改157
7.3.2 基于口令的加密159
7.3.3 消息认证码159
7.3.4 数字签名159
7.3.5 伪随机数生成器159
7.3.6 一次性口令159
7.4 单向散列函数的具体例子160
7.4.1 MD4、MD5160
7.4.2 SHA-1、SHA-256、SHA-384、SHA-512160
7.4.3 RIPEMD-160160
7.4.4 AHS(Advanced Hash Standard)与SHA-3161
7.5 单向散列函数SHA-1161
7.5.1 整体流程161
7.5.2 (1) SHA-1:填充162
7.5.3 (2) SHA-1:计算W0~W79164
7.5.4 (3) SHA-1:分组处理165
7.5.5 (4) SHA-1:单步处理167
7.6 对单向散列函数的攻击168
7.6.1 暴力破解(攻击故事1)168
7.6.2 生日攻击(攻击故事2)170
7.7 单向散列函数无法解决的问题172
7.8 本章小结173
7.9 小测验的答案173
第8章 消息认证码——消息被正确传送了吗177
8.1 本章学习的内容178
8.2 消息认证码178
8.2.1 汇款请求是正确的吗178
8.2.2 什么是消息认证码179
8.2.3 消息认证码的使用步骤180
8.2.4 消息认证码的密钥配送问题180
8.3 消息认证码的应用实例181
8.3.1 SWIFT181
8.3.2 IPsec181
8.3.3 SSL/TLS182
8.4 消息认证码的实现方法182
8.4.1 使用单向散列函数实现182
8.4.2 使用分组密码实现182
8.4.3 其他实现方法182
8.5 HMAC的详细介绍182
8.5.1 什么是HMAC182
8.5.2 HMAC的步骤183
8.6 对消息认证码的攻击185
8.6.1 重放攻击185
8.6.2 密钥推测攻击187
8.7 消息认证码无法解决的问题188
8.7.1 对第三方证明188
8.7.2 防止否认188
8.8 本章小结189
8.9 小测验的答案189
第9章 数字签名——消息到底是谁写的191
9.1 羊妈妈的认证192
9.2 本章学习的内容192
9.3 数字签名192
9.3.1 Alice的借条192
9.3.2 从消息认证码到数字签名193
9.3.3 签名的生成和验证194
9.3.4 公钥密码与数字签名195
9.4 数字签名的方法197
9.4.1 直接对消息签名的方法197
9.4.2 对消息的散列值签名的方法199
9.5 对数字签名的疑问202
9.5.1 密文为什么能作为签名使用202
9.5.2 数字签名不能保证机密性吗202
9.5.3 这种签名可以随意复制吗203
9.5.4 消息内容会不会被任意修改203
9.5.5 签名会不会被重复使用204
9.5.6 删除签名也无法“作废合同”吗204
9.5.7 如何防止否认205
9.5.8 数字签名真的能够代替签名吗205
9.6 数字签名的应用实例206
9.6.1 安全信息公告206
9.6.2 软件下载207
9.6.3 公钥证书208
9.6.4 SSL/TLS208
9.7 通过RSA实现数字签名208
9.7.1 用RSA生成签名208
9.7.2 用RSA验证签名209
9.7.3 具体实践一下吧209
9.8 其他的数字签名210
9.8.1 ElGamal方式210
9.8.2 DSA210
9.8.3 Rabin方式211
9.9 对数字签名的攻击211
9.9.1 中间人攻击211
9.9.2 对单向散列函数的攻击212
9.9.3 利用数字签名攻击公钥密码212
9.9.4 其他攻击213
9.10 各种密码技术的对比213
9.10.1 消息认证码与数字签名213
9.10.2 混合密码系统与对散列值签名214
9.11 数字签名无法解决的问题214
9.12 本章小结215
9.13 小测验的答案216
第10章 证书——为公钥加上数字签名217
10.1 本章学习的内容218
10.2 证书218
10.2.1 什么是证书218
10.2.2 证书的应用场景218
10.3 实际生成一张证书221
10.3.1 VeriSign的免费试用服务221
10.3.2 生成证书221
10.3.3 将证书从Web浏览器中导出224
10.3.4 证书的内容224
10.3.5 证书标准规范X.509224
10.4 公钥基础设施(PKI)228
10.4.1 什么是公钥基础设施228
10.4.2 PKI的组成要素228
10.4.3 认证机构的工作230
10.4.4 证书的层级结构231
10.4.5 各种各样的PKI233
10.5 对证书的攻击234
10.5.1 在公钥注册之前进行攻击234
10.5.2 注册相似人名进行攻击234
10.5.3 窃取认证机构的私钥进行攻击235
10.5.4 攻击者伪装成认证机构进行攻击235
10.5.5 钻CRL的空子进行攻击(1)236
10.5.6 钻CRL的空子进行攻击(2)237
10.6 关于证书的Q&A238
10.6.1 为什么需要证书238
10.6.2 通过自己的方法进行认证是不是更安全239
10.6.3 为什么要相信认证机构240
10.7 本章小结241
10.8 小测验的答案242
第3部分 密钥、随机数与应用技术 243
第11章 密钥——秘密的精华245
11.1 本章学习的内容246
11.2 什么是密钥246
11.2.1 密钥就是一个巨大的数字246
11.2.2 密钥与明文是等价的248
11.2.3 密码算法与密钥248
11.3 各种不同的密钥248
11.3.1 对称密码的密钥与公钥密码的密钥248
11.3.2 消息认证码的密钥与数字签名的密钥249
11.3.3 用于确保机密性的密钥与用于认证的密钥250
11.3.4 会话密钥与主密钥251
11.3.5 用于加密内容的密钥与用于加密密钥的密钥252
11.4 密钥的管理252
11.4.1 生成密钥252
11.4.2 配送密钥253
11.4.3 更新密钥253
11.4.4 保存密钥254
11.4.5 作废密钥256
11.5 Diffie-Hellman密钥交换256
11.5.1 什么是Diffie-Hellman密钥交换256
11.5.2 Diffie-Hellman密钥交换的步骤257
11.5.3 Eve能计算出密钥吗259
11.5.4 生成元的意义259
11.5.5 具体实践一下260
11.6 基于口令的密码(PBE)262
11.6.1 什么是基于口令的密码262
11.6.2 PBE加密263
11.6.3 PBE解密264
11.6.4 盐的作用266
11.6.5 口令的作用266
11.6.6 PBE的改良267
11.7 如何生成安全的口令268
11.7.1 使用只有自己才能知道的信息268
11.7.2 将多个不同的口令分开使用269
11.7.3 有效利用笔记269
11.7.4 理解口令的局限性269
11.8 本章小结270
11.9 小测验的答案271
第12章 随机数——不可预测性的源泉273
12.1 骡子的锁匠铺274
12.2 本章学习的内容274
12.3 使用随机数的密码技术274
12.3.1 随机数是干什么用的274
12.4 随机数的性质275
12.4.1 对随机数的性质进行分类275
12.4.2 随机性276
12.4.3 不可预测性277
12.4.4 不可重现性277
12.5 伪随机数生成器278
12.5.1 伪随机数生成器的结构278
12.6 具体的伪随机数生成器280
12.6.1 杂乱的方法280
12.6.2 线性同余法280
12.6.3 单向散列函数法283
12.6.4 密码法286
12.6.5 ANSI X9.17287
12.7 对伪随机数生成器的攻击290
12.7.1 对种子进行攻击290
12.7.2 对随机数池进行攻击290
12.8 本章小结290
12.9 小测验的答案291
第13章 PGP ——密码技术的完美组合293
13.1 本章学习的内容294
13.2 PGP简介294
13.2.1 什么是PGP294
13.2.2 PGP的功能295
13.3 生成密钥对297
13.4 加密与解密299
13.4.1 加密299
13.4.2 解密301
13.5 生成和验证数字签名304
13.5.1 生成数字签名304
13.5.2 验证数字签名306
13.6 生成数字签名并加密以及解密并验证数字签名309
13.6.1 生成数字签名并加密309
13.6.2 解密并验证数字签名309
13.7 信任网313
13.7.1 公钥合法性313
13.7.2 场景1:通过自己的数字签名进行确认313
13.7.3 场景2:通过自己完全信任的人的数字签名进行确认314
13.7.4 场景3:通过自己有限信任的多个人的数字签名进行确认315
13.7.5 公钥合法性与所有者信任是不同的316
13.7.6 所有者信任级别是因人而异的316
13.8 本章小结318
13.9 小测验的答案318
第14章 SSL/TLS ——为了更安全的通信321
14.1 本章学习的内容322
14.2 什么是SSL/TLS322
14.2.1 Alice在Bob书店买书322
14.2.2 客户端与服务器323
14.2.3 用SSL/TLS承载HTTP324
14.2.4 SSL/TLS的工作325
14.2.5 SSL/TLS也可以保护其他的协议326
14.2.6 密码套件326
14.2.7 SSL与TLS的区别327
14.3 使用SSL/TLS进行通信327
14.3.1 层次化的协议327
14.3.2 1 TLS记录协议329
14.3.3 2-1 握手协议330
14.3.4 2-2 密码规格变更协议336
14.3.5 2-3 警告协议337
14.3.6 2-4 应用数据协议337
14.3.7 主密码337
14.3.8 TLS中使用的密码技术小结338
14.4 对SSL/TLS的攻击339
14.4.1 对各个密码技术的攻击339
14.4.2 对伪随机数生成器的攻击339
14.4.3 利用证书的时间差进行攻击340
14.5 SSL/TLS用户的注意事项340
14.5.1 不要误解证书的含义340
14.5.2 密码通信之前的数据是不受保护的340
14.5.3 密码通信之后的数据是不受保护的340
14.6 本章小结341
14.7 小测验的答案342
第15章 密码技术与现实社会——我们生活在不完美的安全中.343
15.1 本章学习的内容344
15.2 密码技术小结344
15.2.1 密码学家的工具箱344
15.2.2 密码与认证346
15.2.3 密码技术的框架化346
15.2.4 密码技术与压缩技术346
15.3 追寻完美的密码技术348
15.3.1 量子密码349
15.3.2 量子计算机350
15.3.3 哪一种技术会率先进入实用领域350
15.4 只有完美的密码,没有完美的人350
15.4.1 理论是完美的,现实是残酷的351
15.4.2 防御必须天衣无缝,攻击只需突破一点351
15.4.3 攻击实例1:经过PGP加密的电子邮件352
15.4.4 攻击实例2:用SSL/TLS加密的信用卡号353
15.5 本章小结354
附录 密码技术综合测验355
参考文献365
什么是什么 蜘蛛王国 内容简介 在大多数人的眼里,蜘蛛丑陋、恶毒、凶残、好斗,是令人厌恶的“恐怖分子”,它们总是不能博得人类的好感。然而,当你对蜘蛛有了更多的了...
繁殖 那些你还不知道的生命奥秘-站在智者的肩上 本书特色 在本书中,我们要走入生命的起源,在生物学家pierre-henri gouyon 的陪伴下,了解不同的...
《庄子》内容简介:本书分内篇、外篇、杂篇三大部分,原有五十二篇,现存三十三篇,大小寓言两百多个。其中,内篇为庄子思想的核心
沐浴在波的海洋中:物理学中的波/红袋鼠物理千千问 本书特色 本系列图书为幼儿版的物理学系列科普绘本。作者克里斯•费里(Chris Ferrie)是加拿...
宇宙地球大探索-激发孩子想象力的1000个奇思妙想 内容简介 如果有一天地球停止转动,你会觉得心脏好像要从嘴里飞出去,所有的东西都会以很快的速度飞向东边;如果明...
中国故事(彩图)史记故事 本书特色 《项羽大摆鸿门宴》、《卧薪尝胆是勾践》、《舍命保赵氏孤儿》、《不食周粟好骨气》、《围魏救赵施妙计》、《老将出马能项俩》、《鸡...
《早期中国:社会与文化史》内容简介:本书以“早期中国”的视角,尝试描述和解释从文明起源至公元220年东汉灭亡的历史,并将此段历
有趣的科学法庭:生物法庭8—头顶着手机 本书特色 男性和女性对甜味的感觉一样吗?搓澡太使劲了对身体好吗?常吃方便面为什么脸容易发肿?这些是多么有趣的生物...
阿嚏!阿嚏! 本书特色 《阿嚏!阿嚏!(图画故事卷)》为婴儿画报·乐悠悠摇篮书库之一。阿嚏!阿嚏! 内容简介 《婴儿画报》创办于1985年,是国内**本以0-3...
《情商与影响力(第5版)》内容简介:在竞争日益激烈的今天,情商与影响力越来越为人们所重视。本书从培养习惯、缔造个人魅力入手,
能源大探秘 本书特色 《生物群落的秘密地图》将带小读者进行一次环球旅行,去探索陆上和水中的各种生物群落——我们将到森林里漫步,在沙漠中体验炎热,在苔原上体验寒冷...
《好好装修不将就》内容简介:装修总是计划赶不上变化,每一次意外都让你手忙脚乱? 装修之路漫漫无期,无数次想要放弃? 装修雷区一
《三体》中的物理学 本书特色 这是一部奇特而富于妙趣的科普书。作者作为理论物理学家,从近年来在世界范围内产生广泛影响的科幻小说《三体》切入,生动展现了宇宙的生死...
彩色图解世界未解之谜 本书特色 文若愚编*的《彩色图解世界未解之谜》以独特 的视角审视大千世界各种神秘诡谲之现象,以探索的 眼光研究各种谜题,探究事件真面目,深...
《时间地图》将自然史与人类史综合成了一篇宏伟壮丽而又通俗易懂的叙述。这是一项伟大的成就,类似于17世纪伊萨克·牛顿运用匀速
彼得的椅子 内容简介 爸爸想把彼得小时候用的高脚椅漆成粉红色,好让妹妹使用;彼得看到连小时候的婴儿床也变成粉红色的,再加上玩积木时被妈妈说要安静点、别吵到小妹妹...
太行山-中国地理百科 本书特色 “中国地理百科”丛书创新地把中国全境按山川形胜划分出数百个地理单元,并力求融“百科全书词典&...
《水在水之外》内容简介:葛水平的作品把读者带进一种久违却亘古的生存状态。“行走”在黄河文化的深层和历史深处,不仅身临其境,
《烟草工业智能生产管理模式及实践》内容简介:本书系统地讲解了烟草工业企业信息化在智能生产管理中的融合及深入应用,帮助读者进
极地生存探秘 内容简介 本书内容包括人类**次环球航行、歌伦布发现新大陆、弗里乔夫·南林的北极探险等。极地生存探秘 目录 洪保德和邦普朗的发现之旅孤身环球航行*...