Введение

Британский компьютер для криптоанализа Colossus — это комплекс компьютеров, разработанных британскими криптоаналитиками в 1943–1945 годах для помощи в дешифровке шифра Лоренца. Colossus использовал термоэлектронные лампы (вакуумные трубки) для выполнения логических и счётных операций. Таким образом, Colossus считается первым в мире программируемым электронным цифровым компьютером, хотя программирование осуществлялось с помощью переключателей и штекеров, а не хранимой программой. Colossus был разработан Томми Флауэрсом, инженером по исследованиям в области телефонии Генерального почтового ведомства (GPO). (Машина Тьюринга, которая помогла в дешифровке «Энигмы», была электромеханической «Бомбой», а не Colossus.) Прототип, Colossus Mark 1, продемонстрировал работоспособность в декабре 1943 года и начал использоваться в Блетчли-парке к началу 1944 года.

Цель и истоки

Компьютеры Colossus использовались для расшифровки перехваченных сообщений радиотелепринтера, зашифрованных с помощью неизвестного устройства. Данные разведки показали, что немцы называли беспроводные системы передачи телепринтером "Sägefisch" (пила-рыба). Это привело к тому, что британцы стали называть зашифрованный немецкий телепринтерный трафик "Fish" (рыба), а неизвестную машину и перехваченные сообщения – "Tunny" (тунец). До того, как немцы усилили безопасность своих процедур, британские криптоаналитики выяснили принцип работы невидимой машины и построили её имитацию под названием "British Tunny". Было установлено, что машина имела двенадцать колес и использовала технику шифрования Вернама для символов сообщений в стандартном 5-битном телеграфном коде ITA2. Это достигалось путем объединения открытого текста с потоком ключевых символов с использованием булевой функции XOR для получения шифротекста. В августе 1941 года ошибка немецких операторов привела к передаче двух версий одного и того же сообщения с идентичными настройками машины. Они были перехвачены и изучены в Блетчли-Парке. Сначала Джон Тилтман, очень талантливый криптоаналитик GC&CS, вывел ключевой поток почти из 4000 символов. Затем Билл Тютте, недавно прибывший в исследовательский отдел, использовал этот ключевой поток для определения логической структуры машины Лоренца. Он пришел к выводу, что двенадцать колес состоят из двух групп по пять, которые он назвал χ (хи) и ψ (пси), а оставшиеся два – μ (мю) или "моторными" колесами. Колеса хи сдвигались регулярно с каждой зашифрованной буквой, в то время как колеса пси сдвигались нерегулярно, под управлением моторных колес. При достаточно случайном ключевом потоке шифр Вернама устраняет свойство естественного языка, заключающееся в неравномерном распределении частот различных символов в открытом тексте, создавая равномерное распределение в шифротексте. Машина Tunny хорошо справлялась с этим. Однако криптоаналитики выяснили, что, изучая частотное распределение изменений символов в шифротексте, а не самих символов, можно обнаружить отклонение от однородности, которое давало доступ к системе. Это достигалось путем "дифференцирования", когда каждый бит или символ подвергался операции XOR с последующим. После капитуляции Германии союзники захватили машину Tunny и обнаружили, что это электромеханическая шифровальная машина Lorenz SZ (Schlüsselzusatzgerät, устройство для добавления ключа). Для расшифровки переданных сообщений необходимо было выполнить две задачи. Первая – "взлом колес", то есть определение профилей всех колес. Эти профили устанавливались на машине Лоренца и затем использовались в течение определенного периода времени для последовательности различных сообщений. Каждая передача, часто содержащая более одного сообщения, шифровалась с разным начальным положением колес. Алан Тьюринг разработал метод взлома колес, который стал известен как "Тьюрингери" (Turingery). Техника Тьюринга была далее развита в "Прямоугольники" (Rectangling), для которых Colossus мог создавать таблицы для ручного анализа. Colossus 2, 4, 6, 7 и 9 имели "приспособление" (gadget) для помощи в этом процессе. Вторая задача – "установка колес", которая определяла начальные позиции колес для конкретного сообщения и могла быть выполнена только после того, как были известны профили колес. Именно для этой задачи изначально был разработан Colossus. Чтобы определить начальное положение колес хи для сообщения, Colossus сравнивал два потока символов, подсчитывая статистику на основе оценки программируемых булевых функций. Два потока состояли из шифротекста, который считывался с высокой скоростью с бумажной ленты, и ключевого потока, который генерировался внутри, в симуляции неизвестной немецкой машины. После серии запусков Colossus для определения вероятных настроек колес хи, они проверялись путем изучения частотного распределения символов в обработанном шифротексте. Colossus генерировал эти частотные подсчеты.

