Шифрование информации

XXV Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Шифрование информации

Кропотова А.А. 1
1МАОУ СОШ №77 г. Пермь
Кропотова Ю.И. 1
1МАОУ СОШ №77 г. Пермь
Автор работы награжден дипломом победителя I степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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

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

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

Актуальность: безопасное использование информации в различных областях жизни общества невозможно без обеспечения ее надежности и безопасности.

Объект: защита информации.

Предмет: шифрование.

Цель: написание программного кодадля различных методов шифрования, а также скрипта для надежного шифрования файлов с конфиденциальными данными.

Задачи:

  • изучить основные методы шифрования информации;

  • написать программный код на языке Python;

Гипотеза: в современном мире любой человек может защитить свою информацию шифрованием.

Методы исследования: изучение разнообразных источников информации, анализ, эксперимент, классификация, аналогия.

Вывод: резюмируя всё выше сказанное, тема защиты информации крайне актуальна в современном мире, поэтому нам необходимо узнать о методах ее защиты.

  1. Основанная часть

    1. Терминология

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

Рисунок 1. Схема шифрования и расшифрования с ключом

Ключ в криптографии - это сменный элемент шифра, который применен для шифрования конкретного сообщения.

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

Алгебраическая модель шифра. Обозначим буквой М исходный или открытый текст, С - шифротекст, Е - алгоритм шифрования, k1 – ключ зашифрования, D – алгоритм расшифрования, k2 – ключ расшифрования.

Процесс зашифрования можно выразить следующей формулой: C = Ek1 (M), а процесс расшифрования: М = Dk2 (C).

Алгоритмы зашифрования и расшифрования должны удовлетворять следующему равенству: М = Dk2 (Ek1(M)).

Ключи k1 и k2 могут иметь одинаковое значение, а в общем случае могут быть разными для алгоритмов расшифрования и зашифрования.

В соответствии со значениями ключей зашифрования и расшифрования в современной криптографии различают симметричное и асимметричное шифрование.

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

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

Стойкость шифра (криптостойкость) - способность шифра противостоять всевозможным атакам на него. Понятие стойкости шифра является центральным для криптографии.

    1. Взгляд в историю

Исторически, еще до нашей эры, существовало два метода шифров: шифры подстановки и перестановки.

      1. Шифры подстановки

Алгоритм шифров подстановки основан на принципе замены одной букву сообщения на другую по какой-то логике. Простой шифр подстановки - это таблица, в которой указано, что «А» меняем на «Я», «Б» на «Ю» и т. д. По этой таблице зашифровываем, по ней же расшифровываем.

Одним из простых, является шифр Цезаря, где таблица подстановки формируется не случайной перестановкой символов, а сдвигом на три символа: «А» меняется на «В», «Б» на «Г» и т. д. Данный шифр вместе со всеми его вариантами (всего 32 варианта при 33 буквах в алфавите) перебрать очень легко. Можно перебрать полным перебором. Программный код, результаты выполнения скриптов зашифрования, расшифрования и атака «полным перебором» см. Приложение 1

Шифры подстановки, где таблица формируется случайной перестановкой символов, например, шифр Цезаря с ключевым словом (Программный код, результаты выполнения скриптов зашифрования, расшифрования см. Приложение 2) или шифрующие таблице Трисемуса (Программный код, результаты выполнения скриптов зашифрования, расшифрования см. Приложение 3), имеют довольно неплохую стойкость, с точки зрения размера ключа. Размерность ключа равна факториалу размерности алфавита. Для русского алфавита 33!, если взять log233!=122,708 бит.

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

Программный код скрипта помощника для частотного анализа, результаты выполнения скрипта см. Приложение 4

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

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

Криптоанализ шифра может быть проведен в несколько этапов: поиск длины ключа; поиск ключевого слова. Для определения длины ключа можно использовать метод индекса совпадений, предложенный Уильямом Фридманом еще 1920г. Суть метода заключается в том, что вероятность совпадения двух случайных букв в тексте достаточной длины — это постоянная величина. То есть для определения длины ключа К, нужно вычислить индекс совпадений для различных значений его значений (К=1,2,3…). Из полученных величин выбрать максимальную. Когда известна длина ключа, остается вычислить сдвиги используемых алфавитов и подобрать ключ перебором.

      1. Шифры перестановки

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

