Шифр VIC - VIC cipher

Блок-схема VIC Cipher

В Шифр VIC был карандаш и бумага шифр используется Советский шпион Рейно Хайханен, под кодовым названием "ВИКТОР".

Если бы шифру было дано современное техническое название, он был бы известен как «двухчастная моноалфавитная подстановка, зашифрованная с помощью модифицированной двойной транспозиции».[1]Однако по общей классификации это часть Семья нигилистов шифров.

Когда он был впервые обнаружен, возможно, это был самый сложный шифр с ручным управлением, который когда-либо видели. Первоначальный анализ, сделанный американским Национальное Агенство Безопасности (NSA) в 1953 году не сделали абсолютно никакого вывода о том, что это ручной шифр, но его размещение в выдолбленной монете 5 предполагало, что он может быть расшифрован с помощью карандаша и бумаги. Шифр VIC оставался неразрушенным до тех пор, пока не стала доступна дополнительная информация о его структуре.

Хотя, конечно, не такой сложный и безопасный, как современный компьютер. потоковые шифры или же блочные шифры, на практике защищенные им сообщения сопротивлялись всем попыткам криптоанализ по крайней мере, АНБ с момента его открытия в 1953 году до Хяюханена. дезертирство в 1957 г.

Революционный скачок

Шифр VIC можно рассматривать как вершину эволюции Нигилистический шифр семья.

Шифр VIC имеет несколько важных интегрированных компонентов, в том числе мод 10 сложение цепи, a запаздывающий генератор Фибоначчи (рекурсивная формула, используемая для генерации последовательности псевдослучайный цифры ), а шахматная доска, и нарушенный двойная транспозиция.

До открытия VIC обычно считалось, что двойное транспонирование само по себе было самым сложным шифром, который с практической точки зрения агент мог использовать в качестве полевого шифра.

История

В течение Вторая Мировая Война, несколько советских шпионских сетей связались с Московским центром с помощью двух шифров, которые, по сути, представляют собой эволюционные усовершенствования основного шифра нигилизма. Очень сильная версия использовалась Макс Клаузен в Рихард Зорге сеть в Япония, и по Александр Фут в Люси шпионское кольцо в Швейцария.[2] Немного более слабая версия использовалась Rote Kapelle сеть.[3]

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

Клаузен и Фут написали свой открытый текст на английском языке и запомнили 8 самые частые письма английского языка (чтобы заполнить верхний ряд шахматной доски) через мнемоническую (и немного угрожающую) фразу «a sin to err» (отбрасывая второе «r»). Стандартная английская шахматная доска имеет 28 слотов для символов, и в этом шифре два дополнительных символа стали «точкой» и «сдвигом чисел». Числа отправлялись путем сдвига чисел, за которым следовали фактические цифры открытого текста в повторяющихся парах, после чего следовало другое изменение. Затем, как и в базовом Nihilist, была добавлена ​​цифровая добавка, которая получила название «закрытие». Однако каждый раз использовалась другая добавка, поэтому, наконец, пришлось вставить скрытую «индикаторную группу», чтобы указать, какая добавка была использована.

В отличие от базового Nihilist, добавка была добавлена ​​путем сложения без переноса (сложение цифр по модулю 10), таким образом получая более однородный результат, который не пропускает столько информации. Что еще более важно, добавка создавалась не с помощью ключевого слова, а путем случайного выбора строк из альманахов промышленной статистики. Такие книги считались достаточно скучными, чтобы не вызывать подозрений, если агент был обыскан (особенно потому, что агенты прикрывались рассказами о бизнесменах), и имели такую ​​высокую плотность энтропии, чтобы обеспечивать очень надежную добавку. Конечно, цифры из такой книги на самом деле распределены неравномерно (есть избыток «0» и «1» (см. Закон Бенфорда ), и порядковые номера, вероятно, будут в чем-то похожи), но, тем не менее, они имеют гораздо более высокую плотность энтропии, чем парольные фразы и тому подобное; во всяком случае, на практике кажется, что они никогда не подвергались успешному криптоанализу.

