Моделирование бомбы Тьюринга-Велчмана с помощью числа пи


Если вы ищете программный / аппаратный проект на выходные, как насчет создания собственной рабочей копии самой культовой машины, бомбы Тьюринга? В проекте обратного инжиниринга Саймона Дженсена используются C ++, Raspberry Pi и Arduino.

Бомба была электромеханическим устройством, используемым британскими взломщиками кодов для взлома кодов Энигмы во время Второй мировой войны.

За время своей работы Bletchley Park 210 Bombes помогала расшифровывать до 5000 перехваченных сообщений в день. Первоначальный дизайн был приписан Алану Тьюрингу с уточнением, позже добавленным Гордоном Велчманом, но первоначальный дизайн был разработан польскими криптографами, которые передали копии машин Enigma вместе с деталями их «криптологической бомбы» до немецкого вторжения в Польшу.

По окончании войны все бомбы были разобраны.

Однако полностью функционирующая копия была завершена в 2007 году и выставлена в Блетчли-парке, как показано на этом видео:

Вы заметите, что эта копия большая и занимает довольно много места на полу. Симулятор Саймона Дженсена, напротив, небольшой и аккуратно размещается на столе. Тем не менее, он дает отличную демонстрацию того, как работает Bombe, как объясняется в этом видео.

Перед тем, как приступить к Bombe, Дженсен построил наручные часы Enigma с тремя роторами — полностью функциональную версию того типа машин, которые использовались немецким Вермахтом во время Второй мировой войны для кодирования сообщений.

На своем веб-сайте Asciimation Дженсен предоставил подробную информацию об обоих проектах, и в своем сообщении о завершении Turing-Welchman Bombe он пишет:

Моя машина Turing-Welchman Bombe использует некоторое программное обеспечение, которое я написал на C ++, работающее на Raspberry Pi 2. Я понял для себя, как работает Bombe, затем написал свою собственную версию программного обеспечения, первоначально на BASIC для работы на моем самодельном 6502. компьютер Оруэлла. Разработав общий алгоритм, я перенес его на C ++.

Raspberry Pi 2 подключается к Arduino, который затем управляет тремя шаговыми двигателями через платы драйверов, чтобы повернуть три индикаторных барабанчика на передней панели устройства. Эти барабаны имитируют три индикатора на настоящей бомбе. Arduino сообщает Pi о положении барабанов в виде серии импульсов, после чего Pi может сказать барабанам, когда нужно остановиться. ЖК-экран сбоку машины имитирует оригинальный механический индикатор Bombe, а также обеспечивает базовый пользовательский интерфейс. Кнопки «Пуск» и «Стоп» расположены на передней части машины, как и на настоящей бомбе.

Машина работает в режиме реального времени (хотя следующая остановка рассчитывается заранее), поэтому запуск бомбы должен занимать столько же времени, что и настоящий запуск бомбы в Блетчли-парке.

Он продолжает подробно рассказывать о корпусе.

Если вас интересует, как разворачивается проект, есть набор сообщений из 10 частей, охватывающий всю сборку, которая была начата в июне. Это видео снято в начале проекта:

Дженсен также предлагает поделиться своим кодом на C ++ с другими энтузиастами!


Добавить комментарий