Таблица 1 «Таблицы перестановок, общий случай»

1

2

3

...

n

- позиция символа в открытом тексте

I1

I2

I3

...

In

- позиция символа в шифротексте

 

Таким образом, при длине сообщения n символов существует ровно n! ключей.

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

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

При дешифровании текста используют частотные характеристики открытого текста. Например, отсутствие запретных биграмм2, таких как «ГЛАСНАЯ + Ь», «ЪЬ», «ПРОБЕЛ + Ь». Однако для получения устойчивой картины длина открытого текста должна быть существенно больше длины ключа.

    1. Абсолютно стойкий шифр

  В ХХ веке Клод Шеннон, сформулировал и доказал теорему. Длина ключа равна длине сообщения. Ключ сгенерирован случайным образом. Ключ используется однократно. Имея такой ключ, мы получаем абсолютно стойкую конструкцию.

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

    1. Современные шифры

С развитием компьютерных технологий, основные объемы информация хранятся, передаются, обрабатываются в двоичном виде (стандарт ANSII), последовательность единиц и нулей -биты3. Любая информация, будь то текстовое сообщение или рисунок, для использования ее в электронном виде, кодируется в двоичное представление. Таким образом компьютеры «работают» не с буквами алфавита, а цифрами. Несмотря на это, каждый современный шифр тем или иным способом базируется на двух основных принципах - подстановки и перестановки, хоть их использование стало более сложным.

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

      1. Поточные симметричные шифры

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

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

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

Рисунок 2. Схема поточного шифра

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

        1. RC4

Один из алгоритм симметричного поточного шифрования называется RC4, также известен как ARC4 или ARCFOUR. Это шифр, получивший широкое применение, например, в протоколах SSL, TLS, а также в WEP.

Достоинствами данного шифра является простота реализации и скорость работы. Но со времен его разработки (1987г) обнаружено не мало слабых мест, и для него существует несколько атак. Алгоритм работы и программирую реализацию см. Приложение 10

      1. Блочные симметричные шифры

Блочный шифр - другой механизм для симметричного шифрования. Он устроен чуть по-другому. Информация обрабатывается блоками определённой длины (обычно 64, 128, 256 бит), применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами. В результате повторения раундов происходит потеря, с нарастающим эффектом, соответствия битов между блоками открытых и зашифрованных данных. Размер ключа точно такой, как для современных реализаций поточных алгоритмов, в основном от 128 до 256 бит.

        1. Сеть Фейстеля

Сеть Фейстеля – метод блочного шифрования, оперирует блоками открытого текста, лежит в основе большого количества шифров. Алгоритм работы рассмотрен в Приложение 11

Исследования сети Фейстеля показали, что при независимых раундовых ключах и криптостойкой псевдослучайной функции f трех раундов сети Фейстеля будет достаточно, чтобы шифротекст был псевдослучайным. Это говорит о том, что шифры, основанные на сети Фейстеля, на данный момент достаточно криптостойки.

Из широко распространенных блочных симметричных шифров можно выделить — DES4 (digital encrypted standard) и AES (advanced encrypted standard). DES ровесник RC4, имеет размер блока — 64 бита, а ключа — 56 бит.

        1. DES

DES первый шифр который был стандартизирован. В основе алгоритма лежит сеть Фейстеля из 16 раундов с ключом длиной 56 бит и размером блока 64 бита. Алгоритм работы и программирую реализацию см. Приложение 12

На сегодняшний день длина ключа 56-битный ключ уязвим к брут-форс атакам. Что бы решить эту проблему предложили использовать два ключа и применять последовательно шифр два раза - Double DES.

Double DES оказался уязвим к атаке «встреча посередине». Данная атака требует раза в четыре больше вычислений, чем Брут-форс обычного ключа DES, а также большого количества памяти для хранения промежуточных результатов. Тем не менее на практике данная атака осуществима, и это делает Double DES не совсем пригодным.

А вот использование трех ключей и тройное применение шифра DES по определенной схеме (см. Рисунок 3) дало приемлемый результат и позволило шифру Triple DES стать эффективной и простой заменой DES

Рисунок 3. Схема Triple DES

        1. AES

