IBM bouwde de krachtigste codekraker van de Koude Oorlog voor de NSA

Op het hoogtepunt van de Koude Oorlog bestond er een zeer gespecialiseerde computer die zo geheim was dat de wereld niet wist van zijn bestaan. De machine voerde taken tot 200 keer zo snel uit als enige andere computer in die tijd. Het was de belangrijkste cryptografische processor van de Amerikaanse National Security Agency (NSA), in gebruik van de Cubacrisis in 1962, via de Vietnamoorlog, tot voorbij de Helsinki-akkoorden van 1975. De machine stopte pas met werken toen de bewegende delen uiteindelijk versleten waren.

De Harvest-computer was van groot belang vanwege zijn functie en de periode waarin hij draaide. Veertien jaar lang was het de motor die de meest gevoelige onderscheppingen van de NSA verwerkte, in een tijd waarin signalintelligence (SIGINT) bijna net zo strategisch een wapen was als een kernkop.

Harvest werd ontworpen en gebouwd door IBM voor de NSA en was een van de eerste machines die was ontworpen om bewerkingen uit te voeren op enorme datasets die in hoge snelheid voorbijstroomden. Hiermee was het een voorloper van moderne computers die continu videostreams en beveiligingssystemen in realtime beheren. Daarnaast was het een van de eerste machines die werd gebouwd als een 'add-on'—een gespecialiseerde helper bedoeld om één specifieke taak uitzonderlijk goed uit te voeren, gekoppeld aan een algemene computer. Het modulaire ontwerp van Harvest is een jaren '60-versie van de huidige grafische chips (GPU's) die CPU's gebruiken voor intensieve videogames en AI-verwerking.

Al die brute rekenkracht betekende dat Harvest constante rivieren van data nodig had. Dit leidde tot een andere pioniersprestatie: de eerste geautomatiseerde tape-bibliotheek ter wereld, die robotisch elke willekeurige cassette uit honderden grote magnetische tapes uit de rekken kon halen.

Vanwege de ongekende verwerkings- en opslagcapaciteit moesten de ontwerpers opnieuw nadenken over hoe het systeem met informatie omging. IBM schreef daarom een aangepaste programmeertaal genaamd Alpha, zodat codekrakers cryptografische problemen strikt konden beschrijven, vergelijkbaar met hoe wetenschappers in die tijd de opkomende taal Fortran gebruikten voor vergelijkingen en data-verwerkingsalgoritmen.

Het verhaal van Harvest, gereconstrueerd uit gedeclassificeerde documenten en technische handleidingen, biedt een nieuw perspectief op de geschiedenis van de informatica. Het dient als een casestudy over hoe nationale veiligheidsbehoeften tijdens de Koude Oorlog de computertechnologie tot ver buiten de grenzen van de civiele informatica hebben geduwd. De geschiedenis van Harvest onthult een visionaire architectuur op het gebied van algoritmen, codering, geheugen en hardware die soms decennia vooruitliep op zijn tijd. Toch werd deze machine slechts één keer gebouwd voor één enkel doel en uiteindelijk stilzwijgend uitgefaseerd.

Het hart van de geheime machine van de NSA

De basis van Harvest (officieel bekend als de IBM 7950) was de IBM 7030-transistormainframe uit 1960, beter bekend als 'Stretch'. IBM leverde Stretch tussen 1961 en 1963 aan acht of negen klanten, voornamelijk wetenschappelijke onderzoekslaboratoria. Stretch, ontworpen in de tweede helft van de jaren vijftig, introduceerde het nu standaard concept van de 8-bit byte. In de eerste drie jaar van zijn bestaan was Stretch de snelste niet-geclassificeerde computer ter wereld, hoewel hij het agressieve doel van IBM om 100 keer sneller te zijn dan zijn voorganger, de IBM 704, niet haalde. Terwijl IBM-ingenieurs in Poughkeepsie, New York, Stretch bouwden, besprak het bedrijf in stilte een nieuw systeem voor de NSA.

In die tijd hadden de bestaande cryptanalytische computers van de NSA—grote batch-verwerkingsmachines die menselijke operators vereisten om elke tape-run handmatig voor te bereiden—moeite om het tempo bij te houden met het enorme volume aan onderschept berichtenverkeer uit de hele wereld. De agency had een machine nodig die een ononderbroken stroom inkomende data automatisch en rond de klok kon verwerken. Deze eis bepaalde in grote mate het ontwerp van Harvest.

