Шифр ВИК, также известный как шифр Абеля, — шифр, использовавшийся советским шпионом Рейно Хейханеном.

История править

Шифр использовался подполковником КГБ Рейно Хейханеном, работавшим в нелегальной советской разведке в США в период с 1952 по 1957 годы. С 1954 года Хейханен являлся помощником Рудольфа Абеля, выдающегося агента советской разведки. Хейханен скрывался в США под гражданским именем Виктор, давшим название шифру.

Одним из документов, в которых использовался данный шифр, был текст, напечатанный на микроплёнке, по случайности обнаруженной в 1953 году внутри пятицентовой монеты[en]. Образец был в срочном порядке доставлен в ФБР, однако все попытки самостоятельно расшифровать послание остались тщетными. Госслужбы США были вынуждены признать шифр, не поддававшийся криптоанализу, «наиболее изящным и сложным среди всех шифров, оказывавшихся в публичном доступе».[1]

Структура шифра править

Характеристика править

Шифр ВИК относится к нигилистической семье шифров.[2] Его можно описать как «подстановочный моноалфавитный шифр, усиленный двойной модифицированной перестановкой».[1] Шифр основывался на принципах перестановки символов и замены их другими, а также использовал 4 ключа и начинался со сложной процедуры получения псевдослучайной числовой последовательности, что делало его одним из сложнейших среди всех известных «ручных шифров» XX века.[3]

Алгоритм шифрования править

В этом разделе процесс шифрования рассмотрен на примере сообщения, переданного на пятицентовой монете.[3]

В шифре использовалось сразу 4 ключа: ключевое шестизначное число, 20 букв ключевой фразы, 7 букв ключевого слова и небольшой личный номер агента. В упомянутом сообщении в качестве первого ключа использовалась знаменательная дата — 3 сентября 1945 года — день победы Советского Союза над Японией — записанная в форме: 391945. Текстовый ключ был выбран из песни М. Исаковского «Одинокая гармонь»:

Снова замерло всё до рассвета —
Дверь не скрипнет, не вспыхнет огонь.
Только слышно — на улице где-то
Одинокая бродит гармонь.

Кодовым словом являлось слово «СНЕГОПАД». Личным номером Вика было число 13.

