威胁建模:设计和交付更安全的软件

威胁建模:设计和交付更安全的软件 pdf epub mobi txt 电子书 下载 2025

[美] 亚当·斯塔克 著,江常青,班晓芳,梁杰,佟鑫 译
图书标签:
  • 威胁建模
  • 软件安全
  • 安全设计
  • 风险评估
  • 应用安全
  • 安全开发生命周期
  • OWASP
  • 攻击面分析
  • 安全架构
  • 漏洞预防
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111498070
版次:1
商品编码:11684194
品牌:机工出版
包装:平装
丛书名: 信息安全技术丛书
开本:16开
出版时间:2015-04-01
用纸:胶版纸
页数:393

具体描述

编辑推荐

  第24届Jolt大奖获奖图书,微软资深安全技术专家撰写,系统且深入阐释威胁建模的工具、方法、原则和实践
  深入剖析威胁建模的各种常见问题,包含大量实践案例,能为程序员开发与部署安全软件提供有效指导。

内容简介

  
  •   微软资深安全技术专家撰写,系统且深入阐释威胁建模的工具、方法、原则和实践,对威胁建模的各种常见问题进行深入分析,涉及识别安全威胁、处理安全威胁、安全措施、彻底解决安全威胁等内容,能为程序员开发安全软件提供有效指导。

      《威胁建模:设计和交付更安全的软件》分为五部分,共19章。第一部分(第1~2章)涉及入门知识,介绍威胁建模的策略、软件建模的不同方法,以及威胁建模的方式与方法。第二部分(第3~6章)介绍威胁发现方面的知识,全面介绍并分析人们对信息技术进行威胁建模的不同方法与工具。第三部分(第7~11章)介绍管理和解决威胁方面的内容,包括处理威胁、管理威胁以及可以用于解决威胁的策略和方法。第四部分(第12~16章)介绍在特定技术领域及其他相关领域威胁建模,包括网络及云系统、账户和身份、密码学及用于开启自己的安全需求分析的“需求手册”。第五部分(第17~19章)针对经验丰富的威胁建模人员、安全专家、流程设计师提出如何为特定的组织构建和定制威胁建模流程。附录补充了一些威胁建模相关的信息,可以帮助读者快速应用威胁建模技术。

      如果你是一名软件开发人员、系统管理人员或者安全专业人员,本书将告诉你在安全开发软件的生命周期中或者软件和系统总体设计的过程中如何使用威胁建模方法。在本书中,安全技术专家Adam Shostack系统且深入阐释了自己对威胁建模的理解与实践。与其他书籍不同,本书详细介绍如何从开始设计软件、计算机服务和计算机系统时就构建与提升其安全性。

      在安全事件威胁到你或者你的客户之前及时发现并修复。

      帮助软件开发人员、IT专业人员和安全爱好者学习使用实用且操作性极强的工具、技术和方法。

      探寻以软件为关键要素的威胁建模方法的微妙之处,探索其应用于软件和信息系统在构建及设计、维护等阶段的威胁建模方法。

      在复杂系统管理中应用威胁建模方法提升其安全性。

      采用结构化理论框架管理潜在的安全威胁。

      发现并识别不断变化的安全威胁。

      《威胁建模:设计和交付更安全的软件》提及的方法对于任何软件类型、操作系统、编程方法和技术均有效,可操作性极强,且其已在微软和其他IT公司中得到印证。

作者简介

  亚当 · 斯塔克(Adam Shostack),微软资深安全技术专家,微软可信计算项目团队核心管理人员,拥有数十年操作系统管理和产品开发从业经验,工作范围涉及安全开发过程、应用安全、攻击建模等安全领域。除了从事安全开发工作,他还从事针对微软公司员工、合作伙伴及客户的威胁建模培训工作。在加入微软之前,他曾在多家创业企业担任信息安全与隐私执行官,曾协助建立通用漏洞与披露信息库(CVE)、隐私增强技术研讨论坛以及国际金融加密技术协会。此外,他著有多部书籍,也是位高产的博客主和公共演讲者,曾与Andrew Stewart合作出版《The New School of Information Security》。

目录