Architectuur en werking

Het Harvest-systeem combineerde de IBM 7030 Stretch-mainframe met een op maat gemaakte data-stroomprocessor. Stretch verzorgde de reguliere berekeningen en input/output, inclusief de 'Tractor' geautomatiseerde tape-bibliotheek. Beide units deelden twee soorten geheugen: een grote hoofdbank en een kleinere, snellere bank. Wanneer Stretch overschakelde naar de streaming-modus, haalde Harvest twee datastromen, P en Q, uit het geheugen, verwerkte deze parallel en leverde de resultaten als een derde stroom, R.

Waar Stretch uitblonk in floating-point wiskunde voor wetenschappelijke berekeningen (zoals het ontwerp van kernwapens en weersvoorspellingen), hielp de custom coprocessor van Harvest NSA-analisten om alfanumerieke tekens (integer data) te filteren.

De coprocessor van Harvest was geen general-purpose systeem, maar een streaming computer. In plaats van lange reeksen instructies uit te voeren, volgde hij één vaste reeks stappen en paste deze toe op elk paar tekens dat voorbijstroomde. Harvest deelde het geheugen met de Stretch-processor en werkte in bursts: ofwel Stretch was actief, ofwel Stretch pauzeerde terwijl de Harvest-coprocessor met extreme snelheid door de data in het geheugen schoot.

Stretch en Harvest behoorden tot de eerste grote computers die volledig waren gebouwd uit transistors op printplaten, gehuisvest in kasten ter grootte van koelkasten. Harvest voegde aan het basisontwerp van Stretch iets onconventioneels toe: de streaming-units verwerkten data in overlappende fasen, genaamd een pipeline. Terwijl één paar databytes werd vergeleken, werd het volgende paar al uit het geheugen opgehaald.

Technische details en prestaties

De coprocessor haalde twee datastromen (P en Q) uit het geheugen, voerde bewerkingen uit en schreef de resultaten terug als stroom R. Elke stroom kon 1 tot 8 bits breed zijn. Het geheugen van Harvest was bit-addressable, wat betekende dat woordgrenzen volledig konden worden genegeerd; zo kon de machine precies 5 bits ophalen in plaats van een volledige byte.

De data van P en Q voedden twee functionele units:

  1. De logische unit: voerde basis bitwise-operaties uit.
  2. De table-lookup unit: combineerde inkomende data van P en Q om een adres in het geheugen te vormen. Dit kon worden gebruikt om een teller met één te verhogen, een specifieke bit in te stellen of een opgeslagen waarde op te halen. Deze unit functioneerde in feite als het rotorwiel in een cipher-machine uit die tijd.

Hoewel sommige mensen bij de NSA sceptisch waren over de complexiteit van de machine, tonen gedocumenteerde voorbeelden de kracht aan:

  • De machine kon in minder dan 4 uur 3,5 miljard tekens doorzoeken op 7.000 zoektermen.
  • Tijdens een project met de codenaam "Moretown" filterde Harvest 11 miljoen berichten uit 16 jaar onderschept verkeer tegen een lijst van 8.000 zoektermen in ongeveer tien uur.

Als gecombineerd systeem (Stretch plus de streaming processor) verwerkte Harvest 1 byte elke 0,3 microseconde en beschikte het over ongeveer 800 kilobytes aan adresseerbaar geheugen. De zes banken met magnetisch kerngeheugen waren voor de koeling ondergedompeld in oliebaden.

Enkele sleutelfiguren in het ontwerp waren:

  • James H. Pomerene: hoofdingenieur van Harvest.
  • Frederick Brooks Jr.: mede-architect van het hardwaresysteem.
  • Frances Allen: mede-ontwikkelaar van zowel Stretch als Harvest en ontwerpster van de programmeertaal Alpha.

Hoe Tractor een wereld aan data opsloeg

IBM bouwde het Tractor-tapesysteem (IBM 7955) omdat geen enkele bestaande opslagtechnologie kon meekomen met de enorme doorvoersnelheid van Harvest. Stretch beheerde het transport van tapes vanuit de bibliotheek naar de drives via de geautomatiseerde cassette-handler van Tractor.

In de vroege jaren '60 was harddisk-opslag nog in de kinderschoenen; voor de omvang van de codekrakende taken van Harvest zou schijfopslag onpraktisch zijn geweest qua kosten en ruimte. Tractor was daarom gebaseerd op tape.

