Virus 版 (精华区)

发信人: VIP (星辰大海), 信区: Virus
标  题: 一种解决计算机病毒的容错方法 
发信站: 哈工大紫丁香 (Sat Dec 25 16:07:25 1999), 转信

一种解决计算机病毒的容错方法 
 
     ●金茂顺 
 
 
1.引言 
 
在当今的信息社会里,计算机系统其易受攻击的脆弱性备受人们关注。 
目前对计算机系统可能采取的攻击形式有三:其一,从计算机系统外部 
发动攻击;其二,利用从合法授权的用户那里获得的访问权实施攻击; 
其三,从计算机系统内部通过系统设计者蓄意设置的预定故障进行攻 
击。由上述三种攻击可知,当前计算机系统的安全问题,除需要考虑与 
防止敏感信息越权泄露及信息和程序越权修改等有关的传统安全问题之 
外,还需寻求消除诸如特洛伊木马、计算机病毒、逻辑炸弹等恶意逻辑 
的影响问题。这个问题揭示了与容错里要解决的问题有许多相似之处。 
所以当今的计算机安全问题与容错有着密不可分的关系,而且将成为支 
持军用高可靠计算机的两大特性。 
 
众所周知,源于提高硬件可靠性的容错技术,后又被用于解决软件的可 
靠性问题。其主要目的是提供足够的冗余信息与算法程序,使系统在实 
际运行中能够发现设计错误,采取补救措施,保证计算机系统的正常运 
行。下面介绍容错技术在计算机安全问题上的应用,即用扩充的程序流 
监控器机制来解决计算机病毒的检测和抑制问题。该机制使计算机既能 
容忍故意故障又能容忍随机物理故障。这里所描述的技术能明确地用于 
检测由物理故障及病毒存在所造成的控制流错误。 
 
2.容错反计算机病毒的依据 
 
计算机病毒是一种隐藏在计算机系统的可访问信息资源中,利用系统信 
息资源进行繁殖并生存,能影响计算机系统正常运行,并通过系统信息 
共享的途径进行传染的、执行的编码集合。它的传染表征为:(a)病毒 
附加在可执行文件头尾或插在中间;(b)可执行文件的长度变长,容量 
增大;(c)可执行文件的建立日期受到修改;(d)可执行文件的行为发生 
变化;……等。从信息流的角度看,病毒是一段二进制代码,是一串信 
息流。如果信息流是一段数据,则不可能指望它能复制自身;如果信息 
流是一段指令,则它一旦被解释,就完全可以通过信息流有限度传递的 
特性,驱动计算机各电路,将自己传递到选择好的目标。因此,从根本 
上来说,计算机系统信息流的二义性,即信息流即可当作数据流,又可 
当作指令流(程序流)的特性,决定了病毒的传染性。因此病毒要传染可 
执行程序势必会引起该程序程序流的改变,尤其是控制流的改变。所以 
行为和程序流的改变成为容错方法检测和遏制病毒机制的主要依据。但 
两者的监探粒度是不相同的,前者是粗粒度的监控,后者则细粒度的监 
控。例如,D.E.Denning在“一种入侵检测模型”一文中所提出的一种 
用监控系统行为来解决病毒检测和其他威胁的方案,这是一种粗粒度的 
监控方法。但本文所描述的则是一种细粒度的监控方案,即用监控程序 
控制流的方法来处理病毒检测问题。 
 
在容错方法中,假定在系统中将出现故障,而且在设计中必须包含运行 
时间机制以便容忍故障。这些机制是故障免除技术的补充,其目标是在 
整个计算机系统的生命周期间清除所有故障(或硬件和软件的缺陷),用 
标准故障类来定义和表征待处理的所有故障。一旦这样做了,错误检 
测,屏蔽,错误恢复和错误抑制边界就被选定了。这就导出解决这里所 
提出的计算机病毒问题的一般方法。这种方法已应用于解决如陷井门, 
拒绝服务,隐蔽信道等安全威胁问题。 
 
3.面向容错的计算机病毒的刻划 
 