Дизайн и строительство

Colossus был разработан для "Newmanry", подразделения, возглавляемого математиком Максом Ньюманом, которое отвечало за машинные методы борьбы с двенадцатироторной телепринтерной шифровальной машиной Lorenz SZ40/42 (кодовое название Tunny, по имени тунца). Конструкция Colossus выросла из параллельного проекта, создавшего менее амбициозную счетную машину под названием "Heath Robinson" ("Хит Робинсон"). Хотя машина "Хит Робинсон" доказала концепцию машинного анализа для этой части процесса, она имела серьезные ограничения. Электромеханические компоненты были относительно медленными, и было сложно синхронизировать две замкнутые бумажные ленты – одну с зашифрованным сообщением, а другую, представляющую часть ключевого потока машины Lorenz. Кроме того, ленты имели тенденцию растягиваться и рваться при чтении со скоростью до 2000 символов в секунду. Томми Флауэрс, член Ордена Британской империи, был старшим инженером-электриком и руководителем группы коммутации на исследовательской станции почтового отделения в Доллис-Хилл. До работы над Colossus он участвовал в деятельности GC&CS в Блетчли-парке с февраля 1941 года, пытаясь улучшить "Bombe" ("Бомбы"), которые использовались в криптоанализе немецкой шифровальной машины Enigma. Алан Тьюринг рекомендовал его Максу Ньюману, впечатленный его работой над "Бомбами". Основные компоненты машины "Хит Робинсон" были следующими: механизм транспортировки и чтения ленты, который вращал ключевую и сообщение ленты со скоростью от 1000 до 2000 символов в секунду; комбинирующий блок, реализующий логику метода Тютте; и счетный блок, разработанный К. Э. Уинном Уильямсом из Исследовательского учреждения телекоммуникаций (TRE) в Малверне, который подсчитывал количество раз, когда логическая функция возвращала указанное значение истинности. Флауэрса привлекли к проектированию комбинирующего блока "Хит Робинсона". Он был недоволен системой ключевой ленты, которую необходимо было синхронизировать с лентой сообщения, и по собственной инициативе разработал электронную машину, которая устранила необходимость в ключевой ленте, создав электронный аналог машины Lorenz (Tunny). Он представил этот проект Максу Ньюману в феврале 1943 года, но идея о том, что одна-две тысячи термоионных клапанов (вакуумные трубки и тиратроны) смогут надежно работать вместе, встретила большой скептицизм, поэтому с Доллис-Хилл было заказано больше машин "Robinson". Однако Флауэрс, основываясь на своем опыте работы до войны, знал, что большинство отказов термоионных клапанов происходят из-за тепловых напряжений при включении, поэтому, не выключая машину, можно снизить частоту отказов до очень низкого уровня. Кроме того, если нагреватели запускались при низком напряжении, а затем медленно поднимались до полного напряжения, тепловое напряжение уменьшалось. Сами клапаны можно было припаивать, чтобы избежать проблем с гнездами, которые могли быть ненадежными. Флауэрс продолжал настаивать на своей идее и получил поддержку от директора исследовательской станции, В. Гордона Рэдли. Флауэрс и его команда из около пятидесяти человек в группе коммутации провели одиннадцать месяцев, начиная с начала февраля 1943 года, разрабатывая и строя машину, которая отказалась от второй ленты "Хит Робинсона", генерируя электронные модели колес. Флауэрс использовал часть своих собственных средств для проекта. Этот прототип, Mark 1 Colossus, содержал 1600 термоионных клапанов (трубок). Он успешно работал в Доллис-Хилл 8 декабря 1943 года, был разобран и отправлен в Блетчли-Парк, где он был доставлен 18 января и собран заново Гарри Фенсомом и Доном Хорвудом. Он был введен в эксплуатацию в январе и успешно атаковал свое первое сообщение 5 февраля 1944 года. Это была большая конструкция, которую прозвали "Colossus". В служебной записке, хранящейся в Национальном архиве и написанной Максом Ньюманом 18 января 1944 года, записано: "Colossus прибывает сегодня". Во время разработки прототипа была разработана улучшенная конструкция – Mark 2 Colossus. Четыре таких машины были заказаны в марте 1944 года, а к концу апреля количество заказанных было увеличено до двенадцати. На Доллис-Хилл было оказано давление, чтобы первый из них заработал к 1 июня. Аллен Кумбс возглавил производство Mark 2 Colossi, первый из которых, содержащий 2400 клапанов, стал работать в 08:00 1 июня 1944 года, как раз вовремя к вторжению союзников в Нормандию в День Д. Впоследствии "Colossi" поставлялись со скоростью примерно одна в месяц. К моменту Дня Победы в Европе в Блетчли-парке работало десять "Colossi", и началась сборка одиннадцатого. Семь "Colossi" использовались для "установки колес", а три – для "взлома колес". Основные компоненты конструкции Mark 2 были следующими: механизм транспортировки ленты с 8 фотоэлементами для чтения; сдвиговый регистр FIFO на шесть символов; двенадцать тиратронных кольцевых хранилищ, которые моделировали машину Lorenz, генерируя поток битов для каждого колеса; панели переключателей для указания программы и "общей суммы"; набор функциональных блоков, выполняющих логические операции; "счетчик размаха", который мог приостановить подсчет на части ленты; главный контроллер, который управлял тактовыми сигналами, сигналами запуска и остановки, считыванием счетчика и печатью; пять электронных счетчиков; и электрическая пишущая машинка. Большая часть проектирования электроники была работой Томми Флауэрса, которому помогали Уильям Чандлер, Сидни Бродхерст и Аллен Кумбс, а Эри Спейт и Арнольд Линч разрабатывали фотоэлектрический механизм чтения. Кумбс вспоминал, что Флауэрс, подготовив черновой вариант своего проекта, разорвал его на части, которые он раздал своим коллегам для детального проектирования и организации производства. Mark 2 Colossi были в пять раз быстрее и проще в эксплуатации, чем прототип. Ввод данных в Colossus осуществлялся путем фотоэлектрического считывания бумажной ленты с расшифрованным перехваченным сообщением. Она была организована в виде непрерывного цикла, чтобы ее можно было читать и перечитывать несколько раз, поскольку внутренней памяти для данных не было. Конструкция решила проблему синхронизации электроники со скоростью ленты сообщения, генерируя тактовый сигнал при чтении ее перфораций. Таким образом, скорость работы ограничивалась механикой чтения ленты. Во время разработки ленточный считыватель был протестирован до 9700 символов в секунду (53 мили в час), прежде чем лента развалилась. Поэтому для регулярного использования была выбрана скорость 5000 символов в секунду. Флауэрс разработал сдвиговый регистр на 6 символов, который использовался как для вычисления функции дельты (ΔZ), так и для тестирования пяти различных возможных начальных точек колес Tunny в пяти процессорах. Этот пятисторонний параллелизм позволил выполнять пять одновременных тестов и подсчетов, обеспечивая эффективную скорость обработки 25 000 символов в секунду. Вычисления использовали алгоритмы, разработанные У. Т. Тютте и его коллегами для расшифровки сообщения Tunny.

