Шифр Рихарда Зорге
Нельзя рассказывать о шифрах и ни слова не сказать о шпионах. В недалеком прошлом, когда компьютеров еще не было, информацию стремились скрыть в основном разведчики. Наука о шифровании не могла стоять на месте, ведь служба Родине была самым важным и нужным ее предназначением. Кстати, именно советские шифры, разработанные отечественными специалистами, на многие десятилетия вперед определили вектор развития криптографии.
Один из самых известных – шифр Рихарда Зорге – советского разведчика, который был направлен в Японию. Этот шифр продуман до мелочей. Шифрование на английском языке. Первоначально нужно составить следующую таблицу:
Сначала записываем в нее слово SUBWAY, выбранное нами. Затем пишем все остальные буквы алфавита по порядку. Слеш означает новое слово (разделитель), а точка обозначает себя. Далее наиболее часто встречающиеся буквы английского алфавита (A, S, I, N, T, O, E, R) нумеруются в порядке появления в таблице:
Саму таблицу мы строим по горизонтали, записывая буквы рядами, а нумеруем по вертикали, столбцами. Так перемешивание будет лучше.
Далее преобразуем таблицу: сначала в строку по столбцам записываются наиболее часто встречаемые буквы в порядке нумерации (S, I, E, …), а затем записываются и все остальные буквы, также по столбцам в строки (С, X, U, D, J, …). Такая таблица обеспечит хорошие перемешивающие свойства и в то же время не «испортит» частотный анализ шифротекста:
Таблица готова. Теперь можно зашифровать сообщение. Алгоритм такой:
-
Для каждого исходного символа ищем соответствующую ему цифру в первом столбце (для M это будет 9).
-
Для каждого исходного символа ищем соответствующую ему цифру в первом ряду (для M это будет 6).
-
Записываем полученные символы один за другим (96). Если вместо символа в первом ряду/столбце стоит прочерк, не пишем ничего:96 4 …
M R … -
Переходим к следующему символу. И так далее.
После этого шифротекст заново переразбивается на блоки одинаковой длины по пять символов. Оставшиеся символы, которые придутся на последнюю незавершенную группу из пяти символов, можно просто отбросить. Если у нас останется больше двух символов, то их нужно добить нулями до полной группы из пяти. Если один или два – можно отбросить, они не несут особо много информации, и о них легко догадаются в штабе. В нашем случае лишних символов не осталось.
Далее нужно наложить на полученный шифротекст некую гамму. Если упрощенно, то гамма – это последовательность чисел, которая выбирается для сложения с исходным шифротекстом. Например, если у нас есть гамма 1234 5678 9876, а исходный шифротекст выглядел как 12222 14444
1555, то конечный шифротекст после наложения гаммы выглядит как их сумма – 1234+12222, 14444+5678, 9876+1555.
Откуда брать гамму и как незаметно передать ее в штаб? Зорге выбирал гамму из «Немецкого статистического ежегодника».
Такое издание не должно было вызвать удивление у японцев, так как Зорге приехал в страну под видом немецкого журналиста. Он указывал страницу и столбец, откуда начиналась последовательность, которая была наложена на шифротекст в этом послании. Например, 201-я страница и 43-й столбец. Эти данные он записывал добавочным числом 20143 перед шифротекстом, который, в свою очередь, уже шифровался гаммой.
Шифр Зорге вражеским криптоаналитикам так и не удалось взломать. Множество раз японские спецслужбы перехватывали шифротекст, но он так и останется в виде колонок пятизначных чисел, которые подшивались в дела непойманных шпионов.