Elke tape zat in een behuizing die leek op een boombox, met twee spoelen onder een venster en een handvat. Een Tractor-cassette woog circa 6 tot 7 kilogram en bevatte ongeveer 120 megabytes aan data op een tape van 550 meter lang. Elke opslageenheid huisveste tot 160 van deze cassettes.

Toen Harvest in 1962 werd gelanceerd, beschikte het over drie automatische cartridge-units, elk met twee drives. De totale online opslagcapaciteit bedroeg maar liefst 44 gigabyte. Ter vergelijking: het IBM 2314 disksysteem uit 1965 had een capaciteit van 233 megabytes over acht drives.

Tractor werkte 24 uur per dag, 7 dagen per week. Een servo-gestuurde robotarm haalde cassettes uit de rekken en leverde ze aan de handlers. De tapes bewogen met een snelheid van 6 meter per seconden langs de lees/schrijfkoppen. Het overschakelen van de ene naar de volgende tape duurde ongeveer 18 seconden, mits de cassette al was opgehaald en klaarstond.

Naast Tractor had het systeem standaard reel-to-reel tape-drives voor het importeren en exporteren van data naar andere systemen. De cassette-bibliotheken van Tractor dienden zowel als permanente opslag als voor tijdelijke dataverwerking.

Alpha: De op maat gemaakte programmeertaal van Harvest

Alpha (Advanced Language for Programming Harvest) werd gezamenlijk door IBM en de NSA ontwikkeld, uitsluitend om de streaming dataflow-engine van Harvest te programmeren voor codekrakend werk.

Alpha stelde de programmeur in staat om het alfabet te definiëren waarin de data verwerkt zou worden. De taal bevatte twee ongebruikelijke tekens die pas veel later in computersystemen (zoals Multics en Unix) verschenen als wildcard-tekens:

  • "Scab" (weergegeven door een ? op het toetsenbord, een aangepaste IBM Selectric typemachine): stond voor een teken dat wel bestond, maar onbekend was.
  • "Pad" (weergegeven door een spatie): was een null-teken of spacer.

Deze tekens boden de nodige flexibiliteit voor cryptanalytische taken waarbij onbekende of onzekere tekens gebruikelijk waren. Bovendien konden strings in Alpha worden gegroepeerd in cords, en cords in ropes, waardoor cryptanalisten een hiërarchische woordenschat hadden om complexe onderscheppingen te beschrijven.

Het vervangen van een onvervangbare machine

Tegen 1971 draaide de machine op zijn hoogste bezettingsgraad ooit: 115 productie-uren per week. Toch nam het aantal taken sinds 1967 af. Reguliere dataverwerking migreerde naar nieuwere, algemene machines, waardoor Harvest zich kon concentreren op de zeer grote, gespecialiseerde taken die geen enkel ander systeem aankon.

Op de tiende verjaardag van de operaties concludeerde analist Robert Looney dat Harvest een machine was die "ontworpen was in de jaren vijftig, geboren in de jaren zestig en onvervangbaar was in de jaren zeventig."

Hij had het laatste deel onjuist. Op 27 februari 1976 werd Harvest voor de laatste maal uitgeschakeld. Een specifiek mechanisch onderdeel in de Tractor-tapebibliotheek was versleten en de fabrikant van dat onderdeel bestond niet meer. Harvest had bijna anderhalf decennium onafgebroken gedraaid.

De NSA verving Harvest uiteindelijk door de baanbrekende Cray-1 supercomputer. De Cray-1 was gebouwd met snellere, compacter geïntegreerde circuits die Harvest op bijna elk vlak konden overtreffen, inclusief tekstverwerking.

Hoewel Harvest geen directe opvolgers had vanwege het strikte geheimhoudingsbeleid, leefden de pioniersideeën voort:

  • De geautomatiseerde tape-bibliotheek van Tractor was de voorloper van de robotische opslagsilo's in moderne enterprise datacenters.
  • De pipeline-architectuur van Harvest prefigureerde de dataflow computing-beweging van de jaren tachtig.
  • De logica voor patroonherkenning in de match-units is direct terug te vinden in moderne hardware-packet-inspectie (intrusion detectors) en programmeerbare netwerkswitches die internetverkeer op wirespeed routeren.

Harvest stichtte geen dynastie, maar wees in zijn tijd resoluut in meerdere richtingen tegelijk naar de toekomst.