面向容错的计算机病毒行为可刻划如下:计算机病毒最初可能开始于用 
病毒注入或传染一个可执行文件的一种特殊类型的特洛伊木马;该特洛 
伊木马是一种故意设计故障,通过改变可执行文件资源的状态产生一个 
“错误”;然后,被传染的可执行文件扩散或传播该错误给其他可执行 
文件,从而该错误成为导致其他错误的故障。标准错误传播跟随机故障 
情况下的传播是一样的。所以计算机病毒错误传播为:故障→错误→故 
障→错误。因此计算机病毒既是一种故意又是一种错误。这种对病毒既 
是故障又是错误的刻划表现了应当用两种而不是一种机制去对抗病毒。 
 
计算机病毒设计故障可能造成的破坏类型有:损害功能和数据的完整 
性;未授权的程序修改;未授权的泄露;拒绝服务和电子诱骗。 
 
病毒有两个生存期:经由特洛伊木马的设计故障和错误传播或传染可执 
行文件。这两个生命期都能从不同的角度加以检测和恢复。用N版本程 
度设计(NVP)能屏蔽掉经由特洛伊木马的故障设计故障。同时它必须附 
带一种能在错误期检测病毒的机制。下面将提出反病毒传检测和恢复方 
案以及程序流监控器的扩充。 
 
4.程序流监控器 
 
程序流监控器(PFM)是一种能用于容错计算机设计的并发错误检测机 
制。它基本上是一种监控程序处理器,监控程序处理器是个能通过监控 
主处理器的行为来完成并发系统级错误检测的小而简单的协同处理器。 
它能用于检测因瞬时故障和永久故障所造成的控制流错误。 
 
控制流错误是指指令的不正确顺序,转移到错误地址,从错误地址
转?nbsp;
频鹊龋庑┐砦罂赡苁侵噶罴拇嫫鳎绦蚣剖鳎刂芳拇嫫鳎肼氲 
缏罚娲⑵鞅嘀返缏返裙收系慕峁?nbsp;
 
控制流错误的检测是通过程序行为的动态特性与期望的行为比较来完成 
的。一种方法是把特征标记和不含任何控制改变指令的汇编语言语句的 
顺序结合起来实现控制流错误的检测。该特征标记是从汇编语言语句中 
求出来的。特征标记生成之后,它可鼙淮娲⒂诳刂屏魍?CFG),嵌入 
图程序或嵌入可执行代码。该特征标记和控制流图通过编译程序和连接 
程序来生成。 
 
当一个程序运行在CPU上时,通过一个基于线性反馈移位寄存器(LFSR) 
的特征标记发生器读取指令。这样,由一个已知的本原多项式(如X16+X 
12+X 3+X+1)可计算出一个特征标记。当一个控制流改变的指令经过该 
特征标记发生器时,当前的特征标记值就被传送给PFM,PFM则比较运行 
时间和连接时间所产生的特征标记,若不一致,则表明有一个错误状 
态。如果使用控制流图,则作这些特征标记比较就得遍历CFG。 
 
对于计算机病毒的检测,基于PFM方案的可用性主要在于能对病毒的活 
动也可以表示为有病毒指令顺序的监控。但由于现有的方案无法察觉隐 
蔽的病毒,所以必须把PFM加以扩充。 
 
5.处理病毒传染的扩展程序流监控器 
 
目前的PFM方案能用于检测随机物理故障和潜在的某些设计故障,但不 
能检测故意故障。因此,现有的方案只对少数病毒的攻击敏感。 
 
现有的PFM用于反病毒有以下两个弱点:其一,PFM仅用一种本原多项式 
来计算全部的特征标记,因此,在监控机上计算机病毒将会被生成有效 
的特征标记。若用CFG,则病毒就会把它的特征标记附加在CFG上。其 
二,现有的PFM设计无能力区分病毒与随机故障。 
 
由于暂时故障、永久故障和计算机病毒的恢复操作是各不相同的,所以 
基于PFM的方案必须有一种识别病毒的恢复方法。为此,利用控制流图 
(CFG)对PFM方案作以下五种扩充: 
 
(1)特征标记发生器必须有使用许多不同本原多项式的能力。构造一个 
具有足够多的D型触发器、XOR门和反馈环路的LFSR来生成一个整多项 
式。PFM可以对产生多项式的LFSR采用启动/禁止XOR门和反馈环路的方 
式来变换LFSR。该多项式用一个被锁存在LFSR里的32位向量来表示,此 
向量的位控制启动/禁止。 
 