译者序:威胁建模——网络安全的“银弹”
前言
鸣谢
第一部分 入门指南
第1章 潜心开始威胁建模 3
1.1 学习威胁建模 4
1.1.1 你正在构建什么 4
1.1.2 哪些地方可能会出错 6
1.1.3 解决每个威胁 9
1.1.4 检查你的工作 17
1.2 独立威胁建模 19
1.3 潜心开始威胁建模的检查列表 19
1.4 小结 20
第2章 威胁建模策略 21
2.1 “你的威胁模型是什么样?” 21
2.2 集体研讨 22
2.2.1 集体研讨的变种方法 23
2.2.2 文献检索 24
2.2.3 集体研讨方法的观点 25
2.3 系统的威胁建模方法 25
2.3.1 关注资产 27
2.3.2 关注攻击者 29
2.3.3 关注软件 30
2.4 软件模型 31
2.4.1 图表类型 32
2.4.2 数据流图 32
2.4.3 信任边界 36
2.4.4 图表中包含的内容 37
2.4.5 复杂图 38
2.4.6 图的标签 38
2.4.7 图中的颜色 39
2.4.8 入口点 39
2.4.9 表验证 39
2.5 小结 41
第二部分 发现威胁
第3章 STRIDE方法 45
3.1 理解STRIDE方法及其为何有用 45
3.2 假冒威胁 47
3.2.1 在同一台机器上假冒一个进程或文件 48
3.2.2 假冒一台机器 48
3.2.3 人员假冒 48
3.3 篡改威胁 49
3.3.1 篡改文件 49
3.3.2 篡改内存 49
3.3.3 篡改网络 50
3.4 否认威胁 50
3.4.1 攻击日志 50
3.4.2 否认一种行为 51
3.5 信息泄露威胁 51
3.5.1 进程信息泄露 52
3.5.2 数据存储信息泄露 52
3.5.3 数据流中的信息泄露 52
3.6 拒绝服务威胁 53
3.7 权限提升威胁 53
3.7.1 通过崩溃进程提升权限 53
3.7.2 通过授权失效提升权限 54
3.8 扩展示例:针对Acme-DB的STRIDE威胁 54
3.9 STRIDE变种 56
3.9.1 STRIDE-per-Element 56
3.9.2 STRIDE-per-Interaction 58
3.9.3 DESIST方法 61
3.10 准出条件 61
3.11 小结 62
第4章 攻击树 63
4.1 使用攻击树 63
4.1.1 利用攻击树寻找威胁 64
4.1.2 创建新的攻击树 64
4.2 展现一个攻击树 66
4.2.1 人类可识别的表现形式 66
4.2.2 结构化的表示法 70
4.3 攻击树示例 70
4.4 真实的攻击树 71
4.4.1 诈骗攻击树 71
4.4.2 选举操作评估威胁树 73
4.4.3 思维导图 73
4.5 有关攻击树的观点 75
4.6 小结 75
第5章 攻击库 76
5.1 攻击库属性 76
5.1.1 攻击库及检查列表 77
5.1.2 攻击库与文档检查 78
5.2 CAPEC 78
5.2.1 准出条件 80
5.2.2 有关CAPEC的观点 81
5.3 OWASP前十名 81
5.4 小结 82
第6章 隐私工具 83
6.1 Solove的隐私分类 84
6.2 互联网协议的隐私考虑 85
6.3 隐私影响评估 86
6.4 Nymity Slider和隐私棘轮 86
6.5 语境完整性 88
6.5.1 语境完整性启发式决策 88
6.5.2 扩大的语境完整性启发法 89
6.5.3 有关语境完整性的观点 89
6.6 LINDDUN助记符 90
6.7 小结 91
第三部分 管理和解决威胁
第7章 处理和管理威胁 95
7.1 开始威胁建模项目 95
7.1.1 何时开始威胁建模 95
7.1.2 从哪里开始和(计划)在哪结束 97
7.1.3 从哪里入手 97
7.2 深入分析减缓方法 99
7.2.1 减缓顺序 99
7.2.2 下棋 100
7.2.3 目标优选 100
7.2.4 逃避熊的袭击 100
7.3 利用表格和列表跟踪 101
7.3.1 追踪威胁 101
7.3.2 建立假设 103
7.3.3 外部安全注解 103
7.4 威胁建模的特定场景元素 105
7.4.1 客户/供应商信任边界 105
7.4.2 新技术 105
7.4.3 对API威胁建模 107
7.5 小结 108
第8章 防御策略及技术 109
8.1 减缓威胁的策略及技术 109
8.1.1 认证:减缓欺骗威胁 110
8.1.2 完整性:减缓篡改威胁 111
8.1.3 不可否认性:减缓否认威胁 113
8.1.4 机密性:减缓信息暴露威胁 115
8.1.5 可用性:减缓拒绝服务威胁 117
8.1.6 授权:减缓权限提升威胁 118
8.1.7 策略和技术陷阱 119
8.2 利用模式解决威胁 120
8.2.1 标准部署 120
8.2.2 解决CAPEC威胁 120
8.3 减缓隐私威胁 120
8.3.1 最小化 120
8.3.2 加密 121
8.3.3 遵从性和政策 123
8.4 小结 123
第9章 解决威胁时的权衡 125
9.1 风险管理的经典策略 125
9.1.1 回避风险 126
9.1.2 解决风险 126
9.1.3 接受风险 126
9.1.4 转移风险 126
9.1.5 忽略风险 127
9.2 为风险管理选择减缓措施 127
9.2.1 改变设计 127
9.2.2 应用标准减缓技术 130
9.2.3 设计定制的减缓措施 132
9.2.4 模糊编码不是减缓威胁措施 132
9.3 针对特定威胁的优先级方法 133
9.3.1 简单方法 133
9.3.2 利用错误栏威胁排序 134
9.3.3 成本估算方法 135
9.4 通过接受风险来减缓威胁 138
9.5 减缓策略中的军备竞赛 139
9.6 小结 139
第10章 验证威胁是否已解决 141
10.1 测试威胁减缓 142
10.1.1 测试过程完整性 142
10.1.2 如何测试减缓 142
10.1.3 渗透测试 143
10.2 检查你获取的代码 143
10.2.1 构建软件模型 144
10.2.2 利用软件模型 145
10.3 问答式威胁建模 145
10.3.1 模型/现实一致性 146
10.3.2 任务和过程的完成 146
10.3.3 漏洞检查 146
10.4 解决威胁的过程各方面 147
10.4.1 威胁建模授权测试;测试授权威胁建模 147
10.4.2 验证/转换 147
10.4.3 操作过程中记录假设 148
10.5 表格与列表 148
10.6 小结 150
第11章 威胁建模工具 151
11.1 通用工具 151
11.1.1 白板 151
11.1.2 办公套件 152
11.1.3 漏洞跟踪系统 152
11.2 开放源代码工具 153
11.2.1 TRIKE 153
11.2.2 SeaMonster 153
11.2.3 权限提升纸牌游戏 153
11.3 商业工具 154
11.3.1 Threat Modeler 155
11.3.2 Corporate Threat Modeller 155
11.3.3 SecurITree 155
11.3.4 Little-JIL 155
11.3.5 微软的SDL威胁建模工具 155
11.4 尚不存在的工具 158
11.5 小结 159
第四部分 科技和棘手
领域的威胁建模
第12章 需求手册 163
12.1 为何需要“手册” 163
12.2 需求、威胁、减缓威胁之间相互作用 164
12.3 商业需求 165
12.3.1 优于竞争 165
12.3.2 产业需求 165
12.3.3 场景驱动的需求 166
12.4 防御/检测/响应需求框架 166
12.4.1 防御 166
12.4.2 检测 168
12.4.3 响应 169
12.5 人员/过程/技术作为需求的框架 170
12.5.1 人员 170
12.5.2 过程 170
12.5.3 技术 170
12.6 开发需求与采购需求 171
12.7 合规性驱动的需求 171
12.7.1 云服务安全联盟 171
12.7.2 NISTPublication200 172
12.7.3 支付卡行业数据安全标准 173
12.8 隐私需求 173
12.8.1 公平信息处理条例 173
12.8.2 从设计着手保护隐私 174
12.8.3 身份识别七法则 174
12.8.4 微软开发隐私标准 175
12.9 STRIDE需求 175
12.9.1 认证 176
12.9.2 完整性 177
12.9.3 不可否认性 178
12.9.4 机密性 178
12.9.5 可用性 178
12.9.6 授权 178
12.10 非需求 179
12.10.1 操作非需求 180
12.10.2 警告和提示 180
12.10.3 微软的“十个不变法则” 180
12.11 小结 181
第13章 网络与云威胁 182
13.1 网络威胁 182
13.1.1 网站威胁 182
13.1.2 网络浏览器和插件威胁 183
13.2 云租户威胁 184
13.2.1 内部威胁 184
13.2.2 合租威胁 185
13.2.3 合规性威胁 185
13.2.4 法律威胁 185
13.2.5 电子取证响应威胁 186
13.2.6 各种各样的威胁 186
13.3 云供应者威胁 186
13.3.1 直接来自租户的威胁 186
13.3.2 租户行为导致的威胁 187
13.4 移动威胁 187
13.5 小结 188
第14章 账户与身份识别 189
14.1 账户生命周期 190
14.1.1 创建账户 190
14.1.2 账户维护 192
14.1.3 账户终止 192
14.1.4 账户生命周期检查列表 193
14.2 认证 193
14.2.1 登录 194
14.2.2 登录失败 195
14.2.3 对于“你所拥有的”威胁 197
14.2.4 对“你是谁”的威胁 197
14.2.5 对“你所知道的”威胁 199
14.2.6 认证检查列表 202
14.3 账户恢复 202
14.3.1 时间和账户恢复 203
14.3.2 账户恢复邮件 204
14.3.3 基于知识的认证 204
14.3.4 社会认证 207
14.3.5 账户恢复的攻击者驱动分析 208
14.3.6 多渠道认证 209
14.3.7 账户恢复检查列表 209
14.4 姓名、ID和SSN 210
14.4.1 姓名 210
14.4.2 身份证明文件 212
14.4.3 社保号及其他国家身份识别号 213
14.4.4 身份盗用 215
14.4.5 姓名、ID及SSN检查列表 215
14.5 小结 216
第15章 人类因素与可用性 217
15.1 人的模型 218
15.1.1 应用人的行为模型 218
15.1.2 人的模型认知科学 220
15.1.3 人的启发式模型 223
15.2 软件情景模型 225
15.2.1 对软件进行建模 225
15.2.2 软件模型的图表 227
15.2.3 对电子社会工程攻击的建模 229
15.3 威胁引出技术 229
15.3.1 集体研讨 230
15.3.2 威胁建模的仪式方法 230
15.3.3 仪式分析启发式 230
15.3.4 将可用性融于四步框架 233
15.4 解决人类因素的工具和技术 233
15.4.1 抑制人类因素作用的谬见 233
15.4.2 良好的设计决策模型 234
15.4.3 良好学习环境的设计模型 236
15.5 用户界面工具和技术 237
15.5.1 配置 237
15.5.2 显式警示 238
15.5.3 吸引注意力的模型 239
15.6 测试人类因素 240
15.6.1 良好和恶劣的情景 240
15.6.2 生态有效性 241
15.7 有关可用性与仪式的观点 242
15.8 小结 243
第16章 密码系统威胁 244
16.1 密码原语 245
16.1.1 基本原语 245
16.1.2 隐私原语 248
16.1.3 现代加密原语 248
16.2 典型威胁角色 250
16.3 针对密码系统的攻击 251
16.4 用密码创建 253
16.4.1 做决定 253
16.4.2 准备升级 254
16.4.3 密钥管理 254
16.4.4 解密之前验证 255
16.5 关于密码需要记住的事情 255
16.5.1 使用专业人士设计的密码系统 255
16.5.2 用专业人士创建或测试的密码代码 255
16.5.3 密码不是安全魔尘 256
16.5.4 假设都会公开 256
16.5.5 你仍需要管理密钥 256
16.6 加密系统:Kerckhoffs及其原则 256
16.7 小结 257
第五部分 更上一层楼
第17章 将威胁建模带到你的组织机构中 261
17.1 如何引入威胁建模 262
17.2 谁做什么 264
17.3 在开发生命周期中的威胁建模 270
17.4 克服对威胁建模的反对声音 279
17.5 小结 281
第18章 试验方法 283
18.1 查看缝隙 283
18.2 操作威胁模型 285
18.3 “宽街”分类法 288
18.4 博弈机器学习 293
18.5 对一家企业进行威胁建模 293
18.6 针对威胁建模方法的威胁 294
18.7 如何实验 297
18.8 小结 298
第19章 成功的设计 299
19.1 理解流程 299
19.2 了解参与者 303
19.3 边界对象 304
19.4 “最好”是“好”的敌人 305
19.5 展望未来 306
19.6 小结 308
附录A 有用的工具 309
附录B 威胁树 315
附录C 攻击者列表 349
附录D 权限提升纸牌游戏 365
附录E 案例研究 372
术语表 388

