图书前言

献给爱妻特里西娅!

——威廉·斯托林斯

献给我所有的家人和朋友,是你们的帮助使这一切成为可能!

——劳里·布朗

序言

第5版新增内容

自本书第4版出版以来,计算机安全领域的知识又不断出现了一些发展和创新。在新的版本中,我们试图捕获和展现这些新的发展和创新,同时保持对整个领域的广泛和全面的覆盖。第5版进行了大量改进,使其更加适用于教学并易于阅读。同时,我们也更新了参考资料,引入了最新的安全事件。此外,还有一些更实质性的改动贯穿全书。以下是其中一些最明显的修订。

多因素身份认证和移动身份认证(multi-factor authentication and mobile authentication):第3章新增了多因素身份认证(multi-factor authentication,MFA)的相关内容。新增内容要求用户提供两个或更多的证据(或因素)来验证其身份。这种方法越来越多地被应用于解决仅使用口令进行身份验证的已知问题,通常涉及使用硬件身份验证令牌、通过短信(SMS)或移动设备上的身份验证应用程序来实现。

强制访问控制(mandatory access control,MAC):第4章包含一些有关强制访问控制的修订内容,这些内容曾在在线版的第27章中提及。近期发布的一些Linux、macOS和Windows系统已经将这些控制作为底层安全增强功能的一部分。

社会工程学和勒索软件攻击(social engineering and ransomware attacks):第6章和第8章更新了关于社会工程学及其在勒索软件攻击中的应用讨论。这反映了此类攻击事件发生率的不断提高以及开展防御的必要性。正如在第17章所讨论的,这些防御措施包括加强安全意识培训。

供应链和商业电子邮件攻击(supply-chain and business email compromise attacks):第8章增加了关于供应链和商业电子邮件攻击(business email compromise,BEC)的内容,其中包括最近的SolarWinds攻击。近年来,许多商业和政府组织都受到了此类攻击的威胁。

更新最危险软件错误列表(updated list of the most dangerous software errors):第11章提供了最新的25个最危险软件错误列表。同时,本章还讨论了最近被广泛利用的针对Apache Log4j包的代码注入攻击。

更新基本控制列表(updated list of essential controls):第12章更新了基本控制列表,包括澳大利亚信号局的“基本八项”。所有组织都应采用这些策略来提高其操作系统的安全性。

可信计算机系统(trusted computer systems):第12章包含一些关于可信计算机系统的修订讨论,这些讨论曾在在线版的

第27章中提及,与某些政府组织中使用的安全系统相关。

更新安全控制列表(updated list of security controls):第15章大幅度更新了NIST安全控制列表,在解决组织中已识别的安全风险时应考虑这些安全控制。

安全意识和培训(security awareness and training):第17章包含对人员安全意识和培训的大幅修订。鉴于由故意或意外的人员行为导致的安全事件不断增加,本章内容尤为重要。

欧盟通用数据保护条例(European Union General Data Protection Regulation):第19章新增了一节,介绍欧盟2016年颁布的通用数据保护条例。该条例实际上是全球个人数据保护、收集、访问和使用的标准。

ChaCha20流密码(the ChaCha20 stream cipher):第20章新增了一节,详细介绍ChaCha20流密码,替代了现已废弃的RC4密码的相关内容。

伽罗瓦计数器模式(Galois counter mode):附录E对用于分组密码的新型伽罗瓦计数器认证加密模式进行详细介绍。

背景

近几年,人们在高等教育中对计算机安全及相关主题的关注程度与日俱增。导致这一状况的因素很多,其中两个突出的因素是:

(1)由于信息系统、数据库和基于Internet的分布式系统与通信已经广泛应用于商业领域,再加上愈演愈烈的各种与安全相关的攻击,各类组织机构现在开始意识到必须拥有一个全面的信息安全策略。这个策略包括使用特定的硬件与软件和训练专业人员等。

(2)计算机安全教育,也就是通常所说的信息安全教育(information security education)或者信息保障教育(information assurance education)。由于与国防和国土安全密切相关,在美国和其他许多国家,计算机安全教育已经成为一个国家目标。许多组织,如信息系统安全教育委员会(the Colloquium for Information System Security Education)和国家安全局(the National Security Agency’s,NSA’s)的信息保障课件评估组织(Information Assurance Courseware Evaluation (IACE) Program),以政府的身份领导着计算机安全教育标准的制定。

由此可预见,关于计算机安全的课程在未来的大学、社区学院和其他与计算机安全及相关领域相关的教育机构中会越来越多。

