本节书摘来自华章计算机《威胁建模:设计和交付更安全的软件》一书中的第2章,第2.1节,作者:[美] 亚当·斯塔克 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第2章威胁建模策略
越早发现问题,越容易解决问题。威胁建模要做的就是发现问题,让你在开发与设计的早期阶段或准备发布操作系统时及时解决问题。威胁建模方法有很多种,有些方法是特定的,就好比模型飞机装备只能用于构建F-14战斗机一样。有些方法则比较通用,例如用乐高模型可以创造很多种东西。但有些威胁建模方法不是很容易融合,就像Erector的模块和乐高模块连接就不合适。本章内容将讲述多种威胁建模策略和方法,每一种都会深入讲解,为更有效地发现威胁做准备。
我们从简单的问题开始,例如询问“你的威胁模型是什么样”并对威胁进行集体研讨。这里,你将学到建立威胁模型时的三种方法:以资产为核心、以攻击者为核心、以软件为核心。这些威胁模型都是较为结构化的,可以供不同技能方向的人员使用。以软件为核心通常是最实用的策略,以资产或是以攻击者为核心的威胁建模方法也经常使用,关注资产或攻击者是很自然的,是威胁建模方法中的重要组成部分。在这里,你将学到在系统或者软件建模时所用到的各种图表。
本章节不涉及如何发现威胁的具体威胁识别模块,这将在以后的章节中详述。
2.1 “你的威胁模型是什么样?”
这是个好问题,因为短短几个字就要包含好几个难题,用于判定你在担心什么。答案经常是“使用笔记本的攻击者”或“内部人士”,抑或(遗憾的是,经常会这样)“啊?”“啊?”这些答案是有用的,因为众多答案说明找到一种一致且结构化的防御方法需要做大量的工作。一致性和结构化是很重要的,能帮助你阻止攻击者。附录A中列举了“你的威胁模型是什么样”这一问题的标准答案摘要,这里也列举了一些例子:
- 可能偷你钱的小偷
- 可访问敏感文件、不可信任的公司利益相关者(员工、顾问、股东等)
- 不可信的网络
- 可能偷盗你的(网络等)cookie的攻击者
在本书中,你将多次碰到相同的例子。主要是虚拟Acme公司的Acme/SQL商业数据服务器,以及Acme运营网络。利用Acme的例子,你可以看到不同的威胁建模方法如何应用于同样的系统。
以Acme公司为例,讨论“你的威胁模型是什么样?”这个问题,答案如下:
对Acme SQL数据库来说,威胁模型是想要读取或是改变数据库里数据的攻击者。若模型更深入细致,可能还会包括想要读取数据却未被记录在案的人。
对Acme的财务系统来说,威胁模型包括不该得到支票的人拿到了支票、没有按照规定付款的用户、有人在申报前读取或更改了财务结果。
如果对“你的威胁模型是什么样”这个问题没有清晰的回答,可能会导致对威胁认识不一致和浪费人员精力。例如,Zero-Knowledge Systems在起步阶段就对这个问题没有清晰的答案,也因此在安全功能上没有一致性。这个系统在防御最复杂的攻击上消耗了大量精力,却因此给整个系统的性能带来了影响。虽然阻止政府监视用户是很有意思的技术挑战,在情感上可引起共鸣,但是这个挑战和情感因素增加了商业上成功开展技术决策的难度。最终,当对“你的威胁模型是什么样”有清晰认识后,Zero-Knowledge Systems系统才将全部投资用于减缓可能出现的所有威胁。
那么,如何确定你对此问题有清晰的回答呢?通常,答案不是显而易见的,即使是对那些经常思考有关安全问题的人,而且,问题本身缺乏条理化而不易让人想出答案。寻找答案的一种方式是集体研讨。在下一部分你将学到集体研讨的各种方法以及相关的权衡方法。