前言/序言

  一切模型都是错误的,不过有些是有用的。

  ——George Box(20世纪著名统计学家)

  在构建软件系统时,人们会遇到很多可以预见的安全威胁,对此,本书描述了一些有用的威胁模型,可以用于消除或减轻这些潜在威胁。

  威胁建模,名字本身听起来非常精妙,但其实指的是我们本能都会做的事情。比如,如果让你对自己的房子进行威胁建模,你会开始想房子里都有什么珍贵的人和物:你的家人、传家宝、照片,可能还包括明星签名海报;然后,你会想别人会用什么办法闯进家里,比如通过没有上锁的门,或者开着的窗子;另外,你还会想是什么样的人会来偷东西,比如邻居家调皮的孩子、职业小偷、瘾君子、跟踪狂或是早已盯上你们家珍贵名画的人。

  上述所说的这些现实生活中的例子在软件世界里也有相似的实例,不过现在重要的不是如何防范每一个威胁,而是首先你要建立这样的思维方式。如果你的朋友求助于你评估他房屋的安全性,你会伸出援手,但你可能会对自己分析的完整性缺乏信心;如果别人要求你去保障一栋办公建筑的安全,你可能也会头疼,如果要你保障军事设施或监狱的安全就更难了。在这些情况下,只凭直觉是不够的,需要使用相应的工具来解决问题。本书就为读者提供了这样的工具,利用结构化、高效的方法来思考威胁建模技术。

  本书讲述了什么是威胁建模,个人、团队、组织机构为什么需要进行威胁建模。这其中的原因包括:威胁建模可以在早期及时发现安全问题,提高对安全需求的理解,以及设计和交付更好的产品。这里通过五个部分来对本书内容进行概要介绍,包括威胁建模定义及其重要意义,哪些读者群适合阅读本书,本书为你提供什么,如何使用本书以及威胁建模技术的最新进展。

  什么是威胁建模

  日常生活中,大家对威胁建模并不陌生。比如,出于无奈在机场排队时、偷偷溜出家门或去酒吧时都会对威胁进行建模:在机场,即使你没有打算真那么做,但你可能会偷闲思考如何偷偷摸摸带一些东西混过安检;偷偷溜出去的时候,你会担心有人注视着你的行动;当你在高速路上超速时,你可能在建立隐式的威胁模型,其中主要威胁就是警察,你会想他们就潜伏在广告牌后面或天桥下面。另外,公路上的妨碍物(比如穿过马路的鹿或者雨水)都可能出现在你的威胁模型中。

  在威胁建模时,通常你会用到两类模型。一类是你所构建的软件或系统模型,一种是威胁模型(可能出错的地方)。你所构建的软件可能是网站、可下载的程序或应用,或者是可以在硬件中传递和交付的软件包,也可能是分布式计算机系统或可能成为“物联网”一部分的“物”。威胁建模是为了看到整片森林,而不是简单的几棵树木。好的模型可以帮助人解决几类或几组攻击,从而构建更安全的产品。

  英语中,“threat”一词有很多意思。可以用来形容一个人,比如“奥萨马·本·拉登(Osama bin Laden)对美国来说是个威胁”,也可以形容多个人,如“内部威胁”;另外,还可用来形容一个事件,比如“本周末将面临暴风袭击的威胁”,也可以用来形容缺陷或者受攻击的可能性,比如“你如何应对针对信息保密的威胁?”此外,“威胁”还可以形容病毒和恶意软件,如“这一威胁有三种传播方式”,也可用来形容行为,如“存在操作错误的威胁”。

  同样,“威胁建模”也有很多含义。“威胁模型”这个词可用于很多不尽相同有时甚至互不兼容的方面。其中包括:

  作为动词,例如,“你对威胁建模了吗?”这句话的意思是说,对于你所构建的软件或系统,你是否仔细检查分析处理过,以查看软件系统哪里会出现问题?

  作为名词,可表达使用的是什么威胁模型。比如,“我们的威胁模型是拥有机器的人”或说“我们的威胁模型是个专业而坚定的远程攻击者”。

  可以表达如何构建一组理想化的攻击者。

  可以表达威胁分类,比如篡改威胁。

  毫无疑问,威胁建模本身有很多含义。所有这些含义在不同语境下都是有用的,而且都是正确的,所以最好不要浪费时间争论它的含义。争论其具体的定义是毫无意义的,唯一的方法就是抛开其定义。本书涵盖威胁建模各方面的技术,涉及大量可操作的具体技术,以帮助设计或者构建更安全的软件。本书还将探讨如何解决以下现实问题:一些技术要比其他的技术更有效,并且一些技术对有特定技术或经验的人使用更有效。

  威胁建模是防御的关键。没有威胁建模,就会跟打鼹鼠游戏一样,永无完结。

  总而言之,威胁建模就是利用抽象的概念来思考风险。

  威胁建模的原因

  在当今快速发展的世界里,趋势是精简开发活动,而威胁建模有着重要的存在价值,包括早期发现安全缺陷,理解安全需求,设计和交付更安全的产品等。

  早期发现安全缺陷

  想象你在建造一座房子,对安全结果的影响你越早决定越重要。由木制墙及大量落地窗构建的房子会比砖石及少量窗户的房子的潜在危险更大,因此要根据房子建在哪里等因素选择一个合理的方案。如果在决定之后再更改,成本通常会很高。当然,作为补救,你可以在窗子上加防盗护栏,但是,若能最初就有一个更合理的设计不是更好吗?这种权衡也可以用于技术当中。威胁建模可以帮你发现设计上的问题,甚至在你一行代码都没写的时候即可发现问题,而此时也是发现这类问题的最佳时机。

  理解安全需求

  好的威胁模型能帮助你回答“那的确是实际的安全需求吗?”举例来说,系统是否需要保护设备免受他人非法拥有?苹果公司在iPhone手机产品中给出了肯定回答,这显然不同于传统的个人电脑领域。当你发现威胁以及如何处理威胁时,你要明确需求。有了更清晰的需求,你就可以专注于处理相应的安全特性和性能。

  需求、威胁与防御之间是相互作用的。在威胁建模时,会发现一些威胁不会影响你的业务,这样的威胁可能不值得处理。或者需求可能不完整,威胁处理过程复杂或者处理代价高,这时你就需要做出权衡,是在目前仅解决部分威胁,或者接受(沟通)你无法解决所有威胁的现实。

  设计和交付更安全的产品

  在构建产品时尽早考虑安全需求和安全设计,能大幅减少重新设计、重构系统,以及经常出现安全漏洞的可能性,这样你就可以从容地交付更安全的产品,最终构建更完善、更快速、更经济、更安全的产品,把更多的精力投入到用户需求的特色功能开发中。

  解决其他技术无法解决的问题

  威胁建模会发现其他工具无法发现的一系列问题,可能是遗漏错误问题,如远程连接验证错误,而代码分析工具无法发现该类问题。其他问题可能是你在系统设计中所独有的。一般地,开发者在构建新软件时,相应地会引入新的安全威胁。通过抽象的概念模型描述可能出现的错误,可以帮助你发现在其他系统里会出现的相同和相似的问题。

  由此可得出结论:威胁建模不应该聚焦于其他人身安全工程和网络安全工程中可发现的问题(除非是在早期,为了避免以后的重复劳动)。举例来说,假如你正在开发一个调用数据库的产品,威胁建模会快速定位SQL注入攻击以及可能会被攻击的注入点。然而如果没有威胁建模,可能在未来遭受攻击时才发现该类威胁。因此,威胁建模应该聚焦其他技术无法发现的问题。

  本书目标读者群

  本书目标读者是专业技术人员,如软件工程师和系统管理员,以及系统分析师、架构师等,本书也有很多可供信息安全专家阅读的内容。本书不同章节针对的读者有所不同,总体来说,前面一些章节适合大多数读者阅读(或者说除了信息安全领域之外的其他专业领域人员),本书后面章节内容则更多的是面向安全专家。

  并非只有信息安全专家、专业人士或爱好者才能阅读此书。本书希望你能通过阅读了解到现实中很多人的兴趣和欲望是跟你不同的。比如,他们可能想要从你那里得到钱财,或者他们有别的目标,比如他们拿你做牺牲品夸大自己或是用你的电脑攻击别人。

  本书语言通俗易懂,适合任何会编程或设计程序的人,只是有些时候为了表达更加准确或更加清晰而使用一些术语,本书后面还附有术语表。

  本书为你提供什么

  通过阅读本书,你能获得丰富的威胁建模技术领域相关知识。你可以将其应用在你的项目中,开发与部署更安全的软件。此外,你将学到如何明确、可度量、合理地权衡安全措施,学到一整套工具以及如何应用。同时,你可能会发现发布的软件中一些看起来很棒、有很好的创意,但实际上却暗藏危机。另外,你将学到阻止你有效威胁建模的原因,以及如何避免这些问题。

  通过阅读本书,你将学习威胁建模的输出结果——通常叫做“漏洞”(bug)。业界存有异议:普遍将代码中的问题归为漏洞(bug),将设计中的问题归为缺陷(flaw)。本书并不对其进行详细讨论,因为本书的主要目的是应用威胁建模解决问题,上述争议对本书讨论的内容无益。

  不同读者获益不同

  本书旨在为不同的技术人员提供有益的帮助,包括从事软件开发人员,以及为满足业务运营或商业目标要求而从事软件安全的技术人员。

  为方便起见,本书假设开发人员和运维人员之间有明确的区分。这种区分可以更好理解各自的能力、选择和责任。举例来说,对开发人员来说,改变审计记录(log)或实施一个不同的身份验证系统是“容易”的,而这对运维人员来说就不是一件容易的事情。同样,对运维人员来说,维护日志记录完整、保护电脑安全是“容易”的。如本书中所写,业界流行一种“敏捷运维”(devops)模型。因此,针对开发人员和运维人员的课程会有些调整。同样为了方便起见,本书还假定安全专家与开发人员、运维人员的角色互不交叉。

  显然,这就意味着,本书中同样的内容可能给不同人群带来不同的课程。以下具体介绍本书可为每一类读者提供的价值。

  软件开发及软件测试人员

  软件开发人员(日常工作主要是软件开发)包括软件工程师、质量保障及项目管理人员。如果你是这类人员,那么本书将帮助你在构建软件过程的设计初期发现并解决问题,帮助你交付满足客户需求的更加安全的软件。你将学到简单、有效且有趣的威胁建模方法,以及应用该方法从另一个角度构建软件模型和发现威胁。你将学到如何根据软件开发过程中存在的漏洞发现威胁,如何利用威胁使你的业务需求变得更加清晰。你将学到认证技术、密码学及可用性知识,在这个过程中你将发现攻击和防御之间的对抗有着悠久的历史,你能了解到本书推荐的威胁建模方法是如何发展的。你还将学到如何将威胁建模方法应用到软件开发过程中。

  系统架构、运维和管理人员

  此类人员的日常工作是集成各个软件组件,搭建有效的业务系统并维持其正常运行,通过这本书将学到在系统设计、软件组件选择、准备部署的过程中如何发现和解决威胁。本书可帮助交付满足商业和客户需求的更加安全的系统。你将学到简单、有效而有趣的威胁建模方法,以及应用该方法从另一个角度描述正在构建或者已经构建的系统。通过本书将学到如何发现系统中存在的安全和隐私威胁,如何应用该方法在操作流程中处理此类威胁,如何对你所面临的威胁权衡选择最优的安全措施,以及如何确保彻底解决这些威胁。通过本书将学到针对不同技术领域,如网络和云系统的威胁,以及针对账户的威胁,了解这些威胁对系统运维是十分重要的。书中还将涉及可用性问题,该内容或许可以让你改变你所在组织机构或者客户对安全的态度。你将学到加密的相关知识,并可以用其来保护系统。这些在书中都会详细介绍。

  安全专业人员

  如果你从事安全工作,本书主要为你提供两方面内容:首先,威胁建模的结构化方法可大大提高你的工作效率,你将学到为何很多威胁建模过程中最显而易见的部分,其实并没有你想象的那么明显和正确;其次,你会学到如何将安全引入软件开发、操作和发布流程中。

  从我个人的经验来说,即使你是安全专业人员,这本书也会给你带来帮助,让你更好地威胁建模。当我在撰写案例研究的附录时,我发现我要查阅附录B及本书有关安全需求的章节,发现并不是只要考虑软件模型就能发现威胁。

  写给信息安全领域的同僚

  坦诚地说,这本书不是关于如何设计抽象意义上完美的软件。由于大多数商业或者组织机构使用的软件存在威胁,这是一本实用的书。目前,统治着世界的软件均存在着威胁,我希望通过做出更好的权衡使得这些软件更加安全。这涉及很多方面,其中两个重要方面是:让各位同仁在其专长的技术领域内保持一致安全策略,以及易于使用威胁建模方法。

  本书的观点源于我作为系统管理员部署安全技术以及汇总人们遇到的问题时的工作经历,我作为创业企业运营人员如何使安全产品更好满足市场需求的经历,以及我在微软公司威胁建模的工作责任。威胁建模是微软公司软件开发生命周期的一部分工作。在第三个经历中,我和微软公司及其合伙人、客户等几千人讨论我们提出的方法,这些人中包括新入职的开发人员、在安全领域有着几十年工作经验的人、首席安全官、微软公司可信计算团队咨询委员会成员等。我了解到,关于行得通有太多的观点,而对于行不通的观点则寥寥无几。本书旨在让安全领域的同仁相信,开发和运维的过程改进可以帮助我们交付更加安全的软件。一些安全专家可能对此观点持怀疑态度,那么他们应该着重看第二部分、第四部分和第五部分。

  如何使用本书

  读者应该从书的开头开始阅读。即便你已经知道如何威胁建模,从头开始阅读也是最佳方式,因为书的开头为本书勾勒出了一个整体框架,可帮助你更好地理解后面的内容。

  四步框架

  本书提出这样一个观点:威胁建模并不能一步完成,而分几步完成,其中每一步完成一个子目标,为了实现这些子目标你需要回答以下问题。

  1.你在构建什么?

  2.一旦开始构建,哪些可能出错?

  3.对于出错的部分该如何处理?

  4.你做的分析工作完整吗?

  框架的每一步所用的方法都可视为乐高(Lego)积木。在搭积木时,你可以将一块积木与另外一块安装组合起来。在第1章中,你将看到利用数据流图模拟你正在构建的软件,利用STRIDE帮助你思考哪里出错以及如何处理,以及利用核查表帮助你检查是否已经做了完整的分析工作。第2章中,你将看到数据流图是最适当的思考方式。不同的数据流图就像不同的构建模块,可帮助你对构建的软件或系统进行建模。第3章将深入了解STRIDE(一种威胁模型)。在第4章中,你将学习如何使用攻击树替代STRIDE,抛除相似因素之外的所有因素。STRIDE和攻击树是两种不同的构建模块,可以帮助你在构建新的技术时发现出错的地方。

  并不是每种方法都能和其他方法结合使用,比如,要让金属积木Erector和木制的Lincoln积木粘合需要强力胶水。将不同威胁建模方法结合使用就会出现一些令人困惑的建议。例如,思考恐怖分子会如何袭击你的资产,不一定会产生很多可操作的问题。而且,即便是连接那些容易契合的模块,做出来的效果可能非常好,也可能非常差。

  因此,假设将其当成一个完整的框架,那么构建模块是什么呢?图I-1形象地展示了四步框架。这些步骤是:

  1.?对你正在构建、部署或修改的软件系统进行建模。

  2.?利用本书第二部分的模型和方法发现威胁。

  3.?利用本书第三部分的方法解决威胁。

  4.?验证上述工作的完备性和有效性(同样在第三部分中)。

  这个框架是与软件开发、操作部署相匹配的。实验证明这是一种结构化的威胁建模方法。不用替换整个框架即可更容易地实践。本书几乎所有内容都是经过精挑细选的,因为它们都是基于四步框架的。

  本书大致按照这个框架组织章节:

  第一部分“入门指南”介绍入门知识。书的开篇(尤其是第1章)是专门为没有什么安全专业知识的人设计的。之后的内容基于在这部分的知识(或者结合自己的经验)设计。在这部分中你将了解威胁建模,以及为新手推荐的方法。你也可以学到软件建模的不同方法,以及为何从这里开始好于其他选择,比如从“攻击者”和“资产”开始。

  第二部分“发现威胁”介绍发现威胁方面的知识。这部分内容描述了许多用于发现威胁的技术和工具。这部分内容综述和分析了人们对信息技术进行威胁建模的不同方法,可以让你发现不同技术的利弊。本书已经将这些技术分组,让你既可以从头开始读到尾,也可以挑选特定内容进行阅读。

  第三部分“管理和解决威胁”介绍管理和解决威胁方面的内容。这部分内容包括如何处理威胁、管理威胁和用于定位威胁的策略和方法,以及如何做出必要的风险权衡。另外还涉及验证你的威胁确实已经得到解决以及帮助你进行威胁建模的工具。

  第四部分“科技和棘手领域的威胁建模”涉及在特定技术领域及其他相关领域威胁建模,在这些领域已经有很多威胁建模及分析实践。这一部分包括网络及云、账户和身份、密码学及尝试自己开展安全需求分析的“需求手册”。

  第五部分“再上一层楼”介绍了提升威胁建模能力。这部分内容针对经验丰富的威胁建模人员、安全专家、流程设计师——他们需要考虑如何为特定的组织机构定制威胁建模流程。

  附录包括可帮助你快速应用所学的相关信息。其中包括“威胁建模是什么”、“我们的资产是什么”等常见问题解答,以及能帮助你发现威胁的威胁树、攻击者及攻击者角色列表,还有第1章中提到的权限提升游戏的细节,最后是一组威胁建模的详细案例。附录后面附有术语表、参考文献等。

  网站上包含书中提到的一些图表的PDF格式版本,以及勘误表。

  本书不包括什么

  如今,很多信息安全书籍希望教你如何入侵。他们的目的是告诉你该防范哪些攻击,假设如果你了解了这些攻击,你便可以开始构建你的防御系统了。不过,本书和市面上的大部分书籍不同,因为即便市面上有几百万这样的书,仍旧有很多脆弱的系统被构建和部署。另外,针对各类攻击有各种各样经过斟酌的防御方法。了解如何执行攻击或许是有用的,但更重要的是知道什么时候在哪里会有攻击,以及如何有效地防范攻击。这就是本书编写目的所在。

  本书不针对某一特定技术、平台或应用程序编程接口(API)。平台及API影响可能会提供你能使用的安全特征或可以消除一些威胁,但与平台相关联的威胁和消除威胁措施会随着版本不同而改变。本书旨在成为你书架上有用的参考书,比任何技术发布周期都要长久。

  当然,本书并不是造就威胁建模大师的灵丹妙药,而是帮助理解你需要知道的信息。所谓熟能生巧,在问题处理过程中不断实践和反馈,你终将成为大师。

  威胁建模新课程

  经验丰富的安全专家在工作过程中都已经开发了适合自己的威胁建模方法。如果在威胁建模方面你已经有多年的经验,本书将为你提供其他可用的方法。本书还可让你全面地了解一系列结构化的威胁建模方法,以及它们是如何相互关联的。最后,还有一些较深的课程内容值得你们关注。

  不止一种威胁建模方法

  如果你问一名程序员“哪种编程语言最合适一个新的项目?”你可能会得到很多需要澄清的问题,因为没有哪一种是理想的编程语言。当然,编程语言在处理特定类型任务时都有其优点和缺点。例如,用Perl语言编写文本处理代码比汇编语言(assembler)要容易。Python语言比汇编语言更容易阅读和维护。同样,也有或好或坏的方法来进行威胁建模,这很大程度上取决于当时的实际情况,比如参与人员和人员技能等。

  所以,你可以把威胁建模看作编程。编程有很多语言、编程范式(比如敏捷模式或瀑布模式)、编程实践(结对编程或频繁部署),威胁建模也是如此。以前威胁建模的书主要涉及威胁建模方法。本书帮助你了解“不止一种实现方式”,不仅仅是Perl语言适用于威胁建模。

  找到威胁的方法就是正确的方法

  威胁建模正确的方法就是能够让项目组找到比其他技术更多“好的威胁”(“好的威胁”是可以激发必须去做的工作的威胁)。一个项目组如此,几千个项目组亦如此。而且适用于所有层面的资源,比如时间、专业知识、工具。正确的技术能让一个项目组发现和解决威胁(并且增强信心,正如他们已经在做的)。

  很多人会告诉你他们知道“一种最正确的方法”(但这是在威胁建模以外的领域)。应避免这场争论,找到适合自己的方法才是最有效的。

  威胁建模犹如版本控制

  威胁建模有时被认为是一种专业技能,只有一些人才能做好,这一想法通常阻碍我们。因为,比起专业技能,威胁建模更像是版本控制。这当然不是在诋毁或者轻视威胁建模,而是所有专业的开发者在构建任何复杂度的软件时都需要某种形式的版本控制系统。希望威胁建模能成为如版本控制系统一样的基础组件。

  你希望所有专业软件开发者都知道一两种版本控制系统的基本知识,同样,很多系统管理员会用版本控制系统来管理配置文件。很多组织机构只靠一个简单的版本控制方法来应付,从来没聘请专家。如果你在一家大型公司工作,就会知道有全职人员管理构造树(build tree),威胁建模和这个情况类似。通过学习本书,可以假设负责软件和运维的专业人员已经有一些基本的威胁建模经验。

  威胁建模也像拉小提琴

  当你刚开始学习拉小提琴时,你不会一开始就练习拉那些最美的小提琴曲,首先你需要练习音阶、一些简单的曲子,然后循序渐进到更复杂的音乐。

  同样道理,当你开始学习威胁建模时,你得通过练习学习技巧,学习过程中你会遇到很多挑战或挫败感。你要知道,威胁建模是一种技能,你可以在很多方面应用,当然也就需要时间来培养能力了。熟能生巧,如果你想一夜之间就变成专家,那么你肯定会失望的。同样,若是你几年才进行一次威胁建模,那么你就会生疏,这时就需要时间来重新锻炼自己所需的能力。

  技巧与技能

  继续使用拉小提琴这个例子,大多数有才华的小提琴家不会只练习一首曲子,而是有一整套技能,是与自己领域相关的一系列知识。

  当你开始威胁建模时,你需要锻炼技巧和技能——你可以着手一系列威胁范例,想象新的系统可能受到怎样的攻击。攻击列表或者攻击库可以部分代替专家所知的威胁的心理技能,了解相似产品的安全问题也可以帮助你培养威胁技能。长此以往,这些都能帮助你思考新的、不同的威胁。

  “像攻击者那样思考”是有害的

  很多威胁建模书籍劝诫人们“像攻击者那样思考”。对大多数人来说,这就像把自己想象成专业厨师一样难。即使你在家里是做饭好手,但是要当餐厅的主厨会遇到更复杂问题,比如,一家有78个座位的餐厅,每个座位接待两轮客人的话,每天要买多少只鸡?因此,像攻击者那样思考无法帮助大部分人进行威胁建模。

  更糟糕的是,结果可能是盲目想象攻击者会怎么想、怎么做,以致你得到了错误的威胁。而要发现威胁,你无须着重攻击者,不过,拟人化或许可以帮你找到解决它们的方法。

  攻击、防御与需求之间的相互关系

  威胁建模就是为了建立更加安全的软件。当你在使用软件模型及威胁模型来寻找潜在问题时,你会发现一些威胁很难或不可能解决,这时你需要调整需求。这种相互关系很少有人讨论,而这对有效的威胁建模很重要。

  有时要防范管理员的问题,有时要考虑你的客户愿意承受什么。“9·11”事件发生后,美国政府多次严肃考虑在民航飞机上禁止带电脑(据报道,电池和大规模炸药在X光机上显示是一样的)。于是,购买昂贵机票的商务舱乘客开始反抗,他们可是让航空公司运转的“金主”。于是政府只好采取其他措施,本书将就这些措施的效力进行评判。

  这种相互作用的结果导致一些威胁不能有效缓解。这对很多安全专家来说是痛苦的。(不过,如《黑衣人》中的台词:“生活本来就充满痛苦,殿下。不这么对您说的人一定是在推销什么。”)当你发现违背你的需求的威胁又不能缓解时,基本上可以调整你的需求了。有时,要么操作上缓解威胁,要么顺从使用该系统的人。

  基于此,是时候开始潜心威胁建模了!





