лаб1. Лабораторная работа 6 по дисциплине Криптографическая защита информации Алгоритм des
Скачать 287.94 Kb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «БАШКИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» ИНСТИТУТ ИСТОРИИ И ГОСУДАРСТВЕННОГО УПРАВЛЕНИЯ КАФЕДРА УПРАВЛЕНИЯ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТЬЮ Лабораторная работа № 6-7. по дисциплине Криптографическая защита информации Алгоритм DES. Выполнил: Студент 4 курса очной формы обучения Специальность 10.05.05 «Безопасность информационных технологий в правоохранительной сфере» Ямгуров Роберт Рафаэлевич Проверила: ассистентка ____________/Е. П. Белова «__» __________ 2020 г. УФА – 2020 СодержаниеВведение 3 Задание 9 Заключение. 15 ВведениеОдной из наиболее известных криптографических систем с закрытым ключом является DES – Data Encryption Standard. Эта система первой получила статус государственного стандарта в области шифрования данных. Она разработана специалистами фирмы IBM и вступила в действие в США 1977 году. Алгоритм DES широко использовался при хранении и передаче данных между различными вычислительными системами; в почтовых системах, в электронных системах чертежей и при электронном обмене коммерческой информацией. Стандарт DES реализовывался как программно, так и аппаратно. Предприятиями разных стран был налажен массовый выпуск цифровых устройств, использующих DES для шифрования данных. Все устройства проходили обязательную сертификацию на соответствие стандарту. Несмотря на то, что уже некоторое время эта система не имеет статуса государственного стандарта, она по-прежнему широко применяется и заслуживает внимания при изучении блочных шифров с закрытым ключом. Длина ключа в алгоритме DES составляет 56 бит. Именно с этим фактом связана основная полемика относительно способности DES противостоять различным атакам. Как известно, любой блочный шифр с закрытым ключом можно взломать, перебрав все возможные комбинации ключей. При длине ключа 56 бит возможны 256 разных ключей. Если компьютер перебирает за одну секунду 1 000 000 ключей (что примерно равно 220), то на перебор всех 256 ключей потребуется 236 секунд или чуть более двух тысяч лет, что, конечно, является неприемлемым для злоумышленников. Однако возможны более дорогие и быстрые вычислительные системы, чем персональный компьютер. Например, если иметь возможность объединить для проведения параллельных вычислений миллион процессоров, то максимальное время подбора ключа сокращается примерно до 18 часов. Это время не слишком велико, и криптоаналитик, оснащенный подобной дорогой техникой, вполне может выполнить вскрытие данных, зашифрованных DES за приемлемое для себя время. Вместе с этим можно отметить, что систему DES вполне можно использовать в небольших и средних приложениях для шифрования данных, имеющих небольшую ценность. Для шифрования данных государственной важности или имеющих значительную коммерческую стоимость система DES в настоящее время, конечно, не должна использоваться. В 2001 году после специально объявленного конкурса в США был принят новый стандарт на блочный шифр, названный AES (Advanced Encryption Standard), в основу которого был положен шифр Rijndael, разработанный бельгийскими специалистами. Основные параметры DES: размер блока 64 бита, длина ключа 56 бит, количество раундов – 16. DES является классической сетью Фейштеля с двумя ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок данных в 64-битный выходной блок. Стандарт DES построен на комбинированном использовании перестановки, замены и гаммирования. Шифруемые данные должны быть представлены в двоичном виде. Общая структура DES представлена на рис. 1. Процесс шифрования каждого 64-битового блока исходных данных можно разделить на три этапа: начальная подготовка блока данных; 16 раундов "основного цикла"; конечная обработка блока данных. На первом этапе выполняется начальная перестановка 64-битного исходного блока текста, во время которой биты определенным образом переупорядочиваются. На следующем (основном) этапе блок делится на две части (ветви) по 32 бита каждая. Правая ветвь преобразуется с использованием некоторой функции F и соответствующего частичного ключа, получаемого из основного ключа шифрования по специальному алгоритму преобразования ключей. Затем производится обмен данными между левой и правой ветвями блока. Это повторяется в цикле 16 раз. Наконец, на третьем этапе выполняется перестановка результата, полученного после шестнадцати шагов основного цикла. Эта перестановка обратна начальной перестановке. Рисунок 1 - Общая схема DES Рассмотрим более подробно все этапы криптографического преобразования по стандарту DES. На первом этапе 64-разрядный блок исходных данных подвергается начальной перестановке. В литературе эта операция иногда называется "забеливание" – whitening. При начальной перестановке биты блока данных определенным образом переупорядочиваются. Эта операция придаёт некоторую "хаотичность" исходному сообщению, снижая возможность использования криптоанализа статистическими методами. Одновременно с начальной перестановкой блока данных выполняется начальная перестановка 56 бит ключа. Из рис. 1 видно, что в каждом из раундов используется соответствующий 48-битный частичный ключ Ki. Ключи Ki получаются по определенному алгоритму, используя каждый из битов начального ключа по нескольку раз. В каждом раунде 56-битный ключ делится на две 28-битовые половинки. Затем половинки сдвигаются влево на один или два бита в зависимости от номера раунда. После сдвига определенным образом выбирается 48 из 56 битов. Так как при этом не только выбирается подмножество битов, но и изменяется их порядок, то эта операция называется "перестановка со сжатием". Ее результатом является набор из 48 битов. В среднем каждый бит исходного 56-битного ключа используется в 14 из 16 подключей, хотя не все биты используются одинаковое количество раз. Далее выполняется основной цикл преобразования, организованный по сети Фейстеля и состоящий из 16 одинаковых раундов. При этом в каждом раунде (рис. 2) получается промежуточное 64-битное значение, которое затем обрабатывается в следующем раунде. Рисунок 2 - Структура одного раунда DES Левая и правая ветви каждого промежуточного значения обрабатываются как отдельные 32-битные значения, обозначенные L и R. Вначале правая часть блока Ri расширяется до 48 битов, используя таблицу, которая определяет перестановку плюс расширение на 16 битов. Эта операция приводит размер правой половины в соответствие с размером ключа для выполнения операции XOR. Кроме того, за счет выполнения этой операции быстрее возрастает зависимость всех битов результата от битов исходных данных и ключа (это называется "лавинным эффектом"). Чем сильнее проявляется лавинный эффект при использовании того или иного алгоритма шифрования, тем лучше. После выполнения перестановки с расширением для полученного 48-битного значения выполняется операция XOR с 48-битным подключом Ki. Затем полученное 48-битное значение подается на вход блока подстановки S (от англ. Substitution - подстановка), результатом которой является 32-битное значение. Подстановка выполняется в восьми блоках подстановки или восьми S-блоках (S-boxes). При выполнении этой операции 48 битов данных делятся на восемь 6-битовых подблоков, каждый из которых по своей таблице замен заменяется четырьмя битами. Подстановка с помощью S-блоков является одним из важнейших этапом DES. Таблицы замен для этой операции специально спроектированы специалистами так, чтобы обеспечивать максимальную безопасность. В результате выполнения этого этапа получаются восемь 4-битовых блоков, которые вновь объединяются в единое 32-битовое значение. Далее полученное 32-битовое значение обрабатывается с помощью перестановки Р (от англ. Permutation – перестановка), которая не зависит от используемого ключа. Целью перестановки является максимальное переупорядочивание битов такое, чтобы в следующем раунде шифрования каждый бит с большой вероятностью обрабатывался другим S-блоком. И, наконец, результат перестановки объединяется с помощью операции XOR с левой половиной первоначального 64-битового блока данных. Затем левая и правая половины меняются местами, и начинается следующий раунд. После шестнадцати раундов шифрования выполняется конечная перестановка результата. Эта перестановка инверсна (обратна) начальной перестановке. После выполнения всех указанных шагов блок данных считается полностью зашифрованным и можно переходить к шифрованию следующего блока исходного сообщения. Как известно, криптографическая система должна позволять не только зашифровать, но и расшифровать сообщения. Можно было бы ожидать, что процесс расшифрования по DES сильно запутан. Однако разработчики так подобрали различные компоненты стандарта, чтобы для зашифрования и расшифрования использовался один и тот же алгоритм. При расшифровании на вход алгоритма подается зашифрованный текст. Единственное отличие состоит в обратном порядке использования частичных ключей Ki. K16 используется на первом раунде, K1 — на последнем раунде. После последнего раунда процесса расшифрования две половины выхода меняются местами так, чтобы вход заключительной перестановки был составлен из R16 и L16. Выходом этой стадии является незашифрованный текст. ЗаданиеИспользуем программу, скачанную с интернета, которая шифрует файл по алгоритму DES с сжатием RLE и кодированию по Хаффману. Этот тип сжатия называют двойным сжатием. Ссылка: https://yadi.sk/d/e3LPPaqcmEGhkw - ссылка на Я.Диск. https://orenstudent.ru/DES.htm - ссылка на работу программы. Там же есть некоторые выдержки из кода программы. При желании, можно обратиться к автору и получить код полностью. Из чего состоит программа? Сам исполняемый файл с логикой работы. Файл ключа. Библиотека msvcr110.dll – необходима для работы программы. Папка с примером-текстом, зашифрованным файлом и расшифрованным файлом. Алгоритм RLE является, наверное, самым простейшим из всех: суть его заключается в кодировании повторов. Другими словами, мы берём последовательности одинаковых элементов, и «схлопываем» их в пары «количество/значение». Например, строка вида «AAAAAAAABCCCC» может быть преобразована в запись вроде «8×A, B, 4×C». Это, в общем-то, всё, что надо знать об алгоритме. Построение кода Хаффмана сводится к построению соответствующего бинарного дерева по следующему алгоритму: Составим список кодируемых символов, при этом будем рассматривать один символ как дерево, состоящее из одного элемента c весом, равным частоте появления символа в строке. Из списка выберем два узла с наименьшим весом. Сформируем новый узел с весом, равным сумме весов выбранных узлов, и присоединим к нему два выбранных узла в качестве детей. Добавим к списку только что сформированный узел вместо двух объединенных узлов. Если в списке больше одного узла, то повторим пункты со второго по пятый. Как работает кодировка Хаффамана, на примере слова abracadabra. R = {A, B, R, C, D}, N = {5, 2, 2, 1, 1}. Скриншот начала работы программы. Прежде, чем зашифровать текст, откроем файл key, в котором можно прописать свой ключ. Само название файла ключа, к сожалению, изменять нельзя. Это является минусом, однако при должном желании можно исправить данный недостаток. Запишем в файл слово «Помидорка». Теперь используем любой файл, который хотим зашифровать. Для этого нажимаем кнопку «Обзор», после этого появится окно с выбором файла. Я создал текстовый файл с именем «тест», в котором написал разноязычный текст, а также специальные символы. Теперь нажимаем в основном окне программы кнопку «Кодировать». Получаем файл с добавлением расширения .des и выводим окно. Файл успешно зашифрован. При попытке открыть файл обычным текстовым блокнотом будут показываться китайские иероглифы. Теперь, чтобы убедиться в правильной работе файла с ключом, запишем неправильный ключ в файл ключа. Перезапустим программу, так как программа использует стек для файла ключа. Соответственно, манипуляции с неверным расшифрованием не получатся. Теперь изменим ключ в файле ключа. Например, слово «Огурец». Снова открываем окно с выбором файла, выбираем наш зашифрованный текст. Нажимаем кнопку «Декодировать», получаем то же окно. Как итог: Мы получили неверный текст. Стоит обратить внимание, что расшифрованный текст находится в текстовом файле «тест_des.txt». Теперь расшифруем текст правильным ключом. Напоминаю, что ключевое слово – «Помидорка». Ищем файл, нажимаем кнопку, и наконец, файл расшифровывается. Итог: Мы получили наш нужный текст. Заключение.Я научился зашифровывать текст по алгоритму DES, используя специальную созданную для этих целей программу для шифрования алгоритмом DES с сжатием RLE + Кодировка Хаффмана. |