rtm的伟大目标 1988年8月的最后一个星期,罗伯特进了康奈尔大学。 在康奈尔大学的第一周,学校的计算机系统管理员迪恩·克拉夫特(Dean Krafft)介 绍了一些基本的计算机系统使用知识,诸如怎样登录、怎样发送电子邮件等等,罗伯特几乎 没怎么听课。克拉夫特给每人发了一份计算机系的计算机使用规定,禁止“使用学校的计算 机系统浏览私人文件,进行加密材料的解密,或是非法取得用户特权”。在克拉夫特还在那 里蝶蝶不休的时候,罗伯特已经登录到系统上了。 罗伯特从基础的研究生课程上起。教授注意到他有着异乎寻常的好奇心。如果一样东西 不能立刻引起他的注意,他会毫不客气地予以拒绝。有一位教授交给他一篇论文要他阅读, 他却把论文还给了教授,说他对论文的题目不感兴趣。他过去已在讨厌的课堂上花了大多时 间盯着窗外出神,现在可不想忍气吞声了。 罗伯特很孤僻,对许多事情都有些漫不经心。他在电脑上花了很多时间,但对学校的课 程并不上心。他和道森·迪恩(Dawson Dean)交上了朋友。道森来自麻省理工学院,也喜 欢讨论技术问题。一天晚上,两人都在计算机系所在的阿普森大楼工作得很晚,随意谈起了 网络安全。罗伯特说他已经发现了好几种越过局域网的安全防护装置的办法。 “你是那种为了好玩而侵入电脑的人吗?”道森问。 罗伯特笑着点点头。他告诉道森,他曾经就安全问题给国家安全局和海军研究实验室作 过报告。但他可不想以后从事计算机安全工作。“那太枯燥了。”他对道森说。 罗伯特可能还没有确定长期目标,但心目中却有一个短期目标。 1972年,科幻小说家大卫·杰罗德(David Gerrold)首次使用“病毒”一词来指有害 的电脑代码。80年代初,病毒开始困扰个人计算机,1983年,弗雷德·科恩(Fred Co hen)第一个给出了电脑病毒的科学定义。但直到1987年,公众才普遍感知这一问题。那一 年,一起袭击了宾夕法尼亚州勒海大学(Lehigh University)的病毒事件引起了全美国的 注意。一年后,病毒相继成为《时代》和《商业周刊)的封面故事。它之所以惹人注目,是 因为它带有一种神秘感,并且与生物学上的病毒非常相像。计算机也会被“感染”,需要接 种“疫苗”,这些都令普通人感到好奇和恐惧。很快人们就把电脑病毒与艾滋病毒相提并论。 一般人都认为,所有的病毒都是有害的,都会损坏数据。但内行人知道,实情并非如 此。事实上,写一个微妙而无害的程序,同时又使它有能力大规模扩散。是一件比制造那些 破坏性的病毒更有趣的事情。 这就是罗伯特的目标。写一个能够传染尽可能多的计算机的病毒,这听上去颇为激动人 心。罗伯特兴奋地幻想着他的目标实现的那一天:一个看不见的软件在由成千上万台计算机 组成的电子宇宙中不断向前推进,缓慢地、不为人觉察地扩张它的疆土,任何想要摧毁它的 人都无计可施,这一病毒由此获得了永生。他拥有实现这一目标的手段:两年来他发现了伯 克利Unix中的许多漏洞,他耐心地研究它们,也许就是为了有朝一日对它们加以利用。到 10月初,罗伯特已被这个念头烧得坐立不安。 10月15日,罗伯特列了一张清单,上面有他打算完成的任务: 目标:每次感染以大网(局域网)上的3台机器 只在所有用户都停止工作的时候运行 绕开速度慢的机器 检查主机表,寻找已知的网关,然后找出该网的主机 偷偷进入口令文件,破解口令,再重新运行 在罗伯特的心目中,这是一个检验网络安全的无害的计划。在计算机科学的发展早期, 为了赢得同行的尊敬,他父亲说不定也曾梦想过这样的宏图伟业。但罗伯特忘记了网络的发 展已是今非昔比。他也许根本没想过,破坏分子也会采取同样的手段颠覆整个电脑网。 暑假的时候,罗伯特搭道森的车回到坎布里奇。大卫去了欧洲,但保罗和安迪都在。这 就好像回到了旧日的时光。罗伯特在楼上一如既往地玩电脑,保罗则在楼下一位数学教授的 办公室里。一天傍晚,罗伯特从楼上下来,脸上带着他惯有的腼腆的笑容。保罗知道有什么 事情要发生。罗伯特在办公室里转来转去,说他一直在阅读unix的源代码,在文件传输协 议(FTP)中发现了一个大的编码疏漏,这种疏漏常被编程人员戏称为“臭虫”(bug)。 FTP允许用户在网络中从一台计算机向另一台计算机拷贝文件,而这个“臭虫”使人可以在 目标计算机上读取或撰写文件。 从罗伯特激动的语调判断,保罗知道他一定是在几分钟前发现的“臭虫”。他在小屋中 转得越来越快,甚至跳上了教授的办公桌。 “rtm,快下来!”保罗不明白罗伯特为何这样激动,那只不过是打入Unix的又一种方 法罢了。“这个漏洞是很有趣,但那又怎样呢?” “我可以利用这个漏洞写一个病毒。”罗伯特解释说,在康奈尔,整个学期他都在琢磨 一个能在互联网上缓慢扩散的病毒。这一病毒不会做什么有害的事情,当然也不会损坏数 据。它只是无休止地扩散,侵入尽可能多的计算机。 保罗立刻来了劲儿。他一直鼓励罗伯特在康奈尔多交些朋友,多参加社会活动,但当他 听说罗伯特把时间用在琢磨病毒上,他很兴奋,还有些羡慕。 “这真是太棒了!你应该把这作为你的学位论文!” 在某种意义上,保罗是最理想的朋友。他一旦对一件事发生兴趣,会竭尽全力鼓动朋友 去做。他的热情常常会感染其他人,对他的朋友和偶像rtm就更是如此了。他是一个单人啦 啦队。他的赞扬使罗伯特更加坚定了信心。 当晚罗伯特和保罗要和安迪一起吃晚饭。两人在一家餐馆外面等待安迪,这时,他们又 情不自禁地聊起了病毒。由于网上没有这样的先例,所以思考起来需要很多的创意。两人一 致认为,这个想法会导致电脑圈子里梦寐以求的“伟大的黑客行动”。罗伯特开始向保罗描 述这样一个程序的一些重要特征。首先,它必须能够潜入网络中的许多不同的机器,还得尽 可能地不引人注目,以防系统管理员怀疑;其次,它立足之后,必须想法发现是否已有自己 的其他拷贝在机器上,它应该有自我控制能力,对每台机器上的拷贝数进行限制。但有一个 难题仍未解决:如何在不停止病毒运行的前提下控制其蔓延。 在等待安迪的时候,罗伯特进一步明确了他的计划。病毒将从他发现的Unix漏洞中进 入计算机,然后在系统中寻找有无其他拷贝。如果有的话,两个程序将互相“交谈”,在理 想情况下,其中之一将自动停止运行,从而达到控制病毒繁殖的目的。但如果有人发现了侵 入的病毒,那又该怎么办呢?程序员可以写作一个欺骗性的程序,使病毒误以为在这台机器 上已有自己的拷贝了,这种“疫苗”程序将有效地阻止病毒的扩散。罗伯特和保罗仿佛两个 棋手,每走一步都要设想对手会有什么反击的招数。他们用什么办法击败“疫苗”程序呢? 随机性!这个念头突然闪过他们的脑海。他们一起上过迈克尔。拉宾(Michaei Rabin)的课,他是一位著名的数学家和密码专家,在哈佛讲授算法课。他总是强调随机化 的重要意义,一再告诉学生说,如果遇上一个难以解决的问题,可以把它简化,然后再应用 随机性原则。(这也是鲍勃·莫里斯的拼写检查程序的基本思路。)拉宾说的是运用随机性 解决抽象问题,比如说寻找素数,但罗伯特和保罗却想,他们可以用同一个概念构想病毒。 当病毒进入计算机并发现另一个拷贝时,它可以扔一个“电子硬币”决定谁生谁死。 罗伯特还想出了另外一种保证病毒生存的办法。病毒在N次尝试进入一台计算机后,给 自己下一个永不停止运行的指令。然而新的问题又来了:N值应该是多少?5次?1000次? 1 次? 就在他们讨论得正热烈的时候,安迪过来了。虽然他不是外人,但他担任着艾肯的系统 管理员,这件事会把他置于尴尬境地。两人突然中断了谈话,安迪还以为他们在议论一个他 和罗伯特都喜欢的女孩儿。 罗伯特难以摆脱关于病毒的思绪。他也无法抑制他发现“臭虫”的兴奋之情。第二天, 他还是忍不住对安迪说了这件事,并要安迪不要外传。 安迪立马就要在计算机上验证罗伯特的发现。当他弄不明白时,罗伯特不得不给予更详 细的解释。