标题：计算机安全学——安全的艺术与科学
基本信息
原书名：Computer Security: Art and Scienc
原出版社：Addison Wesley/Pearson  
作者：（美）Matt Bishop 
译者：王立斌 黄征
丛书名：国外计算机科学教材系列
出版社：电子工业出版社 
ISBN：7121007800
出版日期：2005 年5月 
开本：16开 
页码：736 
版次：1-1
编辑推荐
这是一本业内期待已久的、全面介绍计算机安全理论和实践的教科书。它是一本综合性的教材，书中包含了计算机安全领域中基础而范围广泛的内容。即使是对于最富有经验的从业人员，书中也包含了有用信息的详细描述。对任何需要理解、实现和维护一个安全网络或计算机系统的人来说，这本书都是必备的。
内容简介
本书系统地介绍了计算机安全的基本原理与应用技术。全书包括九大部分，其中安全策略模型部分详细讨论了多种不同安全策略模型的原理，包括bell-lapadula模型、biba模型、中国墙模型、clark-wilson模型等。密码学部分重点介绍密码学的应用，包括密钥管理与密钥托管、密钥分配、网络中的密码系统以及认证理论等问题。非密码学的安全机制部分介绍计算机安全实现中的多方面内容，包括安全设计原则、身份表达、访问控制实施、信息流控制等，同时还以专题的形式介绍了恶意代码、漏洞分析、审计、入侵检测等原理与技术。安全保障部分介绍可信系统的构建与评估的理论与技术，包括安全保障原理、形式化验证和可信系统评估标准等。本书还包含大量的实例、科技文献介绍以及实践内容，为帮助读者阅读，还介绍了书中用到的数学知识。
本书内容广博，实例详尽，具有很高的理论与实践参考价值，可作为研究生和高年级本科生的教材，也可供从事信息安全、计算机、通信等领域的科技人员参考。
目录
第一部分 绪论 
第1章 计算机安全概述 
1.1 基本安全服务 
1.2 威胁 
1.3 策略与机制 
1.4 假设和信任 
1.5 安全保障 
1.6 运作问题 
1.7 人为因素 
1.8 整合 
1.9 本章小结 
1.10 研究议题 
1.11 进阶阅读 
1.12 习题 
第二部分 基础知识 
第2章 访问控制矩阵 
2.1 保护状态 
2.2 访问控制矩阵模型 
2.3 保护状态转换 
2.4 复制、拥有和权限衰减规则 
2.5 本章小结 
2.6 研究议题 
2.7 进阶阅读 
2.8 习题 
第3章 基础结论 
3.1 一般性的问题 
3.2 基本结果 
3.3 take-grant保护模型 
3.4 缩小差距 
3.5 表达能力和模型 
3.6 本章小结 
3.7 研究议题 
3.8 进阶阅读 
3.9 习题 
第三部分 策略 
第4章 安全策略 
4.1 安全策略 
4.2 安全策略的类型 
4.3 信任的角色 
4.4 访问控制的类型 
4.5 策略语言 
4.6 示例:学院式计算机安全策略 
4.7 安全性与准确性 
4.8 本章小结 
4.9 研究议题 
4.10 进阶阅读 
4.11 习题 
第5章 保密性策略 
5.1 保密性策略的目标 
5.2 bell-lapadula模型 
5.3 静态原则 
5.4 关于bell-lapadula模型的争论 
5.5 本章小结 
5.6 研究议题 
5.7 进阶阅读 
5.8 习题 
第6章 完整性策略 
6.1 目标 
6.2 biba完整性模型 
6.3 lipner完整性矩阵模型 
6.4 clark-wilson完整性模型 
6.5 本章小结 
6.6 研究议题 
6.7 进阶阅读 
6.8 习题 
第7章 混合策略 
7.1 中国墙模型 
7.2 医疗信息系统安全策略 
7.3 创建者控制的访问控制 
7.4 基于角色的访问控制 
7.5 本章小结 
7.6 研究议题 
7.7 进阶阅读 
7.8 习题 
第8章 不干涉属性与策略复合 
8.1 问题 
8.2 确定性不干涉属性 
8.3 不可推导属性 
8.4 广义不干涉属性 
8.5 受限属性 
8.6 本章小结 
8.7 研究议题 
8.8 进阶阅读 
8.9 习题 
第四部分 实现i:密码学 
第9章 密码学基础 
9.1 什么是密码学 
9.2 古典密码系统 
9.3 公钥密码学 
9.4 密码校验和 
9.5 本章小结 
9.6 研究议题 
9.7 进阶阅读 
9.8 习题 
第10章 密钥管理 
10.1 会话密钥和交换密钥 
10.2 密钥交换 
10.3 密钥生成 
10.4 密钥基础设施 
10.5 备份和吊销密钥 
10.6 数字签名 
10.7 本章小结 
10.8 研究议题 
10.9 进阶阅读 
10.10习题 
第11章 密码技术 
11.1 问题 
11.2 流密码和分组密码 
11.3 网络和密码学 
11.4 协议实例 
11.5 本章小结 
11.6 研究议题 
11.7 进阶阅读 
11.8 习题 
第12章 认证 
12.1 认证基础 
12.2 口令 
12.3 挑战-应答 
12.4 生物测定学 
12.5 地理位置 
12.6 多重认证方法 
12.7 本章小结 
12.8 研究议题 
12.9 进阶阅读 
12.10 习题 
第五部分 实现ii:系统 
第13章 设计原则 
13.1 概述 
13.2 设计原则 
13.3 本章小结 
13.4 研究议题 
13.5 进阶阅读 
13.6 习题 
第14章 身份表达 
14.1 什么是身份 
14.2 文件与客体 
14.3 用户 
14.4 群组与角色 
14.5 命名与证书 
14.6 应用于web的身份 
14.7 本章小结 
14.8 研究议题 
14.9 进阶阅读 
14.10 习题 
第15章 访问控制机制 
15.1 访问控制表 
15.2 能力表 
15.3 锁与钥匙 
15.4 基于环的访问控制 
15.5 传播性访问控制表 
15.6 本章小结 
15.7 研究课题 
15.8 进阶阅读 
15.9 习题 
第16章 信息流 
16.1 基础与背景 
16.2 非格信息流策略 
16.3 基于编译器的机制 
16.4 基于执行的机制 
16.5 信息流控制实例 
16.6 本章小结 
16.7 研究议题 
16.8 进阶阅读 
16.9 习题 
第17章 限制问题 
17.1 限制问题 
17.2 隔离 
17.3 隐信道 
17.4 本章小结 
17.5 研究议题 
17.6 进阶阅读 
17.7 习题 
第六部分 安全保障 
第18章 安全保障导论 
18.1 安全保障和信任 
18.2 建造安全可信的系统 
18.3 本章小结 
18.4 研究议题 
18.5 进阶阅读 
18.6 习题 
第19章 构建有安全保障的系统 
19.1 需求定义和分析中的安全保障 
19.2 系统设计中的安全保障 
19.3 系统实现和整合中的安全保障 
19.4 系统运行和维护中的安全保障 
19.5 本章小结 
19.6 研究议题 
19.7 进阶阅读 
19.8 习题 
第20章 形式化方法 
20.1 形式化验证技术 
20.2 形式化规范 
20.3 早期的形式化验证技术 
20.4 常用的验证系统 
20.5 本章小结 
20.6 研究议题 
20.7 进阶阅读 
20.8 习题 
第21章 系统评估 
21.1 形式化评估的目标 
21.2 tcsec:1983-1999 
21.3 国际合作及itsec:1991-2001 
21.4 国际商业性安全需求:1991 
21.5 其他商业标准:20世纪90年代早期 
21.6 联邦标准:1992 
21.7 fips 140:1994-现在 
21.8 通用标准:1998-现在 
21.9 sse-cmm:1997-现在 
21.10本章小结 
21.11研究议题 
21.12进阶阅读 
21.13习题 
第七部分 专题 
第22章 恶意代码 
22.1 简介 
22.2 特洛伊木马 
22.3 计算机病毒 
22.4 计算机蠕虫 
22.5 其他形式的恶意代码 
22.6 恶意代码原理 
22.7 恶意代码的防御 
22.8 本章小结 
22.9 研究议题 
22.10进阶阅读 
22.11习题 
第23章 漏洞分析 
23.1 简介 
23.2 渗透研究 
23.3 系统漏洞分类 
23.4 框架 
23.5 gupta和gligor的渗透分析理论 
23.6 本章小结 
23.7 研究议题 
23.8 进阶阅读 
23.9 习题 
第24章 审计 
24.1 定义 
24.2 剖析审计系统 
24.3 设计审计系统 
24.4 事后设计 
24.5 审计机制 
24.6 实例:审计文件系统 
24.7 审计信息浏览 
24.8 本章小结 
24.9 研究议题 
24.10进阶阅读 
24.11习题 
第25章 入侵检测 
25.1 原理 
25.2 基本的入侵检测 
25.3 模型 
25.4 体系结构 
25.5 入侵检测系统的构成 
25.6 入侵响应 
25.7 本章小结 
25.8 研究议题 
25.9 进阶阅读 
25.10习题 
第八部分 实践 
第26章 网络安全 
26.1 引言 
26.2 策略开发 
26.3 网络组织 
26.4 可用性和泛洪攻击 
26.5 预防攻击 
26.6 本章小结 
26.7 研究议题 
26.8 进阶阅读 
26.9 习题 
第27章 系统安全 
27.1 引言 
27.2 策略 
27.3 网络 
27.4 用户 
27.5 认证 
27.6 进程 
27.7 文件 
27.8 回顾 
27.9 本章小结 
27.10研究议题 
27.11进阶阅读 
27.12习题 
第28章 用户安全 
28.1 策略 
28.2 访问权限 
28.3 文件和设备 
28.4 进程 
28.5 数字通信 
28.6 本章小结 
28.7 研究议题 
28.8 进阶阅读 
28.9 习题 
第29章 程序安全 
29.1 引言 
29.2 需求与策略 
29.3 设计 
29.4 细化与实现 
29.5 编程中普遍存在的安全相关问题 
29.6 测试、维护和运行 
29.7 发布 
29.8 结论 
29.9 本章小结 
29.10研究议题 
29.11进阶阅读 
29.12习题 
第九部分 尾章 
第30章 格 
30.1 基本概念 
30.2 格 
30.3 习题 
第31章 扩展euclid算法 
31.1 euclid算法 
31.2 扩展euclid算法 
31.3 解方程ax≡1(mod n) 
31.4 解方程ax≡b(mod n) 
31.5 习题 
第32章 熵和不确定性 
32.1 条件和联合概率 
32.2 熵和不确定性 
32.3 联合熵和条件熵 
32.4 习题 
第33章 虚拟机 
33.1 虚拟机的结构 
33.2 虚拟机管理程序 
33.3 习题 
第34章 符号逻辑 
34.1 命题逻辑 
34.2 谓词逻辑 
34.3 时态逻辑系统 
34.4 习题 
第35章 学院式安全策略实例 
35.1 加州大学电子邮件策略 
35.2 加州大学davis分校可接受使用策略 
参考文献 
前言
2001年9月11日，恐怖分子劫持了四架飞机，其中三架撞向了建筑物，另一架坠毁，造成灾难性的人员伤亡。灾难发生后，公众开始重新审视社会各个方面的安全性与可靠性，其中一方面就是关于被广泛使用的计算机和计算机网络的安全问题。 
这不是一个新问题。1988年，一种称为“蠕虫”的程序[432]①在4小时之内使Internet上的大约5000台计算机瘫痪。这种程序的快速传播和巨大影响给计算机科学家敲响了警钟，但大多数人并不担心，因为这种蠕虫程序并不影响他们的生命或者工作。1993年，更多的计算机系统用户开始提防这种危险，因为此时出现了一种称为“嗅探器”的程序，它们被安置在许多网络服务提供商运营的计算机之中，不断记录着用户的登录名和口令[374)。 
Tsutomu Shimomura在他的计算机遭到攻击后，使用了一种令人着迷的方法跟踪上攻击者，最终导致攻击者被捕[914)o这一事件最终激起了公众的兴趣与担忧。计算机现在是脆弱的，曾经一度令人放心的计算机防护性现在显得如此脆弱。 
有几部电影探讨了这种公众担忧。比如，电影WarGames和Hackers描述了那些能够随意在计算机和网络中游荡的人们，他们恶意地破坏或摧毁那些要花费几千万元才能收集到的信息。(关于电影Hackers有这样一件真实的事情。当时MGM/United Artists公司的万维网主页很快就被人更改了，被加上了一段对电影Hackers的不恭敬评论，并建议观众去看电影TheNet。Paramount电影公司否认对此事负责[448]。)另一部电影Sneakers讲述了那些为自己和政府测试计算系统(和其他系统)安全性的人的故事。 
目标 
本书有三大目标。第一个目标是要展示理论和实践相互之间的重要性。通常的情况是，实干家认为理论毫无用处，而理论家认为实践太肤浅。事实上，理论与实践是共生的。例如，隐信道理论的目的是限制进程通过使用共享资源进行通信的能力，为评价那些限制进程的机制(比如沙箱和防火墙)的有效性而提供依据。类似地，在商业领域中交易实践也会导致若干安全策略模型的发展，如Clark-Wilson模型和中国墙模型。反过来，这些模型又帮助安全策略的设计者更好地理解和评价这些用于提供安全保护的机制和规程。 
第二个目标是要强调计算机安全与密码学是两个不同的领域。虽然密码学是计算机安全的核心部分，但它决不是惟一的部分。密码学为实现特定功能提供机制，如防止非授权用户读取或篡改网络消息。但是，除非系统开发者理解他们运用的密码学技术所作用的特定环境，并且该密码协议与密码机制的假设基础也适用于这种特定环境，否则密码学技术不能为系统提高安全性。一个典型的实例是在两个低安全等级的系统之间使用密码技术进行安全通信。如果只有可信用户可以访问这两个系统，密码技术确实能保护消息的传输。但如果非可信用户也能访问这两个系统之一(通过合法账号，更可能的情况是侵入系统)，则密码技术就不足以保护消息传输。攻击者可在任意一个端点读取信息。 
第三个目标是要阐明计算机安全学不仅仅是一门科学，而且还是一门艺术。计算机安全学之所以是一门艺术，是因为如果系统不经过使用性检测，则没有任何系统可被认为是安全的。“安全计算机”的定义要求系统需求的声明和表达必须以授权操作和授权用户的形式出现。(一台用于大学的计算机因为大学的工作性质，它可以被认为足够安全。但是当将它用于军事装置中时，因为这种工作性质的改变，就可能会认为同一个系统不能提供足够的安全控制。)人应该如何与其他计算机一样，与计算机系统交互呢?设计者设计出的接口必须具备何种程度的清晰性和限制性，使得在防止非授权用户访问系统数据和资源时不会导致系统失效? 
正如艺术家要在画布上画出他眼中的真实世界一样，安全领域的设计者也要清晰地表达出他对系统安全策略和安全机制中人机交互的具体理解。为达到同一个目的，两类设计者可能会做出两种完全不同的设计，正如两个艺术家为了表达同一个概念却使用了两个不同的主题一样。 
计算机安全学也是一门科学，其理论基础是数学的构造、分析与证明，其系统是按照已被接受的工程实践标准来搭建的。计算机安全学从关键的公理出发，使用演绎与推理的方法检验系统的安全性，并揭示有关安全的基本原理。这些科学原理可以推广到非传统领域，并应用于新的理论、策略和机制。 
主导思想 
要理解计算机安全学中存在的问题，关键是要认识到这些问题都不是新问题，它们都是老问题，可追溯到计算机安全的研究初期(实际上，这些问题源自于非计算机领域的并行问题)。但随着计算科学领域的变化，计算机安全的研究重点也在变化。在20世纪80年代中期以前，大型机和中型机统治着市场，计算机安全的问题和解决方案主要还是针对单个系统的文件安全和进程安全。随着网络与Internet的兴起，计算机安全的领域发生了变化。现在是工作站、服务器以及连接它们的网络基础设备统治着市场，计算机安全问题及其解决方案主要针对当前的网络环境。但是，如果将工作站、服务器和网络支持基础设施视为一个单独的系统，则20世纪80年代中期以前发展起来的模型、理论和问题表达，同样也能很好地适用于现在的系统。 
例如，关于安全保障问题的研究。在早期，安全保障技术以几种形式出现：正确性的形式化方法和证明、对策略是否满足规范的验证、从可靠信源中采集数据和程序，等等。这些提供保障性的方法分析了单一系统、系统代码和可获得代码的信源(软件商或用户)，以确保源代码的可信性或者可充分地限制程序的破坏性。到了后期，应用的还是同样的基础原理与技术，不同的是某些领域已经得到了巨大的扩展(从单一系统和少量的软件商发展到现在覆盖全球的Internet)。携带证明代码就是这样的一个例子，它是一种新发展起来的令人振奋的技术：可下载程序模块满足某种规定策略的证明与程序本身结合在一起①。携带证明代码扩展了证明程序与策略一致的概念，是对早期技术的扩展。但是要正确理解这种技术，就必须理解携带证明代码的基础思想和这些思想的早期版本。 
另一个例子是Sahzer和Sehroeder的安全设计原则②。这些原则发表于1975年，它们提倡简单性、限制性和可理解性。如果安全机制变得过于复杂，攻击者就能逃避或绕开它们。可惜的是，许多程序员和软件商只在自己的系统和服务器被攻击者入侵时才知道这个事实。那些说这些原则老了，在某种程度上过时了的论调显得如此空洞，因为违反这些原则往往就意味着不安全系统的出现。 
早期的研究工作往往针对于现在已经不存在的系统，或者针对那些和现代系统有许多区别的系统，但这无损于早期研究的思想与概念，它们依然是现在研究工作的基础。一旦可以正确地理解这些思想与概念，就可以将它们应用在大多数环境当中。而且，随着新的计算形式的出现，现在的机制与技术也会变得过时，只具历史性意义，但基础原则将继续存在，成为下一代的——当然是下一个时代的——计算技术的基础。 
本书的指导思想是：确定的关键概念构成计算机安全所有领域的基础，并且对不同的计算机安全领域的研究也同时加深了对不同领域的理解。而且，对于安全相关技术和方法的应用和理解的评论也是对这些应用的基础理论的一种理解。 
计算机安全理论的发展指明了安全系统的理论基础。抽象建模、为特定系统建模等研究可使系统设计达到明确的、有益的目的。策略复合的理论①和广义安全问题的不可判定性②又指出了计算机安全的局限性。很多研究工作正在不断地尝试突破这些局限。 
这些理论结果的应用提高了被保护系统的安全质量。然而，问题是这些模型(和理论)的假设与这些理论所应用的实际环境在多大程度上保持一致?虽然该如何应用这些抽象概念的知识在不断增加，但是要正确地把真实框架中的相关信息转移到分析框架中去，却依然存在困难。这种抽象往往将重要信息排除在外，而那些被忽略的数据又以不明显的方式与安全相关，可是，没有这些信息，分析就存在缺陷。 
实践工作者必须同时具备两个方面的知识：计算机安全科学与艺术的理论与实践。理论阐明什么是可能的，而实践知识表明什么是可行的。理论家需要理解理论应用的限制和理论中隐含假设的真实程度，以及将理论转变为实践工具与技术的方法，本书正努力满足这些要求。 
可惜，不可能有单独的著作能够覆盖计算机安全的所有领域，所以本书关注于计算机安全中——就作者的观点而言——最基础、最普遍的领域，并使用例子来证明这些原理的应用。 
.　　本书组织 
本书的组织反映了本书的指导思想。首先介绍的是数学基础与原理，目的是为安全的有效分析与建模设定界限。这些数学原理为表达、分析系统安全需求提供了理论框架。安全策略限定了系统禁止与允许的操作，机制为实现安全策略提供能力。机制在何种程度上实施了策略，而策略又在何种程度上满足系统的需求，则属于安全保障问题。接着讨论那些利用策略、实现和安全保障的漏洞而进行的攻击，同时也讨论了为这些攻击提供信息的若干机制。最后，作为总结，介绍若干理论与策略的应用，它们都针对于现实状况。这种自然递进的讲述方式强调了计算机安全领域中现存原理的发展与应用。 
第一部分描述什么是计算机安全学所关心的问题，并探讨计算机安全所面临的问题和挑战。它为其他章节的展开打下了基础。 
第二部分处理一些基础问题，比如，如何正确地、实用地定义“安全”?安全是否是现实的?是否是可判定的?什么样的安全是可判定的，在何种条件下它是可判定的?如果不可判定，如何限制定义使得它可被判定? 
第三部分探讨了策略与安全之间的关系。“安全”的定义依赖于策略。这一部分探讨了若干策略类型，包括经常存在的信任的基础问题、策略分析和使用策略约束操作与转换等。 
第四部分讨论了密码学及其在安全中的地位。本部分重点关注于应用，并讨论密钥管理与密钥托管、密钥分配和网络中的密码系统等问题。最后简单介绍了认证理论。 
第五部分研究如何使用面向系统的技术来实现策略所带来的需求。特定的设计原则是有效的安全机制的基础。策略定义了谁能进行操作，操作什么，因此身份就是系统实现的关键。实现访问控制和信息流控制的机制从不同的方面实施安全策略。 
第六部分介绍评价系统或产品满足目标程度的方法与技术。介绍完特定的背景知识后，为了准确地解释什么是“安全保障”，本部分还讨论了可满足不同等级安全保障需求的系统构建艺术。形式化验证方法占据了重要地位。第六部分还显示，标准的发展提高了人们对安全保障技术的理解。 
第七部分讨论了涉及计算机安全的其他方面。恶意代码挫败了许多安全机制。尽管我们尽最大的努力提供高安全保障性，但今天的系统还是充满了漏洞，为什么?怎么分析才能检测出系统漏洞?哪些模型能帮助我们改善现状?给定安全漏洞，如何才能检测出利用这些漏洞的攻击者?本部分对审计技术的讨论自然引出了对入侵检测技术的讨论。 
第八部分给出实例，展示如何应用本书所讨论的原理。首先给出网络的实例，然后给出系统、用户和程序的实例。每一章都描述一种策略，然后显示如何将该策略转换成支持该策略的机制和规程。第八部分试图阐明适用于其他领域的资源能够、也应该能够被用于实践。 
本书的每一章后都有一个小结，还有对一些研究议题的描述和对进一步阅读的建议。每章小结进一步突出了本章的重要思想。研究议题是现在的“热点课题”或者是那些可被证明是推动计算机安全学发展的沃土课题。感兴趣的读者如果想对这些主题做更深入的研究，可以参考这些推荐读物。这些推荐读物扩充了章节的内容，或提出了另外一些有趣的方法。 
阅读建议 
本书既是一本参考书也是一本教材，它的读者是本科生、研究生和实践工作者。本节为着手阅读本书的读者提出一些建议。 
依赖关系 
第1章是全书的基础，应首先阅读。之后，读者就不需要按章节顺序阅读。每章之间的依赖关系如下所示。 
第3章依赖于第2章，并且要求相当程度的数学知识。相反，第2章则不这样要求。第3章的内容在很大程度上并不会被其他章节使用(虽然第一节中的关键结论的存在性、不可判定定理会不断地被提及)。如果读者的兴趣不在这个方面，可放心地跳过这一章的内容。 
第三部分的各章之间相互关联。第5章的形式化方法还会在第19章、第20章中被使用，但仅此而已。除非读者打算钻研这些章节的定理证明和形式化映射，否则这些形式化方法也可跳过。第8章的内容要求一定程度的数学知识，且这些内容在其他章节使用得很少。像第3章那样，如果读者的兴趣不在这些内容上面，第8章也可跳过。 
第9～11章也是按顺序前后关联的。这些章节的内容对于学过基础密码学的读者将会比较简单，但这些内容不要求第3章和第8章的数学基础。第12章不需要使用第10章和第11章的内容，但它要用到第9章的知识。 
第13章的知识在整个第五部分都要用到。如果读者曾经学过本科水平的操作系统课程，那么他对第15章就不会感到困难。第14章使用了第11章的内容；第16章建立在第5，13，15章的基础之上；而第17章使用了第4，13，16章的内容。 
第18章依赖于第4章的知识。第19章建立在第5，13，15，18章之上。第20章介绍了高度抽象的数学概念，并使用第18，19章的内容。第21章基于第5，18，19章的内容，但它不要求第20章的内容。软件工程的知识将非常有助于整个第五部分的学习。 
第2章吸收利用了第5，6，9，13，15，17章的思想和知识(要理解22．6节，读者必须读3．1节的内容)。第23章是自包含的，虽然它隐含地使用了许多来自安全保障机制的思想。第23章还要求编译器、操作系统和某些网络的指导性知识。因为很多的系统漏洞都来自不同版本UNIX系统或Windows系统，所以对这两种系统的工作经验将有助于理解这一章的某些内容。第24章使用了第4章的知识，而第25章使用了第24章的知识。 
第八部分的章节都是自包含的，不需要除了第1章以外的其他章节。然而它们也指出了其他章节中相关的内容，这些内容扩充了这一章的知识，并且(希望是)提高了读者对这些知识的理解。 
背景知识 
本书的内容处于高年级本科生水平。整本书都假设读者熟悉基础编译器、计算机体系结构(比如程序栈的使用)和操作系统等课程。读者也应当对模数运算(用于密码学部分)具备一定的基础。某些内容，比如形式化方法(见第20章)和计算机安全的数学理论(第3章和策略模型的形式化表达)，要求一定的数学基础。其他特定的背景知识都在各章的先头章节进行介绍。第九部分的内容将对那些缺乏某些背景知识的读者起到帮助作用。 
本书的实例来自于多种系统。许多实例来自UNIX操作系统或它们的变形系统(如Linux系统)。其他的来自于Windows系列系统。熟悉这些系统将有助读者更容易、迅速地理解许多实例。 
本科程度 
本科生的课程一般更注重于理论的应用及学生如何使用教材。对课程内容的特定选择与安排依赖于课程所关注的焦点，但课程必须覆盖某些基础内容，特别是第1，9，13章的内容和2．1节，2．2节讨论的访问控制矩阵的概念。 
提出真实的问题和解决方案通常比抽象的表达更能激发本科生的兴趣。特别专题和实践科目为此提供了大量的实践问题和方法。这也自然而然地引出更深层次的问题：策略、密码学、非密码学机制和安全保障机制。以下章节适合用于非数学专业本科生的课程。 
●策略:4．1-4．4节描述丁策略的概念。教师应该从5．1，5．2．1，6．2，6，4，7．1．1，7．2节中选取一到两个实例，非形式化地描述若干策略模型。7．4节讨论了基于角色的访问控制。 
●密码学：10．1节和10．2节讨论密钥分配，而在10．4．2节讨论了一种一般形式的公钥基础设施(PKl)。11．1节指出使用密码技术的若干普遍错误。11．3节展示如何在网络中使用密码技术，教师应当选用11．4节中的某个协议作为例子讲解。第12章介绍了多种形式的认证方法，其中包括非密码学的方法。 
●非密码学机制：身份是许多访问控制机制的基础。14．1～14．4节讨论了系统中的身份，而14．6节讨论了Web中的身份和匿名性。15．1节，15．2节探讨了两种控制文件访问的机制，而15．4节讨论了了基于环的机制，它是多级权限概念的基础。如果需要，教师可使用17．1节和17．2节来讲述沙箱，但因为17．2节使用了4．5节和4．5．1节中的内容，所以教师还需要同时介绍这些章节的内容。 
●安全保障机制：第18章是安全保障机制的基础绪论，这些主题经常被忽视。研究生程度通常，研究生的介绍性课程要比本科生的课程更注重于主题的深度。如本科生课程一样，研究生课程也应当包括第1，9，13章。同样重要的还有3．1节和3．2节的不可判定结论，这些内容需要用到第2章的内容。除此以外，教师还可从大量的专题中选择需要的内容，以适当的深度进行讲述。以下章节适合于研究生教学。 
●策略模型：第三部分包括了许多一般性的策略模型，有形式化模型也有非形式化模型。一旦理解了非形式化模型，就可更容易地理解形式化模型。5．4节的讨论对于没有考虑过策略的地位和性质的学生显得特别有启发性。第8章是对策略的基础的高度形式化讨论，适合于具备形式化数学知识的学生。没有这种背景的学生将会觉得它非常困难。 
●密码学：第四部分的重点是密码学的应用，而不是密码学的数学基础①。此部分讨论的是密码学应用的关键领域，比如密钥管理和某些应用于网络的基础密码协议。，非密码学机制：身份及验证问题是复杂的，且普遍没有得到良好的理解。14．5节包含这些问题。将这部分的内容与Web身份问题的讨论(14．6节)结合，就可提出信任与命名的问题。第16章和第17章探讨了信息流及限制信息流的问题。 
●安全保障机制：传统上，安全保障是作为形式化方法来讲授的，并且第20章也是为这个目的服务的。然而，在实践中，安全保障机制更常使用的方法是结构化过程和技术，或者合理性证明、映射和分析等非形式化但论证严格的方法。第21章讨论了评价标准，它依赖于第18章和第19章的内容以及第20章的某些思想。 
●其他专题：22．6节介绍了一种一般性判定问题的证明，即一个一般程序是否是病毒实际上是一个不可判定的问题。在23．2节研究的渗透理论和23．5节介绍的更形式化的方法阐明了系统的漏洞分析。如果教师想更深入地介绍入侵检测(第25章)，他必须知道这种讨论要大量使用审计的内容(第24章)。 
●实践：第八部分将本书之前的内容与现实世界的实例联系起来，并强调之前讨论的理论与方法的应用。 
实践工作者 
计算机安全领域的实践工作者可在本书找到许多他们感兴趣的内容。目录可以帮助他们查找特定的专题。一个更通用的方法是：从第1章开始阅读，然后立刻跳到第八部分。这一部分的所有章节都有对本书其他部分的引用说明，可解释清楚这些内容的基础所在。这使得读者可更深入地理解，为什么在实践中要运用这些策略、设置、配置和建议。这种方法也使得读者可以更关注于他们感兴趣的专题。