На смену DES и его разновидностям в 2001г был принят в качестве стандарта в США шифр AES и является им по сегодняшний день. Размер блока в AES 128 бит, вместо 64 как у DES. Данный шифр не использует сеть Фейстеля, хотя он также много раундовый. Для каждого из раундов5 генерируются из 128 битного ключа свой раундовый ключ.

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

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

        1. ГОСТ 28147—89 (Магма) и ГОСТ 34.12—2015 «Кузнечик»

ГОСТ 28147-89 - государственный стандарт СССР. Алгоритм блочного, симметричного шифрования с размером блока 64 бита и ключа 256 бита. Данный шифр построен на сети Фейстеля, алгоритм работы схож с алгоритмом DES подобных шифров, и также имеет несколько режимов шифрования: режим простой замены (Electronic Codebook, ЕСВ), режим гаммирования (Counter, CTR), режим гаммирования с обратной связью по шифротексту (Cipher Feedback, CFB), режим выработки имитовставки (Message Authentication Code algorithm).

ГОСТ 34.12—2015 – национальный стандарт РФ, выпушен на смену ГОСТ 28147-89. Алгоритм блочного, симметричного шифрования с размером блока 128 бит, против 64 у Магмы и ключа 256 бита. В данном шифре применяется SP-сеть (SubstitutionPermutation network, подстановочно-перестановочная сеть) - разновидность сети Фейстеля. Сеть состоит из Р- и S- блоков. S-блок — блок подстановок, блок нелинейных замен. P-блок - блок перестановок, блок линейных замен. Шифр состоит из 10 раундов, в последнем раунде выполняется только наложение раундового ключа.

В новом ГОСТе режимов добавили следующие режимы шифрования: режим гаммирования с обратной связью по выходу (Output Feedback, OFB), режим простой замены с зацеплением (Cipher Block Chaining, СВС).

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

      1. Ассиметричные шифры

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

К минусам ассиметричных систем относительно симметричных можно отнести:

  • более низкую скорость работы. Поэтому данные алгоритмы используются с небольшими объемами открытого текста.

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

        1. RSA

RSA (Rivest—Shamir—Adleman) – алгоритм ассиметричного блочного шифрования, наиболее распространённый на сегодняшний день. Криптостойкость данного алгоритма держится на вычислительной сложности задачи факторизации больших чисел. Для зашифрования использует операцию возведения в степень по модулю N, а для расшифрования функцию Эйлера от числа N. Для применения последний необходимо знать разложение числа N на простые множители. Например, произведение чисел 15171977 и 22022010 равно 334117429213770. Зная число 334117429213770, как узнать числа 15171977 и 22022010? Умножение простая операция и не требует значительного количества ресурсов, а вот разложение на простые множители в обратную сторону невероятно сложно и затратно.

      1. Квантовые технологии

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

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

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

  1. Заключение

Результатом работы стало написание скриптов на языке Python для шифрования текста различными методами см. приложения. Для шифра Цезаря написан скрип дешифрования полным перебором см. Приложение 1. Написан скрипт помощник для дешифрования шифротекста с помощью частотного анализа и выполнен пример дешифрования см. Приложение 4.

Для надежной защиты своих конфиденциальных данных был выбран шифр AES и на его основе написан скрипт шифрования файла с конфиденциальной информацией см. Приложение 14.

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

Но ситуация меняется и в ряде стран разработаны и приняты стандарты в области криптографической защиты, например, СКЗД — в России или AES — в США.

Также стоит отметить что сделать абсолютно стойкий шифр возможно, но требует больших временных и финансовых затрат. Поэтому в основном на практике используются шифры достаточной стойкости, в том числе такие как стандарт США AES или ГОСТ 34.12—2015 РФ, которые не имеют практических атак на сегодняшний день.

  1. Список литературы

  1. Бабаш А.В, Шанкин Г.П. «Криптография», Москва, изд. СОЛОН-ПРЕСС, 2007.

  2. Ильин М.Е., Калинкина Т.И., Пржегорлинский В.Н. «Криптографическая защита информации в объектах информационной инфраструктуры», Москва, изд. «Академия» 2019.

  3. Девид Вонг «Реальная криптография», Сбп, изд. Питер, 2004, перевод с английского.

  4. Сингх Саймон «Книга шифров: тайная история шифров и их расшифровки», Москва, изд. Астель, 2009, перевод с английского.

  5. https://en.wikipedia.org/wiki/Vigenère_cipher#Cryptanalysis

  6. https://habr.com/ru/companies/yandex/articles/324866/

  7. https://ru.wikipedia.org

  1. Приложения

  1. Шифр Цезаря