《安全设计原则:构建可信赖的数字未来》 在这个日益复杂且充满挑战的数字时代,构建安全、可靠的软件系统已不再是一项附加功能,而是核心竞争力。随着网络威胁的不断演变和攻击手段的日益Sophisticated,任何软件都可能成为潜在的攻击目标。软件的安全性和可信赖性直接关系到用户的隐私、企业的声誉以及国家的信息安全。然而,如何才能有效地抵御这些不断涌现的威胁,设计出真正坚固可靠的软件? 《安全设计原则:构建可信赖的数字未来》并非一本关于具体技术工具的实用手册,也不是一本罗列现有安全漏洞的数据库。相反,它深入探索的是软件安全领域最根本、最持久的原则和理念。本书旨在为开发者、架构师、产品经理以及任何参与软件生命周期的人提供一个清晰、系统化的安全思维框架,帮助他们在设计的早期阶段就融入安全考量,从而从根源上减少软件的脆弱性。 本书的核心在于强调“安全左移”(Shift Left Security)的理念。这意味着,我们不应该等到软件开发周期的后期,甚至在部署之后才去考虑安全问题。安全应该贯穿于整个开发过程,从概念构思、需求分析、系统设计、编码实现,到测试、部署和运维的每一个环节。将安全融入早期阶段,不仅能显著降低修复安全漏洞的成本,更能从根本上避免许多潜在的风险。 第一部分:安全思维的基石——理解威胁与风险 在深入探讨设计原则之前,我们首先需要建立一个坚实的安全思维基础。这一部分将带领读者理解威胁、漏洞、风险以及攻击者心理。 理解威胁的全景: 我们将探讨不同类型的安全威胁,包括但不限于: 网络攻击: 恶意软件(病毒、蠕虫、勒索软件)、钓鱼攻击、DDoS攻击、SQL注入、跨站脚本(XSS)、中间人攻击等。 物理安全威胁: 未经授权的物理访问、设备盗窃、恶意篡改硬件等。 人为错误和内部威胁: 无意的数据泄露、疏忽的安全配置、蓄意的内部破坏或滥用权限等。 供应链攻击: 针对第三方组件或服务进行攻击,间接损害目标系统。 高级持续性威胁 (APT): 长期、有针对性的复杂攻击。 漏洞与风险的辨析: 明确漏洞(Vulnerability)是系统中的弱点,而风险(Risk)是漏洞被利用的可能性及其造成的潜在影响。我们将学习如何评估风险的严重程度,理解“高、中、低”风险的定义,以及如何优先处理高风险项。 剖析攻击者心理: 了解攻击者的动机、目标和常用的策略,有助于我们更好地预测他们的行为,从而设计出更具防御性的系统。我们将讨论攻击者的多样性,从寻求经济利益的犯罪团伙,到具有政治动机的国有行为体,再到追求技术挑战的脚本小子。 信任的度量与管理: 在分布式和互联互通的系统中,“信任”是一个至关重要的概念。本书将探讨如何在缺乏完全信任的环境中设计系统,如何进行最小权限原则的应用,以及如何构建基于零信任(Zero Trust)架构的安全模型。 第二部分:安全设计的核心原则——从架构到实现 有了坚实的安全思维基础,我们就可以开始深入探讨具体的安全设计原则。这些原则是指导我们构建安全软件的蓝图。 最小权限原则 (Principle of Least Privilege): 这是安全设计中最基本也是最重要的原则之一。每个用户、进程或组件都应该只拥有完成其特定任务所必需的最少权限。本书将深入探讨如何在用户管理、进程隔离、文件访问控制等方面精细化地应用这一原则。 深度防御 (Defense in Depth): 采取多层次的安全防护措施,确保即使某一层防御被突破,其他层级仍能提供保护。我们将探讨如何通过网络分段、防火墙、入侵检测/防御系统、应用层防火墙、身份验证、授权、加密等多种手段构建纵深防御体系。 失效安全设计 (Fail-Safe Defaults): 当系统发生故障或异常时,它应该默认处于一个安全的状态,而不是一个容易被利用的危险状态。例如,当认证失败时,默认拒绝访问,而不是允许无限制的尝试。 边界防护与内部隔离 (Secure Boundary and Internal Segmentation): 明确系统的安全边界,并对内部进行合理的分段,限制攻击者在系统内部的横向移动能力。我们将讨论如何设计安全区域(DMZ)、内部网络隔离策略,以及如何管理不同安全区域之间的通信。 简化设计,减少攻击面 (Simplicity and Minimizing Attack Surface): 复杂性是安全的敌人。过于复杂的设计往往隐藏着更多的漏洞。本书将鼓励采用清晰、简洁的架构,移除不必要的组件和功能,从而减小系统的攻击面。 预期的安全模型 (Secure by Design / Secure by Default): 安全不是事后诸葛亮,而是从一开始就设计进去。系统应该默认配置为安全状态,用户无需进行复杂的安全配置即可获得基本的安全保障。 安全验证与授权 (Authentication and Authorization): 深入分析用户身份验证(Authentication)的各种机制(密码、多因素认证、生物识别等)及其安全性考量,以及对用户行为进行授权(Authorization)的策略,确保只有经过验证且授权的用户才能访问其应有的资源。 数据保护与加密 (Data Protection and Encryption): 强调对敏感数据的保护,包括静态数据(存储在数据库、文件系统等)和传输中的数据。我们将讨论对称加密、非对称加密、哈希函数等加密技术的应用场景,以及密钥管理的重要性。 异常处理与审计 (Exception Handling and Auditing): 设计健壮的异常处理机制,避免在错误处理过程中暴露敏感信息。同时,建立完善的审计日志,记录关键的安全事件,以便于事后分析和追溯。 第三部分:将原则付诸实践——软件生命周期中的安全考量 安全原则的有效性最终取决于它们如何在软件生命周期的各个阶段得到体现。 需求分析与安全用例: 在需求阶段就识别和定义安全需求,将安全作为核心用户故事的一部分。 架构设计与安全模式: 在高层架构设计中融入安全模式,如微服务架构中的API网关安全、身份联合等。 编码实践与安全编码规范: 强调遵循安全编码标准,避免常见的编码陷阱,如缓冲区溢出、内存泄漏、不安全的API使用等。 安全测试与验证: 介绍不同类型的安全测试方法,如渗透测试、模糊测试、静态应用安全测试 (SAST)、动态应用安全测试 (DAST) 等,以及如何将这些测试集成到持续集成/持续部署 (CI/CD) 流程中。 部署与运维安全: 关注生产环境的安全配置、漏洞扫描、补丁管理、安全监控和事件响应。 安全意识与培训: 强调持续的安全意识培训对于所有团队成员的重要性。 《安全设计原则:构建可信赖的数字未来》旨在为读者提供一个通往更安全软件世界的指南。它不是一个快速修复的药方,而是一个深刻理解安全本质、并将其内化为设计DNA的必修课程。通过掌握并践行本书提出的核心原则,您将能够构建出更具韧性、更能抵御未来威胁的软件系统,为构建一个更加可信赖的数字未来贡献力量。本书的目标是赋能每一位软件从业者,让他们成为安全设计的积极践行者,而不是被动应对安全事件的响应者。

