Классические шифры. Дополнительные методы расшифровки. Предупреждение к методу

Система Виженера впервые была опубликована в 1586 г. и является одной из старейших и наиболее известных многоалфавитных систем. Свое название она получила по имени французского дипломата XVI века Блеза Виженера, который развивал и совершенствовал криптографические системы.

Система Виженера подобна такой системе шифрования Цезаря, у которой ключ подстановки меняется от буквы к букве. Этот Шифр многоалфавитной замены можно описать таблицей шифрования, называемой таблицей (квадратом) Виженера. Каждая строка таблицы представляет собой символы используемого алфавита с циклическим сдвигом на n позиций.

Таблица Виженера для английского алфавита

Таблица Виженера для русского алфавита

Таблица Виженера используется для зашифрования и расшифрования. Таблица имеет два входа:

  • верхнюю строку подчеркнутых символов, используемую для считывания очередной буквы исходного открытого текста;
  • крайний левый столбец ключа.

Последовательность ключей обычно получают из числовых значений букв ключевого слова.

При шифровании исходного сообщения его выписывают в строку, а под ним записывают ключевое слово (или фразу). Если ключ оказался короче сообщения, то его циклически повторяют. В процессе шифрования находят в верхней строке таблицы очередную букву исходного текста и в левом столбце очередное значение ключа. Очередная буква шифртекста находится на пересечении столбца, определяемого шифруемой буквой, и строки, определяемой числовым значением ключа.

Реализация

Для начала подключим требуемые библиотеки

#include "stdafx.h" #include #include #include #include "locale.h" #include

и объявим необходимые переменные

Setlocale(LC_ALL,"Russian");//русская локаль int i,j,index, index_key, index_message, number; // find_key - флажок найденного индекса строки // find_message - - флажок найденного индекса столбца int find_key=0, find_message=0, count_a, count_b, success=0; //строка исходного текста string message; //Строка - ключ string key = "asd"; // строка, образованная повтором ключа string repeat_key = ""; // строка алфавита string alpha="abcdefghijklmnopqrstuvwxyz"; // таблица виженера char table;

Заполняем таблицу Виженера. Складывая номера строки и столбца ячейки таблицы, мы получаем индекс элемента в массиве, хранящем символы алфавита. Значение элемента массива копируем в текущую ячейку.

For(i=0; i<26; i++) for(j=0;j<26;j++) { index=i+j; if(index>=26) index=index%26; table[i][j]=alpha; }

Считываем из текстового файла исходную фразу. Далее циклически повторяем ключ.

Repeat_key=""; message=""; ifstream file("C:\\input.txt"); while(file) { file>>message; } cout<

Для расшифровки находим символ на пересечении столбца с символом из текста и строки с символом из ключа.

