

数字化生存:“一·一五”大瘫痪——电话系统的脆弱性
作者:三联生活周刊(文 / 胡泳)
1990年1月15日,美国电话电报公司的长途电话交换系统陷入全面瘫痪。
这是一起奇怪的、可怕的、波及面广泛事故。6万名用户的电话无法使用。在长达9个小时的紧急抢修中,7000万个电话中断无声。
对电话业来说,服务中断是一种由来已久、素为人知的风险。飓风的侵袭可能会折断上千条电缆,地震会破坏埋在地下的光缆干线,交换站也有可能被大火烧得精光。电话公司为诸如此类的事情制订了紧急应变计划,多年来也在这方面积累了丰富的经验。然而“一·一五”大瘫痪却令其措手不及。它的影响范围之大令人难以置信,而且,找不出什么明显的物理原因。
事故发生在一个星期一的下午,最早是曼哈顿的一家交换站开始出现故障。但是,与一般的物理故障不同,这次故障似乎具有传染性,美国境内一家又一家交换站陆续感染上此类症状。一连串的反应最终摧毁了AT&T电话网的一半,另一半则由于通话量的急剧增加而手忙脚乱。
在9个小时之内,AT&T的软件工程师们设法弄清了瘫痪的原因。“罪犯”是AT&T自己开发的软件中的一个“臭虫”(bug)——即程序中的一个错误。
也许下面的一点关于交换系统的知识,能帮你更好地了解电话是怎样工作的。对普通人而言,电话无非是一台你可以对着它讲话的机器。但对一个电信工程师来说,电话只是一个子集(subset)。安放在你家中的电话只是中央交换系统的一个附件,一个神经末梢。
让我们想象一下,把时光倒回到1925年,那时计算机还没有问世,电话系统远没有今天这般复杂。让我们进一步假设你是一位接线员小姐,生活在20年代的纽约。那时你就是“交换系统”。你头戴耳机,坐在一个巨大的交换台前,台上布满了密密麻麻的插孔,数目可达1万个。工程师们还想在台上设置更多的插孔,但1万个插孔是你不必离开座椅而能操作的最大数目了。每一个插孔都和一个小灯泡相匹配,并且有相应的号码。你工作的大部分时间都在用来巡视哪个灯泡亮了。如果一个灯泡开始闪亮,这意味着它后面电话线的那一端有人拿起了电话。此时你要做的第一件事情是在笔记本上登记相应的电话号码,这样做的目的是为了收费。然后,你把耳机的插头插入亮灯的插孔,轻声说:“接线员”。电话另一头的声音告诉你一个号码,你立即把它登记在本上。接下来你把线路接到应答者的电话插孔上,这时,一次通话就开始了。通话结束时,你将线路拔下。
由于成千上万次做这类事情,你变得十分熟练。你可能同时连接10条、20条、40条线路。这成了一门手艺,为获得这样的手艺,你受过专业培训。
那时长途电话很贵,没有多少人打。如果确实有人打长途,程序要复杂一些。你必须把线路连入长途干线,由于距离较远,一个长途电话也许要经过一群接线员的手,这是要花费一点时间的。在这一复杂过程进行当中,打电话的人是不必守候的,相反,他挂断电话,待你终于接通了应答者之后,再通知他。
在从事了4~5年这样的工作后,你结婚了,离开了电话公司。公司必须再培训其他人——这回要培训的人更多了,因为电话网在不断扩大。这一切都要花钱。
事实上,人工交换系统是十分昂贵的。为此,在20世纪的早期,人们发明了一种电动机械交换系统,它速度较慢,而且也容易损坏。但随着芯片的发明,一切都发生了改变。芯片的体积极小。它速度快、寿命长、易于维修,而且价格低廉。每年,它还在变得更小、更快、更便宜。最重要的是,芯片可以24小时连续工作,并且不需要工资和健康保险。但芯片并不是尽善尽美的。如果它们出了故障,你很难判定毛病究竟是出在哪里。如果你想要某个机械系统从事某项新工作,你必须换下旧部件,装上新部件。而如果你想使芯片派上新用场,你唯一要做的是改写其软件,这既快,又容易,也便宜。
只要知晓正确的代码和序列,并拥有进入某些电话专线的通道,你可以在任何地方改变全国的电子交换系统。如果有人闯入交换站,用枪指住接线员,这样的罪行是很容易败露的。如果有人悄悄溜进电信大楼,使用工具破坏电机开关,至少会留下蛛丝马迹,但如果电话公司采用程控交换系统,人们坐在家里使用键盘就可以实施破坏,而且不留痕迹。计算机系统的这种脆弱性令人不寒而栗,然而却是生活中的一个基本事实。在过去20年中,安全专家一直警告说,计算机的这种易受攻击性意味着一种全新的风险,它可能给社会带来可怕的后果,可怕到什么程度难以预料。他们的洞察无疑是正确的。
微妙的软件
一个电话交换站(ESS,Electronic Switching Station)所从事的工作与接线员没有什么不同,只不过速度快得多,范围也大得多。与1万个插孔相比,即便是第一代电子交换机,1960年出产的1ESS,也能够处理12.8万条线路。今天,AT&T使用的交换系统已发展到第五代的5ESS。
一个电子交换站不是用眼睛,而是用扫描仪来检查地方线路和长途干线。它不是用手,而是用信号分配器、舌簧开关等接通或中断电话。它没有头,但却有中央处理器。它使用磁带而不是笔记本来记录通话时间。它也不必与用户谈话,用户所要做的就是拿起听筒,揿下号码。
电子交换站不能谈话,它需要一个界面与它的“主人”——电信专家们交互。这一界面在行内被称作“主控中心”。利用主控中心,电信工程师可以检测线路上的毛病,他(很少是她)可以计算流量,检查电话使用记录和收费记录,并改变程序。
由此,任何人只要对主控中心实施了远程控制,他(很少是她)就可以随心所欲地在电话系统中做手脚。
电子交换站无疑比人工系统有效得多,但不幸的是,它不像人一样拥有智力。计算机只有在软件的指挥下才能工作。
我们称之为“软件”的东西,在生活中是找不到对应物的。它有点像机器,有点像数学,有点像语言,有点像思想,又有点像艺术和信息……但软件又不是这些东西中的任何一种。它的多变性正是它的神奇所在。这一特点也使得软件十分有力,十分微妙,十分难以预料,也十分危险。
最好的软件是那些在相当长的时间内,由成千上万个用户在成千上万种不同条件下试用过的软件。只有这样的软件才能称为“稳定的”,但并不意味着它是没有缺陷的,它只是表明,软件里仍有不少“臭虫”,不过这些“臭虫”已被辨认出来,其破坏原理也为人们所探明。有一条“墨菲编程法则”说:总会有一个新的“臭虫”。
其实,根本没有任何方法能够保证软件是没有缺陷的。虽然软件在本质上与数学有关,但它却不能像数学定理一样被“证明”;它更像语言,有许多内在的模糊不清的地方,不同的定义,不同的假设和不同层次的意思都可能发生冲突。
人类使用语言时,需要把词汇转换成思想,这种转换是相当复杂的,远不止是理解每个词的独立含义。我们之所以能够使用语言,是因为我们能抓住要点。
但是,虽然经过人工智能研究者的多年努力,计算机却仍旧无法抓住任何东西的要点。句法上的最微小的砂砾都可能使最强大的计算机陷入瘫痪。对于一个计算机程序,你做的最危险的事情之一就是试图改进它——使它变得更安全。软件“补丁”意味着新的、未经检验的、从而也就是不稳定的程序加入了原有的程序中,这注定要带来更大的风险。
现代电话系统的运行完全依赖于软件,这是一个不可逆转的过程。而“一·一五”电话系统大瘫痪,起因就在于对软件的改进。
对手:系统本身
这起事故使AT&T忍诟蒙羞。它对公司长久以来引以为自豪的服务可靠的名声是一个巨大打击。几天后,AT&T的最高首脑鲍勃·艾伦(Bob Allen)在美国各大报纸上发表了“致用户的公开信”,其中说:“我们没有达到自己的质量标准。事情就是如此简单。这对我们来说是不可接受的,对你们来说也是如此……我们十分清楚,人们对AT&T服务的依赖性有多强,所以贝尔实验室的科学家和公司的网络工程师正在尽其所能,以确保类似事件不再发生……”
在电话业竞争日趋激烈的形势下,这样的声明当然不是这个电信巨头愿意作出的。它的承诺没有保持多久。1991年9月17日,又发生了一起服务中断事故。这次与软件的失败没有多大关系了——至少没有直接关系。AT&T在纽约的一些交换站因为断电而关闭了电话线路。备用电池未能起到应有的作用。自动报警系统本应就此发出警告,但这些系统未能奏效。
肯尼迪国际机场等3个机场无法进行声音和数据通讯。纽约地区的空中交通陷于停顿,500多个航班被迫取消。同样多的航班延迟起飞,从而使8.5万乘客受到不同程度的影响。滞留在机场的乘客由于不能打长途电话向亲人和商业伙伴解释延误的原因,而变得更加愤怒。
这一次,共有450万个国内电话和50万个国际长途中断。整版的AT&T道歉声明再次出现在各大报上。
为什么纽约的交换系统断了电?因为没有人注意到自动报警器发出的警告。为什么自动报警器白白地报了一番警?因为本应照看它的3位技术员离开了他们的动力室中的岗位,上楼参加培训去了。培训的内容:如何管理动力室中的自动报警器。至此,“系统的瘫痪”已不再是什么新鲜事。事情已变得很明白,没有人能够“保护”系统不受破坏。而系统到目前为止所遭受的最严重的破坏,都是系统自身造成的。这次,没有人再出来说什么这只是意外事故,永远不会再发生了等等。到1991年,系统的保卫者们已经遇到了他们最难以捉摸的对手,这个对手就是——系统本身。 电脑数字化生存