用户评价

评分

这本书的叙述风格让我耳目一新。它没有使用那种陈词滥调的“安全第一”的口号,而是用一种更具说服力的方式,展示了威胁建模如何成为构建高质量软件的基石。作者巧妙地将技术细节与商业影响相结合,让我们明白,忽视安全不仅会带来技术上的麻烦,更可能损害公司的声誉和客户的信任。他用一系列的案例,生动地展示了未经过威胁建模的软件,在上市后是如何被攻击者轻易得手的,以及这些事件给企业带来的巨大损失。这种“损失论”的视角,比单纯的技术科普更能打动人。而且,作者在阐述威胁建模方法论时,并没有刻意拔高其难度,而是将其描绘成一种“人人都可以掌握”的技能。他鼓励读者从小处着手,从自己的项目中开始实践,逐步积累经验。书中关于“假设驱动”的讨论,让我受益匪浅。我们不必试图预见所有的威胁,而是可以通过提出合理的假设,来找出最可能发生的攻击场景,并有针对性地进行防御。这种务实的方法,让威胁建模不再是一个遥不可及的概念,而成为了一项触手可及的实践。

评分

说实话,我当初买这本书,纯粹是因为工作需要,想快速了解一下“威胁建模”这个概念,以便在项目评审会上能说得上话。没想到,这本书给我的惊喜远不止于此。作者的功力在于,他能够将一个相当复杂的工程实践,分解成一系列可操作的步骤,并且层层递进,让你在阅读的过程中,自然而然地掌握核心要义。他详尽地阐述了威胁建模的不同阶段,从最初的需求分析,到识别潜在的威胁,再到评估威胁的优先级,最后到制定缓解措施。每个阶段都配有大量的案例分析,这些案例并非空穴来风,而是来源于真实世界的安全事件,这让读者能够深刻理解威胁建模的实际意义和必要性。我印象最深的是关于“STRIDE”模型的讲解,作者并没有简单地罗列S、T、R、I、D、E分别代表什么,而是通过一个个生动的场景,解释了每一种威胁类型是如何在实际开发中出现的,以及如果忽略了这些威胁,可能带来的灾难性后果。他甚至还分享了一些在实践中遇到的挑战和应对策略,这让这本书不仅仅是一本理论著作,更像是一本实战指南。我感觉自己不仅仅是在读书,更像是在跟一位经验丰富的安全专家一起学习,学习如何像一个“黑客”一样去思考,但目的是为了构建更强的“盾牌”。