(2)编译器和连接器对必须为每个被编译的程序随机地赋予一个本原多 
项式,同时还需保护该多项式免遭泄露和修改。因此,多项式位向量可 
以跟连接期产生的特征标记一起被存储于CFG,然后加密整个CFG。 
 
(3)为了得到预先计算好的特征标记和多项式,PFM必须在程序执行之前 
立刻解密已送到的CFG。因此,这种方法必须为每个CFG提供不同加密密 
钥的管理,并且必须确保可执行文件与CFG的联合。一旦获得多项式位 
向量,就应将它传送给LFSR。 
 
(4)所有的I/O操作都是最基本的操作。仅当这些操作代码程序的特征标 
记比较有效时,它们才能被执行。这种特性锁住了病毒的传染能力。对 
于用向后恢复(即重算)的容错计算机来说,这是一种必不可缺的要求, 
因为在没有损害服务的情况下,大多数I/O操作是不能重算的。 
 
(5)现有的PFM设计都致力于错误检测并未明显地给出后续恢复的方法。 
但恢复的细节对我们应用PFM是十分重要的,因为我们需要把病毒错误 
和物理故障区分开来。在错误状态的检测上,必须保存无效、动态生成 
的特征标记以及在PFM上出现过错误的代码位置,然后用重算(向后错误 
恢复)并从程序中一个重算点出发重新开始程序的执行,以便直接接受 
先前的特征标记检查。 
 
重算过程确定故障类型的方法如下:第一,若原始错误起因于瞬时故 
障,则将继续重新计算,并在成功的特征标记校验之后,程序将继续执 
行。第二,若原始错误是由永久故障造成的,则在重算之后故障仍会导 
致不合理的动态生成特征标记。对于某些故障,第二次特征标记将不同 
于第一次无效的特征标记,并且指出一个永久物理故障。第三,原始错 
误可以起因于引发再次出现相同错误的永久故障。相同错误的生成,除 
了不正确之外,特征标记在首次重算之后还将要求运行诊断程序查出永 
久故障。最后,若诊断程序不能检测故障,则一个已被检测过的病毒错 
误的存在将具有一种高概率。 
 
由于计算机结构没有有效的进程隔离(例Intel8086, Intel80286的保护 
模式),所以只能由PFM对读到存储器的存储地址进行监控。这将检测出 
可执行文件在运行里的病毒感染(如一个病毒代码块移入一个进程的未 
用栈空间)。这种方法是PFM的一种设计选择,而不是技术的一种真正扩 
充。事实上,CPU的所有外部可见活动都能由PFM加以监控。 
 
基于PFM的病毒检测方法具有以下显著的优点:首先,它保护可执行文 
件,乃至在运行期内也能保护可执行文件;第二,它也提供了对由物理 
故障和可以确定的设计故障所引发的错误的检测;第三,在适度的额外 
开销之内,把标准PFM方案扩充成用于病毒检测的PFM;第四,在CFG解 
密之后,在运行期里无性能降低出现;最后,PFM是能抗病毒的,因为 
它的部件都是硬连线和基本的ROM,并且PFM局部存储器以及LFSR只能
由 
PFM来存取。 
 
基于PFM方法的额外开销如下:(a)“编译器和连接器对”必须给定多项 
式;(b)应该加密CFG,并对每个CFG的密钥必须加以管理和保护;(c)需 
要对现有的编译器和连接器进行修改;(d)要求具有最基本的I/O额外机 
制;(e)由于PFM存储器里的额外开销与CFG的建立相关联,所以该方案 
适用于进程关联信息转换不频繁的环境(例,多处理机应用,嵌入式应 
用,个人计算机)。 
 
6.结束语 
 
目前,UCLA实验室正在加紧把程序流监控器的扩充用来解决计算机病毒 
的检测和抑制的研究。预期的研究结论是:通过上述组合的公共机制使 
计算机既能容忍故障故障又能容忍随机物理故障,从而达到检测和抑制 
既是故障又是错误的病毒。 
 
 


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: none@rainy.hit.edu.c]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.416毫秒