For(i=0; i

Дешифровка

Repeat_key=""; message=""; ifstream file1("C:\\output.txt"); while(file1) { file1&rt;&rt;message; } file1.close(); // составим строку из повторов ключа длиной равной длине сообщения for (i = 0; i < message.length(); i++) { repeat_key += key; } for(i=0; i

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

Описание метода

Шифр Вижнера включает последовательность нескольких шифров Цезаря. Для последнего характерен сдвиг на несколько строк. В целях шифрования можно использовать таблицу алфавитов, которая называется квадрат Виженера. В профессиональных кругах его именуют как tabula recta. состоит из нескольких строк по 26 символов. Каждая новая строка передвигается на определенное количество позиций. В итоге таблица содержит 26 различных шрифтов Цезаря. Каждый этап шифрования подразумевает использование различного алфавита, который выбирается в зависимости от символа ключевого слова.

Для того чтобы лучше понять суть данного метода, рассмотрим шифрование текста на примере слова ATTACKATDAWN. Лицо, которое посылает текст, записывает ключевое слово «LEMON» до того момента, пока оно не будет соответствовать длине переданного текста. Ключевое слово будет иметь вид LEMONLEMONLE. Первый символ заданного текста - А - зашифрован последовательностью L, являющейся первым символом ключа. Данный символ располагается на пересечении строки L и столбца A. Для следующего символа заданного текста применяется второй символ ключа. Поэтому второй символ закодированного текста будет иметь вид X. Он получился в результате пересечения строки E и столбца T. Другие части заданного текста шифруются аналогичным способом. В результате получается слово LXFOPVEFRNHR.

Процесс расшифрования

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

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

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

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

Предупреждение к методу

Шифр Виженера, как и многие другие, не является надежным, поскольку его легко взломать. Если есть необходимость передать секретную информацию, не нужно прибегать к использованию данного метода. Для таких целей разработаны другие методы. Шифр Виженера является одним из самых старых и популярных методов шифрования.

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

Дополнительные методы расшифровки

Раскрыть исходное сообщение можно с помощью метода если заданный текст достаточно длинный. Разгадка шифра во многом сводится к поиску длины ключевой фразы. Существуют два основных метода, которые позволяют определить длину ключевой фразы. Первый метод раскодирования шифра Виженера разработал Фридрих Касицкий. В основе данного метода лежит поиск биграмм. Его суть заключается в том, что если в закодированном сообщении повторяется одна и та же биграмма на расстоянии, которое кратно длине ключевой фразы, то существует большая доля вероятности, что она встретится на тех же позициях в зашифрованном тексте. Если найти данное расстояние, получить его делители, можно получить набор определенных чисел. Именно они и будут составлять длину ключевой фразы. Однако данный метод требует некоторой доли везения. В большом закодированном тексте можно найти случайные биграммы, что значительно усложнит процесс расшифровки.

Второй метод по расшифровке текста предложил Фридман. Его суть заключается в циклическом сдвиге закодированного сообщения. Полученный текст записывается под оригинальным зашифрованным текстом и подсчитывается количество совпавших букв в нижней и верхней строке. Полученные числа позволяют вычислить так называемый индекс совпадений. Он определяется соотношением совпадений к общей длине сообщения. Индекс совпадения для русских текстов составляет примерно 6%. Однако для случайных текстов данный индекс составляет приблизительно 3 или 1/32. Метод Фридмана основывается на данном факте. Закодированный текст записывается со сдвигом в 1,2,3 и т.д. позиций. Затем для каждого сдвига необходимо вычислить индекс совпадений. Таким образом, необходимо произвести циклический сдвиг всего сообщения. При сдвигании индекса на определенное количество символов его длина может резко увеличиться. Это говорит о том, что длина ключевого слова может приравниваться к определенному числу. Если происходит ситуация, при которой все символы сдвигаются на одну и ту же позицию, индекс совпадения будет иметь такое же значение, как и исходный текст. Если вычисляется индекс для шифра Виженера, в любом случае происходит сравнение фактически случайного текста.

Проведение анализа частоты

Если результат процесса дешифровки оказался положительным, можно вписывать текст в столбцы. Столбцы формируются на базе исходного текста. Касицкий изобрел наиболее усовершенствованную форму текста. Однако средства данного метода невозможно применять в том случае, если решетка уходит от стандартной последовательности букв в алфавите. Поэтому данный метод позволяет узнать длину ключей лишь в частных случаях.

В этой статье мы рассмотрим таблицу Виженера для русского алфавита, а именно ее значение в развитии. Ознакомимся с терминологией, историческими фактами. Изучим дешифрацию и ее методы, а также многое другое, что в конечном итоге позволит нам четко определять понятие таблицы Виженера.

Введение

Существует понятие «шифровки информации» - оно представляет собой определенный механизм интерпретации информации в другую форму, которую можно узнать лишь зная способ ее дешифровки.

Представляет собой один из таких методов полиалфавитного способа шифровки информации путем внесения изменений в буквенном тексте, которые можно прочитать лишь зная ключи. Эта многоалфавитная замена была изобретена не одномоментно. Первым ученым, описавшим данный метод, стал Дж. Баттиста Беллазо. Он сделал это на страницах книги La cifra del. Sig. в 1553 году, однако метод был назван именем Б. Виженера, дипломата из Франции. Его методология довольно проста в понимании и исполнении. А также является недоступной для обычных средств криптоанализа.

Исторические данные

Л. Альберти, известный специалист областей архитектуры и философии, в 1466 г. предоставил на осмотр и оценку трактат, в котором содержалась информация о шифровании, его направили в канцелярию Папы Римского. Информация повествовала о различных способах выполнения данного действия. Конечный результат работы был представлен им в разработанном лично способе кодировки данных, который он называл «шифром, достойным королей». Данный механизм шифрования представлял собой многоалфавитную структуру, образовавшую шифровальный диск. Изобретение печатного устройства в Германии в 1518 г. дало новое пространство для развития криптографии.

В 1553 году был сделан еще один шаг, позволяющий данной области человеческой деятельности развиваться. Это совершил Дж. Беллазо. Свою работу он назвал «Шифром синьора Беллазо». Здесь в качестве ключа использовали фразу или одно слово, которое служило паролем. В будущем эти идеи были преображены соотечественником Беллазо, а именно Дж. Б. Порта. Главным изменением было предложение отказа от стандартного следования алфавитному порядку в первой табличной строке и, следовательно, переход на порядок, взятый из произвольных тематик, которые можно использовать в качестве ключа, необходимого для дешифровки. В соответствии с уроками криптографии, строчки таблиц сохранили прежнюю цикличность сдвигов. Книга «О тайных переписках», выпущенная Портой, включала в себя информацию о биграммном шифре.

Середина XVI века, Италия. Здесь появилось книжное издание работы Дж. Кардано, нацеленной на отражение нововведения в криптографические идеи. Например, появилось понятие «решетки Кардано».

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

Отзывы о шифре

Таблица Виженера и способы кодировки данных, которые вытекали из ее использования, были чрезвычайно стойкими к взлому «ручного» типа. Специалист математики и писатель Л. Кэрролл присвоил этой системе шифра звание «невзламываемого», что выразил в статье об «Алфавитном шифре», опубликованной в 1868 г.

Спустя 59 лет один из американских журналов отзывался о методе полиалфавитного шифрования буквенного текста, придуманного Виженером, так же, как и Кэрролл ранее. Однако в XIX веке был изобретен метод Касиски, который позволил опровергнуть эти утверждения, взломав систему шифра.

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

Общие сведения

Таблица Виженера для английского алфавита имела множество разных форм интерпретации в способах эксплуатации. Например, шифр Цезаря предполагал собою наличие алфавитного сдвига на определенное количество позиций. Например, сдвиг на три буквы означал бы, что буква A стала бы D, а B превратилась бы в E. Шифр, созданный Виженером, образуется из ряда последовательно расположенных нескольких систем шифровки Цезаря. Здесь любой сдвиг может иметь разное значение. Процесс кодировки может предполагать в себе использование особых алфавитных табличек или квадратов (таблиц) Виженера. Для алфавита латинского языка было создано двадцать шесть знаков, и любая последующая строка в них сдвигалась на какое-то количество позиций. Символ слова, служащего ключом, обуславливает выбор используемого алфавита.

Дешифровка

При помощи Виженера происходит «размытие» общей характеристики частоты повторения символов в источнике. Однако остаются особенности, появление которых в тексте регулярно воспроизводится. Главной слабостью данной кодировки является повторение ключей. Это позволяет построить процесс криптоанализа, состоящий из двух этапов:

  1. Определение длины пароля. Это делается при помощи анализа частоты распределения различных текстовых прореживаний. Другими словами, берут источник с шифром, в котором каждая вторая буква является частью кода, потом используют третью и т. д. Если удалось дойти до момента, где частотное распределение имеет слишком большое отличие в равномерности, то можно и определить длину слова, используемого в качестве ключа.
  2. Использование средств криптоанализа, что представляет собой общее количество шифров Цезаря, которые можно легко взломать, рассматривая их отдельно друг от друга.

Длинна определяется посредством тестов Касиски и Фридмана.

Способ Касиски

Первым, кто смог разработать алгоритм для взлома шифровального способа Виженера, был Ч. Беббидж. В качестве стимула он использовал информацию, полученную в ходе обмена письмами с Дж. Твейтсом, где тот утверждал, что смог разработать новую систему кодировки. Чарльз Беббидж доказал своему собеседнику обратное путем сведения его к частному случаю трудов Виженера. После этого Твейс посоветовал Чарльзу взломать исходник. Расшифровка текста скрывала в себе слова поэмы А. Теннисона, а ключевым словом служило имя его жены - Эмили (Emily). Публикация открытия так и не состоялась по желанию самого взломщика. Этот же алгоритм был открыт офицером армии Пруссии, Фридрихом Вильгельмом Касиской, в честь которого и назван.

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

Каппа-тест

Еще одним способом дешифровки таблицы Виженера и вытекающей из нее кодировки можно считать тест, созданный В. Фридманом. Этот метод был разработан в 1920 году. Здесь было использовано понятие индекса совпадений, который мог измерить частоту повторения конкретных знаков, позволившую бы взломать систему шифра. Располагая информацией о том, что случайно выбранные символы могут совпадать с шансом, примерно равным 0.067% (для английского языка), можно и определить вероятность их совпадения в тексте. Благодаря этому можно создать оценку длины ключа.

Анализ частоты

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

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

Вариативность

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

Подводя итоги

Пример таблицы Виженера можно увидеть на рисунке ниже.

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

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

Примером многоалфавитного шифра замены является так называемая система Виженера. Шифрование осуществляется по таблице, представляющей собой квадратную матрицу размерностью , где -число символов используемого алфавита. В табл. 6.12 показана таблица Виженера для русского языка ( алфавит - 32 буквы и пробел ). Первая строка содержит все символы алфавита. Каждая следующая строка получается из предыдущей циклическим сдвигом последней на символ влево.

Таблица 6.12. Таблица Виженера для алфавита
A Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А
В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б
Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В
Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г
Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д
Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е
З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж
И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З
Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И
К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й
Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К
М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л
Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М
О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н
П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О
Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П
С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р
Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С
У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т
Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У
Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф
Ц Ч Ш Ш Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х
Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц
Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч
Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш
Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ
Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ
Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы
Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь
Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э
Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я

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

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