首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第43期->技术专题
期刊号: 类型: 关键词:
攻击树

作者:zhanglzh <zhanglzh1@163.com>
日期:2003-08-06

·构建安全威胁模型
很少有人真正理解计算机安全,比如象计算机安全公司行销文献中所吹捧的"防黑客穿透软件"、"三倍DES加密安全"等等诸如此类。事实上,所谓的牢不可破的安全在任何时候都可以被攻破,通常采用设计者从未设想过的方法。表面上强壮的密码系统也能被攻破。对于思考能力超凡的人来讲攻击是很平常的事,并且当安全bug出现后报纸报告安全bug,这一事实已变得愈加清楚了,即--"安全"这一概念已经没有意义了,除非你也了解象"对谁安全?"或"多长时间的安全?"的事情。
非常清楚,我们需要一种方法去构建一种对计算机系统威胁的模型。如果我们能够了解所有能攻击系统的各种不同的方法,那么我们就有可能设计出抵挡这些攻击的策略,并且如果我们能了解攻击者是谁--不光是我们所提到的攻击者的能力、动机和目的--那么也许我们能够安装正确的策略以处理真实的威胁。

·进入攻击树
基于攻击多样化,攻击树提供了一种描述系统安全的形式化的系统的方法。简单说就是,我们用一个树形结构来表示对一个系统的攻击,把攻击目标作为树的根节点,把达到目标的不同方法作为叶节点。(如图1所示)这是一个对真实保险箱的一个简单的攻击树。目标是打开保险箱。为了打开保险箱,可以凿开锁,获知保险                    箱密码,切开箱,或者是由于保险箱安装不正确,以至于可以很容易打开。为了获知密码,他们或者寻找写下来的密码;或是从保险箱的主人那儿得到,等等。每一个节点变成了一个子目标,并且节点的孩子是达到子目标方法。(当然,这仅仅是一个简单的攻击树,而且也不完整,有多少种你能想到的达到你目的的攻击呢?)


(图一)

    节点分为AND节点和OR节点(在图中,除AND节点外其他全是OR节点)。OR节点是表达或以从多种方法选择一种方法达到目标--比如有四种打开保险箱的方法。AND节点表示达到目标的不同步骤。为了窃听某人说出的保险箱密码,攻击者不得不去窃听会谈,AND(并且)保险箱的主人要说出密码。除非满足以上两件,否则攻击者将无法达到他的目标。
那是一棵基本的攻击树,一旦你有了一个完整的攻击树,你可以进行对各种叶节点的赋值--I(不可能)和P(可能),然后对节点进行计算。(此外,这仅仅是一个示范性样例,别把哪些值看作是我的保险箱真实安全性)。一旦你赋过值--大概这对于由保险箱自己去做的活,这项任务将是一个艰苦的研究成果--你能够计算目标的安全性。如果有任一个子节点是'可能的',则对于OR节点其值就是'可能的',当所有子节点为'不可能'时,它的值为'不可能'。对于AND节点,只有当所有子节点是'可能的'时,节点才能为'可能的',否则为'不可能的'。(看图二所示)


(图二)

在图二中点线显示了所有可能性的攻击--一个从叶节点到目标可能节点的层次。在这一样例系统中,有两种可能的攻击:切开保险箱,或对保险箱的主人进行行贿以得到密码。有了这一知识,你就知道针对攻击如何正确地防护这一系统。
对节点赋"可能"和"不可能"仅是考虑树的一个方面,实际上任一布尔值都能赋值给叶节点,并且可以用相同的方法从下向上传递:容易和困难,昂贵和便宜,打扰的和非打扰的,合法的和非法的,需要特殊设备的和无需特殊设备的。图三显示了一棵具有另外一种布尔节点值的相同的树。


(图三)

对节点赋值"昂贵的"和"非昂贵的"是有用的,但是能精确的显示出有多"昂贵"将更好。对节点赋连续值也是可能的。图示四显示了这样的树,对于叶结点赋给了不同成本的值。同布尔节点


(图四)

值一样,它们同样可以沿着树向上传递。OR节点的值是他的子节点中最便宜的节点值,AND节点的值是它的子节点值的和。在图四中,成本值沿着树向上传播,突出显示的是成本最低的攻击。
此外,这棵树也可被用于测定一个系统在哪儿易受攻击。图五显示了所有成本小于100,000美金的攻击。如果你只关注成本较低的攻击(也许保险箱的价值只有100,000美金),那么你只需要关注你自己所具有的那些受攻击的地方。


(图五)

有很多另外一些可能的连续节点值,包括一个特定攻击成功的可能性,即指攻击者将尝试特定攻击的可能性的大小。也是同上。

·节点和他们的值。
在任何一个真正的攻击树中,节点对于不同的变量将有相应的不同的值,包括布尔值和连续值。不同的节点值联合起来可以得到对一个系统评估的更正确的结果。如图六所示,比如决定最廉价的不需特殊设备的攻击、你也可以查找成本最低法律风险最低的攻击(最有可能的是非侵入式攻击)、技巧需要最低的攻击、成本最低但攻击成功可能最大的攻击(最有可能的是合法的攻击)等等。每次对一个确定特征的攻击查询攻击树时,你都可以对得到对系统的安全更多的了解。


(图六)

