– Это если удастся распараллелить процесс поиска ключа…
«Стоп! Вполне такое возможно».
Для понимания того как Тьюринг создал свою криптологическую «бомбу» (дешифровальную машину, которая щёлкала своими электромеханическими внутренностями как мина с часовым механизмом) обратимся к истории вопроса. Впервые на то, что «Энигма» создаёт закольцованные цепочки, если сопоставить открытый и, соответствующий ему, шифротекст, обратил внимание польский криптолог Раевский.
Предположим например, что открытый текст содержит слово «погода». «Энигма» зашифровала это слово в такую последовательность букв: «одютпс». Казалось бы ничего примечательного, но Раевский, а за ним Тьюринг, который вывел его идею на более высокий уровень, отметили наличие цикла: буква «п» из слова «погода», превратилась в шифровке в букву «о» (первая буква в абракадабре «одютпс»). Дальше ищем «о» в открытом тексте, их две – во второй и четвёртой позиции, берём первую – получаем букву «д» в адракадабре. Теперь ищем «д» в открытом тексте, это – предпоследняя буква в слове «погода», что даёт нам «п» в шифровке.
«А вот и петля – „п“ превратилась в „п“»! (П-о-о-д-д-п… кстати, «о» в четвёртой позиции слова «погода» цикла не даёт).
– Ну и что это нам даёт?
– Даёт… – воображаемый Тьюринг принимается задумчиво обкусывать траурную кайму ногтя большого пальца («хотя нет, ему ещё до этого открытия три года»). – Если представить эти три перехода, как три «Энигмы» с одинаковыми установками (лишь вторая машинка, со сдвинутым относительно первой, на одну позицию, а третья – на пять позиций), в которых в один и тот же момент должно произойти превращение: на первой «Энигме» – «п» в «о», на второй – «о» в «д», на третьей – «д» в «п».
– Да, это уже кое-что… а какой длины может быть такая петля?
– Обычно три-четыре перехода, длиннее десяти почти не встречается.
– Это означает, что неплохо бы иметь десять ядер. Многовато, конечно, но реально. Однако это никак не решает проблемы с быстродействием: все эти ядра будут работать одинаково медленно, на сложение одна секунда, на умножения – пять.
– Никаких сложений и умножений, все ядра будут выполнять только одну команду: получают символ на входе, выдают на выход тоже символ, но зашифрованный по правилам «Энигмы». Устройство управления получает от работающих ядер результат и сравнивает с искомым. При совпадении печатающее устройство выдаёт текущее положение роторов.
– И всё-таки, что там со скоростью?
– Если принять скорость проверки как одно положение роторов за секунду, то на это уйдёт пять часов. Ещё надо учесть, что имеется шесть разных счетаний пяти типов роторов в трёх посадочных местах «Энигмы». Это даёт разброс времени дешифровки от одной секунды до тридцати часов – как повезёт…
– Тридцать часов…
– Если поставить тридцать таких кластеров, то время сократится до одного часа.
– Давайте сравним железо одной такой десятиядерной установки и стандартной РВМ.
«Сам посчитаю. И вообще, откуда взялись эти голоса»?
Тыльной стороной ладони стираю крупные капли пота, стекающие по лбу и вискам.
«Похоже на жар… как не вовремя, настали такие горячие денёчки. Плохо. А почему, собственно, плохо? Я что старик? Мне что уже сорок лет? Ведь не старый ещё. Организм борется с хворью, надо просто ему помочь».
В два прыжка оказываюсь у двери лаборатории, минуя вешалку с шинелью, распахиваю её… свежий ветерок приятно холодит разгорячённое тело. Быстрым шагом иду по утоптанной, плохо освещённой двумя фонарями, дорожке, ведущей к столовой: туда и обратно – двести метров.
«Надо будет заасфальтировать тропинки и найти место для гимнастических снарядов.
Стоп, вернёмся к нашим баранам, так во что выливается один такой десятиядерный процессор»?
Прежде всего, длина слова моего «сипию» всего лишь пять бит (а не двадцать два, как в РВМ-1), так как работать он будет с двадцатью шестью буквами латинского алфавита (двойка в степени пять даст тридцать два возможных символа). Кроме того, нет необходимости хранить в оперативной памяти прошивку всех пяти роторов, она неизменна, поэтому поместим её в небольшое постоянное запоминающее устройство (5 роторов х 26 букв на каждом роторе х 5 бит = 650 бит + 26 х 5 бит для рефлектора, итого меньше килобайта – сущие пустяки из кусочков проводов).
«А что у нас будет сидеть в ОЗУ»?
Три пятибитных указателя (по числу активных роторов), показывающие их смещение относительно исходного положения (провернулся ротор на одну позицию – плюс единица к указателю, если позиция последняя, то указатель обнуляется), пятнадцатибитный счётчик циклов (по нему определяем ключевые установки роторов), и регистр для хранения промежуточного символа (в нём же останется и конечный символ). Получается тридцать пять реле, добавляем ещё пятнадцать на управление, синхронизацию и организацию шины данных, получим – пятьдесят реле на ядро, пятьсот реле – на «бомбу», пять тысяч – на кластер из десяти «бомб». На устройство управления «бомбой» пойдёт немного, до сотни реле, а в кластере «бомбы» электрически не связаны.
Читать дальше