美文网首页青枫分享素材库青枫投稿社
巨人机:第一台可编程电子计算机

巨人机:第一台可编程电子计算机

作者: 逸之 | 来源:发表于2019-11-21 20:55 被阅读0次

ABC之后,历史仍未安排ENIAC出场。1943年,电子时期的第2个重要角色诞生在图灵所处的布莱切利。

研制背景

1941年6月,意识到谜机可能已被破解的德军启用了一种复杂度更高的加密系统,并且这一次英国没能拿到相应的机器,布莱切利的密码学们要和一个完全未知的强大敌人抗争。在听闻德国人用一种海鱼的名字称呼这套系统后,布莱切利也给它起了个绰号——“金枪鱼”。

1941年8月,“金枪鱼”的操作员由于一时疏忽将同一条信息发送了两遍,尽管两条密文并不一样,但经验丰富的布莱切利在截获之后立马意识到它们指向同一条明文。这个小小的马脚,被这里绝顶聪明的密码学家们牢牢抓住,真可谓一叶知秋,他们据此精准地推测出“金枪鱼”的组成结构和工作原理。它包括12个谜机那样的转轮,每个转轮的旋转模式各不相同,每个转轮上导电触点的数量也不一样,导电触点可以在接通和断开两个状态之间切换,使用前可改变各触点的状态和转轮的起始位置。

金枪鱼(图片来自维基百科) 金枪鱼转轮导电触点特写(图片来自维基百科)

和谜机的字符级加密不同,“金枪鱼”进行的是编码级加密,当时的电传打字机使用的ITA2码制(国际电报字母表第2号)用5位二进制对单个字符进行编码,“金枪鱼”将这些二进制位与特定的二进制密钥进行异或运算后生成密文。异或是一种特别的逻辑运算,它是可逆的,明文和密钥异或之后生成密文,反之,密文和密钥异或之后又可以得到明文,这就是“金枪鱼”加密和解密的基本原理。

ITA2 秘钥 密文
0 0 0
0 1 1
1 0 1
1 1 0

破解“金枪鱼”,不仅要猜出转轮上所有导电触点的通断状态,还要猜出各转轮的起始位置,其组合数量之巨,不仅远远超出了人力处理的能力范围,也令炸弹机这类机电设备束手无策。布莱切利急需一种更高速的解密机器,电子管方案成为不二之选。

研制电子计算机的重任落在了位于伦敦西北角的邮局研究站身上,该研究站有着丰富的电子通信经验,在布莱切利的部分密码学家对电子管的可靠性还抱有疑虑的时候,邮局研究站的工程师早已对电子管的大规模应用驾轻就熟。1943年2月,在图灵的推荐下,来自研究站的托马斯·弗劳尔斯(Thomas Harold Flowers)扛起这面大旗,在布莱切利一部分人“等机器造好战争怕是早就结束了”的冷嘲热讽中,带领50人的团队仅用了11个月就完成了第一台原型。1944年1月,当这台包含了1500~1600个电子管的“庞然大物”来到布莱切利,密码学家们被深深震撼了,它比他们之前使用过的任何计算设备都庞大得多,因而被形象地称为巨人机(Colossus)。

托马斯·哈罗德·弗劳尔斯(Thomas Harold Flowers),1905-1998,英国工程师。(图片来自维基百科)

组成结构与工作原理

巨人机有二型,1943年的一型为Mark 1,其建造过程中,弗劳尔斯就已经开始了第二型Mark 2的设计。Mark 2包含2400个电子管,速度更快,功能更强,截止欧洲胜利日(1945年5月8日)共建有10台之多。可惜的是,出于保密考虑,这11台机器连同其图纸都在60年代被下令焚毁,如今我们在布莱切利的英国国家计算博物馆所能见到的,是后人在1992~2008年耗时16年重建的复制品。

巨人机Mark 2复制品(原图来自维基百科)

