代码改变世界

50 年前的黑客黑什么?

2013-07-22 08:00 by Cat Chen, ... 阅读, ... 评论, 收藏, 编辑

19 世纪 60 年代,个人电脑还没有出现,两位 Steve 还没有把苹果电脑发明出来,那当时的黑客黑什么呢?黑电话网络。其中最著名的例子应该是两位 Steve 发明的蓝盒子了——只要用它来拨号,就能免费拨打长途。那到底蓝盒子的原理是什么?如果你好奇心足够重,就应该去看一本叫做《Exploding the Phone》的书。

这本书先介绍了一下 AT&T 的简史。在贝尔发面电话之前,垄断美国的网络是西联电报。当时电报存在一个技术难题,就是一条线路只能走一个信道。由于想要发电报的人越来越多,而扩建线路的成本并不低,所以西联电报尝试研究信道复用技术。当时研究信道复用的人很多,大家都认为谁先研究出来了就可以高价卖给西联电报,贝尔也是竞争者之一。不过贝尔更爱声学,所以他想要通过线路来传播声音。在他看来,如果线路能传播和声,那就相当于能够复用了——不同频率的声音相当于不同的信道。最终贝尔发明了电话,西联电报认为这是玩具拒绝购买,贝尔只好创立自己的公司来建立电话网络。

最初的电话是点对点的,也就是两家公司需要经常联系的话就铺设一条电话线路连接这两家公司。很快贝尔就意识到这限制了电话网络的扩张,所以引入了交换局的概念——多个家庭接入一个交换局,然后任何人拿起电话都可以跟交换局的接线员说要接给谁,接线员就可以帮他接通电话。随后交换局发展到可以通过干线和其它交换局连接起来,于是大家可以跟接线员说「请帮忙接某某区第几局谁谁谁」,接线员就会接干线到某某区第几局,然后跟该局的接线员谁接谁谁谁。

在搞掂美国东部几个大城市的电话网络后,贝尔意识到电话专利还有 10 年就要过期了,过期后就会出现非常多的竞争对手,所以贝尔尝试利用这 10 年来建立美国的长途电话网络,随后以此来跟竞争对手的本地电话网络竞争。事实证明这个策略是正确的,电话专利过期后每个城市都有若干电话公司成立,贝尔的做法就是打压这些电话公司——要么你被我并购,要么你跟我合作,否则我不让你接入长途网络。最终 AT&T 形成了,并且成为了一个受司法部认可的垄断企业。

这时候电话网络已经演变出电话号码来,但仅用于同一交换局内。如果你要打一个长途电话?你还是要跟接线员说「请帮忙接某某市某某区第几局号码多少多少」,然后她帮你接到某某市某某区第几局,再让那个局的接线员完成拨号。北美的电话号码格式都是 +1 (XXX) YYY-ZZZZ,其中 ZZZZ 段就是同一个交换局下面的电话号码了。后来,交换局也变成了号码,于是就有了 YYY 段,但长途电话还是要找接线员。

让长途电话也变成号码,这是 AT&T 的迫切需求,同时也是技术难题。迫切需求,是因为 AT&T 雇佣的接线员越来越多,按照网络扩张速度来看,AT&T 估计要雇佣一百万的接线员才能覆盖整个美国,而美国根本不可能提供那么多的人力资源来做接线员。技术难题,是因为无法为任意两个城市建立直接连接的长途干线,所以需要接线员来手动路由。有时候接线员不知道该怎么路由了,还需要接转入局接线员,因为她们是接线员的接线员,专业接转出局接线员无法路由的电话。

最终 AT&T 成功通过机器加打孔金属片解决了这个问题。所有的路由信息都记录在打孔金属片上,机器能够智能地选择下一跳交换局,在本交换局到下一跳交换局干线全部被占用的时候还能智能地选择另一个下一跳交换局。不过这里还有一个小小的问题:过去目的地电话号码都是接线员之间口述传递的,直到最后一跳的交换局才拨打本地号码,现在通过什么方式来传达目的地号码呢?既然接线员能够口述电话号码,AT&T 的工程师想,那让交换机和交换机通过音频线路来传递电话号码也可以吧。于是一个史无前例的网络漏洞就诞生了。

这本书每一章都是一个独立的故事,讲述一个人或者一小群人如何发现 AT&T 的这个网络漏洞然后加以利用。尽管随着科技的发展,这个漏洞和利用方式都在变化,但不同时期都有人发现了这个漏洞。在接线员消失以前,有人找到转入局号码并且拨进去假装上一跳接线员要求转接,因为计费发生在第一条接线员那里,所以转入局接线员总会无偿转接。在接线员消失后,有盲人发现对着电话吹口哨就能拨打免费电话。再后来,晶体管的出现使得蓝盒子成为可能。

简单来说,这个漏洞是这样子的:计费永远只发生在第一跳的交换机,如果你在第一跳交换机拨打一个免费电话,整个会话它都不会进行计费。美国的目录服务(相当于中国的 114)是免费的,包括长途拨打其它城市的目录服务也是免费的,所以你可以拨打一个长途目录服务来开始一个不计费的会话。接下来你需要对着电话发出一个 2600 Hz 的声音,这个声音是两台交换机之间用来表示干线闲的声音。你第一跳的交换机听到这个声音后会无视它,因为你是电话不是交换机。但第二跳的交换机就会以为干线闲,那对它来说意味着第一跳的交换机把电话挂断了。接着你终止 2600 Hz 的声音,第二跳交换机就会以为第一跳交换机再次连接同一条干线,并且有一个新的长途电话需要接通。这时候你就可以通过音频指令向第二跳交换机进行拨号了,无论你拨什么号码它都会为你接通,而且计费责任不在它身上。第一跳交换机会把整个过程看做你原先那个免费长途电话,因此也不产生计费。

在 50 年前,AT&T 不能像 Facebook 一样发个 hotfix 就立即对所有服务器生效,AT&T 也不能像 Microsoft 一样发个 hotfix 然后等着用户下载生效。面对这个漏洞,AT&T 的工程师估计需要几亿到几十亿美元的成本来更换所有的交换机。至于更换交换机后能否保证不再有漏洞,那肯定是不保证的。所以,在那 10 年的时间里,AT&T 想方设法制止别人利用这个漏洞,但同时又要尽量避免见报,因为见报了就会有更多人仿效。

在这期间,黑客使用各种手段来探索电话网络的秘密。他们找到了电话网络中的回路,也就是 IP 网络 localhost 的始祖——你拨打电话给回路号码,它会录音一段时间,然后它会自动回拨并播放录音。回路的作用跟 ping localhost 相似,就是测试一对线路是否联通。他们找到了免费的电话会议入口——某些无效号码会把所有来电都接到一跟线路上,然后播放号码无效的录音,只要你大声说话所有人都能听见。他们甚至还找到了从民用电话网络劫持交换机介入军用电话网络的方法。

最终,晶体管使得程控交换机成为可能,这个漏洞才被堵住了。(中国基本上没有部署过机电交换机,直接从接线员时代进入程控交换机时代,所以这个漏洞几乎不曾存在过。)晶体管同时使得个人电脑成为了可能,原本热爱探索电话网络的黑客找到了新的探索方向,例如两位 Steve 就发明了苹果电脑。最终黑电话网络的 10 年结束了。至于那 10 年里都发生过什么传奇故事,大家可以去看那本书慢慢了解,我就不剧透更多了。