Более слабая версия генерировала добавку из текста романа или подобной книги (по крайней мере, одна Rote Kapelle член фактически использовал Бравый солдат Швейк (что было запрещено нацистами[4]), Этот текст был преобразован в цифровую добавку с использованием техники, похожей на шахматную доску.

Конечным развитием в этом направлении стал шифр VIC, использованный в 1950-х гг. Рейно Хайханен. К этому времени большинство советских агентов вместо этого использовали одноразовые колодки. Однако, несмотря на теоретическое совершенство одноразового блокнота, на практике они мы сломанный, пока ВИК не было. Однако одноразовый шифр мог быть взломан только при повторном использовании страниц шифра из-за логистических проблем и, следовательно, больше не был действительно одноразовым. [5]

Обзор механики

Секретный ключ для шифрования следующий:

  • Короткое Фраза (например, первая строка песни)
  • А Дата (в 6-значном формате)
  • А Персональный номер (уникально для агента, одно- или двухзначное число)

В шифровании также участвовал злоумышленник, не знающий 5-значного Keygroup который был уникальным для каждого сообщения. Группа ключей не была строго «секретной» (поскольку она была незаметно встроена в зашифрованный текст), но она находилась в месте в зашифрованном тексте, которое не было известно злоумышленнику.

В целом шифр работал следующим образом:

  1. Используйте указанные выше секреты (фраза, дата, группа ключей и личный номер), чтобы создать 50-значный блок псевдослучайных чисел.
  2. Используйте этот блок для создания ключей сообщений для:
    1. А Шахматная доска
    2. Два Столбчатые транспозиции
  3. Зашифруйте текстовое сообщение с помощью комбинированной шахматной доски
  4. Примените две транспозиции к результирующему (промежуточному) зашифрованному тексту через два столбца
    1. Стандартное столбцовое транспонирование
    2. Диагональное столбцовое транспонирование
  5. Вставка группы ключей в зашифрованный текст - в соответствии с личным номером

Детализированная механика

Примечание: этот раздел отслеживает расчеты, ссылаясь на [Line-X] или аналогичный. Это должно соответствовать обозначениям, указанным в описании архива ЦРУ.[6].

Псевдослучайное блочное происхождение

  • [Line-A]: Создание случайного 5-значного Keygroup
  • [Line-B]: Напишите первые 5 цифр секрета Дата
  • [Строка-C]: Вычесть [Строка-B] из [Строка-A] на Модульная арифметика (по цифре, без «заимствования» десятков из соседнего столбца)
  • [Line-D]: Выпишите первые 20 букв секрета Фраза
  • [Line-E.1 & 2]: Последовательность (см. ниже) первые и вторые десять символов отдельно (чтобы получить [Line-E.1] и [Line-E.2] соответственно)
  • [Строка-F.1]: Запишите 5 цифр из [Line-C], затем примените Добавление цепочки (см. ниже) применяется для создания еще пяти цифр
  • [Строка-F.2]: Последовательность цифр '1234567890' записывается (в [Строка-E.2]) в качестве помощника для кодирования при создании [Строка-H]
  • [Line-G]: Добавление [Строка-E.1] к [Строка-F.1] - это цифра за цифрой по модулю 10 арифметики, то есть без «переноса» десятков в следующий столбец
  • [Line-H]: Кодирование (см. ниже) цифр в [Line-G] в [Line-E.2] в качестве ключа
  • [Строка-I]: [Строка-I] не используется, по-видимому, чтобы избежать путаницы (поскольку «Я» может быть неправильно истолковано как «1» или «J»)
  • [Строка-J]: The Последовательность действий из [Line-H]
  • [Строки-K, L, M, N, P]: Это пять 10-значных строк, созданных цепным сложением [Line-H]. Последние две не равные цифры добавляются к личному номеру агента, чтобы определить длину ключа для двух транспозиций. (Строки K-to-P фактически представляют собой управляемый ключом псевдослучайный блок, используемый для следующего этапа шифрования)
  • [Line-O]: [Line-O] не используется, предположительно, чтобы избежать путаницы (поскольку «O» может быть неверно истолковано как ноль или «Q»)

Получение ключа сообщения

  • [Строка-Q]: Первые цифры «а», извлеченные из [Строки-K, L, M, N, P] при транспонировании через [Строка-J]. (Где «a» - первое значение, полученное в результате добавления последних не равных цифр в [Line-P] к личному номеру). Они используются для ключевой транспозиции столбца.
  • [Line-R]: Следующие цифры 'b', извлеченные (после извлечения цифр 'a') из [Строки-K, L, M, N, P] при транспонировании через [Строка-J]. (Где «b» - второе значение, полученное в результате добавления последних не равных цифр в [Line-P] к личному номеру). Они используются для переключения диагонального транспонирования.
  • [Line-S]: Последовательность [Line-P], это используется как ключ к шахматной доске.

Пример генерации ключа

Личный номер: 6 Дата: 13 сентября 1959 // Высадка на Луну - 13 сентября 1959 ('139195' - усечено до 6 цифр) Фраза: 'Twas the night before Christmas' // из стихотворения 'Визит Святого Николая' - стихотворение Keygroup: 72401 // генерируется случайным образом [Line-A]: 72401 // Keygroup [Line-B]: 13919 // Дата - усечена до 5 цифр [Line-C]: 69592 // вычитает [Line-B] из [Line-A] [Line-D]: TWASTHENIG HTBEFORECH // Фраза - усеченная до 20 символов [Line-E]: 8017942653 6013589427 // через Sequencing [Line-F]: 6959254417 1234567890 // из [Line-C] и добавление цепочки, затем ' 1234567890 '[Line-G]: 4966196060 // добавить [Line-E.1] в [Line-F.1] [Line-H]: 3288628787 // кодировать [Line-G] с помощью [Line-E.2] , [Line-F.2] помогает [Line-J]: 3178429506 // Последовательность [Line-H] [Line-K]: 5064805552 // БЛОК: добавление цепочки [Line-H] для 50 цифр [Line-L]: 5602850077 [Line-M]: 1620350748 [Line-N]: 7823857125 [Line-P]: 5051328370Последние две не равные цифры равны ' 7 'и' 0 ', добавленные к личному номеру (6), означают, что ключи перестановки состоят из 13 и 6 цифр. [Line-Q]: 0668005552551 // первые 13 цифр из блока [Line-R]: 758838 // следующие 6 цифр из блока [Line-S]: 5961328470 // Последовательность [Line-P]

Шифрование сообщений

Шахматная доска

После того, как ключ был сгенерирован, первым этапом фактического шифрования сообщения является преобразование его в серию цифр, это делается с помощью Шахматная доска. Ключ (строка заголовка) шахматной доски основан на [Line-S]. Затем во втором ряду использовалась заранее согласованная серия общих букв. В приведенном ниже примере используется английская мнемоника «AT ONE SIR», однако кириллица, используемая Хайханеном, была «snegopad», русское слово для обозначения снегопада.

Остальные ячейки заполняются, а остальные символы алфавита заполняются по порядку.

 5961328470
 АТОNESяр
6BCDFграммЧАСJKLM
8пQUVWИксYZ./

Ниже приведен пример кодировки:

СООБЩЕНИЕ: «Атака на рассвете. Под рассветом я имею в виду 05:00. Не 09:15, как в прошлый раз. 59956 96459 66583 38765 88665 83376 02538 00005 55000 00080 87319 80000 99911 15558 06776 4288186667 66675 49976 0287-

Транспозиции: столбчатое транспонирование

Сообщение транспонируется с помощью стандартного столбчатого транспонирования с ключом [Line-Q] выше. (Примечание: если на этом этапе длина закодированного сообщения не кратна 5, добавляется дополнительная цифра)

Затем сообщение транспонируется с помощью диагонального транспонирования, обозначенного клавишей [Line-R] выше.

Вставка группы ключей

(Незашифрованная) группа ключей вставляется в группы «P» зашифрованного текста с конца; где «P» - это личный номер агента.

Модульное сложение / вычитание

Модульное сложение или вычитание, также известное как «ложное сложение / вычитание», в этом контексте (и многие ручные и бумажные шифры) представляет собой сложение и вычитание по цифре без «переноса» или «заимствования». Например:

  • 1234 + 6789 = 7913
  • 1234 - 6789 = 5555
Последовательность действий

Последовательность в этом контексте упорядочивает элементы ввода от 1 до 10 (где «0» представляет 10). Это происходит либо с буквами (при этом используется алфавитный порядок), либо с числами (где используется числовое значение). При четности равных значений сначала устанавливается самое левое значение. Например:

  • БУКВЫ: Слово «Осьминог» упорядочено как «2163475» - (т.е. C = 1, первое «O» = 2, второе «O» = 3, ...)
  • НОМЕРА: номер «90210» упорядочен как «34215» - (в порядке номеров. Ноль оценивается как «10» с точки зрения порядка).
Сложение цепи

Сложение цепи похоже на Регистр сдвига с линейной обратной связью, посредством чего поток чисел генерируется как вывод (и возвращается как ввод) для начального числа. В цепочке VIC Cipher добавление работает следующим образом: (1) берется исходный (начальный) номер, (2) ложно добавляются первые две цифры, (3) этот новый номер помещается в конец цепочки. Это продолжается, однако добавляемые цифры увеличиваются на единицу. Например, если начальное число было «90210», первые 5 итераций показаны ниже:

90210 // Начальное начальное значение 90210 9         // 9 = 9 + 0 (первые две цифры) 90210 92       // 2 = 0 + 2 (следующие два ...) 90210 923       // 3 = 2+190210 9231      // 1 = 1+090210 92319     // 9 = 0 + 9; обратите внимание, как первая сгенерированная цифра "9" возвращается в
Кодировка цифр

На этапе кодирования каждая цифра в номере (например, [Line-G] в шифре) заменяется одной из ключевой последовательности (например, [Line-E.2]), которая представляет ее позицию в порядке 1-10. Следует заметить, что при написании серии «1234567890» (показанной как [Line-F.2]) под [Line.E.2] каждое значение от 0 до 9 имеет другое над ним. Просто замените каждую цифру в номере, который нужно закодировать, на цифру над ним в последовательности клавиш.

Ключ(Строка E.2)6013589427
Помощник(Строка F.2)1234567890

Например, число «90210» будет иметь следующую кодировку; .

Таким образом, вывод будет: '27067'

Расшифровка

Расшифровать VIC Cipher можно следующим образом:

  • Извлеките группу ключей - Зная личный номер агента, удалите 5 цифр группы ключей из зашифрованного текста.
  • Создайте ключи сообщений - Используя знание различных секретов (фраза, дата, личный номер, группа ключей), генерируйте ключи так же, как и процесс шифрования.
  • Расшифровать зашифрованный текст - Используя знание ключей сообщений для транспозиций и расшифруйте их с помощью шахматной доски.

Криптоанализ

Шифр является одним из самых надежных шифров, используемых в реальном мире, и не был взломан (с точки зрения определения базового алгоритма) Агентством национальной безопасности в то время.[1]. Однако с появлением современных вычислений и публичным раскрытием алгоритма это уже не будет считаться надежным шифром. Можно заметить, что большая часть энтропии в секретном ключе сходится к 10-значному числу [Line-H]. Это 10-значное число составляет приблизительно 34 бита энтропии, в сочетании с последней цифрой даты (необходимой для определения местоположения KeyGroup) даст около 38 бит энтропии с точки зрения силы ключа сообщения. 38 бит подлежит Атака грубой силой менее чем за сутки на современных компьютерах.

Смотрите также

Рекомендации

  1. ^ а б Дэвид Кан.«Номер один из Москвы».1993.
  2. ^ Кан, Дэвид (1996). Взломщики кодов. Скрибнер. п. 650.
  3. ^ Кан, Дэвид (1996). Взломщики кодов. Скрибнер. п. 652.
  4. ^ Финн, Исаак (14 апреля 2015 г.). "Бравый солдат Швейк: Классическая сатира о Первой мировой войне". Всемирный веб-сайт социалистов. Получено 20 ноября 2016.
  5. ^ https://web.archive.org/web/20160304100650/https://www.nsa.gov/public_info/_files/crypto_almanac_50th/VENONA_An_Overview.pdf
  6. ^ «Номер один из Москвы - ЦРУ». www.cia.gov. Получено 2020-01-12.

внешняя ссылка