Операция

В составе Newmanry работали криптоаналитики, операторы Женского королевского военно-морского корпуса (WRNS), известные как "Wrens", и инженеры, постоянно находившиеся в готовности для обслуживания и ремонта. К концу войны штат составлял 272 "Wrens" и 27 мужчин. Первым этапом работы с Colossus при получении нового сообщения была подготовка петли из бумажной ленты. Эту задачу выполняли "Wrens", склеивая концы ленты клеем Bostik, обеспечивая при этом наличие 150 символов пустой ленты между концом и началом сообщения. С помощью специального ручного пробойника они делали стартовое отверстие между третьим и четвертым каналами в 2,5 отверстия для зубчатого колеса от конца пустой секции, и стоп-отверстие между четвертым и пятым каналами в 1,5 отверстия для зубчатого колеса от конца символов сообщения. Эти отверстия считывались специально расположенными фотоэлементами, которые указывали момент начала и окончания сообщения. Затем оператор протягивал бумажную ленту через направляющие и вокруг шкивов, регулируя натяжение. Конструкция с двумя лентопротяжками была унаследована от машины Хиита Робинсона, позволяя загружать одну ленту, пока другая обрабатывалась. Выключатель на панели выбора определял, какая лента используется – "ближняя" или "дальняя". После выполнения различных операций сброса и установки начальных значений, операторы "Wrens", по указанию криптоаналитика, устанавливали "суммарные" десятичные переключатели и переключатели панели K2 для задания необходимого алгоритма. Затем они запускали двигатель и лампу лентопротяжки, а когда лента набирала скорость, включали главный пусковой выключатель.