Самый простой и один из самых известных классических шифров - шифр Цезаря. Данный шифр является шифром подстановки. В шифре Цезаря ключом служит произвольное число k, выбранное в интервале от 1 до значения мощности алфавита. Каждый символ открытого текста заменяется символом, стоящей на k знаков дальше него в использованном алфавите.

В примере мы использовали русский алфавит. В качестве открытого текста фразу «сообщение зашифровано методом цезаря», сдвиг приняли 3. Результат шифротектс — "пмм чглжгюёячжтомаяллмюкгрмвмкюфгёяоэ».

Результат выполнения скрипта шифрования, расшифрования показан на Рисунок 4

Рисунок 4. Результат выполнения программы шифрования, расшифроания шифра Цезаря

Для данного шифра количество ключей равно мощности алфавита. Для сообщений на русском языке количество ключей равно 32, на английском еще меньше — 25. Малое пространство ключей делает брут-форс (атака полным перебором) самым эффективным и простым вариантом атаки.

Программный код шифра Цезаря, а также атака полным перебором представлен на рисунке Рисунок 5.

Результат выполнения программы дешифрования полным перебором показан на Рисунок 6.

Рисунок 5 «Программный код зашифрования, расшифрования шифром Цезаря, код атака полным перебором»

Рисунок 6. Результат выполнения программы дешифрования шифра Цезарь

  1. Шифр Цезаря с ключевым словом

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

Результат выполнения скрипта шифрования, расшифрования показан на Рисунок 7

Рисунок 7. Результат выполнения программы шифрования, расшифрования шифра Цезаря с ключевым словом

Достоинством шифра Цезаря с ключевым словом это огромное количество возможных ключевых слов. Атака «грубой силы» очень трудна. Для данного шифра количество ключей равно факториалу мощности алфавита. Для сообщений на русском языке количество ключей равно 32!, на английском — 25!.

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

  1. Шифрующие таблицы Трисемуса

В данном шифре используется таблица, и ключевое слово или фраза.

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

Достоинства и недостатки данного шифра аналогичны шифру Цезаря с ключевым словом. Результат выполнения скрипта шифрования, расшифрования показан на Error: Reference source not foundРисунок 8. Программный код показан на Рисунок 9

Рисунок 8. Результат выполнения программы шифрования, расшифрования шифра Трисемуса

Рисунок 9 Программный код зашифрования, расшифрования шифром Трисемуса

  1. Частотные анализ шифротекста полученного методом Цезаря с ключевым словом

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

«фермчьлканоэйкяжеьезеьдэибйчьабфермпъоныьлмеьлкикхеьуэнокойккьэйэзедэьобжноэььйкьокзшжкьбнзеькйьакноэокуйкьазеййчё». Результат работы скрипта при запуске представлен на Рисунок 10

Рисунок 10. Результат частотного анализа шифротекста при запуске

На шаге 1 и 2 согласно таблицы частотного анализа букв русского языка мы произвели замены букв «ь» и «к» на « », «о» соответственно. Результат на

Рисунок 11. Результат частотного анализа шифротекста шаг 2

Далее рассмотрев третье слово «езе», предположили, что это соответствует слову «или». на третьем и четвертом шаге произвели соответствующие замены см. Рисунок 12

Рисунок 12. Результат частотного анализа шифротекста шаг 4

Далее предположили, что 13 слово «--ли» является словом «если», а также обратив внимание на 11 и 14 слова предположили, что буква «й» соответствует букве «н». произвели соответствующие замены см. Рисунок 13

Рисунок 13. Результат частотного анализа шифротекста шаг 7

Далее предположили, что окончание последнего слова «ый», и первая буква соответственно «д», на шаге 8,9,10 произвели замены. Далее предположили, что слова 2, 6, 7 начинаются на «п», и, следовательно, шестое слова будет «при». На шаге 11,12 выполнили замены см. Рисунок 14

Рисунок 14. Результат частотного анализа шифротекста шаг 12

Далее по первому слову заменили «ф» на «ш», «р» на «ф», затем «э» на «а», «ж» на «к», «у» на «ч» и т.д. В результате получили открытый текст «шифры подстановки или замены дешифруются при помощи частотного анализа текста, но только если он достаточно длинный» см. Рисунок 15, Рисунок 16