巨人机使用穿孔纸带输入密文,纸带每行有5个孔位,对应ITA2中的5位二进制。纸带长约61米,穿孔25000行。共设有两个纸带支架,在一条纸带工作的时候,操作人员可以准备好下一条纸带,交替使用,节省纸带更换时间。由于机器内部没有数据存储模块,纸带的头尾相接,形成环状,以便循环读取。纸带的读取速度十分惊人——每秒5000行[1],工作时发出湍急的流水声,纸带上的孔洞以近44公里的时速飞驰。这得益于光电技术的应用,在纸带的一侧安装一个灯,另一侧安装5个并排的光电探测器[2],一个探测器负责盯住一个孔位。当灯光穿过某个孔洞,其对应的光电探测器就能迅速发出电流脉冲,产生二进制信号1;当灯光被未穿孔的孔位遮挡,对应的探测器就产生二进制信号0。

巨人机基于图灵方法[3],用电路模拟“金枪鱼”的转轮位置及其导电触点的通断状态。密文流入机器后,经过一系列以异或为主,与、或、非为辅的逻辑运算,最终由电动打字机输出结果。这个结果当然不可能就是明文,而是各种统计数据,比如某个字符出现的次数,或者某些数值满足某种逻辑条件的次数,有点像现在的数据挖掘。机器内有5个电子计数器,可同时统计5项数据。密码学家根据统计结果找到密文中暗藏的线索,调整机器程序,得到新的统计结果后继续分析,如此往复,一步步逼近最终的正确答案。

巨人机的可编程性是靠开关、旋钮和接插线板实现的。其开关可以上下拨动,分别接通两个不同的功能线路,多数开关还可以被拨到中间,使两个线路都断开;其旋钮用于置数,10个位置依次对应0~9,10条数值线路像10位英俊的绅士围绕着旋钮女士,一齐向她伸出求舞之手,而旋钮总会牵手他们中的一位。

巨人机的编程本质上是一组选择,选择每个开关和旋钮的位置,选择接插线板上每个导电孔的通断。这些选择对象分布于多块操控面板之上,下面按从右至左的顺序简单介绍一下它们的功能。

范围设置面板,包含3组旋钮(每个旋钮有10个位置),每组可以设置一个4位十进制数。其中2组用于设置纸带的读取范围(起止位置分别用4位十进制数表示),当使用者比较关注纸带上的某一段密文时,可以让机器循环读取这一段,而不是整条纸带。 信号选择面板,包含16个开关,可以对输入信号进行筛选,比如选择使用哪一个支架上的纸带,又比如选择将数据本身还是数据的变化量(图灵方法需要的参数)传送给逻辑运算单元。 统计设置面板,包含191个开关,左上区域5列黑色开关用于指定需要统计的字符,右上区域5列灰色开关用于指定每个统计值所对应的计数器,左下区域5列红色开关可以设置统计多个字符出现的次数总和,右下区域5列红色开关用于指定这些总和统计值所对应的计数器。 触点设置面板,为接插线面板,包含10行槽位。第1、3、5、7、9行用于设置“金枪鱼”某5个转轮上导电触点的通断状态,1个槽位对应1个触点;第2、4、6、8、10行用于更复杂的模式。 转轮设置面板,为接插线面板,包含12行槽位,用于设置“金枪鱼”12个转轮的起始位置,以第几个触点作为起始位置就在第几个槽位插上插头。 主控面板,包含40个开关,有6种颜色,用于设置机器的各种运作方式,比如设定“金枪鱼”转轮在什么条件下旋转。 状态显示面板,包含上下2组小灯泡。上侧一组包含10行小灯泡,用于显示5个计数器的当前值(每2行对应1个计数器);下侧一组包含12行小灯泡,用于显示“金枪鱼”12个转轮的当前位置,它们可能是静止的,也可能不断变化,取决于主控面板的设置。 阈值设置面板,包含20个旋钮和5个开关。机器的统计量很大,为便于分析,可以设定统计值高于或低于某个阈值时才通过打字机输出。每个计数器对应4个旋钮(阈值表示为4位十进制数)和1个开关(选择“大于”还是“小于”)。

