黑色技术——计算机病毒简史
现在的计算机用户似乎都有了些共识。当计算机运行不正常的时候,当显示器蓝屏、频繁死机、文件打不开的时候,大部分用户的第一反应就是:“我是不是中了病毒?”
在大概十年以前,曾经听说过“戴口罩防止被计算机病毒传染”的笑话。现在不会再有人把这个笑话当真了,因为计算机病毒已经成为了使用计算机的过程中必然会接触到的东西。在接下来的部分里,且一起去寻访一下这些在计算机中不受欢迎的小小程序。
一 早期的计算机病毒
在生物学领域中,病毒本来是指一类比较原始的、有生命特征的、能够自我复制和只能够在细胞内寄生的非细胞生物。但在计算机科学领域里,所谓病毒,是指“编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。
从这个定义可以看出,计算机病毒与其他计算机程序的重要区别在于自我复制性以及它的破坏性。
实际上早在电子计算机发明以前,约翰·冯·诺依曼就在一篇名为《复杂自动装置的理论及组识的进行》的论文里提出了可自我复制的程序的概念。顺便提一句,现在几乎所有计算机都是按照他提出的“处理器、存储器、输入输出系统”三部分结构而设计的,都属于“冯·诺依曼机”,而冯·诺依曼本人也被称为“计算机之父”。
在20世纪60年代初,美国电报电话公司贝尔实验室中的三个年轻人维克多·A·维索特斯克(Victor A Vysottsky)、马尔科姆·道格拉斯·迈克尔罗伊(Malcolm Douglas Mcilroy)和罗伯特·H·莫里斯(Robert H.Morris)在忙于设计和开发UNIX操作系统之余,开发了一个叫做“达尔文”的游戏,在一台IBM 7090计算机上运行,以模拟生物的进化过程。他们在这个游戏中,应用了冯·诺依曼曾经提到过的程序自我复制的理论。后来这个程序也被称为“磁芯大战”,参与者自己撰写程序来和别人的程序争夺地盘,并且争取消灭别的程序。当时他们使用的编程语言是“Redcode”。1983年亚历山大·窦德尼(Alexander Keewatin Dewdney)在《科学美国人》杂志上发表了一篇名为《计算机娱乐》的文章,把这种游戏介绍给大众。因为这种游戏只能在指定的环境中运行,因此虽然其中的某些程序具备了自我复制的能力,但是还不能称之为病毒。实际上,在他发表这篇文章的时候,“计算机病毒”这个名词还没有被发明出来呢。这个名词是直到1983年11月才首次提出的。
1983年,弗雷德·科恩(Fred Cohen)正在美国南加州大学攻读他的博士学位,他写出了可自我复制及感染能力的程序。他发现,这个程序能够在一个小时内传遍他的整个电脑系统,快的话只需要5分钟。11月10日他在一个电脑安全研讨会上公布了自己的研究结果,并且指出:“这一类型的程序可在电脑网络中像在电脑之间一样传播,这将给许多系统带来广泛和迅速的威胁。”他的导师艾德勒曼(Len Adleman)将这一类型的程序命名为计算机病毒。
这下子人们终于知道该怎么称呼1982年的一个恶作剧了。1982年初,就读于Mt.Lebanon高中的九年级学生理查德·斯克伦塔(Richard Skrenta)在苹果Ⅱ型计算机上写出了一个叫做“Elk Cloner”的程序,并且把它拷贝到游戏软盘中去。当时人们对于软件的版权问题还不太在乎,盗版情况十分严重,相互复制软件是十分平常的事。当写入了“Elk Cloner”的软盘运行或启动时,它就会把自己复制一份放在计算机内存里,一旦有人将一张没有这个程序的软盘插进被感染计算机并输入指令来查看文件列表时,“Elk Cloner”就会再复制一次并且把副本写入那张未被感染的软盘中。于是,这个程序就开始传播开来。当第50次启动被感染的软盘时,将会出现斯克伦塔写的一首短诗:
Elk Cloner:The program with a personality
It will get on all your disks