作这项工作,必须将攻击树和攻击者的知识结合起来。不同的攻击者有不同的技巧等级、访问等级、能承受的风险、资金等等。如果你担心有组织犯罪,你就不得不去担心那些代价昂贵的攻击以及心甘情愿去坐牢的攻击者。如果你担心那些无聊的研究生对你的系统安全进行研究,你通常不必担心那些违法的攻击(比如行贿和勒索)。你的攻击者的特征决定了你对攻击树的那部分担心。
攻击树也让我们玩了一个具有潜在对策的"What if"(假设分析)游戏。在图六中,比如目标有20,000美金的成本。这是因为最廉价的不需特殊设备的攻击,是行贿那个知道密码的人。假定你执行一个对策--支付给那个人更多的钱以至于他不易受贿赂的影响呢?如果你假定给他行贿的成本现在是80,000美金(再次声明,这仅仅是一个例子,在真实的世界中你得期待正确地研究出反对策是如何影响节点的值),然后成本提高到了60,000美金(雇佣帮凶恐吓的成本)。

·一个PGP样例
图七是一个对流行的e-mail安全程序的攻击树,由于PGP是一个复杂的程序,那么这也是一棵复杂的树,并且用大纲样式写起来要比图形样式更容易。PGP有一系列的安全特征,因此这仅是对PGP一系列攻击树中的一个。这一特征的攻击树将"读由PGP加密的消息"做为目标。另外一些目标也许是"伪造某人或其他人在消息上的鉴名""更换消息上的鉴名""无法检测到的PGP鉴名或PGP加密消息的修改"等等。
从攻击树上立即表现出,击破RSA和IDEA算法对于PGP攻击并不是有利可图的。存在许多方法可以读某人的PGP加密消息而不用去击破加密方法。如当他们解码并读消息时,你能够捕捉他们的屏幕(使用一种象,BO、TMEPEST接受器或屏幕照相机的特洛尹木马)。在他们键入密码短语后劫获他们的私有密钥(再次用到BO,或一个专用的计算机病毒)。劫获他们的密码短语(键盘嗅探,……BO)。或者简单地尝试暴力破解他的密码短语。在这些方案中,影响PGP安全的因素中选择加密算法和密钥长度是最不重要的。PGP不仅必须是安全的,而且必须用于一个对安全起到杠杆作用而又没有产生新的不安全因素的环境中。


(图七)

·创建攻击树
如何才能创建一棵如此的攻击树呢?首先,你要标识可能的攻击目标,每一目标构成一个单独的树,尽管它们可能共享子树或节点。然后,试着去想出对每一目标的所有的攻击。把它们添加到树上,沿着树向下重复上一过程,直到全部做好。让其他人也做这棵树,按他所考虑到的方法并且添加他想到的任何节点。经过必要的重复,这一过程可能需要几个月的时间。当然总是存在你遗忘一种攻击的可能性,但随着时间流逝将变得更好。象任何安全分析一样,创建攻击树需要一个确定的集体智慧和实践。
一旦你有了一棵攻击树,并且已经研究了所有节点的值(那些值将随着时间而改变,包括攻击变得越来越容易和你得到值的越来越精确的信息),你就能使用攻击树去作出安全决策。如果你的系统目标是易受攻击的,你可以考虑所看到的根节点的值;如果系统容易受到某一特定类型的攻击,如密码猜测,你可以做出相应的对策。你也可以使用攻击树去列举系统的安全假定,比如PGP的安全也许是假定没有一个人能成功地贿赂PGP的程序员。你能测定当系统改变或一个新的弱点被发现时对系统的影响:基于对新的信息重新计算节点的值并且留心目标节点是如何受到影响的。而且你也可以对攻击进行比较和排列--哪一个是最廉价的,哪一个更可能成功等诸如此类。
由这种分析产生的另人惊奇的事情之一是人们想到的更易受到的攻击通常并非如此。关于PGP,比如人们通常担心密钥的长度。他们想,是用1024位RSA还是2048位的RSA呢?然而看一下攻击树,它显示RSA的密钥长度并不是一个真正的问题。有很多其它类型的攻击--安装键盘嗅探程序,更改受害者硬盘上的程序--这些更容易击破RSA的公共密钥。把密钥从1024位增加到2048位,就象你在地上栽了一个巨大的树桩,而且希望敌人能正面撞上它,而反对去创建一个围绕目标的较低的栅栏。攻击树给了你一种综观整个系统的一个透视图。
真正地使攻击树具有价值的事情之一是他们记录了可重用形式的知识。一旦你有了一个完全的攻击树,你可以用于任何使用PGP的情形中。对PGP的攻击树将变成一个较大攻击树的一部分。比如图八所显示的一个攻击树,它的目标是读从一台Windows98计算机发送到另一台计算机的特殊消息。如果你考虑这棵树的根节点,对PGP和打开保险箱的完整的攻击树都适合这个攻击树。
可伸缩性意味着你不必精于每件事。如果你在一个系统中使用PGP,你不必知道PGP攻击树的细节;你所要知道的全部只是根节点的值。如果你是一个计算机安全专家,你也不必知道如何去艰难的破解某一特殊安全模型的细节,你仅仅需要知道根节点的值即可。一旦你建立了一个攻击树库,诸如对特定计算机程序的、门和窗户锁的、网络安全协议的、或不管什么样的,无论什么时候你需要,你都可以重用它们。对于国家安全机构来讲,他们关心的是划分攻击专家的意见,这一类型的系统是非常有用的。


(图八)

·结论
攻击树提供一种对于系统或子系统的安全分析的形式化方法论。他们提供了一种思考安全问题、记录和重用安全专家的意见,并对安全变化作出响应的方法。安全不是一种产品--它是一个过程。攻击树构造了一个理解这一过程的基础。
Dr. Dobb's Journal December 1999
Modeling security threats
By Bruce Schneier
Bruce is the CTO of Counterpane Internet Security, author of Applied Cryptography, Second Edition (John Wiley & Sons, 1995), and inventor of the Blowfish and Twofish encryption algorithms. You can contact Bruce at http:// www.counterpane.com/.
版权所有,未经许可,不得转载