目标

本书的目标是概览计算机安全领域的最新发展状况。计算机安全设计者和安全管理者面临的核心问题主要包括定义计算机和网络系统面临的威胁,评估这些威胁可能导致的风险,以及制定应对这些威胁的恰当的、便于使用的策略。

本书将就以下主题展开论述。

原理(principles):虽然本书涉及的范围很广,但有一些基本原理会以主题的形式重复出现在一些领域并与相应的领域统一成一体,如有关认证和访问控制的原理。本书重点介绍了这些原理并且探讨了其在计算机安全一些特殊领域的应用。

设计方法(design approaches):本书探讨了多种满足特定计算机安全需求的方法。

标准(standards):在计算机安全领域,标准将越来越重要,甚至会处于主导地位。要想对某项技术当前的状况和未来的发展趋势有正确的认识,需要充分讨论与其相关的标准。

现实的实例(real-world examples):本书的许多章中都包含一些这样的小节,专门用来展示相关原理在现实环境中的应用情况。

支持ACM/IEEE网络安全课程体系2017

本书兼顾学术研究人员和专业技术人员等读者群。作为教科书,本书面向的对象主要是计算机科学、计算机工程和电子工程专业的本科生,授课时间可以是一个学期,也可以是两个学期。本书第5版的设计目标是支持ACM/IEEE网络安全课程体系2017(CSEC 2017)推荐的内容。CSEC 2017课程体系推荐的内容包含8个知识领域,如表0-1所示。本书还提出了6个跨学科概念,旨在帮助学生探索知识领域之间的联系,这对于他们理解这些知识领域非常重要,且不受底层计算学科的限制。这些概念将在第1章详细介绍,具体如下。

机密性(confidentiality):限制对系统数据和信息的访问权限,仅授权人员可访问。

完整性(integrity):确保数据和信息是准确和可信的。

可用性(availability):数据、信息和系统均可访问。

风险(risk):潜在的收益或损失。

敌手思维(adversarial thinking):一种考虑敌手力量的潜在行动来对抗预期结果的思维过程。

系统思维(systems thinking):一种考虑社会和技术约束之间相互作用,以实现可靠运作的思维过程。

表0-1 本书覆盖CSEC 2017 网络安全课程情况

知识单元 要  素 本书覆盖情况

数据安全 基础密码学概念

数字取证

端到端安全通信

数据完整性和认证

信息存储安全 第一部分 计算机安全技术与原理

第三部分 管理问题

第四部分 密码算法

第五部分 网络安全

软件安全 基础设计原则,包括最小特权、开放式设计和抽象化

安全需求和设计角色

实现问题

静态和动态测试

配置和修补程序

道德,特别是在开发、测试和漏洞披露方面 第1章 概述

第二部分 软件和系统安全

第19章 法律与道德问题

组件安全 系统组件漏洞

组件生命周期

安全组件设计原则

供应链管理安全

安全测试

逆向工程 第1章 概述

第8章 入侵检测

第10章 缓冲区溢出

第11章 软件安全

连接安全 系统、架构、模型和标准

物理组件接口

软件组件接口

连接攻击

传输攻击 第五部分 网络安全

第8章 入侵检测

第9章 防火墙与入侵防御系统

第13章 云和IoT安全

系统安全 整体分析

安全政策

认证

访问控制

监控

恢复

测试

文档 第1章 概述

第3章 用户认证

第4章 访问控制

第14章 IT安全管理与风险评估

第15章 IT安全控制、计划和规程

人员安全 身份管理

社会工程学

意识和理解

社会行为隐私和安全

个人数据隐私和安全 第3章 用户认证

第4章 访问控制

第17章 人力资源安全

第19章 法律与道德问题

组织安全 风险管理

治理和政策

法律、道德和合规性

战略与规划 第14章 IT安全管理与风险评估

第15章 IT安全控制、计划和规程

第17章 人力资源安全

第19章 法律与道德问题

社会安全 网络犯罪

网络法规

网络道德

网络政策

隐私 第8章 入侵检测

第19章 法律与道德问题

覆盖CISSP科目领域情况

本书涵盖了注册信息系统安全师(CISSP)认证所规定的所有科目领域。国际信息系统安全认证协会(ISC)2所设立的CISSP认证被认为是信息安全领域认证中的“黄金准则”,是安全产业唯一被广泛认可的认证,包括美国国防部和许多金融机构在内的组织机构,都要求其网络安全部门的人员具有CISSP认证资格。2004年,CISSP成为首个获取ISO/IEC 17024(经营人员认证机构的一般要求(general requirements for bodies operating certification of persons))官方认证的信息技术项目。

