冷战密码破译巨兽:IBM为NSA打造的Harvest超级计算机
1. 冷战巅峰的绝密机器
在冷战高峰期,一台极其专业的计算机因其高度机密性,以至于世界根本不知道它的存在。它的运行速度比同时代任何其他计算机快达200倍。从1962年古巴导弹危机时期开始,历经越南战争,直至1975年赫尔辛基协议之后,它一直是美国国家安全局(NSA)的主要密码处理核心。这台机器直到其活动部件最终报废才停止运行。Harvest计算机之所以重要,不仅在于其运行的时代,更在于其本身的特性。在长达14年的时间里,当信号情报(signals intelligence)几乎等同于除核弹头之外的战略武器时,它一直是处理NSA最敏感截获情报的引擎。
2. 开创性的流式处理架构
Harvest由IBM为NSA设计制造,是最早一批旨在对高速流过的海量数据集进行运算的机器之一,堪称当今实时处理连续视频流和安全系统的计算机的先驱。它也是最早作为附加组件(add-on)制造的机器之一——一个专门用于出色完成单一任务的专用辅助设备,被附加到一台通用计算机上。Harvest的模块化设计类似于1960年代的图形芯片(graphics chips),如今CPU利用这些芯片来处理高强度的视频游戏和AI工作负载。如此强大的原始处理能力意味着Harvest还需要源源不断的数据流来维持运转。这促成了另一项开创性成就:世界上第一个自动化磁带库(automated tape library),它可以通过机器人从机器的架子上取回数百个大容量磁带盒中的任意一个。
3. 为NSA量身定制的系统
鉴于Harvest前所未有的处理和存储能力,其设计者自然需要重新思考系统处理信息的方式。因此,IBM编写了一种名为Alpha的定制编程语言,让密码破译人员能够严谨地描述密码问题,就像当时的科学家使用新兴的Fortran语言来描述方程和数据处理算法一样。在马里兰州米德堡(Fort Meade, Md.),一个NSA数据中心托管着当时世界上最快的计算机之一——尽管由于其敏感的高安全性密码破译和密码搜寻工作,它很少被讨论。Harvest的故事,是根据解密的文件和当代手册及技术概述拼凑而成的,为计算史提供了一个新的、出人意料的视角。它也提供了一个案例研究,展示了国家安全需求,尤其是在冷战期间,如何将计算机技术推向了非机密民用计算无法企及的远方。Harvest独特的历史揭示了一种具有远见卓识的算法、编码、存储和硬件架构,其理念有时领先于时代数十年。但这台机器也只建造了一次,只为单一目的服务,最终悄然退役。
4. Stretch与Harvest的协同
IBM具有里程碑意义的1960年晶体管大型机IBM 7030,更广为人知的名字是Stretch,为Harvest(官方名称为IBM 7950)提供了前端。从1961年到1963年,IBM向八九个客户(主要是科学研究实验室)交付了Stretch。Stretch在1950年代后半期设计和原型化,引入了现在标准的8位字节概念。在其运行的头三年里,Stretch是非机密领域世界上最快的计算机,尽管它未能达到IBM设定的比其前身IBM 704快100倍的激进目标。当IBM工程师在纽约波基普西(Poughkeepsie)设计和建造Stretch时,公司也在悄悄讨论为NSA建造一个新系统。当时,NSA现有的密码分析计算机——需要操作员手动装载每盘磁带的大型批处理机器——正难以跟上来自全球的截获消息流量。该机构需要的是一台能够全天候自动处理源源不断传入数据的机器。这一要求本身就深刻地塑造了Harvest的设计。
5. Harvest的流式处理核心
在向NSA提出两次失败的建议后,IBM终于在1958年获得了合同:一台基于Stretch的机器,辅以定制的协处理器,以及一个革命性的基于磁带的存储系统,称为Tractor。Stretch的强项是用于科学计算的浮点数学。IBM主要为其设计用于核武器设计和天气预报等前沿研究的实验室。相比之下,构建在Stretch之上的定制协处理器将帮助NSA分析师筛选字母数字字符——本质上就是整数数据。Harvest的协处理器与通用系统截然相反。它是一台流式计算机(streaming computer)。它不是执行长串指令,而是遵循一个固定的步骤序列,并将相同的序列应用于流经的每一对字符。Harvest与主Stretch处理器共享内存,并突发运行。要么Stretch在运行,要么它暂停自身,而Harvest的协处理器以极速处理内存中的数据。Stretch和Harvest是最早完全由封装在电路卡中并安装在冰箱大小机架中的晶体管构建的大型计算机之一。一份1962年关于Stretch的技术手册将该机器的CPU描述为分为几个功能部分——指令单元、前瞻单元、(并行和串行)算术单元以及内存总线单元。Harvest继承了Stretch的基本电路设计,但随后增加了一些非常规的东西:其流式处理单元以称为流水线(pipeline)的重叠阶段处理数据。因此,当一对数据字节在进行比较时,下一对正在从内存中取出。Harvest的协处理器通过从系统内存中获取两个数据流(称为P和Q),对其执行操作,然后将结果作为第三个流R写回内存来运行。每个流的宽度可以是1到8位。Harvest的内存是可位寻址的,这意味着可以完全忽略字边界。例如,它可以只取5位,而不是填满整个字节。流P、Q和R包含了用于循环和以复杂模式寻址数据的灵活规定——例如,允许从内存中重复获取短字符串。来自P和Q的数据馈送到两个功能单元。较简单的是逻辑单元,它执行基本的按位运算——今天任何程序员都能识别的相同运算——并将其结果写回内存。较复杂的是查表单元。它组合来自P和Q的传入数据以形成内存地址,然后该地址可用于将计数器加一、设置特定位或检索存储的值。后者实际上起到了那个时代密码编码/解码机器内部转子轮的作用,那种机器根据密码机的接线以电子方式将一个值替换为另一个值。
6. Tractor自动化磁带库
IBM构建了Tractor磁带系统(IBM 7955),以连接到承载Harvest的同一台Stretch机器上,因为现有的数据存储技术无法跟上该计算机惊人的吞吐量。Stretch负责处理将磁带从库中暂存到驱动器的工作——使用Tractor的自动化盒式磁带处理器。Stretch还协调从Tractor读取数据以及从Harvest写回结果。反过来,Harvest在系统的共享主内存上执行其所有实际计算。在1960年代初期,甚至在Tractor和Harvest安装之后,硬盘数据存储仍处于起步阶段。对于Harvest承担的这种规模的密码破译工作,磁盘存储在成本和占地面积方面都不切实际。因此,Tractor必须基于磁带存储。每盘磁带都密封在一个像音响(boombox)一样的外壳中——窗口下有两个封闭的卷轴,带有一个提手——重6至7公斤,大约相当于一个保龄球。可以将Tractor磁带盒视为十年后出现的盒式录音带(audiocassette)的超大前身,在550米长的磁带上容纳约120兆字节的数据。每个存储单元最多可容纳160个这样的磁带盒。1962年Harvest启动时,它有三个自动盒式磁带单元,每个服务于两个驱动器。因此,三个Tractor单元可用的在线存储总量达到了惊人的44千兆字节。这比1965年发布的IBM 2314磁盘存储系统(其全部八个驱动器的容量为233兆字节)的容量多出190倍以上。Tractor必须全天候连续运行,不断更换磁带盒。系统的磁带处理速度经过调整,以跟上Harvest自身对数据的渴求。用于取回磁带盒的定制机器人机构是一个伺服驱动臂,它在系统的存储架中移动。它从插槽中取出一个磁带盒并将其送到处理器,或从处理器接收磁带盒并将其返回存储。Tractor的磁带以每秒6米的速度飞过读/写头,快于人眼所能追踪。在Stretch上运行的软件处理磁带盒的穿梭以及读写。对于Tractor的一个驱动器来说,从完成一盘磁带的处理到读取下一盘磁带,大约需要18秒,前提是它已经被取出并准备好安装。从存储单元中机器人式地取出磁带盒并准备读取,完全不需要人工处理或输入。除了Tractor之外,系统还连接了标准的卷盘式磁带驱动器到Stretch。Harvest的技术人员经常使用传统驱动器与其他系统导入和导出数据;没有其他实际方法可以将大型数据集进出Harvest。Tractor还可以存储永久文件,并在作业需要时直接从其磁带库中检索它们。换句话说,Tractor庞大的磁带盒库既充当永久数据存储,也充当保存Harvest处理的临时数据的地方。1962年的商业计算世界中,没有任何系统能接近Tractor的千兆字节级同时可访问数据。当时大多数计算中心,“可用”数据意味着物理磁带架放在驱动器附近——只能以操作员手动拉出卷轴并将其穿到机器上的速度访问,一次一个,在一个班次内完成。
7. Alpha编程语言
Alpha语言由IBM和NSA联合创建,其存在纯粹是为了给Harvest的流式数据流引擎编程,用于密码破译工作。根据一份解密的五角大楼关于NSA计算机的历史,Alpha代表“Harvest编程高级语言”(Advanced Language for Programming Harvest)。Alpha允许程序员定义处理密码破译数据的字母表。该语言还包含两个不寻常的字符,在多年后Multics和Unix引入通配符之前,传统计算中没有对应物。“scab”(在Harvest的输入键盘上,一个改装的早期IBM Selectric打字机,用“?”表示)代表一个真实但未知的字符。“pad”(用空格表示)是空值或间隔符。这些字符为密码破译工作提供了表示的灵活性,因为在这些工作中,未知或不确定的字符很常见。管理Alpha对字符串操作的规则预示了其他现代规则,例如“非数字”(not a number)——一种描述数据集中未知值的表示法,该值可以在计算中传播,而不是静默地破坏它们。Alpha中的字符串也可以聚合成cords,cords再聚合成ropes,为密码分析人员提供了一种描述复杂截获情报的层次化词汇表。艾伦在她负责的Harvest软件部分项目结束时,撰写了一份最终技术报告——但随即就失去了访问权限。“我花了那个夏天的大部分时间在这上面,”她在2001年回忆道。“它就这样消失在米德堡的某个地方了。”
8. 不可替代之机器的退役
据NSA分析师Looney称,到1971年,这台机器正以有史以来最高的利用率运行——每周生产115小时,即超过三分之二的时间。然而,它处理的作业数量自1967年以来一直在下降。Looney指出,到1972年,普通数据处理工作正在迁移到更新的通用机器上,而Harvest则被保留用于其设计初衷——最困难、最敏感的密码分析任务。Harvest的退役并非因为性能不足,而是因为其独特的硬件架构和定制组件已无法维护。随着半导体技术的飞速发展,更小、更快、更便宜的通用计算机逐渐能够承担其部分工作负载。最终,这台曾经代表计算技术巅峰的机器,在完成了其历史使命后,被悄然拆除,其组件被分散保存,部分进入了博物馆。Harvest的故事提醒我们,在国家安全需求的驱动下,技术可以突破民用领域的界限,达到前所未有的高度,但同时也可能因目标的单一性而难以持续发展。
🔗 原文链接:https://spectrum.ieee.org/cold-war-codebreaker-nsa-ibm
冷战密码破译巨兽:IBM为NSA打造的Harvest超级计算机
1. 冷战巅峰的绝密机器
在冷战高峰期,一台极其专业的计算机因其高度机密性,以至于世界根本不知道它的存在。它的运行速度比同时代任何其他计算机快达200倍。从1962年古巴导弹危机时期开始,历经越南战争,直至1975年赫尔辛基协议之后,它一直是美国国家安全局(NSA)的主要密码处理核心。这台机器直到其活动部件最终报废才停止运行。Harvest计算机之所以重要,不仅在于其运行的时代,更在于其本身的特性。在长达14年的时间里,当信号情报(signals intelligence)几乎等同于除核弹头之外的战略武器时,它一直是处理NSA最敏感截获情报的引擎。
2. 开创性的流式处理架构
Harvest由IBM为NSA设计制造,是最早一批旨在对高速流过的海量数据集进行运算的机器之一,堪称当今实时处理连续视频流和安全系统的计算机的先驱。它也是最早作为附加组件(add-on)制造的机器之一——一个专门用于出色完成单一任务的专用辅助设备,被附加到一台通用计算机上。Harvest的模块化设计类似于1960年代的图形芯片(graphics chips),如今CPU利用这些芯片来处理高强度的视频游戏和AI工作负载。如此强大的原始处理能力意味着Harvest还需要源源不断的数据流来维持运转。这促成了另一项开创性成就:世界上第一个自动化磁带库(automated tape library),它可以通过机器人从机器的架子上取回数百个大容量磁带盒中的任意一个。
3. 为NSA量身定制的系统
鉴于Harvest前所未有的处理和存储能力,其设计者自然需要重新思考系统处理信息的方式。因此,IBM编写了一种名为Alpha的定制编程语言,让密码破译人员能够严谨地描述密码问题,就像当时的科学家使用新兴的Fortran语言来描述方程和数据处理算法一样。在马里兰州米德堡(Fort Meade, Md.),一个NSA数据中心托管着当时世界上最快的计算机之一——尽管由于其敏感的高安全性密码破译和密码搜寻工作,它很少被讨论。Harvest的故事,是根据解密的文件和当代手册及技术概述拼凑而成的,为计算史提供了一个新的、出人意料的视角。它也提供了一个案例研究,展示了国家安全需求,尤其是在冷战期间,如何将计算机技术推向了非机密民用计算无法企及的远方。Harvest独特的历史揭示了一种具有远见卓识的算法、编码、存储和硬件架构,其理念有时领先于时代数十年。但这台机器也只建造了一次,只为单一目的服务,最终悄然退役。
4. Stretch与Harvest的协同
IBM具有里程碑意义的1960年晶体管大型机IBM 7030,更广为人知的名字是Stretch,为Harvest(官方名称为IBM 7950)提供了前端。从1961年到1963年,IBM向八九个客户(主要是科学研究实验室)交付了Stretch。Stretch在1950年代后半期设计和原型化,引入了现在标准的8位字节概念。在其运行的头三年里,Stretch是非机密领域世界上最快的计算机,尽管它未能达到IBM设定的比其前身IBM 704快100倍的激进目标。当IBM工程师在纽约波基普西(Poughkeepsie)设计和建造Stretch时,公司也在悄悄讨论为NSA建造一个新系统。当时,NSA现有的密码分析计算机——需要操作员手动装载每盘磁带的大型批处理机器——正难以跟上来自全球的截获消息流量。该机构需要的是一台能够全天候自动处理源源不断传入数据的机器。这一要求本身就深刻地塑造了Harvest的设计。
5. Harvest的流式处理核心
在向NSA提出两次失败的建议后,IBM终于在1958年获得了合同:一台基于Stretch的机器,辅以定制的协处理器,以及一个革命性的基于磁带的存储系统,称为Tractor。Stretch的强项是用于科学计算的浮点数学。IBM主要为其设计用于核武器设计和天气预报等前沿研究的实验室。相比之下,构建在Stretch之上的定制协处理器将帮助NSA分析师筛选字母数字字符——本质上就是整数数据。Harvest的协处理器与通用系统截然相反。它是一台流式计算机(streaming computer)。它不是执行长串指令,而是遵循一个固定的步骤序列,并将相同的序列应用于流经的每一对字符。Harvest与主Stretch处理器共享内存,并突发运行。要么Stretch在运行,要么它暂停自身,而Harvest的协处理器以极速处理内存中的数据。Stretch和Harvest是最早完全由封装在电路卡中并安装在冰箱大小机架中的晶体管构建的大型计算机之一。一份1962年关于Stretch的技术手册将该机器的CPU描述为分为几个功能部分——指令单元、前瞻单元、(并行和串行)算术单元以及内存总线单元。Harvest继承了Stretch的基本电路设计,但随后增加了一些非常规的东西:其流式处理单元以称为流水线(pipeline)的重叠阶段处理数据。因此,当一对数据字节在进行比较时,下一对正在从内存中取出。Harvest的协处理器通过从系统内存中获取两个数据流(称为P和Q),对其执行操作,然后将结果作为第三个流R写回内存来运行。每个流的宽度可以是1到8位。Harvest的内存是可位寻址的,这意味着可以完全忽略字边界。例如,它可以只取5位,而不是填满整个字节。流P、Q和R包含了用于循环和以复杂模式寻址数据的灵活规定——例如,允许从内存中重复获取短字符串。来自P和Q的数据馈送到两个功能单元。较简单的是逻辑单元,它执行基本的按位运算——今天任何程序员都能识别的相同运算——并将其结果写回内存。较复杂的是查表单元。它组合来自P和Q的传入数据以形成内存地址,然后该地址可用于将计数器加一、设置特定位或检索存储的值。后者实际上起到了那个时代密码编码/解码机器内部转子轮的作用,那种机器根据密码机的接线以电子方式将一个值替换为另一个值。
6. Tractor自动化磁带库
IBM构建了Tractor磁带系统(IBM 7955),以连接到承载Harvest的同一台Stretch机器上,因为现有的数据存储技术无法跟上该计算机惊人的吞吐量。Stretch负责处理将磁带从库中暂存到驱动器的工作——使用Tractor的自动化盒式磁带处理器。Stretch还协调从Tractor读取数据以及从Harvest写回结果。反过来,Harvest在系统的共享主内存上执行其所有实际计算。在1960年代初期,甚至在Tractor和Harvest安装之后,硬盘数据存储仍处于起步阶段。对于Harvest承担的这种规模的密码破译工作,磁盘存储在成本和占地面积方面都不切实际。因此,Tractor必须基于磁带存储。每盘磁带都密封在一个像音响(boombox)一样的外壳中——窗口下有两个封闭的卷轴,带有一个提手——重6至7公斤,大约相当于一个保龄球。可以将Tractor磁带盒视为十年后出现的盒式录音带(audiocassette)的超大前身,在550米长的磁带上容纳约120兆字节的数据。每个存储单元最多可容纳160个这样的磁带盒。1962年Harvest启动时,它有三个自动盒式磁带单元,每个服务于两个驱动器。因此,三个Tractor单元可用的在线存储总量达到了惊人的44千兆字节。这比1965年发布的IBM 2314磁盘存储系统(其全部八个驱动器的容量为233兆字节)的容量多出190倍以上。Tractor必须全天候连续运行,不断更换磁带盒。系统的磁带处理速度经过调整,以跟上Harvest自身对数据的渴求。用于取回磁带盒的定制机器人机构是一个伺服驱动臂,它在系统的存储架中移动。它从插槽中取出一个磁带盒并将其送到处理器,或从处理器接收磁带盒并将其返回存储。Tractor的磁带以每秒6米的速度飞过读/写头,快于人眼所能追踪。在Stretch上运行的软件处理磁带盒的穿梭以及读写。对于Tractor的一个驱动器来说,从完成一盘磁带的处理到读取下一盘磁带,大约需要18秒,前提是它已经被取出并准备好安装。从存储单元中机器人式地取出磁带盒并准备读取,完全不需要人工处理或输入。除了Tractor之外,系统还连接了标准的卷盘式磁带驱动器到Stretch。Harvest的技术人员经常使用传统驱动器与其他系统导入和导出数据;没有其他实际方法可以将大型数据集进出Harvest。Tractor还可以存储永久文件,并在作业需要时直接从其磁带库中检索它们。换句话说,Tractor庞大的磁带盒库既充当永久数据存储,也充当保存Harvest处理的临时数据的地方。1962年的商业计算世界中,没有任何系统能接近Tractor的千兆字节级同时可访问数据。当时大多数计算中心,“可用”数据意味着物理磁带架放在驱动器附近——只能以操作员手动拉出卷轴并将其穿到机器上的速度访问,一次一个,在一个班次内完成。
7. Alpha编程语言
Alpha语言由IBM和NSA联合创建,其存在纯粹是为了给Harvest的流式数据流引擎编程,用于密码破译工作。根据一份解密的五角大楼关于NSA计算机的历史,Alpha代表“Harvest编程高级语言”(Advanced Language for Programming Harvest)。Alpha允许程序员定义处理密码破译数据的字母表。该语言还包含两个不寻常的字符,在多年后Multics和Unix引入通配符之前,传统计算中没有对应物。“scab”(在Harvest的输入键盘上,一个改装的早期IBM Selectric打字机,用“?”表示)代表一个真实但未知的字符。“pad”(用空格表示)是空值或间隔符。这些字符为密码破译工作提供了表示的灵活性,因为在这些工作中,未知或不确定的字符很常见。管理Alpha对字符串操作的规则预示了其他现代规则,例如“非数字”(not a number)——一种描述数据集中未知值的表示法,该值可以在计算中传播,而不是静默地破坏它们。Alpha中的字符串也可以聚合成cords,cords再聚合成ropes,为密码分析人员提供了一种描述复杂截获情报的层次化词汇表。艾伦在她负责的Harvest软件部分项目结束时,撰写了一份最终技术报告——但随即就失去了访问权限。“我花了那个夏天的大部分时间在这上面,”她在2001年回忆道。“它就这样消失在米德堡的某个地方了。”
8. 不可替代之机器的退役
据NSA分析师Looney称,到1971年,这台机器正以有史以来最高的利用率运行——每周生产115小时,即超过三分之二的时间。然而,它处理的作业数量自1967年以来一直在下降。Looney指出,到1972年,普通数据处理工作正在迁移到更新的通用机器上,而Harvest则被保留用于其设计初衷——最困难、最敏感的密码分析任务。Harvest的退役并非因为性能不足,而是因为其独特的硬件架构和定制组件已无法维护。随着半导体技术的飞速发展,更小、更快、更便宜的通用计算机逐渐能够承担其部分工作负载。最终,这台曾经代表计算技术巅峰的机器,在完成了其历史使命后,被悄然拆除,其组件被分散保存,部分进入了博物馆。Harvest的故事提醒我们,在国家安全需求的驱动下,技术可以突破民用领域的界限,达到前所未有的高度,但同时也可能因目标的单一性而难以持续发展。
🔗 原文链接:https://spectrum.ieee.org/cold-war-codebreaker-nsa-ibm