计算机病毒的危害与不可判定性
病毒的流行,暴露了当今计算机系统和安全方面的问题及脆弱性,尽管我们在防范计算机病毒,加强计算机安全方面取得了很大的成绩,但是病毒与反病毒技术是一对相互对立和相互促进的矛盾,在反病毒技术取得进步的同时,病毒必然会寻找新的脆弱点,在攻击目标、传染方式、破坏手段等方面会有新变化,因此,我们必须对病毒特征进行深入研究以提出一套综合治理病毒的方法。
(2)计算机病毒的不可判定性
由于计算机病毒的危害极大,防范起来又十分困难,人们希望开发出一种通用的程序,它能判断出一段解释为指令的代码是不是病毒,但不幸的是,F·COHEN博士给出了如下简结的证明:假设能研究出一个检测程序D,对任何一个程序X。
D(X)=TRUE,X是病毒
D(X)=FALSE,X不是病毒
那么D无法判断以下程序V是不是病毒:
PROCEDURE V:
BEGIN:
1.IF NOT D(R) THEN GOTO 3;
2.GOTO 5;
3.传染一个可执行文件
4.若触发条件成立则执行破坏功能
5.正常功能;
.
.
.
END
这样,当D判断V是病毒时,V却不传染即V不是病毒,若D判断V是正常程序,V却执行病毒的功能,这与D的假设矛盾,即D是不可能编写出来的。
由于理论上的限制,不可能有一种完美无缺的,无条件病毒防治方法。只能在一定的条件下,一定范围内对计算机病毒进行防治,也就是说,在区分计算机病毒与正常程序的时候,要同时考虑以下几个方面:
1.十分有效地发现计算机病毒
2.尽可能减少对正常程序的误判
而以上2个方面又是相互制约的,增强其中任一方面都必然会削弱另一方面。