现已更新——面向21世纪的信息安全指南
信息安全是一个快速发展的领域。着眼于最富时代感的安全议题,涵盖涉及宽泛的一系列新鲜信息,这本经过充分更新和全面修订的《信息安全原理与实践(第2版)》为读者提供了解决任何信息安全难题所必备的知识和技能。
主要内容
通过聚焦于现实世界中的生动实例,并采用一种面向实践的信息安全讲述方法,这本书围绕如下4个重要主题进行组织并展开:
密码学技术:包括经典密码系统、对称密钥加密技术、公开密钥加密技术、哈希函数、随机数技术、信息隐藏技术以及密码分析技术等。
访问控制:包括身份认证和授权、基于口令的安全、访问控制列表和访问能力列表、多级安全性和分隔项技术、隐藏通道和接口控制、诸如BLP和Biba之类的安全模型、防火墙以及入侵检测系统等。
协议:包括简单身份认证协议、会话密钥、完全正向保密、时间戳技术、SSH协议、SSL协议、IPSec协议、Kerberos协议、WEP协议以及GSM协议等。
软件安全:包括软件缺陷和恶意软件、缓冲区溢出、病毒和蠕虫、恶意软件检测、软件逆向工程、数字版权管理、安全软件开发以及操作系统安全等。
在本书第2版中,特别引入了一些比较新的内容,其中涉及的安全主题包括SSH协议和WEP协议、实际的RSA计时攻击技术、僵尸网络以及安全证书等。同时还增加了一些新的背景知识,包括Enigma密码机以及一部分关于经典“橘皮书”之安全观的内容。此外,本书还有一大特色,就是大幅度地扩展和更新课后思考题,并增补了许多新的图解、表格和图形,用以阐明和澄清一些复杂的主题和问题。最后,对于课程开发来说,还有一组综合性的课堂测试用的PowerPoint幻灯片文件以及问题解答手册可供利用。
我讨厌黑盒子。我写作本书的目的之一就是要将某些惯用的黑盒子拆解开来,公之于众,这些黑盒子在当今的信息安全类书籍中比比皆是。另一方面,我也不希望你劳神费力地钻入牛角尖去对付那些琐碎的细枝末节(若你果真有此爱好的话,还可以移步去看相关的RFC文档)。所以,我通常会一笔带过那些我确信与当前所讨论主题并不相干的局部和详情。至于在上述两个貌似互斥的目标之间,我是否已实现了合理的平衡,还有赖于读者您的判定。
我已努力追求所提供的内容能够保持与时俱进,以便可以涵盖更加宽泛的诸多议题。我的目标是要对每一个议题覆盖得恰到好处,使得所提供的具体内容刚好足够你去领会相关的基本安全问题,同时又不至于陷入到无谓的细节当中不能自拔。我也会尝试对一些要点进行不断地强调和反复重申,以便那些关键性的信息不至于滑出你的视野。
我的另一个目标是要把这些主题以一种生动鲜活并且充满趣味的形式呈现出来。如果任何计算机科学的主题都能够做到富有乐趣并令人兴奋,那么信息安全也理应如此。安全是正在进行时,安全还处于新闻热议中——这个话题显然足够新鲜活泼,也足以激动人心。
我也尝试在这些素材当中注入一点点的幽默感。人们说,幽默源自伤痛。所以,其中的冷暖,请根据我开玩笑的水平细细品味,我只能说我所引领的是一种令人向往的梦幻生活。不管怎样,大部分真正不良的俏皮话都挤在狭小的脚注里,所以倒不至于太跑题。
有些信息安全的教科书会堆砌大块干燥乏味且一无是处的理论说辞。任何一本这样的著作,读来都会像研读一本微积分教材那般充满刺激和挑战。另外的一些读本所提供的内容,则看起来就像是一种对于信息的随机性收集,而其中的信息却是显然毫不相干的事实罗列。这就会给人们留下一种印象,安全实际上根本不是一个有机结合的主题。此外,还有一些书籍,会将一些高级的管理学上的老生常谈汇集到一起作为主题来介绍。最后,另有一些文本和教义选择聚焦在信息安全领域中与人相关的因素上面。虽然所有的这些教授方法都有其自身的定位,但我还是认为,首先并且也最为重要的是:对于处在基础层面的技术的固有优势和不足,安全工程师必须要有扎扎实实的理解。
信息安全是一个庞大的主题,而且又不像其他更为成熟的一些学科领域,所以对于像这样的一本书究竟应该包含哪些素材,或者到底如何组织才最佳,也都无法给出清晰明确的回答。我选择围绕以下4个主要议题来组织本书:
密码学技术
访问控制
协议
软件安全
根据我的习惯,这些议题都是相当有弹性的。举个例子,在访问控制这一议题之下,我包含了有关身份认证和授权相关的传统主题,同时也包含了诸如防火墙和CAPTCHA验证码之类的非传统主题。关于软件的议题尤其灵活,其中包含了形形色色的多个主题,就像安全软件开发、恶意软件、软件逆向工程以及操作系统之类的内容。
虽然这本书是着眼于对实践问题的研究,但我还是尽量覆盖了足够多的基本原理,以备你可以在这个领域中展开更深入的研究。而且,我也力争尽可能地最小化所需要的背景知识。特别是,对于数学形式的表达,已经控制到了最低限度(在附录中有简要的回顾,其中包含了本书中涉及的所有数学主题)。尽管存在这些自我强加的限制因素,但我仍然相信,相比除此之外的大部分安全类书籍,这本书容纳了更具实质性的密码学技术相关内容。此外,所需要的计算机科学知识背景也被降到了最低——入门级的计算机组成原理课程(或是与此相当的经验)已经是绰绰有余了。如果有一些编程经验,再加上一点儿汇编语言的基本知识,将会有助于更好地理解某几个小节的内容,不过这都不是必需的。还有几个小节会涉及一些网络技术基础知识,所以在附录中也包含简短的关于网络技术的回顾,提供了足够多的背景材料。
如果你是一名信息技术方面的专业人士,正在尝试学习更多有关安全的内容,那么我建议你完整地阅读本书。不过,如果你想躲过那些最有可能带来羁绊,同时又对全书的整体性阅读不会产生重要影响的素材,那么你大可以放心地跳过4.5节、整个的第6章(虽然6.6节值得强力推荐)以及8.4节。
如果你正在讲授一门安全课程,那么你需要认识到,这本书所包含的素材已经超过了一个学期的课程所能涵盖的内容。通常情况下,在我的本科生安全课程中,我所遵循的课程计划就如表Q-1中给出的课程表。这个课程安排允许有充足的时间去覆盖一些可选的主题。
如果认为表Q-1中所示的课程表过于繁忙(共需40个课时),你可以砍掉第8章的8.9节,以及第12章和第13章中的某些主题。当然,关于这个课程表,还有许多其他的调整也都是可行的。
表Q-1 推荐的课程安排
章 名学 时说 明
第1章 引言1讲解全部
第2章 加密基础3讲解全部
第3章 对称密钥加密4跳过3.3.5节
第4章 公开密钥加密4跳过4.5节
第5章 哈希函数及其他3跳过5.6节、5.7节中攻击细节部分以及5.9.1节
第6章 高级密码分析0跳过整章
第7章 认证4讲解全部
第8章 授权2跳过8.4.1、8.4.2和8.10节
第9章 简单认证协议4跳过9.4节
第10章 真实世界中的安全协议4跳过WEP或GSM部分
第11章 软件缺陷和恶意软件4讲解全部
第12章 软件中的安全4跳过12.3节
第13章 操作系统和安全3讲解全部,如果时间允许的话
安全不是旁观者的运动——进行大量的课后问题练习,对于学习本书中提供的素材是非常有必要的。有许多主题,在课后的思考题中会展现得更加淋漓尽致,并且常常还会引入一些附加主题。归结到一点,就是你解决的问题越多,你就能够学到越多。
基于这本书的一门安全课程,对于个人和团体项目而言,都会是理想的选择。第6章的内容对于加密类的项目来说就是非常好的资源,而附注的参考书目则提供了一个查找更多其他项目主题的出发点。此外,许多课后思考题本身就能很好地融入课堂讨论当中,或是非常适合作为课内的作业安排(例如,可以参见第10章中的思考题19,或者第11章中的思考题33)。
这本教科书的网站地址是:http://WWW.cs.sjsu.edu/-stamp/infosec/。在这里,你可以找到PowerPoint幻灯片文件,在课后思考题中提到的所有文件、勘误表等等。如果我是第一次讲授这门课程,我会特别愿意使用这些PowerPoint幻灯片文件,毕竟它们已经历了“实战”的千锤百炼,并且经过了若干轮的反复改进。此外,出版方还可以为教师提供一本问题解答手册。
关于如何使用附录也值得在此做些说明。附录F.1与第8章8.9节和8.10节的内容相关,也与整个第III部分内容有关。即便在网络技术方面有扎实的基础,这部分素材也很可能仍然是值得去回顾的,因为网络术语并不总是能够保持一致,并且这里的内容聚焦于安全方面。
附录F.2的数学基础则要负责对贯穿全书的多个不同地方提供解释和支持。基本的模运算(附录F.2.2)分别出现在第3章和第5章的几个小节当中,而相对比较高级的一些概念则是第4章和第9章的9.5节中所必需的。我已经发现,我的绝大多数学生都需要重新温习有关模运算的基础知识。其实,只需要花上大约20到30分钟的课堂时间,就可以遍历有关模运算的这些素材。相比不管不顾一头扎到公开密钥加密技术当中,花这点儿时间还是很值得的。请相信我。
在附录F.2.3中,我们就排列置换进行了简要的讨论,这是第3章中最为凸显的一个概念。而基本的离散概率知识(附录F.2.4)则在本书中多处都会遇到。最后,附录F.2.5中提供的基础线性代数理论只有在6.5节才需要用到。
就像任何庞大而且复杂的软件组件必然会包含有bug一样,这本书也不可避免地会有错误。我真心地希望听到你找出了任何的错误——无论大或小。我将会在本教材的网站上维护一个持续更新的勘误表。另外,如果你对这本书未来的版本有任何意见或建议,请不要犹豫,立刻告诉我。
第2版有什么新的内容呢?
对于第2版来说,一个主要的变化就是,课后思考题的数量和分类都有大幅增加。除了新增的和改进的课后思考题之外,也增加了一些新的主题,还有一些新的背景知识和素材也被包含了进来。实际上,所有现存的内容都经过了更新和澄清,并且所有已知的错误均已获得了修正。新加入的主题的例子包括实际的RSA计时攻击、关于僵尸网络的讨论以及安全证书涉及的范围等。新增加的背景素材包括关于Enigma密码机的一小节内容,另外还有一部分内容谈到了经典的“橘皮书”之安全观。
信息安全是一个快速发展的领域,自本书第1版于2005年出版以来,业界已经发生了不少重大的变化。但是不管怎样,本书的基本结构仍然保持不变。我相信本书的组织和议题的列举在过去这5年当中已经受住了考验。正因为如此,第2版在内容上的改变更多是一种进化,而并非革命。
第1章 引言1
1.1 角色列表1
1.2 Alice的网上银行2
1.2.1 机密性、完整性和可用性2
1.2.2 CIA并不是全部3
1.3 关于本书4
1.3.1 密码学技术5
1.3.2 访问控制5
1.3.3 协议6
1.3.4 软件安全7
1.4 人的问题7
1.5 原理和实践8
1.6 思考题9
第Ⅰ部分 加密
第2章 加密基础17
2.1 引言17
2.2 何谓“加密”18
2.3 经典加密19
2.3.1 简单替换密码20
2.3.2 简单替换的密码分析22
2.3.3 安全的定义23
2.3.4 双换位密码23
2.3.5 一次性密码本24
2.3.6 VENONA项目28
2.3.7 电报密码本29
2.3.8 1876选举密码31
2.4 现代加密技术的历史33
2.5 加密技术的分类35
2.6 密码分析技术的分类37
2.7 小 结38
2.8 思考题38
第3章 对称密钥加密45
3.1 引言45
3.2 流密码加密46
3.2.1 A5/1算法47
3.2.2 RC4算法49
3.3 分组密码加密50
3.3.1 Feistel密码50
3.3.2 DES51
3.3.3 三重DES57
3.3.4 AES59
3.3.5 另外三个分组密码
加密算法61
3.3.6 TEA算法62
3.3.7 分组密码加密模式63
3.4 完整性67
3.5 小结69
3.6 思考题69
第4章 公开密钥加密77
4.1 引言77
4.2 背包加密方案79
4.3 RSA82
4.3.1 教科书式的RSA体制
范例84
4.3.2 重复平方方法85
4.3.3 加速RSA加密体制86
4.4 Diffie-Hellman密钥交换
算法87
4.5 椭圆曲线加密89
4.5.1 椭圆曲线的数学原理89
4.5.2 基于椭圆曲线的Diffie-Hellman
密钥交换方案91
4.5.3 现实中的椭圆曲线加密
案例92
4.6 公开密钥体制的表示方法93
4.7 公开密钥加密体制的应用93
4.7.1 真实世界中的机密性94
4.7.2 数字签名和不可否认性94
4.7.3 机密性和不可否认性95
4.8 公开密钥基础设施97
4.9 小结99
4.10 思考题100
第5章 哈希函数及其他109
5.1 引言109
5.2 什么是加密哈希函数110
5.3 生日问题111
5.4 生日攻击113
5.5 非加密哈希113
5.6 Tiger Hash115
5.7 HMAC120
5.8 哈希函数的用途121
5.8.1 网上竞价122
5.8.2 垃圾邮件减阻122
5.9 其他与加密相关的主题123
5.9.1 秘密共享124
5.9.2 随机数127
5.9.3 信息隐藏129
5.10 小结133
5.11 思考题134
第6章 高级密码分析145
6.1 引言145
6.2 Enigma密码机分析146
6.2.1 Enigma密码机147
6.2.2 Enigma的密钥空间149
6.2.3 转子151
6.2.4 对Enigma密码机的
攻击153
6.3 WEP协议中使用的RC4155
6.3.1 RC4算法156
6.3.2 RC4密码分析攻击157
6.3.3 RC4攻击的预防161
6.4 线性和差分密码分析161
6.4.1 数据加密标准DES之
快速浏览162
6.4.2 差分密码分析概览163
6.4.3 线性密码分析概览165
6.4.4 微小DES166
6.4.5 针对TDES加密方案的差分
密码分析169
6.4.6 针对TDES加密方案的线性
密码分析攻击173
6.4.7 对分组加密方案设计的
提示175
6.5 格规约和背包加密176
6.6 RSA计时攻击182
6.6.1 一个简单的计时攻击183
6.6.2 Kocher计时攻击185
6.7 小结189
6.8 思考题189
第Ⅱ部分 访问控制
第7章 认证199
7.1 引言199
7.2 身份认证方法200
7.3 口令200
7.3.1 密钥和口令201
7.3.2 口令的选择202
7.3.3 通过口令对系统进行
攻击203
7.3.4 口令验证204
7.3.5 口令破解中的数学分析205
7.3.6 其他的口令问题208
7.4 生物特征技术209
7.4.1 错误的分类211
7.4.2 生物特征技术实例212
7.4.3 生物特征技术的错误率216
7.4.4 生物特征技术总结216
7.5 你具有的身份证明217
7.6 双因素认证218
7.7 单点登录和Web cookie218
7.8 小结219
7.9 思考题220
第8章 授权229
8.1 引言229
8.2 授权技术发展史简介230
8.2.1 橘皮书230
8.2.2 通用准则233
8.3 访问控制矩阵234
8.3.1 访问控制列表和访问能力
列表234
8.3.2 混淆代理人236
8.4 多级安全模型237
8.4.1 Bell-LaPadula模型238
8.4.2 Biba模型240
8.5 分隔项(compartment)241
8.6 隐藏通道242
8.7 推理控制244
8.8 CAPTCHA245
8.9 防火墙247
8.9.1 包过滤防火墙248
8.9.2 基于状态检测的包过滤
防火墙250
8.9.3 应用代理250
8.9.4 个人防火墙252
8.9.5 深度防御252
8.10 入侵检测系统253
8.10.1 基于特征的入侵检测
系统254
8.10.2 基于异常的入侵检测
系统255
8.11 小结259
8.12 思考题259
第Ⅲ部分 协议
第9章 简单认证协议269
9.1 引言269
9.2 简单安全协议270
9.3 认证协议272
9.3.1 利用对称密钥进行认证275
9.3.2 利用公开密钥进行认证278
9.3.3 会话密钥279
9.3.4 完全正向保密(Perfect Forward
Secrecy)281
9.3.5 相互认证、会话密钥
以及PFS283
9.3.6 时间戳283
9.4 身份认证和TCP协议285
9.5 零知识证明287
9.6 最佳认证协议291
9.7 小结291
9.8 思考题291
第10章 真实世界中的安全协议301
10.1 引言301
10.2 SSH302
10.3 SSL303
10.3.1 SSL协议和中间人
攻击305
10.3.2 SSL连接306
10.3.3 SSL和IPSec307
10.4 IPSec308
10.4.1 IKE阶段一:数字签名
方式310
10.4.2 IKE阶段一:对称密钥
方式312
10.4.3 IKE阶段一:公开密钥
加密方式313
10.4.4 IPSec cookie314
10.4.5 IKE阶段一小结315
10.4.6 IKE阶段二315
10.4.7 IPSec和IP数据报316
10.4.8 运输和隧道方式317
10.4.9 ESP和AH318
10.5 Kerberos320
10.5.1 Kerberos化的登录321
10.5.2 Kerberos中的票据322
10.5.3 Kerberos的安全性323
10.6 WEP324
10.6.1 WEP协议的认证324
10.6.2 WEP协议的加密325
10.6.3 WEP协议的不完
整性326
10.6.4 WEP协议的其他
问题326
10.6.5 实践中的WEP协议327
10.7 GSM328
10.7.1 GSM体系架构328
10.7.2 GSM安全架构330
10.7.3 GSM认证协议332
10.7.4 GSM安全缺陷332
10.7.5 GSM安全小结335
10.7.6 3GPP335
10.8 小结336
10.9 思考题336
第Ⅳ部分 软件
第11章 软件缺陷和恶意软件347
11.1 引言347
11.2 软件缺陷348
11.2.1 缓冲区溢出350
11.2.2 不完全仲裁360
11.2.3 竞态条件361
11.3 恶意软件362
11.3.1 Brain病毒364
11.3.2 莫里斯蠕虫病毒364
11.3.3 红色代码病毒366
11.3.4 SQL Slammer蠕虫366
11.3.5 特洛伊木马示例367
11.3.6 恶意软件检测368
11.3.7 恶意软件的未来370
11.3.8 计算机病毒和生物学
病毒372
11.4 僵尸网络373
11.5 基于软件的各式攻击374
11.5.1 腊肠攻击374
11.5.2 线性攻击375
11.5.3 定时炸弹376
11.5.4 软件信任376
11.6 小结377
11.7 思考题378
第12章 软件中的安全387
12.1 引言387
12.2 软件逆向工程388
12.2.1 Java字节码逆向
工程390
12.2.2 SRE示例391
12.2.3 防反汇编技术395
12.2.4 反调试技术396
12.2.5 软件防篡改397
12.2.6 变形2.0398
12.3 数字版权管理399
12.3.1 何谓DRM399
12.3.2 一个真实世界中的
DRM系统403
12.3.3 用于流媒体保护的
DRM405
12.3.4 P2P应用中的DRM407
12.3.5 企业DRM408
12.3.6 DRM的败绩409
12.3.7 DRM小结409
12.4 软件开发410
12.4.1 开源软件和闭源
软件411
12.4.2 寻找缺陷413
12.4.3 软件开发相关的其他
问题414
12.5 小结417
12.6 思考题418
第13章 操作系统和安全427
13.1 引言427
13.2 操作系统的安全功能427
13.2.1 隔离控制428
13.2.2 内存保护428
13.2.3 访问控制430
13.3 可信操作系统430
13.3.1 MAC、DAC以及
其他431
13.3.2 可信路径432
13.3.3 可信计算基433
13.4 下一代安全计算基435
13.4.1 NGSCB特性组436
13.4.2 引人入胜的NGSCB
应用438
13.4.3 关于NGSCB的
非议438
13.5 小结440
13.6 思考题440
附录445
参考文献463