前言
本书融合了我们在威胁建模和安全系统设计方面10年的研究、开发和实践经验。我们通过自己的观察和总结应用程序安全社区中其他人的经验来确保内容优质。
尽管我们试图介绍一些具有前瞻性的方法和技术,但我们知道在未来的几个月或几年中,变化将会超出本书的内容。威胁建模在不断演进。在撰写本书时(2020年),可以使用20多种不同的方法来执行安全性建模和分析。全球以安全为重点的组织和开发社区中的活跃论坛一直在发明新技术或更新现有技术。考虑到这一点,本书的目标是提供可行和可访问的信息以及足够的理论和指导,以使你得出自己的结论,并使这些技术适用于自己的团队和系统。
为什么写作本书
人们通常认为必须引入安全专家才能进行威胁建模,但事实并非如此。本书的最终目标是改变大众对威胁建模的认识,使它成为任何人都可以学习和使用的技能。
几年前,我们和许多人一样,对“威胁建模”一事感到困惑。
随着时间的推移,我们开始了解其中的一些方法、难点,以及一个好的威胁模型可以带来的乐趣。在此过程中,我们遇到了许多有趣的、聪明的人,他们将威胁建模(以及随之而来的元知识)提升到了一个全新的水平,我们从中学到了很多。我们提出了自己的想法,并意识到可以在整个过程中帮助其他人,让他们摆脱对威胁建模的恐惧、不确定和怀疑。简而言之,我们希望人们像我们一样对它感到兴奋。
目标读者
本书适合系统开发团队的成员(开发人员、架构师、设计师、测试人员、DevSecOps)阅读,这些人员要(或希望)提高其设计、开发流程和已发布系统的安全性。当然,目标读者包括正在设计、构建或维护产品和IT系统的人员。
传统的安全从业人员也会在本书中找到有价值的内容,特别是那些尚未进行威胁建模的人。产品经理、项目经理和其他技能水平较低的人员也应该能够从书中获益。
本书内容
本书的主要内容是如何使用威胁建模来分析系统设计,以及识别系统实施和部署中固有的风险,并规避这种风险。我们没有提供用于安全设计或分析特定拓扑、系统、算法的具体解决方案,但会给出其他相关图书资源,这些书在这些方面做得很好。我们的目标是为你提供识别风险所需的工具,解决这些风险的具体方法,并为你提供更多信息来源,以帮助你扩展威胁建模技能。
在第0章中,我们介绍安全原则和安全设计技术的背景,并讨论用于保护数据和系统功能的基本属性和机制。我们检查安全性、隐私性和可靠性之间的关系,并定义风险。我们还将识别决定系统风险的因素。对于那些对应用程序安全性不熟悉的新手,以及那些希望对安全性原理和目标进行复习的人,该章中介绍的安全基础尤为重要。
在第1章中,我们介绍系统建模技术,并展示如何识别关键特征,这些特征对于评估系统的安全性至关重要。我们识别可利用的缺陷以及这些缺陷对系统安全性产生负面影响的方法。
在第2章和第3章中,我们将威胁建模概述为系统开发生命周期中的一项活动,并深入研究流行的威胁建模技术,以供你在对系统进行建模和分析时使用。我们还将讨论更新的方法,并探讨威胁建模的游戏化。这两章的内容对所有读者都是有价值的。
在第4章和第5章中,我们讨论威胁建模方法、自动化和敏捷开发方法(包括DevOps自动化)的未来。我们还将介绍以新颖有趣的方式执行威胁建模的专业技术。这些内容对于读者来说特别有趣。
第6章介绍开发团队在其组织中开始进行威胁建模时经常遇到的问题。我们提供建议和指导,以帮助用户取得进步并避免常见的陷阱和障碍。
附录包含使用pytm构建和分析威胁系统模型的完整实例。
这些技术适用于各种系统
在本书中,我们着重介绍基于软件的系统,因为它们在所有情况下都是通用的,并且我们不希望物联网(IoT)和云技术的知识成为理解示例的前提。但是我们讨论的技术适用于所有系统类型,无论是基于硬件、基于云的系统,还是几乎所有负责将数据从一端移动到另一端并安全存储的系统和软件的任何组合。我们甚至提供分析业务流程的指南,以帮助你了解它们对系统的影响。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值替换的文本。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
O'Reilly在线学习平台(O'Reilly Online Learning)
40多年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O'Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn。
本书配套网站https://oreil.ly/Threat_Modeling上列出了勘误表和其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
致谢
感谢以下人员在审校、讨论、意见、技术细节方面投入的时间以及他们在该领域的经验和知识:
Aaron Lint、Adam Shostack、Akhil Behl、Alexander Bicalho、Andrew Kalat、Alyssa Miller、Brook S. E. Schoenfield、Chris Romeo、Christian Schneider、Fraser Scott、Jonathan Marcil、John Paramadilok、Kim Wuyts、Laurens Sion、Mike Hepple、Robert Hurlbut、Sebastien Deleersnyder、Seth Lakowske和Tony UcedaVélez。
特别感谢Sheila Kamath帮助我们提高本书的质量和清晰度。初次写书,我们通过她的宝贵评论了解到,书面表达思想、撰写白皮书和撰写大众读物之间存在很大的差异,我们希望这本书对你有用。
感谢本书的编辑Virginia Wilson,感谢她的耐心、奉献和专业,还要感谢她推动我们前进。