Энигма, Тьюринг и рождение современной криптографии

Во Вторую мировую немцы шифровали приказы машиной Энигма и считали её непробиваемой. Команда Алана Тьюринга в Блетчли-парке доказала обратное — и изменила ход войны.
Историки считают, что взлом Энигмы сократил войну на годы и спас миллионы жизней.

Что такое Энигма

Энигма — электромеханическая машина с роторами. Нажимаешь букву — ток проходит через несколько вращающихся дисков и зажигается другая буква. После каждого нажатия роторы поворачиваются, поэтому одна и та же буква каждый раз шифруется по-новому. По сути это очень мощный, постоянно меняющийся шифр подстановки.

Число настроек было гигантским — порядка 150 квинтиллионов комбинаций. Немцы меняли ключ каждый день.

Простейшая модель ротора

Покажем главную идею: ротор — это подстановка, которая сдвигается после каждой буквы.

import string
A = string.ascii_uppercase
ROTOR = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"  # один из роторов Энигмы

def toy_enigma(text, start=0):
    out = []
    pos = start
    for ch in text.upper():
        if ch in A:
            i = (A.index(ch) + pos) % 26   # ротор повернулся
            enc = ROTOR[i]
            out.append(enc)
            pos = (pos + 1) % 26            # поворот после буквы
        else:
            out.append(ch)
    return ''.join(out)

msg = "AAAAA"
print("Пять одинаковых букв A:", msg)
print("Энигма-демо:           ", toy_enigma(msg))
print("Каждая A стала РАЗНОЙ буквой из-за поворота ротора!")

Роковая слабость

У реальной Энигмы был рефлектор, из-за которого буква никогда не шифровалась сама в себя: A не могла стать A. Эта мелочь дала зацепку. Плюс немцы передавали предсказуемые слова — например, ежедневный прогноз погоды или «Heil Hitler». Такие угаданные куски текста называли «crib» (шпаргалка).

Тьюринг и бомба

Алан Тьюринг построил электромеханическую машину Bombe, которая перебирала настройки Энигмы, отбрасывая невозможные варианты с помощью крибов и правила «буква не равна себе». То, что человек не сделал бы за миллионы лет, машина проверяла за часы.

# Принцип крибов: буква не шифруется сама в собой -> отбрасываем настройки
cipher = "PLTQ"
crib   = "WETT"  # ждём слово WETTER (погода)

print("Шифровка:", cipher)
print("Догадка: ", crib)
for c, g in zip(cipher, crib):
    bad = (c == g)
    mark = "НЕВОЗМОЖНО (буква = себе)" if bad else "ok"
    print(f"  {c} vs {g}: {mark}")
print("Так Bombe отбрасывала противоречивые настройки.")

Рождение современной криптографии

Блетчли-парк стал колыбелью информатики: Тьюринг заложил идеи вычислимости, а машина Colossus стала одним из первых программируемых компьютеров. После войны Клод Шеннон превратил криптографию в строгую математическую науку, доказав, что стойкость должна опираться на математику и размер ключа, а не на секретность самого устройства.

Вывод:

Энигма казалась непробиваемой из-за вращающихся роторов и квинтиллионов настроек. Её сломали крибы, правило «буква не равна себе» и машина Bombe Тьюринга. Блетчли-парк дал толчок информатике и современной криптографии.
Проверьте себя
1. Какая особенность Энигмы дала криптоаналитикам важную зацепку для взлома?
AОна использовала всего один ротор
BБуква никогда не шифровалась сама в себя
CОна работала только с цифрами
DКлюч был длиннее сообщения
2. Кто построил машину Bombe для взлома Энигмы?
AЮлий Цезарь
BАль-Кинди
CАлан Тьюринг и команда Блетчли-парка
DЧарльз Бэббидж
Поддержать проект