Кроме того, для каждого шифра выбирался случайный пятизначный «индикатор» шифра. В приведённом примере это число 20818.

  1. Вначале производилось вычитание по модулю 10 первых пяти цифр числового ключа из цифр индикатора:
     
    Шестая цифра числового ключа используется в самом конце алгоритма.
  2. Далее брался текстовый ключ, делился на две половины, и буквы внутри каждой половины нумеровались в порядке следования по алфавиту:
     
  3. На третьем шаге полученная в п.1 пятизначная группа цифр дополнялась до десятизначной методом цепи дополнений: последние пять цифр получались сложением соседних цифр выписанного числа по модулю 10, а именно: подсчитывалась сумма очередной пары цифр, результат по модулю 10 записывался в конец последовательности, переходили к следующей паре и так далее:  . Получено число 9172408964.
  4. Далее производилось суммирование соответствующих цифр полученного числа и первой половины последовательности, полученной в п.2:
     
  5. Создавалось правило перекодировки с использованием второй части последовательности, полученной в п.2, в качестве образов для цифр 1,2,3…,9,0:
     
  6. Применяя полученное правило, перекодировали результат, полученный на четвёртом шаге:
     
  7. Методом цепи дополнений, упомянутым в п.3, для полученной десятизначной последовательности генерировались следующие 50 псевдослучайных цифр:
     
  8. Последние 10 полученных цифр нумеровались в порядке возрастания (0 шёл после 9) цифрами 1,2…9,0, а одинаковые цифры — в порядке следования:
     
    Окончательно полученные 10 цифр применялись для построения квадратного шифра:
     
    Рисовалась таблица с 4 строками и 10 столбцами, в первой строке записывались первые 7 букв кодового слова, в остальных строках записывались в вертикальном порядке остальные буквы русского алфавита, точка, запятая, а также некоторые условные обозначения: «п/л» — переход на латинскую азбуку, «н/ц» — начало цифрового текста, «н/т» — начало шифруемого текста, «пвт» — повторение предыдущего текста. Номерами столбцов служили полученные 10 цифр, первый столбец оставался без номера, остальные 3 получали номера, соответствующие последним 3 цифрам числа. Соответствие устанавливалось следующим образом: каждая буква заменялась на число, состоящее из номера строки и номера столбца. Символы первой строки, не имеющей номера, заменялись номером столбца.
  9. Пункты 1-8 описывают лишь подготовку к шифрованию. Само же шифрование текста происходит в следующих четырёх пунктах. Все предыдущие вычисления нужны были лишь для получения таблицы перекодировки в цифровой текст, изображённой в п.8, а точнее, числовой последовательности, записанной сверху и слева от этой таблицы. Использование столь сложной системы было обоснованным, так как все четыре используемых ключа в шифре при общении с одним агентом оставались неизменными. И лишь использование случайного пятизначного «индикатора» позволяло до неузнаваемости изменять таблицу перекодировки. При помощи полученной по ключу «СНЕГОПАД» таблицы текст переводился в числовой вид: Перекодировка имела интересные особенности: цифры, помимо того что обособлялись кодом «н/ц», представлялись в закодированном виде своим трёхкратным повторением; кавычки записывались в виде двух запятых. Кроме того, процесс перекодировки случайным образом начался со слова «прикрытия», начало же сообщения обозначено кодом «н/т». В конец добавлены 3 незначащих цифры до кратности пяти общего количества цифр.
  10. В шифре ВИК применялись две последовательные перестановки, для осуществления каждой из которых составлялась таблица. Именно для определения размеров таблиц использовался личный номер агента. Кроме того, из 50-значной псевдослучайной последовательности, полученной в п.7, брались две последние неравные цифры (4 и 1). Суммируя эти цифры с номером агента, получали, соответственно, количество столбцов в первой и второй таблицах:  . Также необходимо было выбрать ключевой набор цифр, которые ставили в соответствие каждому столбцу двух таблиц, то есть в данном случае всего нужно было выбрать 31 цифру. Извлекались цифры из той же таблицы в п.7. Воспроизведём её снова, добавив вторую строку, размещающую порядковые номера ключевых цифр, данных в первой строке (операция, подобная проведённой в п.8):
     
    Цифры выбирались сверху вниз по вертикалям; выбираемые столбцы следовали согласно нумерации, данной во второй строке. В результате получали последовательность из 31 псевдослучайной цифры:
     
  11. Записывалась первая таблица с 17 колонками, в верхних двух строках располагались первые 17 из полученных ключевых цифр и их порядковые номера, далее по горизонталям выписывался полученный в п.9 числовой код: Аналогично пункту 10, выписывались столбцы основной части таблицы в порядке согласно нумерации во второй строке таблицы:
  12. Вторая перестановка являлась неравномерной. Для её осуществления составлялась вторая таблица, в данном случае состоящая из 14 строк. В первых двух строках располагались последние 14 кодовых цифр и их номера. Число оставшихся строк подбиралось достаточным для вмещения всех цифр текста. Для размещения 1030 цифр необходимо 74 строки. Затем в основной части таблицы окрашивались треугольные области: k-ая область опиралась верхним левым углом на строку с номером (согласно нумерации во второй строке) k, нижний правый угол упирался в край таблицы: В таблицу по строкам записывался полученный в п.11 текст, причём вначале целиком заполнялась серая область таблицы, затем жёлтая — до использования всех цифр. По подобию пункта 11, текст основной таблицы выписывался по столбцам, согласно нумерации во второй строке, в таблицу: Текст разбивался на пятизначные группы, а вверху указывалось их количество. Групп, соответствующих шифротексту, было 206, но на пятое с конца место вставлено число 20818 — случайный индикатор, используемый в п.1. Число 5, определяющее размещение вставленной группы, есть не использованная ранее последняя цифра числового ключа. Именно текст, изображённый в последней таблице, был обнаружен внутри пятицентовой монеты летом 1953 года.

Примечания править

  1. 1 2 Kahn D. "Number One From Moscow" Архивная копия от 29 декабря 2016 на Wayback Machine. 1993.
  2. Kahn D. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet (Abridged Version). — The New American Library, Inc., 1967.
  3. 1 2 А. В. Синельников. Шифры советской разведки Архивная копия от 21 декабря 2019 на Wayback Machine. — 2016.

Литература править