评分

这本书我刚开始看的时候,以为会是那种枯燥乏味的理论堆砌,毕竟“威胁建模”听起来就带着一股技术宅的严谨感。结果呢?完全颠覆了我的想象!作者的叙述方式就像在讲一个引人入胜的故事,从软件开发生命周期中的安全漏洞是如何“悄悄地”滋生开始,一步步揭示了那些我们常常忽略的潜在危险。他没有直接抛出一大堆晦涩的概念,而是通过生动形象的比喻,比如把软件系统比作一座精心设计的建筑,而威胁建模就是提前进行房屋安全检查,找出承重墙的弱点、门窗的防盗漏洞等等。我尤其喜欢其中关于“攻击面”的讲解,书中用了一个非常贴切的例子,说明了即使是看似微不足道的输入点,也可能成为攻击者突破的入口。读到这里,我才真正意识到,我们平常写代码时,往往只关注功能实现,却很少从“敌人”的角度去思考。作者的笔触细腻,将技术性的内容转化得如此易于理解,让我这个不算资深的技术人员也能轻松跟上思路,并且在脑海中勾勒出一幅清晰的威胁图景。他强调的不是死记硬背各种攻击手段,而是培养一种“安全思维”,一种在设计之初就预见到并规避风险的能力。这一点对我来说,价值是巨大的。

