本书第1版评论
“对那些陷于计算机安全痛苦问题的人而言,这是一本非常有用的书,我把它推荐给我的学生。”
——Antonia Jones,英国加地夫大学
如今,安全不再仅仅是专家们感兴趣的话题,对此感兴趣的还包括所有的终端用户、系统管理员以及软件开发者。
总有特殊的安全威胁会伴随着新的IT应用软件的开发而出现。面对永无休止的挑战,传统的解决办法也许不但不能解决问题,反而会恶化这些问题。因而,我们需要新的解决办法。
本书提出了与计算机安全有关的全面而简练的总的看法,帮助读者应对各个级别的安全问题。本书从基本的定义和概念开始,进而勾画出计算机系统的核心机制。本书覆盖了网络、操作系统以及数据库的安全问题,并显示了应该如何评估及解决安全问题。
本书第2版包括了有关软件安全的新章节、分布式系统的认证、访问控制中新的范例以及移动等方面的内容,同时还涵盖了对安全管理和密码学的简要介绍。
本书对计算机科学、工程学及相关学科下学习计算机或信息安全课程的本科生或研究生而言,是十分必要的读物。而对于技术和工程管理人员而言,这本书也会为解决复杂的安全难题提供很好的切入点。
本书既适合课堂教学,也适合自学。教学幻灯片、每章练习的解题方案等附加的资源都可以在www.wiley.com/go/gollmann上找到。
无
本书源于笔者的课程讲义,笔者曾在有关信息安全的为期一年的研究生项目中讲授。在这个项目头一年讨论产业配置的引用术语时,主管安全的管理者强调了阐明非项目目标的重要性。因此我们将非课程目标列举如下:
这不是一本计算机安全手册
这不是关于计算机安全的百科全书
这不是计算机安全的历史书
当然,本书会参考计算机安全中的历史事件,讲到很多背景知识。书中涵盖该领域中的众多材料,笔者希望安全实施人员会从中得到有用的观点和内容。不过,最初本书是作为计算机安全教科书而写的,主旨是为那些有计算机科学背景的学生提供一些评定和比较安全产品技术优势的基础。
本书第1版的前言也作了上述介绍,接着解释了笔者所选择的主题和书的结构。第1版的材料编于数年前,这段时间里因特网已经对商业用途开放,在此之前,万维网也早已经存在了,但这些事件带来的变化还没有广及今天的程度。回顾一下,从20世纪90年代中期至90年代末的这一段时间里,很多人都相信通信安全特别是强密码学可以保障因特网和万维网的安全访问。
如今,通过广泛部署令人满意的通信安全协议,这些问题已经得到解决。但是,安全仍然是一个难题。人们的关注又回到了终端系统。缓冲区溢出、一般性的代码漏洞引起了人们的注意。访问控制不再是主要由操作系统实施,中间层和应用层也都实施了访问控制。基于代码的访问控制已经替代了传统的基于用户身份的替代。
本书第2版试图客观评价计算机安全领域中的这些发展,并增加了分布式系统的认证、移动、软件安全以及访问控制中新的范例等章节。Unix安全、Windows 2000安全、网络安全等章节的内容都已经更新。另外,本书还重新安排了安全模型方面的材料,并将其分为两章。第8章讲述了如何构建一个形式化的安全模型,比如BellLaPadula模型,以及如何将它应用于计算机系统的分析。第9章说明其他重要安全模型的概况。时下流行的一些问题,比如可信计算,本书只略提一二。其他方面,如网络安全服务,在这一版中删掉了,因为(但不局限于此)这个领域仍在不断发展,技术细节很快就过时了!
与本书第1版一样,第2版也很关注计算机安全,如现在信息技术应用中使用的终端系统的技术安全问题。经过深思熟虑,笔者决定将重点放在技术方面。总的来说,这不是一本有关信息安全的书,虽然书中包括了风险分析和安全管理的概论性章节。这些章节可供那些教授信息安全课程的讲师作为背景教材使用。本书没有在这些章节上长篇大论并不意味着它们对计算机安全不重要。相反,没有技术安全应用的参考背景,就不能制定安全决策;如果管理不当,或者部署错误,即使最好的技术措施也会失效。在上面提到的研究生项目中,有关技术主题的课程就是与安全管理方面的课程一起讲授的,这些有关安全管理的课程会讲到围绕计算机安全的非技术安全问题。即使在关注技术问题时,如果在本书讲完后,读者在搞清系统目的前仍把“这个系统是安全的吗”这个问题当成一个有意义的问题,那么笔者会觉得自己很失败。
在整本书中,笔者始终尝试着从书中各方面的主题讨论中提取出通用的安全原则。在讲述具体的安全系统时,也展示了诸如Unix和Windows 2000中的安全特征。它们主要作为这些一般性观点的例证,而不作为对这些系统的全面介绍。其一,这是由于篇幅的限制,很多章节涉及的主题都可以单独写成一本书;再者是因为计算机安全系统的不断变化的特质,对技术细节的解释很快会过时;最后是因为这样一个经常会听到的抱怨:安全实施者已悉知系统是如何工作的,但是并不知道如何让它们更好地工作。因此,本书尝试提醒读者如何让系统工作得更出色。
本书的每一章都配置了练习,但笔者不能说对所有的练习都很满意。不能说计算机安全像一堆菜谱一样,可以在一本典型的教材练习限定的范围内逐一展示完全。在某些领域中,如密码安全或密码学,编写有精确答案的练习十分容易,而且只要执行正确的操作步骤即可找出准确答案。有些领域则更适合项目、论文或讨论。虽然,大家很自然地会联想到提供一个有实际系统实验的计算机安全课题,但笔者在本书中并没有提出实验环节的建议。操作系统、数据库管理系统或者防火墙是实践练习的主要来源。讲师可根据实际工作中使用的特定系统收集具体实例。针对具体的系统,还有很多优秀的讲解如何使用系统的安全机制的书籍。
由于这是一本教材,所以有时候我会在练习中收集一些很重要的材料,这些材料可能在一些计算机安全手册的主体部分有收录。
笔者很感谢那些鼓励本书出版并为第1版提供反馈意见的同事们,他们对本书中哪些地方很有用,哪些地方用处不大提出了合理建议。然而,并非所有的建议都被第2版采纳。笔者还要特别感谢Jason Crampton,他提了很多详细而有用的建议,并修正了很多章节。感谢Tuomas Aura 和Kai Rannenberg,笔者曾就一些章节中的专业技术问题向他们讨教过,他们提供了很详细的建议。
Dieter Gollmann
2005年8月于汉堡
本书第1版评论 “对那些陷于计算机安全痛苦问题的人而言,这是一本非常有用的书,我把它推荐给我的学生。” ——Antonia Jones,英国加地夫大学 如今,安全不再仅仅是专家们感兴趣的话题,对此感兴趣的还包括所有的终端用户、系统管理员以及软件开发者。 总有特殊的安全威胁会伴随着新的IT应用软件的开发而出现。面对永无休止的挑战,传统的解决办法也许不但不能解决问题,反而会恶化这些问题。因而,我们需要新的解决办法。 本书提出了与计算机安全有关的全面而简练的总的看法,帮助读者应对各个级别的安全问题。本书从基本的定义和概念开始,进而勾画出计算机系统的核心机制。本书覆盖了网络、操作系统以及数据库的安全问题,并显示了应该如何评估及解决安全问题。 本书第2版包括了有关软件安全的新章节、分布式系统的认证、访问控制中新的范例以及移动等方面的内容,同时还涵盖了对安全管理和密码学的简要介绍。 本书对计算机科学、工程学及相关学科下学习计算机或信息安全课程的本科生或研究生而言,是十分必要的读物。而对于技术和工程管理人员而言,这本书也会为解决复杂的安全难题提供很好的切入点。 本书既适合课堂教学,也适合自学。教学幻灯片、每章练习的解题方案等附加的资源都可以在www.wiley.com/go/gollmann上找到。
Dieter Gollmann:Dieter Gollmann: 汉堡科技大学分布式应用软件安全的教授,曾做过伦敦大学皇家豪乐威学院的访问教授、丹麦技术大学副教授。另外,他曾在剑桥大学微软研究中心担任研究信息安全的研究员。
张小松:暂无简介
计算机的安全问题已经成为世界性关注的问题,计算机用户在使用计算机的过程中几乎无一幸免地受到过各种病毒、恶意软件、流氓软件的骚扰或攻击。这些攻击轻则造成系统的工作不稳定,影响工作的正常进行;重则造成系统崩溃,保密资料被窃。据统计,电脑病毒对全世界企业造成的损失呈逐年上升趋势。2001年造成的损失为110亿美元,但到了2003年造成的损失已达到550亿美元。新病毒,新攻击的破坏方式层出不穷。无论反病毒公司的动作有多快,他们始终滞后于病毒发展的速度,可见,解决计算机安全问题已经迫在眉睫。从普通用户的角度讲,树立计算机安全使用意识是必须解决的问题;从计算机安全专业技术人员的角度讲,设计并实现更加安全的计算机系统架构也是目前安全现状提出的进一步要求。而这两者都必须从源头入手,即需要了解计算机安全的基本概念和原理,本书即是从技术原理的角度介绍了计算机安全领域最基本和最重要的原理,对于希望全面掌握了解计算机安全原理的人而言,这是一本非常有用的书。
全书分为17章,从计算机安全的基本的定义和概念开始,覆盖了网络安全、操作系统安全以及数据库安全等方面的主题,内容几乎涉及了目前计算机安全领域的所有方面,从基于口令访问控制的基本模型到操作系统完整性和内存访问控制保护机制,从计算机安全模型到计算机安全评估,从密码学和密钥管理协议到网络安全,从软件漏洞到基于代码的访问控制,从移动服务安全机制到数据库安全,内容丰富,深入浅出。
本书适合作为高等学校信息安全专业本科或工程硕士的《信息安全概论》、《计算机安全》等基础课程的参考教材,也可作为其他学科在安全类课程方面的参考教材,还可以作为信息专业技术人员的参考用书,是信息安全方面较理想的教学参考书籍。
本书的翻译工作由潘小会、邵林、王巧、谢飞、刘飞、陈亮、刘智、王东、龙小书、姜毅完成,最终由张小松统稿。
在翻译过程中,译者在不偏离作者原意的原则下,尽量运用流畅、准确的文句表达原书内容。由于译者水平有限,难免存在译误,敬请读者指正。
译者
2007年12月
目录
出版者的话
专家指导委员会
译者序
前言第1章绪论
11攻击与攻击者
12安全
13安全管理
131安全策略
132测量安全
133标准
14风险与威胁分析
141资产
142漏洞
143威胁
144风险
145对策——减轻风险
15深层阅读
16练习
第2章计算机安全基础
21定义
211安全
212计算机安全
213机密性
214完整性
215可用性
216问责性
217不可否认性
218可靠性
219计算机安全定义
22计算机安全进退两难的困境
23数据与信息
24计算机安全原则
241控制重点
242人—机标尺
243复杂性与保证性
244集中控制或分布控制
25下层
26深层阅读
27练习
第3章身份识别与认证
31用户名与口令
32口令管理
33选择口令
34欺骗攻击
35保护口令文件
36一次签到
37可供选择的方法
38深层阅读
39练习
第4章访问控制
41背景
42认证和授权
43访问操作
431访问模式
432BellLaPadula模型的访问权限
433当前的操作系统
44所有权
45访问控制结构
451访问控制矩阵
452能力
453访问控制列表
46中间控制
461组和否定的许可
462特权
463基于角色的访问控制
464保护环
47偏序
471VSTa微内核中的能力
472安全级别的格
473多级安全
48深层阅读
49练习
第5章引用监控器
51引言
511部署引用监控器
512执行监控器
52操作系统完整性
521操作模式
522受控调用
53硬件安全特性
531安全基本原理
532计算机体系结构的简单概述
533进程和线程
534受控调用——中断
535Intel 80386/80486上的保护
54存储器保护
55深层阅读
56练习
第6章UNIX安全
61引言
62主角
621用户账户
622超级用户(根)
623组
63主体
631登录和口令
632影子口令文件
64对象
641i节点
642默认许可位
643目录的许可
65访问控制
651设置UID和GID
652更改许可
653UNIX访问控制的不足
66一般安全原则的实例
661受控调用的应用
662删除文件
663设备保护
664改变文件系统的根
665挂接文件系统
666环境变量
667搜索路径
668包裹层
67管理问题
671管理超级用户
672可信主机
673审计日志与入侵检测
674安装与配置
68深层阅读
69练习
第7章Windows 2000安全
71引言
711体系结构
712注册表
713域
714活动目录
72访问控制——组件
721主角
722主体
723对象
724访问掩码
725扩展权限
73访问决策
731DACL
732决策算法
733ACE继承
74受限上下文
75管理
751用户账户
752默认用户账户
753审计
754小结
76深层阅读
77练习
第8章BellLaPadula模型
81状态机模型
82BellLaPadula模型
821状态集
822安全策略
823基本安全定理
824稳定性
825BLP的各个方面及其局限性
83BLP的Multics阐述
831Multics中的主体和对象
832转换BLP策略
833检查内核原语
84深层阅读
85练习
第9章安全模型
91Biba模型
911静态完整性级别
912动态完整性级别
913调用的策略
92中国墙模型
93ClarkWilson模型
94HarrisonRuzzoUllman模型
95信息流模型
951熵和平均值
952基于格的模型
96执行监控器
961执行属性
962安全性和活动性
97深层阅读
98练习
第10章安全评估
101引言
102橘皮书
103虹系列
104信息技术安全评估标准
105联邦标准
106共同标准
1061保护配置文件
1062评估保证级别(EAL)
1063评估方法
107质量标准
108成果是否得到充分利用
109深层阅读
1010练习
第11章密码学
111引言
1111旧的范例
1112新的范例
1113密钥
1114密码机制
112模运算
113完整性检查功能
1131冲突和生日悖论
1132操作检测码
1133消息认证码
1134安全哈希算法
114数字签名
1141一次性签名
1142ElGamal签名和DSA
1143RSA签名
115加密
1151数据加密标准
1152块加密器模式
1153RSA加密
1154EIGamal加密
116密码机制的强度
117演示
118深层阅读
119练习
第12章分布式系统中的认证
121引言
122密钥建立和认证
1221远程认证
1222密钥建立
123密钥建立协议
1231认证密钥交换协议
1232DiffieHellman协议
1233NeedhamSchroeder协议
1234基于口令的passwordbased
协议
124Kerberos
1241领域
1242Kerberos和Windows
1243委派
1244撤销
1245小结
125公钥基础设施
1251证书
1252证书权威
1253X509/PKIX证书
1254证书链
1255撤销
1256电子签名
126可信计算—证明
127深层阅读
128练习
第13章网络安全
131引言
1311威胁模型
1312通信模型
1313TCP会话劫持
1314TCPSYN洪泛攻击
132协议设计原则
133IP安全
1331认证报头
1332封装安全有效载荷
1333安全关联
1334因特网密钥交换协议
1335IPsec策略
1336小结
134SSL/TLS
135域名系统DNS
136防火墙
1361包过滤
1362状态包过滤器
1363电路级代理
1364应用层代理
1365防火墙策略
1366边界网络
1367局限性和问题
137入侵检测
1371漏洞评估
1372误用检测
1373异常检测
1374基于网络的入侵检测系统
1375基于主机的入侵检测系统
1376蜜罐
138深层阅读
139练习
第14章软件安全
141引言
1411安全性和可靠性
1412恶意程序分类
1413黑客
1414环境的改动
142字符和数字
1421字符(UTF8编码)
1422整数溢出
1423数组
143规范表示
144内存管理
1441缓冲区溢出
1442虚拟内存系统(VMS)登录
1443finger漏洞
1444栈溢出
1445不可执行的栈
1446堆溢出
1447类型混淆
1448疯狂的电脑黑客
1449AS/400机器接口模板
145数据和代码
1451远程登录漏洞
1452脚本
1453SQL插入
146竞争条件
147防御
1471防止:硬件
1472防止:类型安全
1473预防:更安全的函数
1474检测:代码检查
1475检测:测试
1476缓和:最低权限
1477反应:紧跟时代步伐
148深层阅读
149练习
第15章新的访问控制范例
151引言
1511访问控制范例的改变
1512修订的有关访问控制的术语
152基于代码的访问控制
1521堆栈检查
1522基于历史的访问控制
153Java安全
1531执行模型
1532Java 1安全模型
1533Java 2安全模型
1534字节码校验器
1535类加载器
1536策略
1537安全管理器
1538小结
154NET安全框架
1541通用语言运行库
1542基于代码身份的安全
1543证据
1544强名称
1545许可
1546安全策略
1547堆栈遍历
1548小结
155cookie
156简单公钥基础设施
157信任管理
158数字版权管理
159深层阅读
1510练习
第16章移动
161引言
162GSM
1621部件
1622临时移动用户标识
1623加密算法
1624用户身份认证
1625加密
1626基于位置的服务
1627小结
163通用移动通信系统
1631假基站攻击
1632加密算法
1633UMTS认证和密钥协议
164移动IPv6的安全性
1641移动IPv61642安全绑定更新
1643地址所有权
165无线局域网
1651无线对等加密
1652WPA
1653IEEE 80211iWPA2
166蓝牙
167深层阅读
168练习
第17章数据库安全
171引言
172关系数据库
1721数据库的关键字
1722完整性规则
173访问控制
1731SQL安全模型
1732特权的授予和撤销
1733通过视图的访问控制
174统计数据库的安全
1741聚集和推断
1742跟踪攻击
1743对策
175操作系统的完整性
176隐私
177深层阅读
178习题
参考文献