CISSP考试基于公共知识体系(CBK),信息安全实践大纲由国际信息系统安全认证协会(ISC)2开发和维护,这是一个非营利的组织。CBK确定了组成CISSP认证要求的知识体系的8个领域。

这8个知识域如下,且均包含在本书中。

安全和风险管理:机密性、完整性和可用性概念,安全管理原则,风险管理,合规性,法律和法规问题,职业道德,安全策略、标准、规程和指南(第14章)。

资产安全:信息和资产分类、所有权(如数据所有者、系统所有者)、隐私保护、适当存留、数据安全控制、处置要求(如标记、标注和存储)(第5、15、16、19章)。

安全架构和工程:工程过程使用安全设计原则,安全模型,安全评估模型,信息系统安全功能,安全架构、设计和解决方案元素漏洞,基于Web的系统漏洞,移动系统漏洞,嵌入式设备和网络物理系统漏洞,密码学,场地和设施设计的安全原则,物理安全(第1、2、13、15、16章)。

通信和网络安全:安全网络架构设计(如IP和非IP协议、分段)、安全网络组件、安全通信信道、网络攻击(第五部分)。

身份和访问管理:物理和逻辑资产控制、人和设备的身份认证、身份即服务(如云身份)、第三方身份服务(如本地服务)、访问控制攻击、身份和访问配置生命周期(如配置审查)(第3、4、8、9章)。

安全评估与测试:评估与测试策略、安全过程数据(如管理和运行控制)、安全控制测试、测试输出(如自动化方式、手工方式)、安全架构漏洞(第14、15、18章)。

安全运营:调查支持和需求、日志和监视活动、资源配置、基本安全操作概念、资源保护技术、事故管理、预防法、补丁和漏洞管理、变更管理过程、恢复策略、灾难恢复过程和计划、业务连续性计划和演练、物理安全、个人安全问题(第11、12、15、16、17章)。

软件开发安全:软件开发生命周期中的安全、开发环境安全控制、软件安全有效性、获取软件安全影响(第二部分)。

支持NCAE-C 认证

美国网络安全卓越学术中心 (the National Centers of Academic Excellence in Cybersecurity,NCAE-C) 项目由美国国家安全局(the National Security Agency)主导。该项目的合作伙伴包括网络安全和基础设施安全局(the Cybersecurity and Infrastructure Security Agency,CISA)及联邦调查局(the Federal Bureau of Investigation,FBI)。NCAE-C项目办公室与多个重要机构保持密切联系,包括美国国家标准与技术研究院(the National Institute of Standards and Technology,NIST)、美国国家自然科学基金会(the National Science Foundation,NSF)、国防部首席信息官办公室(the Department of Defense Office of the Chief Information Officer,DoD-CIO)和美国网络司令部(US Cyber Command,CYBERCOM)。该项目的目的是通过促进在网络防御领域高等教育和科研的发展,培养具备网络防御专业知识的专业人员,以扩大网络安全工作队伍,减少国家基础设施中的漏洞。该项目主要包含三个学术研究方向:网络防御、网络研究和网络运营。为了达到这个目的,美国国家安全局/国土安全部定义了一组知识单元,这些知识单元必须包含在课程体系中,才能被NCAC-C纳入。每一个知识单元都由要求涵盖的最基本的一些主题及一个或多个学习目标构成,是否纳入取决于是否具有一定数量的核心和可选知识单元。

在网络防御领域,2022年的基础知识单元(foundation knowledge units)如下:

网络安全基础(cybersecurity foundations):本单元旨在帮助学生理解网络安全背后的基础概念,包括攻击、防御和事件应答。

网络安全原则(cybersecurity principles):本单元旨在传授学生基本的安全设计基础知识,帮助其创建安全的系统。

IT系统组件(IT systems components):本单元旨在帮助学生了解IT系统中的硬件和软件组件及其在系统运行中的作用。

本书广泛涵盖以上这些基础领域。此外,本书还涉及许多技术、非技术及可选知识单元。

正文纲要

本书分为以下五部分:

计算机安全技术与原理;

软件安全; 

管理问题;

密码算法;

网络安全。

本书附有术语表、常用的缩略语表和参考文献列表,可以通过扫描序言结尾处的二维码获取。此外,每章均包括习题、复习题和关键术语列表,以及进一步的阅读建议。

学生资源

在第5版中,大量面向学生的原始辅助材料都可以从网站pearsonhighered.com/stallings上获取。本书的配套网站位于Pearsonhighered.com/cs-resources(搜索stallings即可)。