评分

对于那些认为安全只是 IT 部门责任的开发者来说,这本书绝对是一个“醍醐灌顶”式的存在。作者以一种非常平易近人的方式,揭示了安全并非是一个独立的模块,而是贯穿整个软件开发生命周期的核心要素。他不仅仅是告诉我们“有什么威胁”,更重要的是“如何去发现威胁”。他强调的“以终为始”的思维模式,让我深刻理解到,在开始编写一行代码之前,我们就应该思考:最坏的情况会是什么?如何设计才能避免最坏的情况发生?书中关于“数据流图”和“信任边界”的讲解,是理解威胁建模的关键。作者用清晰的图示和简洁的文字,将复杂的系统分解,让我们能够清楚地看到数据在系统中是如何流动的,以及在哪里可能会发生信息泄露或被篡改。而且,他没有停留在理论层面,而是提供了非常实用的技术和方法,例如如何使用各种工具来辅助威胁建模,如何有效地进行威胁分析和风险评估。我发现,通过学习这本书,我不再仅仅是满足于写出能工作的代码,而是开始关注代码的“健壮性”和“安全性”,并且能够在团队讨论中,提出更具建设性的安全建议。这本书的价值,在于它真正地将安全意识植入到了开发者的思维模式中。

评分

读完这本书,我对软件安全的理解提升到了一个全新的维度。作者不仅仅是在传授知识,更像是在传递一种“安全哲学”。他深刻地剖析了软件开发过程中,安全漏洞是如何产生的,以及为什么我们常常会犯下一些显而易见的错误。他强调的是一种“主动防御”的意识,而不是被动地应对攻击。书中关于“资产识别”和“威胁主体”的分析,让我明白了威胁建模的第一步,就是要清楚我们究竟在保护什么,以及谁是我们潜在的敌人。他用一种非常接地气的方式,解释了各种安全概念,比如“权限管理”、“加密算法”等,并没有用晦涩的术语来吓退读者,而是用大家都能理解的语言进行阐述。我尤其欣赏书中关于“迭代式威胁建模”的理念,即威胁建模不是一次性的活动,而应该贯穿软件开发的整个生命周期,并且随着软件的更新和演进,不断地进行调整和完善。这一点对于持续交付和敏捷开发的团队来说,尤为重要。这本书真正地做到了,让技术变得易于理解,让安全变得触手可及,让我从一个被动的接受者,变成了一个主动的思考者和实践者。

评分

东西不错,挺好的,物流速度也快,好评

评分

讲了软件交付,了解下这方面知识很有必要

评分

这条评论是复制粘贴的,如果看到这条评论,说明商品质量没问题,请放心购买

评分

还没看 .........

评分

东西很好,东西很好,东西很好

评分

货真价实,物美价廉~~~~好书

评分

买来看着玩的,但是内容很让人失望。

评分

好 价格公道

评分

真的很不错,大家赶紧买吧

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有