01 / 导读
导读
引用
Anderson, R. (2020). Security Engineering: A Guide to Building Dependable Distributed Systems (3rd ed.). Wiley. Free official edition: https://www.cl.cam.ac.uk/~rja14/book.html
章节概要
第1章:什么是安全工程?
第一部分讲基础知识。开篇一章把安全工程定义为构建在恶意、差错或意外面前仍保持可靠的系统,并提出由四个相互作用的要素组成的框架:策略、机制、保障和激励。它用四种环境(银行、军事基地、医院和家庭)说明保护目标的多样性,然后仔细定义系统、主体、信任、保密、隐私和完整性等术语,并提醒读者"安全"对不同各方意味着不同的东西。
第2章:对手是谁?
本章从四个方面考察威胁行为者:间谍(部分依据斯诺登披露的材料,介绍美国、中国和俄罗斯的能力)、罪犯(网络犯罪生态、僵尸网络和恶意软件)、极客(可能负责任地报告漏洞的研究者和黑客)以及"泥沼"(网络滥用,从欺凌、亲密伴侣虐待到政治操纵)。其结论是:设计者既要考虑可用性,也要考虑"可滥用性"。
第3章:心理学与可用性
由于如今大多数真实攻击都针对用户,本章回顾关于认知、偏差、风险感知和欺骗的心理学研究,然后考察实践中的欺骗(网络钓鱼和社会工程)。口令作为一个扩展案例,涉及可记忆性、可猜测性、用户培训和现实中的失败;本章最后讨论验证码(CAPTCHA)。
第4章:协议
安全协议用于在各主体之间建立信任。本章从口令窃听和简单的挑战-应答认证(汽车钥匙、敌我识别系统)讲起,归纳了中间人攻击、反射攻击、重放攻击和选择协议攻击等失败类型,讨论密钥管理(包括 Kerberos 式的方案)以及形式化验证的局限。它的建议是:不要自己设计协议。
第5章:密码学
这一长章面向工程师介绍密码学:古典密码、安全模型(随机预言模型和语义安全)、AES 等对称算法、工作模式、哈希函数,以及基于因数分解和离散对数的非对称原语,包括数字签名和椭圆曲线。总结强调,系统失败通常源于误用和实现缺陷(例如不安全的默认模式),而不是算法被攻破。
第6章:访问控制
本章从多个层面考察访问控制:操作系统机制(组、角色、访问控制列表、能力,以及 Unix、Windows、Android 等系统的设计)、硬件保护,以及各种出错情形——从内存安全漏洞和竞态条件到沙箱的局限。
第7章:分布式系统
本章以对抗的眼光重新审视并发、容错和命名:过时数据和不一致的更新、确定正确时间之难、冗余与拜占庭故障,以及为什么安全地管理名称和身份如此困难。
第8章:经济学
最后一个基础章节介绍古典经济学、信息经济学、博弈论和拍卖理论,并把它们应用于安全:为什么激励常常能解释技术失败,以及网络效应、锁定、信息不对称、漏洞经济学和隐私经济学。
第9–11章:多级安全;边界;推断控制
第二部分转向应用。第9章解释安全策略模型、Bell-LaPadula 多级安全模型及其后继模型,说明为什么军事多级安全难以实现,而强制访问控制如今却在保护 Android、iOS 和 Windows 等平台。第10章讨论隔离分区与格模型、濒危野生动物数据的保护,并深入讨论医疗记录隐私。第11章追溯从人口普查统计到差分隐私的推断控制发展史,并论证对内容丰富的个人数据进行匿名化很少奏效。
第12章:银行与簿记
簿记被描述为一种为真实性和问责而长期演化的系统,由 Clark-Wilson 模型加以形式化。本章随后介绍银行间支付、ATM、信用卡、EMV 芯片卡、网上银行攻击(网络钓鱼、浏览器中间人恶意软件、SIM 卡劫持)以及非银行支付。
第13–16章:锁与警报;监测与计量;核指挥与控制;安全印刷与封签
这几章讨论物理安全和计量安全。第13章讨论威慑、屏障、机械锁和电子锁以及警报系统。第14章研究预付费电表、出租车计价器、行车记录仪(转速表)和罪犯宵禁电子脚环。第15章介绍核武器控制如何催生无条件安全的认证码、共享控制方案、许可行动链路和条约核查。第16章讨论安全印刷、包装与封签、系统性漏洞以及如何评估它们。
第17–19章:生物识别;防篡改;侧信道
第17章比较手写签名、人脸识别、指纹、虹膜码和语音,解释错误率统计以及出错的原因。第18章追溯硬件安全模块、智能卡和安全芯片中攻防交替的循环,并探讨什么值得保护。第19章讨论辐射安全、计算机之间和计算机内部的被动与主动侧信道攻击(包括计时攻击和缓存攻击)、环境传感器以及社会侧信道。
第20章:高级密码工程
在硬件与软件交汇之处,本章研究全盘加密、Signal 消息协议、Tor、硬件安全模块、可信执行环境(enclave)和区块链,最后以"破灭的密码学梦想"作结,指出密码系统也有漏洞,和其他东西一样需要打补丁。
第21–22章:网络攻击与防御;电话
第21章讨论网络协议与拒绝服务、恶意软件(木马、蠕虫、远程访问工具)、从过滤到入侵检测的各种防御、TLS 等密码协议、证书颁发机构与 PKI,以及网络拓扑。第22章研究电话安全:从固定电话网早期的欺诈,到 GSM、3G、4G 和 5G,再到移动平台安全、应用商店以及围绕 5G 的政治博弈。
第23–24章:电子战与信息战;版权与 DRM
第23章解释电子战(干扰、欺骗、监视与目标捕获、敌我识别、针对简易爆炸装置的对抗措施、定向能武器)及其向信息战和宣传的延伸。第24章讨论版权保护、通用计算机上的数字版权管理、信息隐藏与水印、相关政策,以及打印机墨盒锁定之类的配件控制。
第25章:新方向?
最后一个应用章节考察 2020 年前后的四个研究前沿:自动驾驶和遥控车辆、人工智能与机器学习的安全、隐私增强技术与操作安全,以及选举。
第26章:监控还是隐私?
第三部分讨论政治、管理和保障。本章涉及政府监控与情报、恐怖主义与过度反应、审查、取证与证据规则、隐私与数据保护法(包括大西洋两岸的分歧)以及信息自由。
第27–28章:安全系统开发;保障与可持续性
第27章讨论风险管理、安全攸关系统的经验教训、确定保护目标的优先次序、从瀑布式到敏捷和 DevSecOps 的开发方法,以及如何管理安全团队。第28章考察评估体系(橘皮书、FIPS 140、通用准则和安全认证)、可靠性的度量,安全(safety)与安保(security)的融合,以及在耐用品中维护软件数十年的挑战。
第29章:超越"电脑说不"
简短的结语提出未来的三个主题:社会复杂性、长寿命产品中软件的可持续性,以及政治——因为安全是一种关系,而不是一个标量。
核心概念
第1–2章:基础与威胁
- 策略、机制、保障、激励:构建可靠系统必须同时具备的四个要素。
- 威胁模型:明确说明对手是谁、想要什么以及如何行动。
- 可滥用性:系统可能被用来伤害他人的方式,应与可用性一并考虑。
第3–5章:人、协议与密码学
- 网络钓鱼与社会工程:针对用户的欺骗,是许多真实攻击的主要途径。
- 安全协议:各主体建立信任所遵循的步骤序列,容易受到重放、反射和中间人攻击。
- 工作模式:用分组密码处理较长消息的方式,误用它们是常见的失败原因。
第6–8章:访问控制、分布式系统与经济学
- 访问控制矩阵:哪些主体可以对哪些客体执行哪些操作的抽象,以访问控制列表或能力来实现。
- 拜占庭故障:出错的组件任意行事甚至相互勾结,而不仅仅是停止工作。
- 激励错位:守护系统的一方并不承担系统失败的代价。
第9–12章:策略模型与应用
- Bell-LaPadula 模型:一种多级策略,禁止在密级之间"向上读"和"向下写"。
- 差分隐私:一种形式化保证,限制统计输出所能透露的任何个人信息。
- Clark-Wilson 模型:源自簿记的完整性策略,基于规范的事务和职责分离。
第13–20章:硬件与系统工程
- 防篡改:保护设备内部的秘密不受物理探测和操纵。
- 侧信道:通过计时、功耗、辐射或共享状态而非预期接口泄露信息。
- 生物识别错误率:错误接受与错误拒绝之间的权衡,决定了识别系统的表现。
第21–25章:网络与新兴领域
- 公钥基础设施:用证书颁发机构和证书把密钥与名称绑定的体系,存在诸多信任问题。
- 流量分析:即使内容被加密,也能从通信模式中推断信息。
- 对抗性机器学习:利用学习系统的泛化或训练方式进行的攻击。
第26–29章:政策、管理与保障
- 安全表演:让人安心却并不降低风险的表面措施。
- 保障与评估:通用准则等用于确认系统是否符合其声明的过程,常受利益冲突影响。
- 可持续性:让耐用品中的软件在数十年内持续得到修补并保持安全。
评析
优点
- 涵盖面异常宽广。 本书不仅涵盖密码学、协议和访问控制,还涉及物理锁、封签、钞票印刷、核指挥与控制、电子战和选举。第二部分的引言说明这些应用如何在具体情境中引出各种保护概念,让学生看到同样的失败模式在截然不同的领域反复出现。
- 以真实失败为基础的案例研究。 各章围绕有据可查的事件以及作者的研究和咨询经验展开,从针对汽车钥匙的中继攻击(第4章)到网上银行中的网络钓鱼和 SIM 卡劫持欺诈(第12章),把原理与实际出错的证据联系起来。
- 经济学、心理学和政策被视为核心内容。 第3章和第8章把可用性和激励列为基础内容而非选修附加,第三部分则讨论监控、法律、管理和保障,体现了作者"许多失败本质上是激励失败"的论点。
- 实用的章节配套内容。 几乎每章都以总结、研究问题清单和带注释的延伸阅读结束,帮助学生和研究者进入相关文献。
局限
- 篇幅极长,深浅不一。 免费 PDF 超过 1,200 页,课程中不可能从头读到尾;一些应用章节是综述性的,而非技术性论述。
- 不是数学化的密码学教材。 第5章解释概念和陷阱,但几乎没有证明或练习;需要形式化定义和归约证明的学生必须使用专门的密码学教材。
- 没有练习题。 各章末尾是供进一步研究的研究问题,而不是可评分的练习,教师需要自行设计作业。
- 观点鲜明且有时效性。 作者以强烈的个人风格写作,对政策有明确立场,许多内容(5G、机器学习、选举)反映的是 2020 年前后的情况。
书中的应用
应用是第二部分的主体,包括:军事多级系统与数据二极管、医疗记录系统以及濒危野生动物数据的保护、人口普查统计、簿记、银行间支付、ATM、信用卡与 EMV 卡以及网上银行、防盗警报与锁、预付费电表、出租车计价器、行车记录仪和宵禁电子脚环、核指挥与控制、钞票印刷与封签、生物识别系统、智能卡与硬件安全模块、全盘加密、Signal、Tor 和区块链、电话与移动网络、电子战和 DRM,以及第25章中的自动驾驶汽车、机器学习和选举。
在课程中的定位
在本安全与密码学书单中,Anderson 的书采用系统视角和案例研究的方法。Paar、Pelzl 和 Güneysu 的 Understanding Cryptography 以及 Easttom 的 Computer Security Fundamentals 通常被认为分别是密码算法和一般安全概念的入门读物;Stallings 和 Brown 的 Computer Security: Principles and Practice 通常被认为是一本带有习题、覆盖面广的教材。学生可以用 Stallings 和 Brown 或 Easttom 进行系统学习,再用 Anderson 理解系统在实践中为何失败。
Katz 和 Lindell 的 Introduction to Modern Cryptography 以及 Bishop 的 Computer Security: Art and Science 讲授形式化的一面:密码学中的可证明安全,以及形式化的安全策略和模型。Anderson 的第5章和第9章为这些主题提供直觉;需要严格证明的学生应在读完本书之后或同时阅读这些形式化教材。
如何使用本书
据作者所言,第一部分除计算机基本素养外不要求任何技术背景,内容大致对应剑桥大学一、二年级的教学;第6、7、21章若具备操作系统和网络方面的知识会更容易理解。第一版前言所说的主要读者是设计实际系统的在职程序员和工程师。
用于课程时,第一部分(第1–8章)是核心,其中第3、4、5、8章最为重要。第二部分可按课程需要选读:第12章(银行)和第21章(网络)适合一般安全课程,第18–20章适合硬件与应用密码学,第22章适合移动安全。第三部分(第26–28章)适合政策或安全开发方面的课程。可以把每章的研究问题用作讨论或项目题目,并借助延伸阅读深入学习。作者网站还链接了一套基于本书的讲座视频和勘误表。
版本与来源
本导读依据第三版(Wiley,2020),阅读的是作者官方页面 https://www.cl.cam.ac.uk/~rja14/book.html 上发布的包含全部章节的完整免费 PDF(文件 SEv3.pdf)。内容取材于三版前言、目录、第一至第三部分的引言,以及全部 29 章的章节引言、每个小节标题和章末总结,其中第1章的框架一节和第29章为全文阅读。