配套网站提供的辅助材料如下:

课后问题及答案(homework problems and solutions):除了书中提供的课后问题,配套网站提供了更多的课后问题并配有答案。这便于学生检查自己对课本内容的理解情况,并进一步加深对这些知识的掌握。

辅助文件(support files):辅助文件包含提供了汇集众多颇具价值的论文及一份推荐阅读清单。

教师辅助材料

本书的主要目标是尽可能地为令人兴奋的、高速发展的信息安全学科提供一个有效的教学工具。这一目标不仅体现在内容组织结构上,也体现在教学辅助材料上。本书提供了以下几个补充资料以便教师组织教学。

项目手册(projects manual):项目手册包括文档和便于使用的软件,每类项目所推荐的项目任务也在后续的项目和其他学生练习小节中列出。

解决方案手册(solutions manual):每章章末的课后复习题和习题的答案或解决方案。

PPT 幻灯片(PowerPoint sliders):涵盖本书所有章节的幻灯片,适合在教学中使用。

PDF 文件(PDF files):包含本书中所有的图片和表格。

练习库(test bank):本书每章都有一组用于练习的题目。

所有的教辅材料都可以在本书的教师资源中心(instructor resource center,IRC)获得,可以通过出版商网站www.pearsonhighered.com获得。若想访问IRC,请通过http://www.pearson.com/us/contact-us/find-your-rep.html联系当地的培生(Pearson)出版公司。

项目和其他学生练习

对于许多教师来说,计算机安全课程的一个重要组成部分是一个或一组项目。通过这些自己可以动手实践的项目,学生可以更好地理解从课本中学到的概念。本书提供的教师辅助材料不仅包括如何构思和指定这些项目,还包含不同项目类型及作业分配情况的用户手册。这些都是专门设计的。教师可以按照以下的领域分配工作。

黑客练习(hacking exercises):有两个项目可以帮助学生理解入侵检测和入侵防御。

实验室练习(laboratory exercises):一系列涉及编程和书中概念的训练项目。

安全教育项目(security education(SEED) projects):安全教育项目是一系列动手练习或实验,涵盖安全领域广泛的主题。

研究项目(research projects):一系列的研究型作业,引导学生就Internet的某个特定主题进行研究并撰写一份报告。

编程项目(programming projects):涵盖各类主题的一系列编程项目,这些项目都可以用任何语言在任何平台上实现。

实际的安全评估(practical security assessments):一组分析当前基础设施和现有机构安全性的实践活动。

防火墙项目(firewall projects):提供了一个轻便的网络防火墙可视化模拟程序,以及防火墙原理教学的相关练习。

案例分析(case studies):一系列现实生活中的案例,包括学习目标、案例简介和大量案例研讨问题。

阅读/报告作业(reading/report assignment):一组论文清单,可以分配给学生阅读,要求学生阅读后撰写相应的研究报告;此外还有与教师布置作业相关的内容。

写作作业(writing assignment):一系列写作方面的练习,用于促进对知识内容的理解。

这一整套不同的项目和练习是使用本书的教师丰富学习资源的一部分,而且从这些项目和练习出发,可以方便地根据实际情况制订不同的教学计划,以满足不同教师和学生的特殊需求。更为详细的内容请参见附录A。

致谢

第5版受益于很多人的评论,他们付出了大量的时间和精力。以下是审阅本书全部或者大部分原稿的教授和教师: Bernardo Palazzi(布朗大学)、Jean Mayo(密歇根科技大学)、Scott Kerlin(北达科他大学)、Philip Campbell(俄亥俄大学)、Scott Burgess(洪堡州立大学)、Stanley Wine(纽约市立大学亨特学院)和E. Mauricio Angee(佛罗里达国际大学)。

也要感谢那些审阅本书原稿中一章或几章中技术细节的人员,他们是Umaair Manzoor(UmZ)、Adewumi Olatunji (FAGOSI Systems, Nigeria)、Rob Meijer、Robin Goodchil、Greg Barnes(Inviolate Security有限责任公司)、Arturo Busleiman(Buanzo咨询)、Ryan M.Speers(达特茅斯学院)、Wynand van Staden(南非大学,计算机学院)、Oh Sieng Chye、Michael Gromek、Samuel Weisberger、Brian Smithson(理光美洲公司,CISSP)、Josef B.Weiss(CISSP)、Robbert-Frank Ludwig(Veenendaal, ActStamp信息安全公司)、William Perry、Daniela Zamfiroiu(CISSP)、Rodrigo Ristow Branco、George Chetcuti(技术编辑,TechGenix)、Thomas Johnson(一家在芝加哥的银行控股公司的信息安全主管,CISSP)、Robert Yanus (CISSP)、Rajiv Dasmohapatra(Wipro Ltd)、Dirk Kotze、Ya’akov Yehudi和Stanley Wine (纽约市立大学杰克林商学院计算机信息系统部门客座教师)。

