Шифр использовался подполковником КГБ Рейно Хейханеном, работавшим в нелегальной советской разведке в США в период с 1952 по 1957 годы. С 1954 года Хейханен являлся помощником Рудольфа Абеля, выдающегося агента советской разведки. Хейханен скрывался в США под гражданским именем Виктор, давшим название шифру.
Одним из документов, в которых использовался данный шифр, был текст, напечатанный на микроплёнке, по случайности обнаруженной в 1953 году внутри пятицентовой монеты[англ.]. Образец был в срочном порядке доставлен в ФБР, однако все попытки самостоятельно расшифровать послание остались тщетными. Госслужбы США были вынуждены признать шифр, не поддававшийся криптоанализу, «наиболее изящным и сложным среди всех шифров, оказывавшихся в публичном доступе».[1]
Структура шифра
Характеристика
Шифр ВИК относится к нигилистической семье шифров.[2] Его можно описать как «подстановочный моноалфавитный шифр, усиленный двойной модифицированной перестановкой».[1] Шифр основывался на принципах перестановки символов и замены их другими, а также использовал 4 ключа и начинался со сложной процедуры получения псевдослучайной числовой последовательности, что делало его одним из сложнейших среди всех известных «ручных шифров» XX века.[3]
Алгоритм шифрования
В этом разделе процесс шифрования рассмотрен на примере сообщения, переданного на пятицентовой монете.[3]
Текст оригинального сообщения
1. Поздравляем с благополучным прибытием. Подтверждаем получение вашего письма в адрес «В» повторяю «В» и прочтение письма № 1.
2. Для организации прикрытия мы дали указание передать вам три тысячи местных. Перед тем как их вложить в какое либо дело посоветуйтесь с нами, сообщив характеристику этого дела.
3. По вашей просьбе рецептуру изготовления мягкой плёнки и новостей передадим отдельно вместе с письмом матери.
4. Гаммы высылать вам рано. Короткие письма шифруйте, а побольше — делайте со вставками. Все данные о себе, место работы, адрес и т.д. в одной шифровке передавать нельзя. Вставки передавайте отдельно.
5. Посылку жене передали лично. С семьёй все благополучно. Желаем успеха.
Привет от товарищей. № 1/03 Декабря.
В шифре использовалось сразу 4 ключа: ключевое шестизначное число, 20 букв ключевой фразы, 7 букв ключевого слова и небольшой личный номер агента. В упомянутом сообщении в качестве первого ключа использовалась знаменательная дата — 3 сентября 1945 года — день победы Советского Союза над Японией — записанная в форме: 391945. Текстовый ключ был выбран из песни М. Исаковского«Одинокая гармонь»:
Снова замерло всё до рассвета — Дверь не скрипнет, не вспыхнет огонь. Только слышно — на улице где-то Одинокая бродит гармонь.
Кодовым словом являлось слово «СНЕГОПАД». Личным номером Вика было число 13.
Кроме того, для каждого шифра выбирался случайный пятизначный «индикатор» шифра. В приведённом примере это число 20818.
Вначале производилось вычитание по модулю 10 первых пяти цифр числового ключа из цифр индикатора:Шестая цифра числового ключа используется в самом конце алгоритма.
Далее брался текстовый ключ, делился на две половины, и буквы внутри каждой половины нумеровались в порядке следования по алфавиту:
На третьем шаге полученная в п.1 пятизначная группа цифр дополнялась до десятизначной методом цепи дополнений: последние пять цифр получались сложением соседних цифр выписанного числа по модулю 10, а именно: подсчитывалась сумма очередной пары цифр, результат по модулю 10 записывался в конец последовательности, переходили к следующей паре и так далее: . Получено число 9172408964.
Далее производилось суммирование соответствующих цифр полученного числа и первой половины последовательности, полученной в п.2:
Создавалось правило перекодировки с использованием второй части последовательности, полученной в п.2, в качестве образов для цифр 1,2,3…,9,0:
Применяя полученное правило, перекодировали результат, полученный на четвёртом шаге:
Методом цепи дополнений, упомянутым в п.3, для полученной десятизначной последовательности генерировались следующие 50 псевдослучайных цифр:
Последние 10 полученных цифр нумеровались в порядке возрастания (0 шёл после 9) цифрами 1,2…9,0, а одинаковые цифры — в порядке следования: Окончательно полученные 10 цифр применялись для построения квадратного шифра:Рисовалась таблица с 4 строками и 10 столбцами, в первой строке записывались первые 7 букв кодового слова, в остальных строках записывались в вертикальном порядке остальные буквы русского алфавита, точка, запятая, а также некоторые условные обозначения: «п/л» — переход на латинскую азбуку, «н/ц» — начало цифрового текста, «н/т» — начало шифруемого текста, «пвт» — повторение предыдущего текста. Номерами столбцов служили полученные 10 цифр, первый столбец оставался без номера, остальные 3 получали номера, соответствующие последним 3 цифрам числа. Соответствие устанавливалось следующим образом: каждая буква заменялась на число, состоящее из номера строки и номера столбца. Символы первой строки, не имеющей номера, заменялись номером столбца.
Пункты 1-8 описывают лишь подготовку к шифрованию. Само же шифрование текста происходит в следующих четырёх пунктах. Все предыдущие вычисления нужны были лишь для получения таблицы перекодировки в цифровой текст, изображённой в п.8, а точнее, числовой последовательности, записанной сверху и слева от этой таблицы. Использование столь сложной системы было обоснованным, так как все четыре используемых ключа в шифре при общении с одним агентом оставались неизменными. И лишь использование случайного пятизначного «индикатора» позволяло до неузнаваемости изменять таблицу перекодировки. При помощи полученной по ключу «СНЕГОПАД» таблицы текст переводился в числовой вид:
Приведение текста к числовому виду
Перекодировка имела интересные особенности: цифры, помимо того что обособлялись кодом «н/ц», представлялись в закодированном виде своим трёхкратным повторением; кавычки записывались в виде двух запятых. Кроме того, процесс перекодировки случайным образом начался со слова «прикрытия», начало же сообщения обозначено кодом «н/т». В конец добавлены 3 незначащих цифры до кратности пяти общего количества цифр.
В шифре ВИК применялись две последовательные перестановки, для осуществления каждой из которых составлялась таблица. Именно для определения размеров таблиц использовался личный номер агента. Кроме того, из 50-значной псевдослучайной последовательности, полученной в п.7, брались две последние неравные цифры (4 и 1). Суммируя эти цифры с номером агента, получали, соответственно, количество столбцов в первой и второй таблицах: . Также необходимо было выбрать ключевой набор цифр, которые ставили в соответствие каждому столбцу двух таблиц, то есть в данном случае всего нужно было выбрать 31 цифру. Извлекались цифры из той же таблицы в п.7. Воспроизведём её снова, добавив вторую строку, размещающую порядковые номера ключевых цифр, данных в первой строке (операция, подобная проведённой в п.8): Цифры выбирались сверху вниз по вертикалям; выбираемые столбцы следовали согласно нумерации, данной во второй строке. В результате получали последовательность из 31 псевдослучайной цифры:
Записывалась первая таблица с 17 колонками, в верхних двух строках располагались первые 17 из полученных ключевых цифр и их порядковые номера, далее по горизонталям выписывался полученный в п.9 числовой код:
Первая таблица перестановки
Аналогично пункту 10, выписывались столбцы основной части таблицы в порядке согласно нумерации во второй строке таблицы:
Результат первой перестановки
Вторая перестановка являлась неравномерной. Для её осуществления составлялась вторая таблица, в данном случае состоящая из 14 строк. В первых двух строках располагались последние 14 кодовых цифр и их номера. Число оставшихся строк подбиралось достаточным для вмещения всех цифр текста. Для размещения 1030 цифр необходимо 74 строки. Затем в основной части таблицы окрашивались треугольные области: k-ая область опиралась верхним левым углом на строку с номером (согласно нумерации во второй строке) k, нижний правый угол упирался в край таблицы:
Вторая таблица перестановки
В таблицу по строкам записывался полученный в п.11 текст, причём вначале целиком заполнялась серая область таблицы, затем жёлтая — до использования всех цифр. По подобию пункта 11, текст основной таблицы выписывался по столбцам, согласно нумерации во второй строке, в таблицу:
Результат второй перестановки
Текст разбивался на пятизначные группы, а вверху указывалось их количество. Групп, соответствующих шифротексту, было 206, но на пятое с конца место вставлено число 20818 — случайный индикатор, используемый в п.1. Число 5, определяющее размещение вставленной группы, есть не использованная ранее последняя цифра числового ключа. Именно текст, изображённый в последней таблице, был обнаружен внутри пятицентовой монеты летом 1953 года.
↑Kahn D. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet (Abridged Version). — The New American Library, Inc., 1967.
Лати́нский квадра́тn-го порядка — таблица L=(lij) размеров n × n, заполненная n элементами множества M таким образом, что в каждой строке и в каждом столбце таблицы каждый элемент из M встречается в точности один раз. Пример латинского квадрата 3-го порядка:
DES — симметричный алгоритм шифрования, разработанный фирмой IBM и утверждённый правительством США в 1977 году как официальный стандарт. DES имеет блоки по 64 бита и 16-цикловую структуру сети Фейстеля, для шифрования использует ключ с длиной 56 бит. Алгоритм использует комбинацию нелинейных (S-блоки) и линейных преобразований. Для DES рекомендовано несколько режимов:
режим электронной кодовой книги,
режим сцепления блоков,
режим обратной связи по шифротексту,
режим обратной связи по выходу.
Ме́тод Га́усса — классический метод решения системы линейных алгебраических уравнений (СЛАУ). Назван в честь немецкого математика Карла Фридриха Гаусса. Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе треугольного вида, из которой последовательно, начиная с последних, находятся все переменные системы.
Метод Гаусса — Жордана — метод, который используется для решения квадратных систем линейных алгебраических уравнений, нахождения обратной матрицы, нахождения координат вектора в заданном базисе или отыскания ранга матрицы. Метод является модификацией метода Гаусса. Назван в честь К. Ф. Гаусса и немецкого геодезиста и математика Вильгельма Йордана.
Симметри́чные криптосисте́мы — способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. До изобретения схемы асимметричного шифрования единственным существовавшим способом являлось симметричное шифрование. Ключ алгоритма должен сохраняться в секрете обеими сторонами. Алгоритм шифрования выбирается сторонами до начала обмена сообщениями.
Шифр перестано́вки — это метод симметричного шифрования, в котором элементы исходного открытого текста меняют местами. Элементами текста могут быть отдельные символы, пары букв, тройки букв, комбинирование этих случаев и так далее. Типичными примерами перестановки являются анаграммы. В классической криптографии шифры перестановки можно разделить на два класса:
Шифры одинарной (простой) перестановки — при шифровании символы открытого текста перемещаются с исходных позиций в новые один раз.
Шифры множественной (сложной) перестановки — при шифровании символы открытого текста перемещаются с исходных позиций в новые несколько раз.
REDOC — симметричный блочный криптоалгоритм, разработанный Майклом Вудом в 1990 году для компании Cryptech и получивший наименование REDOC II. Все операции — подстановки, перестановки, XOR выполняются с байтами что позволяет его эффективно реализовать программно. Алгоритм использует зависимые от ключа и исходного открытого текста наборы таблиц (S-блоков), используя меняющиеся табличные функции. Алгоритм отличает использование масок, т.е. чисел, получаемых из ключевой таблицы. Маски используются для выбора таблиц конкретной функции конкретного раунда. При этом используется как значение маски, так и значение данных.
Khufu — в криптографии симметричный блочный 64-битовый криптоалгоритм, разработанный Ральфом Мерклом в 1990 году, назван в честь египетского фараона Хеопса.
Омофоническая замена — шифр подстановки, при котором каждый символ открытого текста заменяется на один из нескольких символов шифра алфавита, причём количество заменяющих символов для одной буквы пропорционально частоте этой буквы. Это позволяет скрыть настоящую частоту появления данной буквы в зашифрованном тексте.
Threefish — в криптографии симметричный блочный криптоалгоритм, разработанный автором Blowfish и Twofish, американским криптографом Брюсом Шнайером в 2008-м году для использования в хэш-функции Skein и в качестве универсальной замены существующим блочным шифрам. Основными принципами разработки шифра были: минимальное использование памяти, необходимая для использования в хэш-функции устойчивость к атакам, простота реализации и оптимизация под 64-разрядные процессоры.
Теоре́ма Лапла́са — одна из теорем линейной алгебры. Названа в честь французского математика Пьера-Симона Лапласа, которому приписывают формулирование этой теоремы в 1772 году, хотя частный случай этой теоремы о разложении определителя по строке (столбцу) был известен ещё Лейбницу.
Шифр Виженера — метод полиалфавитного шифрования буквенного текста с использованием ключевого слова.
SHARK — симметричный алгоритм блочного шифрования, разработанный группой криптографов, среди которых Винсент Рэймен, — автор шифра AES. В теории позволяет использовать блоки и ключи различной длины, однако авторская реализация использует 128-битный ключ и 64-битные блоки. Структура схожа со структурой подстановочно-перестановочной сети.
Шифр Хилла — полиграммный шифр подстановки, основанный на линейной алгебре и модульной арифметике. Изобретён американским математиком Лестером Хиллом в 1929 году. Это был первый шифр, который позволил на практике одновременно оперировать более чем с тремя символами. Шифр Хилла не нашёл практического применения в криптографии из-за слабой устойчивости ко взлому и отсутствия описания алгоритмов генерации прямых и обратных матриц большого размера.
Khafre — второй алгоритм, предложенный Ральфом Мерклом. Этот алгоритм похож на Khufu, но не нуждается в предварительных вычислениях. S-блоки не зависят от ключа, в Khafre используется фиксированные S-блоки. Алгоритм Khafre не ограничивает максимальное количество раундов алгоритма и максимальный размер ключа, в отличие от Khufu. Однако, размер ключа должен быть кратен 64 битам, а количество раундов — кратным 8. По предположению Меркла с Khafre должны использоваться 64 или 128 битовые ключи, и что в Khafre будет больше этапов, чем в Khufu. Также, каждый этап Khafre сложнее этапа Khufu, это делает Khafre медленнее. Зато для Khafre не нужны никакие предварительные вычисления, что дает возможность быстрее шифровать небольшие порции данных.
Книжный шифр — вид шифра, в котором каждый элемент открытого текста заменяется на указатель аналогичного элемента в дополнительном тексте-ключе.
В криптографии квадрат Полибия, также известный как шахматная доска Полибия — оригинальный код простой замены, одна из древнейших систем кодирования, предложенная Полибием. Данный вид кодирования изначально применялся для греческого алфавита, но затем был распространен на другие языки.
MAGENTA — блочный шифр, разработанный Майклом Якобсоном и Клаусом Хубером для немецкой телекоммуникационной компании Deutsche Telekom AG. MAGENTA является сокращением от Multifunctional Algorithm for General-purpose Encryption and Network Telecommunication Applications.
ADFGVX-шифр — один из самых известных шифров времён Первой мировой войны, который использовался немецкой армией на западном фронте. Особенность шифра заключается в том, что он построен на соединении базовых операций замены и перестановки. Часть шифра, отвечающая замене, основывается на квадрате Полибия.
PRINCE — блочный шифр с малой задержкой при аппаратной реализации. Особенностью шифра является «α-отражение». Шифр происходит от алгоритмов AES и Present.
Эта страница основана на статье Википедии. Текст доступен на условиях лицензии CC BY-SA 4.0; могут применяться дополнительные условия. Изображения, видео и звуки доступны по их собственным лицензиям.