Рисунок 15. Результат частотного анализа шифротекста шаг 27

Рисунок 16. Результат частотного анализа шифротекста окончание

Рисунок 17 Программный код для частотного анализа шифротекста

  1. Шифр Плейфера

Шифр Плейфера (биграммный шифр) — подстановочный шифр, реализующий замену биграмм, что делает его более эффективным, чем шифр Цезаря, который работает с отдельными буквами. Результат выполнения скрипта шифрования, расшифрования показан на Рисунок 18

Рисунок 18. Результат выполнения скрипта шифрования, расшифрования методом Плейфера

Для данного шифра количество ключей равно факториалу мощности алфавита. Для сообщений на русском языке количество ключей равно 32!, на английском — 25!. В нашем случае количество возможных ключей — 40!6. Кроме того, в отличии от шифра Цезаря с ключевым словом, шифровка скрывает частоту отдельных букв.

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

Рисунок 19. Программный код шифра Плейфера

  1. Шифр Виженера

Результат выполнения скрипта шифрования, расшифрования показан на Рисунок 20

Рисунок 20. Результат выполнения скрипта шифрования, расшифрования методом Виженера

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

Рисунок 21 Программный код шифр Виженера

  1. Шифры одинарной перестановки

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

1

2

3

...

n

I1

I2

I3

...

In

Результат выполнения скрипта шифрования, расшифрования показан на Рисунок 22Рисунок 22

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

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

Рисунок 23. Программный код шифра одиночной перестановки

  1. Шифр блочной одинарной перестановки

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

Результат выполнения скрипта шифрования, расшифрования показан на Рисунок 24Рисунок 24

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

Рисунок 25. Программный код шифра блочной одиночной перестановки

  1. Шифр вертикальной перестановки.

В процессе шифрования сообщение записывается в виде таблицы. Количество колонок таблицы определяется размером ключа. Например, зашифруем сообщение ЗАЩИТА ИНФОРМАЦИИ с помощью ключа 5213047.

Так как ключ содержит 6 цифр, дополним сообщение до длины кратной 6 произвольно выбранными буквами «Р» и запишем сообщение в таблицу, содержащую 6 колонок, слева направо:

6

3

2

4

1

5

З

А

Щ

И

Т

А

_

И

Н

Ф

О

Р

М

А

Ц

И

И

Р


Для получения шифротекста выпишем каждый столбец из таблицы в порядке, определяемом ключом: ТОИЩНЦАИАИФИФРРЗ М.

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

Рисунок 26. Результат выполнения скрипта шифрования, расшифрования методом вертикальной подстановки

Рисунок 27. Программный код шифр вертикальной блочной перестановки

  1. RC4

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

Инициализация RC4 проходит в два этапа:

  • инициализация S-блока. Для инициализации S-блока используется алгоритм ключевого расписания (Key-Scheduling Algorithm). С начала заполняется массива S, далее этот массив перемешивается путём перестановок, определяемых ключом.

  • генерация псевдослучайного слова. Эта часть алгоритма называется генератором псевдослучайной последовательности (англ. pseudo-random generation algorithm, PRGA). Генератор ключевого потока RC4 переставляет значения, хранящиеся в S. В одном цикле RC4 определяется одно n-битное слово K из ключевого потока.

Программный код представлен на рисунке

Рисунок 28. Программный код шифра RC4

Рисунок 29. Результат выполнения программы шифрования, расшифрования шифра RC4

  1. Сеть Фейстеля

Сеть Фейстеля состоит из ячеек, работа которых на примере одного блока происходит в следующем порядке:

  • Блок разбивается на две равные части - левую (L) и правую (R)

  • После разбиения левый подблок изменяется функцией F с использованием ключа k: x = f(L, K). В качестве функции может быть любое преобразование, например, шифр сдвига с ключом K.

  • Полученный подблок складывается по модулю 2 с правым подблоком R: x = x⊕R.

  • Далее полученные части меняются местами и склеиваются.

Рисунок 30 Ячейка Фейстеля

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

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

  1. Шифр DES

Схемы зашифрования и расшифрования шифра DES представлены на Рисунок 31

Рисунок 31. Схемы зашифрования/рассшифрованияшифра шифром DES