Lawrie Brown博士首先感谢Bill Stallings,感谢他在一起写作的过程中所带来的快乐。我也想感谢澳大利亚国防大学(Australian Defence Force Academy)信息技术与电子工程学院的同事们,感谢他们的鼓励和支持。特别地,感谢Gideon Creech、Edward Lewis和Ben Whitham对本书的一些章节内容的讨论和复审。

最后,我们也想感谢那些负责本书出版的人们,他们的工作都完成得很出色。这些人包括培生(Pearson)出版公司的员工,特别是我们的编辑Tracy Johnson,同时我们也得到了Carole Snyder、Erin Sullivan和 Rajul Jain的支持。同时,我们也要感谢Mahalakshmi Usha和Integra团队对本书的制作提供支持。最后,感谢培生(Pearson)出版公司市场营销的人们,没有他们的努力,这本书是不可能这么快到达读者手中的。

书中的参考文献和部分补充材料可扫描下页二维码获得。

符号

符号

表达式

含 义

D,K

D(K,Y )

对称密码体制中,使用密钥K解密密文Y

D,PRa

D(PRa,Y )

非对称密码体制中,使用用户A的私钥PRa解密密文Y

D,PUa

D(PUa,Y )

非对称密码体制中,使用用户A的公钥PUa解密密文Y

E,K

E(K, X )

对称密码体制中,使用密钥K加密明文X

E,PRa

E(PRa, X )

非对称密码体制中,使用用户A的私钥PRa加密明文X

E,PUa

E(PUa, X )

非对称密码体制中,使用用户A的公钥PUa加密明文X

K

密钥

PRa

用户A的私钥

PUa

用户A的公钥

H

H(X )

对消息X进行哈希运算

+

x+y

逻辑或运算OR:x OR y

·

x·y

逻辑与运算AND:x AND y

~

~x

逻辑非运算NOT:NOT x

C

特征公式,它是由数据库中的属性值的逻辑公式构成

X

X (C )

特征公式C的查询集,满足C的记录集合

|,X

|()|XC

X (C)的数量:X (C)中记录的数目

 

XCXD()() 

交集:集合X (C)与X (D)中记录的交集

 

xy 

x与y串接

作者简介

威廉·斯托林斯博士(Dr. William Stallings)已撰写著作18部,包含这些著作的修订版在内,已出版70多部有关计算机安全方面的书籍。他的作品出现在很多ACM和IEEE的系列出版物中,包括电气与电子工程师协会会报(Proceedings of the IEEE)和ACM计算评论(ACM Computing Reviews)。他曾13次获得教材和学术专著作者协会(Text and Academic Authors Association)颁发的年度最佳计算机科学教材的奖项。

在该领域的30年中,威廉·斯托林斯博士曾经做过技术员、技术经理和几家高科技公司的主管。他曾为多种计算机和操作系统设计并实现了基于TCP/IP和基于OSI的协议组,从微型计算机到大型机均有涉猎。目前,他是一名独立技术顾问,其客户包括计算机与网络设备制造商和用户、软件开发公司和政府的前沿领域研究机构等。

威廉·斯托林斯博士创建并维护着计算机科学学生资源网站(Computer Science Student Resource Site,ComputerScienceStudent.com)。这个网站为学习计算机科学的学生(和专业技术人员)提供了感兴趣的各种主题的相关文档和链接。威廉·斯托林斯博士是学术期刊Cryptologia的编委会成员之一,该期刊涉及密码学的各个方面。

劳里·布朗博士(Dr. Lawrie Brown)是澳大利亚国防大学(Australian Defence Force Academy)信息技术与电子工程学院的一名高级客座讲师。

他的专业兴趣涉及通信和计算机系统安全及密码学,包括研究伪匿名认证、身份认证和Web环境下的可信及安全,使用函数式编程语言Erlang设计安全的远端代码执行环境,以及LOKI族分组密码的设计与实现。

在他的职业生涯中,他所教授的课程包括“密码学”“网络安全”“数据结构”“Java编程语言”,这些课程同时面向本科生和研究生。

计算