Тайнопись. Практическое пособие по шифрованию. 4
IV. СРЕДСТВА И СПОСОБЫ ШИФРОВАНИЯ
СРЕДСТВА ШИФРОВАНИЯ И
ОСНОВНЫЕ ПОНЯТИЯ
В настоящее время не существует единой общепринятой международной или государственной классификации криптографических методов преобразования данных, и в разных ведомствах могут быть отличные друг от друга формулировки и определения. Поэтому здесь не делается различия между кодированием и шифрованием, хотя в некоторых источниках даются различные трактовки (термины). Приведу для примера некоторые, встречающиеся в литературе, толкования.
КОДИРОВАНИЕ — когда элементы (слова, предложения) исходного текста заменяются цифровыми, буквенными и комбинированными кодами.
Под ШИФРОВАНИЕМ понимается такой вид закрытия, при котором преобразованию (изменению) подвергается каждый символ защищаемого сообщения.
КРИПТОГРАФИЕЙ называется способ тайного письма при котором используются как шифры, так и коды.
КОДИРОВАНИЕ обычно означает перевод информации из одной формы представления в другую по некоторому известному всем алгоритму.
При ШИФРОВАНИИ алгоритм перевода держится в тайне.
Не могу полностью согласиться с такими определениями хотя бы потому, что ещё 140 лет назад В.И.Даль раскрыл эти понятия в «Толковом словаре живого великорусского языка». Книга рассчитана на широкий круг читателей, и не важно, как мы это назовём: тайнопись, кодирование, шифрование, криптография, засекречивание, преобразование, маскировка; цель одна — защитить информацию, скрыть содержание написанного, сделать сообщение невидимым, незаметным или (и) непонятным для непосвящённых.
Предлагаю шифровку из детской книжки-раскраски «Спортивная карусель» (Мин Воды, изд. «Кавказская здравница»): 14 16 20 16 19 17 16 18 20 . На картинке изображены 9 мотоциклистов, у каждого на спине номер. Мотоциклисты (номера) расположены в таком порядке: 14, 16, 20, 16, 19, 17, 16, 18, 20. Прочти слово (каждому числу соответствует буква алфавита).
Здесь даны две важные подсказки, которые облегчают дешифровку (в настоящих шифровках подсказок не будет). Первая подсказка в виде картинки — тема, речь идёт о спорте, гонках. Вторая — принцип кодирования, каждая буква кодируется двузначным числом (цифровой группой). В шифровке есть одинаковые числа, значит, в тексте некоторые буквы повторяются.
Существует множество шифров (систем шифрования): шифр простой подстановки, дробные, так называемые диграммные, триграммные и n — граммные, шифры Виженера с различными вариантами, шифр Плейфер, разнообразные типы кодов. Основными способами криптографического закрытия информации являются: замена, перестановка, гаммирование, преобразование с помощью математических формул и комбинирование этих методов. Каждый из перечисленных способов имеет несколько разновидностей. Открытый текст разбивается на элементарные части (элементы): отдельные буквы (монограммы), пары букв (биграммы, диграммы, двузначные буквенные группы), тройки букв (триграммы) или блоки (n-граммы). Элемент исходного текста преобразуется в элемент шифрованного текста. Наиболее древними считаются способы замены и перестановки. В приложении № 9 показан ребус как простая разновидность способа замены, где элемент исходного текста заменяется на рисунок.
Для передачи секретных сообщений существуют средства ручного шифрования — документы ручного кодирования — документы шифрованной связи (СРШ-ДРК-ДШС): кодовые таблицы сигналов, переговорные таблицы, шифроблокноты и т.п. СРШ-ДРК-ДШС могут быть разного принципа и назначения, и у каждого есть свои особенности, плюсы и минусы. По одним затрачивается больше времени для шифрования и расшифрования, но они более надёжно обеспечивают сохранность секрета. При работе с другими СРШ-ДРК, время, необходимое для кодирования, расходуется меньше, но максимально возможный объём передаваемой информации ограничен, узкая специфика и гарантия защищённости секрета меньше. СРШ-ДРК разрабатываются и изготавливаются, как правило, специально персонально, индивидуально для работы какого-то подразделения, службы или для проведения мероприятия с учётом специфики. Кодируются сразу слова, команды, доклады, целые фразы (смысловое кодирование). Такие документы шифрованной связи можно использовать там, где работа идёт без изменений постоянно по конкретному вопросу, определённой теме с узкой спецификой и однотипная информация передаётся в небольшом объёме.
Но для того, чтобы можно было кодировать любой текст (в данном случае имеется в виду способ замены), СРШ-ДРК должны обеспечивать принцип кодирования (преобразования) каждой буквы отдельно (символьное кодирование).
Криптография обеспечивает конфиденциальность, целостность (подлинность) информации и идентификацию отправителя сообщения.
Существуют криптографические системы традиционные (симметричные) и с открытым ключом (асимметричные).
В симметричных шифрах и для шифрования отправителем, и для расшифрования получателем применяется один и тот же ключ. Если ключ не был скомпрометирован, то при расшифровке автоматически выполняется аутентификация отправителя, так как только отправитель (и получатель) имеет ключ.
В несимметричной системе создаются два ключа – открытый и секретный. Данные, зашифрованные одним ключом, могут быть расшифрованы только другим ключом.
Шифрование может быть ручным и машинным, блочным и поточным. Машинное шифрование реализуется программно и аппаратно. Поточные шифры, как правило, более производительны, чем блочные.
1. МЕТОД ПЕРЕСТАНОВКИ
Шифрование методом перестановки заключается в том, что символы исходного текста переставляются по определенным правилам. Такое преобразование приводит к изменению порядка следования символов, а сами символы остаются неизменёнными. И открытый текст (сообщение), и шифротекст (криптограмма) состоят из одних и тех же букв.
1.1. ПЕРЕСТАНОВКА ПО ТАБЛИЦЕ
1.1.1. ПРОСТАЯ ПЕРЕСТАНОВКА
При шифровании ПРОСТОЙ ПЕРЕСТАНОВКОЙ (приложение № 10) выбирается ключевое слово с неповторяющимися символами или цифровой ключ. Число колонок в таблице задаётся количеством символов в ключе, а число строк может быть фиксировано или может задаваться длиной сообщения. Шифруемый текст записывается последовательными строками под символами ключа. Для заполнения пустых клеток (если объём текста меньше ёмкости таблицы) можно использовать любые символы. Затем текст выписывается колонками в той последовательности, в которой располагаются в алфавите буквы ключа или в порядке следования цифр, если ключ цифровой. В качестве примера рассмотрим шифрование сообщения: «БУДЬТЕ ОСТОРОЖНЫ С ПРЕДСТАВИТЕЛЕМ ФИРМЫ «СПЕКТР». Применим цифровой ключ — 5 1 8 3 7 4 6 2. Выписывая текст по колонкам, получаем абракадабру: УОРТМССВИТЬОДЛСЕНТМЕБТПИРРОЫАФКТЖС
ЕПДРЕЕЫ.
Расшифрование выполняется в следующем порядке. Подсчитываем число знаков в зашифрованном тексте и делим на число знаков ключа (41: 8=5 и 1 знак в остатке). Под знаками ключа в соответствующей последовательности записываем вертикально (колонками) символы зашифрованного текста в определенном выше количестве. В каждой колонке по 5 символов, а в одной (первой слева) — 6 символов (5+1 буква в остатке). По строкам таблицы (горизонтально) читаем исходный текст.
Выше, в «Истории тайнописи», упоминается шифр называемый «Скитала» (наматывание ленты на жезл). Это не что иное, как перестановка по таблице с простым ключом — 1 2 3 4 …
Вскрытие шифра.
Общие принципы взлома криптосистемы, когда ключ неизвестен, таковы. Исследуя шифрограмму убеждаемся, что частоты появления отдельных букв в ней (О, Е …) не изменились, они близки к средним частотам встречаемости букв в русском языке (частоты употребления букв приведены под заголовком «Разработка средств шифрования»). В то же время частоты пар букв (диграфов) отличаются от частот их встречаемости в русском языке. Это говорит о том, что применён не способ замены, а шифр перестановки.
Первая задача – определить длину ключа. Подсказкой является длина шифрограммы (в нашем примере 41 символ). По количеству букв видно, что таблица перестановки не была заполнена полностью ни буквами сообщения, ни буквами-пустышками (41 не раскладывается на множители без остатка). Раскладывая это число на множители, получим несколько возможных вариантов длины ключа. Здесь может помочь то, что две буквы, стоящие рядом в исходном сообщении, в шифрованном тексте будут отстоять друг от друга на число позиций кратное количеству строк в таблице (если только одна из букв не находится в конце одной строки, а другая – в начале следующей строки). Выбираем один из вариантов длины ключа, например 8 символов. Выписываем шифротекст подряд в 8 столбцов. Если длина ключа выбрана правильно, то буквы, стоящие рядом в открытом тексте, окажутся в одной строке. В каждой строке анализируем пары букв в разных сочетаниях, чтобы определить среди них наиболее вероятные диграфы. Наиболее часто встречающиеся в русском языке диграммы и их частоты следующие: ТО – 0,0814; НО – 0,0736; ПО – 0,0607; НИ – 0,0585; РО – 0,0578; РА – 0,0562; НА –0,0557; ЕН — 0,0539; КО – 0,0516; АЛ – 0,0477.
Отслеживая связи в парах, мы установим очерёдность следования букв в строках. Переставляем столбцы так, чтобы буквы в строках располагались в правильной (читаемой, смысловой) последовательности.
1.1.2. УСЛОЖНЁННАЯ ПЕРЕСТАНОВКА
УСЛОЖНЕНИЕ ПЕРЕСТАНОВКИ ПО ТАБЛИЦЕ заключается в том, что для записи символов шифруемого текста используется специальная таблица, в которую введены некоторые усложняющие элементы. В приложении № 10 приведен пример такой таблицы. Таблица представляет собой матрицу размерами 10;10 элементов (ячеек). Верхняя строка — это цифровой ключ: 2618305947. Ниже построчно записан шифруемый текст. Усложнение состоит в том, что определенное число клеток таблицы не используется (они заштрихованы или затушёваны). Количество и расположение неиспользуемых ячеек является дополнительным ключом шифрования. Процедура шифрования аналогична простой перестановке. Зашифрованный текст будет выглядеть так: ДОДПБРЕСЬОТМКОСМЕНВИ
ТУТЕЛСПТЫРСЕЕЫИРРТЖАФ.
Для расшифрования отсчитываем по порядку 41 клетку (количество букв в тексте), исключая затушёванные. Это покажет границы текста в таблице и определит количество букв в каждом столбце. Буквы зашифрованного текста вписываются в таблицу колонками в порядке следования цифр ключа. Исходный текст считывается по строкам.
Варьируя размерами таблицы, последовательностью символов ключа, количеством и расположением неиспользуемых клеток, можно получить требуемую стойкость зашифрованного текста.
С целью повышения надежности закрытия информации можно подготовить 7 вариантов таблиц перестановки, каждая из которых снабжена своим ключом. В каждый из дней недели будет использоваться соответствующая таблица. Пример использования таблиц показан в приложении № 11. В зависимости от дня недели сообщение будет иметь следующий вид:
Понедельник: ЕТЖСУТСРБЬООЫДОНП …
Вторник: УТСНПДЕТЫБОРЖЬООС …
Среда: БСЖДЕРПЬОТОЫУТОНС .
……… : …………………………………
Эти таблицы можно использовать по-другому. Например, первые 17 букв текста шифруются по первой таблице, следующие 17 букв — по второй таблице и т. д.
Чтобы повысить стойкость шифра, можно применить двойную перестановку. Т.е., полученный после первой перестановки шифротекст, снова построчно записать в таблицу и выписать по столбцам. Повторная перестановка нарушает закономерности расположения диграфов в таблице. Ещё лучше, если для второй перестановки применить другой ключ (другие количество символов ключа и порядок их следования).
Усложнить перестановку также можно используя специальные таблицы. Например, построить прямоугольную таблицу со столбцами разной длины. В такой таблице диграфы открытого текста оказываются разнесёнными на разные расстояния, что затрудняет криптоанализ. Или построить ромбовидную таблицу. В ней и строки и столбцы разной длины, неполные.
1.1.3. ПЕРЕСТАНОВКА ПО РОМБОВИДНОЙ
ТАБЛИЦЕ.
В ромбовидной таблице все строчки и столбцы состоят из нечётного числа букв. Начинаясь с одной буквы, длина строки и столбца каждый раз увеличивается на 2, пока не достигнет некоторого определённого значения, а затем каждый раз уменьшается на 2, пока снова не достигнет единицы (рис.2). Такая таблица симметрична относительно центральной строки и центрального столбца. Процедура шифрования и расшифрования такая же, как перестановка по простой прямоугольной таблице.
Из-за разной длины столбцов буквы открытого текста, которые стояли рядом, теперь будут разнесены на разные расстояния. Это усложняет взлом шифра методом диграфов.
1 2 3 4 5 6 7
А
Б В Г
Д Е Ё Ж З
И Й К Л М Н О
П Р С Т У
Ф Х Ц
Ч
Рис. 2. Ромбовидная таблица.
1.1.4. ПЕРЕСТАНОВКА ПО «УЛИТКЕ».
Исходный текст записывается в обычном порядке – слева направо, сверху вниз, построчно. В отличие от предыдущего метода здесь шифротекст выписывается из таб- лицы (из шифруемого блока символов) не колонками, а по спирали (метод улитки). Для этого таблица (текст) разбивается на квадратные фрагменты по 9 клеточек (3;3), как показано на рис. 3. В данном случае мы имеем два ключа. Первый ключ определяет размещение букв внутри фрагмента. Второй ключ определяет место (номер) каждого фрагмента внутри таблицы (блока), очерёдность выписывания из таблицы для шифрования и вписывания при расшифровании. Нумерация может начинаться как с центральной, так и с угловых клеток. Направление спирали может быть по часовой стрелке или против. В каждом фрагменте ключ может быть другим, что повысит стойкость шифра.
7 9 2 3 5
8 1 4
7 6 5
8 1 4
9 2 3
Рис. 3. Метод улитки
При шифровании выписываем каждые 9 букв по спирали согласно первого ключа и в очерёдности фрагментов, устанавливаемой вторым ключом. Таким образом, в зашифрованном тексте каждая группа из 9 букв будет расположена в порядке установленном вторым ключом.
Для расшифрования закрытый текст записывается группами по 9 букв в каждый фрагмент (каждая буква в очерёдности, определяемой первым ключом). Фрагменты заполняются в очерёдности, определяемой вторым ключом. Открытый текст считывается построчно.
Можно сказать, что этот способ является разновидностью венгерского кроссворда (филворда).
Источник
Классический криптоанализ
На протяжении многих веков люди придумывали хитроумные способы сокрытия информации — шифры, в то время как другие люди придумывали еще более хитроумные способы вскрытия информации — методы взлома.
В этом топике я хочу кратко пройтись по наиболее известным классическим методам шифрования и описать технику взлома каждого из них.
Шифр Цезаря
Самый легкий и один из самых известных классических шифров — шифр Цезаря отлично подойдет на роль аперитива.
Шифр Цезаря относится к группе так называемых одноалфавитных шифров подстановки. При использовании шифров этой группы «каждый символ открытого текста заменяется на некоторый, фиксированный при данном ключе символ того же алфавита» wiki.
Способы выбора ключей могут быть различны. В шифре Цезаря ключом служит произвольное число k, выбранное в интервале от 1 до 25. Каждая буква открытого текста заменяется буквой, стоящей на k знаков дальше нее в алфавите. К примеру, пусть ключом будет число 3. Тогда буква A английского алфавита будет заменена буквой D, буква B — буквой E и так далее.
Для наглядности зашифруем слово HABRAHABR шифром Цезаря с ключом k=7. Построим таблицу подстановок:
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | a | b | c | d | e | f | g |
И заменив каждую букву в тексте получим: C(‘HABRAHABR’, 7) = ‘OHIYHOHIY’.
При расшифровке каждая буква заменяется буквой, стоящей в алфавите на k знаков раньше: D(‘OHIYHOHIY’, 7) = ‘HABRAHABR’.
Криптоанализ шифра Цезаря
Малое пространство ключей (всего 25 вариантов) делает брут-форс самым эффективным и простым вариантом атаки.
Для вскрытия необходимо каждую букву шифртекста заменить буквой, стоящей на один знак левее в алфавите. Если в результате этого не удалось получить читаемое сообщение, то необходимо повторить действие, но уже сместив буквы на два знака левее. И так далее, пока в результате не получится читаемый текст.
Аффиный шифр
Рассмотрим немного более интересный одноалфавитный шифр подстановки под названием аффиный шифр. Он тоже реализует простую подстановку, но обеспечивает немного большее пространство ключей по сравнению с шифром Цезаря. В аффинном шифре каждой букве алфавита размера m ставится в соответствие число из диапазона 0… m-1. Затем при помощи специальной формулы, вычисляется новое число, которое заменит старое в шифртексте.
Процесс шифрования можно описать следующей формулой:
,
где x — номер шифруемой буквы в алфавите; m — размер алфавита; a, b — ключ шифрования.
Для расшифровки вычисляется другая функция:
,
где a -1 — число обратное a по модулю m. Это значит, что для корректной расшифровки число a должно быть взаимно простым с m.
С учетом этого ограничения вычислим пространство ключей аффиного шифра на примере английского алфавита. Так как английский алфавит содержит 26 букв, то в качестве a может быть выбрано только взаимно простое с 26 число. Таких чисел всего двенадцать: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25. Число b в свою очередь может принимать любое значение в интервале от 0 до 25, что в итоге дает нам 12*26 = 312 вариантов возможных ключей.
Криптоанализ аффиного шифра
Очевидно, что и в случае аффиного шифра простейшим способом взлома оказывается перебор всех возможных ключей. Но в результате перебора получится 312 различных текстов. Проанализировать такое количество сообщений можно и в ручную, но лучше автоматизировать этот процесс, используя такую характеристику как частота появления букв.
Давно известно, что буквы в естественных языках распределены не равномерно. К примеру, частоты появления букв английского языка в текстах имеют следующие значения:
Т.е. в английском тексте наиболее встречающимися буквами будут E, T, A. В то время как самыми редкими буквами являются J, Q, Z. Следовательно, посчитав частоту появления каждой буквы в тексте мы можем определить насколько частотная характеристика текста соответствует английскому языку.
Для этого необходимо вычислить значение:
,
где ni — частота i-й буквы алфавита в естественном языке. И fi — частота i-й буквы в шифртексте.
Чем больше значение χ, тем больше вероятность того, что текст написан на естественном языке.
Таким образом, для взлома аффиного шифра достаточно перебрать 312 возможных ключей и вычислить значение χ для полученного в результате расшифровки текста. Текст, для которого значение χ окажется максимальным, с большой долей вероятности и является зашифрованным сообщением.
Разумеется следует учитывать, что метод не всегда работает с короткими сообщениями, в которых частотные характеристики могут сильно отличатся от характеристик естественного языка.
Шифр простой замены
Очередной шифр, относящийся к группе одноалфавитных шифров подстановки. Ключом шифра служит перемешанный произвольным образом алфавит. Например, ключом может быть следующая последовательность букв: XFQABOLYWJGPMRVIHUSDZKNTEC.
При шифровании каждая буква в тексте заменяется по следующему правилу. Первая буква алфавита замещается первой буквой ключа, вторая буква алфавита — второй буквой ключа и так далее. В нашем примере буква A будет заменена на X, буква B на F.
При расшифровке буква сперва ищется в ключе и затем заменяется буквой стоящей в алфавите на той же позиции.
Криптоанализ шифра простой замены
Пространство ключей шифра простой замены огромно и равно количеству перестановок используемого алфавита. Так для английского языка это число составляет 26! = 2 88 . Разумеется наивный перебор всех возможных ключей дело безнадежное и для взлома потребуется более утонченная техника, такая как поиск восхождением к вершине:
- Выбирается случайная последовательность букв — основной ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
- Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв). Производится расшифровка и вычисляется коэффициент полученного текста.
- Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
- Шаги 2-3 повторяются пока коэффициент не станет постоянным.
Для вычисления коэффициента используется еще одна характеристика естественного языка — частота встречаемости триграмм.
Чем ближе текст к английскому языку тем чаще в нем будут встречаться такие триграммы как THE, AND, ING. Суммируя частоты появления в естественном языке всех триграмм, встреченных в тексте получим коэффициент, который с большой долей вероятности определит текст, написанный на естественном языке.
Шифр Полибия
Еще один шифр подстановки. Ключом шифра является квадрат размером 5*5 (для английского языка), содержащий все буквы алфавита, кроме J.
При шифровании каждая буква исходного текста замещается парой символов, представляющих номер строки и номер столбца, в которых расположена замещаемая буква. Буква a будет замещена в шифртексте парой BB, буква b — парой EB и так далее. Так как ключ не содержит букву J, перед шифрованием в исходном тексте J следует заменить на I.
Например, зашифруем слово HABRAHABR. C(‘HABRAHABR’) = ‘AB BB EB DA BB AB BB EB DA’.
Криптоанализ шифра Полибия
Шифр имеет большое пространство ключей (25! = 2 83 для английского языка). Однако единственное отличие квадрата Полибия от предыдущего шифра заключается в том, что буква исходного текста замещается двумя символами.
Поэтому для атаки можно использовать методику, применяемую при взломе шифра простой замены — поиск восхождением к вершине.
В качестве основного ключа выбирается случайный квадрат размером 5*5. В ходе каждой итерации ключ подвергается незначительным изменениям и проверяется насколько распределение триграмм в тексте, полученном в результате расшифровки, соответствует распределению в естественном языке.
Перестановочный шифр
Помимо шифров подстановки, широкое распространение также получили перестановочные шифры. В качестве примера опишем Шифр вертикальной перестановки.
В процессе шифрования сообщение записывается в виде таблицы. Количество колонок таблицы определяется размером ключа. Например, зашифруем сообщение WE ARE DISCOVERED. FLEE AT ONCE с помощью ключа 632415.
Так как ключ содержит 6 цифр дополним сообщение до длины кратной 6 произвольно выбранными буквами QKJEU и запишем сообщение в таблицу, содержащую 6 колонок, слева направо:
Для получения шифртекста выпишем каждую колонку из таблицы в порядке, определяемом ключом: EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE.
При расшифровке текст записывается в таблицу по колонкам сверху вниз в порядке, определяемом ключом.
Криптоанализ перестановочного шифра
Лучшим способом атаки шифра вертикальной перестановки будет полный перебор всех возможных ключей малой длины (до 9 включительно — около 400 000 вариантов). В случае, если перебор не дал желаемых результатов, можно воспользоваться поиском восхождением к вершине.
Для каждого возможного значения длины осуществляется поиск наиболее правдоподобного ключа. Для оценки правдоподобности лучше использовать частоту появления триграмм. В результате возвращается ключ, обеспечивающий наиболее близкий к естественному языку текст расшифрованного сообщения.
Шифр Плейфера
Шифр Плейфера — подстановочный шифр, реализующий замену биграмм. Для шифрования необходим ключ, представляющий собой таблицу букв размером 5*5 (без буквы J).
Процесс шифрования сводится к поиску биграммы в таблице и замене ее на пару букв, образующих с исходной биграммой прямоугольник.
Рассмотрим, в качестве примера следующую таблицу, образующую ключ шифра Плейфера:
Зашифруем пару ‘WN’. Буква W расположена в первой строке и первой колонке. А буква N находится во второй строке и третьей колонке. Эти буквы образуют прямоугольник с углами W-E-S-N. Следовательно, при шифровании биграмма WN преобразовывается в биграмму ES.
В случае, если буквы расположены в одной строке или колонке, результатом шифрования является биграмма расположенная на одну позицию правее/ниже. Например, биграмма NG преобразовывается в биграмму GP.
Криптоанализ шифра Плейфера
Так как ключ шифра Плейфера представляет собой таблицу, содержащую 25 букв английского алфавита, можно ошибочно предположить, что метод поиска восхождением к вершине — лучший способ взлома данного шифра. К сожалению, этот метод не будет работать. Достигнув определенного уровня соответствия текста, алгоритм застрянет в точке локального максимума и не сможет продолжить поиск.
Чтобы успешно взломать шифр Плейфера лучше воспользоваться алгоритмом имитации отжига.
Отличие алгоритма имитации отжига от поиска восхождением к вершине заключается в том, что последний на пути к правильному решению никогда не принимает в качестве возможного решения более слабые варианты. В то время как алгоритм имитации отжига периодически откатывается назад к менее вероятным решениям, что увеличивает шансы на конечный успех.
Суть алгоритма сводится к следующим действиям:
- Выбирается случайная последовательность букв — основной-ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
- Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв, перестановка столбцов или строк). Производится расшифровка и вычисляется коэффициент полученного текста.
- Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
- В противном случае замена основного ключа на модифицированный происходит с вероятностью, напрямую зависящей от разницы коэффициентов основного и модифицированного ключей.
- Шаги 2-4 повторяются около 50 000 раз.
Алгоритм периодически замещает основной ключ, ключом с худшими характеристиками. При этом вероятность замены зависит от разницы характеристик, что не позволяет алгоритму принимать плохие варианты слишком часто.
Для расчета коэффициентов, определяющих принадлежность текста к естественному языку лучше всего использовать частоты появления триграмм.
Шифр Виженера
Шифр Виженера относится к группе полиалфавитных шифров подстановки. Это значит, что в зависимости от ключа одна и та же буква открытого текста может быть зашифрована в разные символы. Такая техника шифрования скрывает все частотные характеристики текста и затрудняет криптоанализ.
Шифр Виженера представляет собой последовательность нескольких шифров Цезаря с различными ключами.
Продемонстрируем, в качестве примера, шифрование слова HABRAHABR с помощью ключа 123. Запишем ключ под исходным текстом, повторив его требуемое количество раз:
Цифры ключа определяют на сколько позиций необходимо сдвинуть букву в алфавите для получения шифртекста. Букву H необходимо сместить на одну позицию — в результате получается буква I, букву A на 2 позиции — буква C, и так далее. Осуществив все подстановки, получим в результате шифртекст: ICESCKBDU.
Криптоанализ шифра Виженера
Первая задача, стоящая при криптоанализе шифра Виженера заключается в нахождении длины, использованного при шифровании, ключа.
Для этого можно воспользоваться индексом совпадений.
Индекс совпадений — число, характеризующее вероятность того, что две произвольно выбранные из текста буквы окажутся одинаковы.
Для любого текста индекс совпадений вычисляется по формуле:
,
где fi — количество появлений i-й буквы алфавита в тексте, а n — количество букв в тексте.
Для английского языка индекс совпадений имеет значение 0.0667, в то время как для случайного набора букв этот показатель равен 0.038.
Более того, для текста зашифрованного с помощью одноалфавитной подстановки, индекс совпадений также равен 0.0667. Это объясняется тем, что количество различных букв в тексте остается неизменным.
Это свойство используется для нахождения длины ключа шифра Виженера. Из шифртекста по очереди выбираются каждая вторая буквы и для полученного текста считается индекс совпадений. Если результат примерно соответствует индексу совпадений естественного языка, значит длина ключа равна двум. В противном случае из шифртекста выбирается каждая третья буква и опять считается индекс совпадений. Процесс повторяется пока высокое значение индекса совпадений не укажет на длину ключа.
Успешность метода объясняется тем, что если длина ключа угадана верно, то выбранные буквы образуют шифртекст, зашифрованный простым шифром Цезаря. И индекс совпадений должен быть приблизительно соответствовать индексу совпадений естественного языка.
После того как длина ключа будет найдена взлом сводится к вскрытию нескольких шифров Цезаря. Для этого можно использовать способ, описанный в первом разделе данного топика.
Исходники всех вышеописанных шифров и атак на них можно посмотреть на GitHub.
Источник