Программирование

Говард Кампань, математик и криптоаналитик из OP 20 G военно-морских сил США, написал следующее во введении к статье Флауэрса 1983 года "Конструкция Колосса". Колосс не был компьютером с хранимой программой. Входные данные для пяти параллельных процессоров считывались с перфоленты сообщения, организованной в виде петли, и электронных генераторов импульсов для шифровальных дисков чи, пси и моторных колес. Программы для процессоров задавались и фиксировались переключателями и соединениями на коммутационной панели. Каждый процессор мог вычислять булеву функцию и подсчитывать, сколько раз она выдавала заданное значение "ложь" (0) или "истина" (1) при каждом проходе ленты сообщения. Входные данные для процессоров поступали из двух источников: сдвиговые регистры, считывающие информацию с ленты, и тиратронные кольца, эмулирующие колеса машины Тунни. Символы на перфоленте назывались Z, а символы, генерируемые эмулятором Тунни, обозначались греческими буквами, которые Билл Тютте присвоил им при разработке логической структуры машины. На панели выбора переключатели задавали либо Z, либо ΔZ, либо , либо Δ для передачи данных в коммутационное поле и на "панель переключателей K2". Эти сигналы от эмуляторов колес могли быть настроены на изменение при каждом новом проходе ленты сообщения или оставаться неизменными. На панели переключателей K2 слева находилась группа переключателей для задания алгоритма. Переключатели справа выбирали счетчик, на который подавался результат. Коммутационная панель позволяла задавать менее специализированные условия. В целом, переключатели на панели K2 и коммутационная панель обеспечивали около пяти миллиардов различных комбинаций выбранных переменных. Например, серия запусков для ленты сообщения могла изначально включать два диска чи, как в алгоритме 1+2 Тютте. Такой запуск с двумя дисками назывался длинным, занимая в среднем восемь минут, если только не использовался параллелизм для сокращения времени в пять раз. Последующие запуски могли включать настройку только одного диска чи, что давало короткий запуск, занимающий около двух минут. Первоначально, после первого длинного запуска, выбор следующего алгоритма определялся криптоаналитиком. Однако опыт показал, что деревья решений для этого итеративного процесса можно было создавать для использования операторами Wren в ряде случаев.

Реконструкция

Команда под руководством Тони Сэйла построила полностью функциональную реконструкцию Colossus Mark 2 в период с 1993 по 2008 год. Реконструированный Colossus соревновался с радиолюбителями по всему миру в скорости приема и декодирования трех сообщений, зашифрованных с помощью Lorenz SZ42 и переданных с радиостанции DL0HNF в компьютерном музее Heinz Nixdorf MuseumsForum. Вызов легко выиграл радиолюбитель Йоахим Шют, который тщательно подготовился к мероприятию и разработал собственный код обработки сигналов и дешифрования, используя Ada. Команду Colossus затрудняло желание использовать радиооборудование времен Второй мировой войны, что задержало их на день из-за плохих условий приема. Тем не менее, ноутбук победителя с частотой 1,4 ГГц, работающий под его управлением, потребовал менее минуты, чтобы определить настройки для всех 12 роторов. Немецкий дешифровщик сказал: "Мой ноутбук обрабатывал зашифрованный текст со скоростью 1,2 миллиона символов в секунду – в 240 раз быстрее, чем Colossus. Если умножить частоту процессора на этот коэффициент, получится эквивалентная тактовая частота 5,8 МГц для Colossus. Это замечательная скорость для компьютера, созданного в 1944 году". "Шифровальный вызов" подтвердил успешное завершение проекта реконструкции. "Судя по сегодняшним результатам, Colossus так же хорош, как и шестьдесят лет назад", – прокомментировал Тони Сэйл. "Мы рады, что смогли создать достойный памятник людям, работавшим в Блетчли-парке, и чьему интеллекту мы обязаны этими фантастическими машинами, которые взламывали шифры и сократили войну на многие месяцы".

Другие значения

В фильме 1970 года «Колосс: Проект Форбина» фигурировал вымышленный компьютер по имени Колосс, основанный на романе Д. Ф. Джонса «Колосс» 1966 года. Это было совпадением, так как это произошло до того, как информация о компьютере «Колосс» стала общедоступной, даже до того, как ему было дано название. Роман Нила Стивенсона «Криптономикон» (1999) также содержит художественное изложение исторической роли, сыгранной Тьюрингом и Блетчли Парком.