可见,巨人机的使用十分灵活而复杂,需要两名操作人员协作完成。布莱切利雇佣了当时皇家海军女子勤务队的成员操作机器,而密码学家则专注于算法设计和结果分析。

后话

1944年6月1日,第一台Mark 2巨人机正式交付,如期赶上了重大的诺曼底登陆战役。德军万万没有想到,他们引以为傲的机电式“金枪鱼”,面对的是领先了一个时代的电子计算机。巨人机不负众望破解了德军密码,为战役的最终胜利做出了不可磨灭的贡献。

由于涉密,巨人机的知名度比ABC更低,其存在直到70年代中期才公开。1983年,78岁的弗劳尔斯专门撰写了一篇论文——《巨人机的设计》,他发现自己已经很难记起机器的许多细节,在采访了当时团队中一部分幸存的工程师后才得以写成。连建造者的记忆都在淡却,更别提后人粗浅的了解了。

巨人机是世界上第一台可编程计算机,但它是专用的,不具有图灵完备性。但一位旧金山大学的教授于2009年证明,将10台巨人机以某种方式组合之后可以达到图灵完备。但这种证明其实意义并不大,巨人机本身是为完成特定任务而设计的,弗劳尔斯也承认在建造它时从没想过现代计算机是什么模样的,甚至还没听说过有用“computer”来称呼机器的做法。

尽管如此,巨人机对电子计算的探索十分成功,为英国战后的计算机研制做好准备。

参考文献


  1. 测试时,工程师们发现纸的韧度最多可支撑每秒9700行的读取速度。

  2. 光电探测器可以有多种类型,比如光敏电阻(电阻值遇光照迅速减小)和光电管(类似电子管,只是激发阴极电子的不是热而是光),都是基于光电效应实现的。

  3. 由于图灵极高的历史地位,有些文献会误认为巨人机是图灵的作品,其实图灵并没有直接参与巨人机的建造,只是机器的实现用到了他的图灵方法。

相关文章

  • 巨人机:第一台可编程电子计算机

    ABC之后,历史仍未安排ENIAC出场。1943年,电子时期的第2个重要角色诞生在图灵所处的布莱切利。 研制背景 ...

  • 计算机二级 计算机基础 知识点

    计算机的发展 计算机的发展史 战争催生了第一台电子计算机 埃尼阿克ENIAC:第一台电子计算机1946年产于美国宾...

  • 平坦的道路上艰难前行:用户体验设计简明史话(2)

    人机交互时代 书接上文,1946年人类历史第一台公认的电子计算机被制造出来标志着第三次工业革命的开始,用户体验设计...

  • 信息学奥赛系列教程:计算机文化基础2

    计算机发展历史和分类分代:第一台电子计算机:1946年第一台计算机在美国宾夕法利亚大学诞生,名字ENIAC,叫电子...

  • 2020-05-18

    了解计算机,看这里,计算机发展史! 一、第一台计算机 电子管计算机(1946-1957年) 世界第一台电子计算机“...

  • 计算机的故事-诞生

    一、世界上第一台计算机 世界上第一台可编程计算机,不是你们想的那样,对对,不是ENIAC! 它是阿塔纳索夫和克利福...

  • iOS逆向实战--001:初识汇编

    汇编语言(assembly language):是任何一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低...

  • note_1_Linux初识

    计算机与操作系统   世界上第一台现代电子计算机ENIAC,全称为Electronic Numerical Int...

  • 常用数据结构之字符串

    第二次世界大战促使了现代电子计算机的诞生,世界上的第一台通用电子计算机叫ENIAC(电子数值积分计算机),诞生于美...

  • 让计算机去干活

    1946年2月14日,世界上第一台电子计算机“电子数字积分计算机”(ENIAC Electronic Numeri...

网友评论

    本文标题:巨人机:第一台可编程电子计算机

    本文链接:https://www.haomeiwen.com/subject/qnewsctx.html