Порядок работы:

  • Текст разбивается на блоки по 64 бита.

  • Из 56-битного ключа генерируется 16 48-битных раундовых ключей. При необходимости биты 8,16,24,32,40,48,56,64 могут использоваться для контроля четности (обнаружение ошибок при обмене и хранении ключей). Генерация раундовых ключей происходит согласно следующего алгоритма см. Рисунок 32:

Рисунок 32. Схема генерации раундовых ключей

  • Удаление проверочных битов

  • Деление ключа 56 бит на две половины C и D по 28 бит каждая.

  • Левый циклический сдвиг. В раундах 1 ,2, 9, 16 сдвиг происходит на 1 бит, в остальных раундах на 2 бита

  • Объединение частей C и D в блок 56 бит и перестановка сжатия P, в ходе которой формируется ключ раунда 48 бит.

  • Каждый блок подвергается перестановке IP, все биты входного блока перемешиваются согласно таблице

  • Блок делится на половинки и поступает в сеть Фейстеля из 16 раундов.

  • Половинки соединяются.

  • Конечная перестановка IP-1. Данная перестановка является обратной к первоначальной перестановке

Функция, заданная в сети Фейстеля получает на входе 32 битный блок Ri-1 и 48 битный ключ. Вычисления производятся в следующем порядке

  • Расширение блока 32 бит до 48 бит функция E. Биты 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 дублируются

  • Сложение по модулю 2 с ключом ki : E(Ri-1)ki

  • Преобразование S, состоящие из 8 блоков

Полученный после сложения по модулю 2 блок делится на 8 последовательных блоков по 6 бит: E(Ri-1)ki = B1B2B8

Далее каждый 6 битовый блок при помощи S преобразований трансформируется в 4 битный блок.

Перестановка P.

Программный код шифра DES языке програмирования Python см. Рисунок 34, Рисунок 35, Рисунок 36.

Результат выполнения программы шифрования, расшифрования шифром DES см. Рисунок 33.

Рисунок 33. Результат выполнения программы шифрования, расшифрования шифром DES

Рисунок 34. Программный код шифра DES (начало)

Рисунок 35 Программный код шифра DES (окончание)

Рисунок 36 Файл конфигурации для шифра DES

  1. Шифр AES

В AES в отличии сети Фейстеля, блок открытого текста не делится на половинки, а записывается в матрицу размером 4 на 4. Каждый элемент матрицы — байт. Всего получается 16 байт (128 бит). Они и составляют блок AES целиком.

В начале работы, AES производит вычисление раундовых ключей (ExpandKey).

Каждый раунд состоит из четырех операций.

Первая операция (SubBytes) — подстановка по специальной таблице (S-боксу).

Вторая операция (ShiftRows) — побайтовый сдвиг. В матрице 4 на 4 первый ряд остается без изменений, второй ряд сдвигается на 1 байт влево, третий — на 2 байта, четвертый — на 3, циклично.

Третья (MixColumns) — перемешивание внутри колонок. Переставляем биты внутри каждой колонки. Можно считать ее умножением на специальную функцию.

Четвертая (AddRoundKey) — XOR каждого байта в каждой колонке с соответствующим байтом ключа.

Мы повторяем 4 описанных шага 10 (12 или 14) раз, и на выходе из 128-битного блока снова получаем 128-битный блок.

Рисунок 37. Программный код шифра AES (начало)

Рисунок 38. Программный код шифра AES (окончание)

Рисунок 39. Результат выполнения скрипта зашифрования, расшифрования шифром AES

Рисунок 40. Файл конфигурации шифра AES

  1. Программа для шифрования содержимого файла шифром AES

Рисунок 41. Программный код для шифрования, расшифрования содержимого файла

1 Дешифрование - восстановление открытого текста без знания ключа

2 Биграмма – пара соседних букв

3 Бит –единица измерения цифровой информации, которая может принимать значения 0 или 1

4 разработанный фирмой IBM и утверждённый правительством США в 1977 году как официальный стандарт (FIPS 46-3).

5 Количество раундов 10, 12 иди 14 зависит от длины ключа 128, 192 или 256 бит

6(факториал 40) 40! = 815915283247897734345611269596115894272000000000

7В качестве ключа может быть слово или фраза. Тогда порядок выписывания столбцов соответствует алфавитному порядку букв в ключе.

66

Просмотров работы: 14