Алгоритм шифрования/хеширования двоичных файлов на основе сети Фейстеля: принцип работы, реализация, скорость работы
Алгоритмы на основе сети Фейстеля могут быть сконструированы таким образом, что для зашифрования и расшифрования могут использоваться один и тот же код алгоритма — разница между этими операциями может состоять лишь в порядке применения ключей Ki; такое свойство алгоритма наиболее полезно при его аппаратной реализации или на платформах с ограниченными ресурсами; Сеть Фейстеля подразумевает… Читать ещё >
Алгоритм шифрования/хеширования двоичных файлов на основе сети Фейстеля: принцип работы, реализация, скорость работы (реферат, курсовая, диплом, контрольная)
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Дальневосточный государственный технический университет
(ДВПИ им. В.В. Куйбышева) Кафедра конструирования и производства радиоаппаратуры
Пояснительная записка к курсовой работе
по дисциплине
«Информационная безопасность и защита информации»
на тему:
АЛГОРИТМ ШИФРОВАНИЯ/ХЕШИРОВАНИЯ ДВОИЧНЫХ ФАЙЛОВ НА ОСНОВЕ СЕТИ ФЕЙСТЕЛЯ: ПРИНЦИП РАБОТЫ, РЕАЛИЗАЦИЯ, СКОРОСТЬ РАБОТЫ
Выполнил студент группы Р-7791
Павловский М.И.
- ВВЕДЕНИЕ
- 1 ОПИСАНИЕ СХЕМЫ ШИФРОВАНИЯ
- 2 ОПИСАНИЕ СХЕМЫ РАСШИФРОВАНИЯ
- 3 СКРИНШОТЫ РАБОТАЮЩЕЙ ПРОГРАММЫ
- 4 СКОРОСТЬ РАБОТЫ АЛГОРИТМОВ
- ЗАКЛЮЧЕНИЕ
- ВВЕДЕНИЕ
- Шифрование является наиболее широко используемым криптографическим методом сохранения конфиденциальности информации, он защищает данные от несанкционированного ознакомления с ними.
- Криптография — наука о защите информации с использованием математических методов. Существует и наука, противоположная криптографии и посвященная методам вскрытия защищенной информации — криптоанализ. Совокупность криптографии и криптоанализа принято называть криптологией. Криптографические методы могут быть классифицированы различным образом, но наиболее часто они подразделяются в зависимости от количества ключей, используемых в соответствующих криптоалгоритмах:
1. Бесключевые — в них не используются какие-либо ключи.
2. Одноключевые — в них используется некий дополнительный ключевой параметр — обычно это секретный ключ.
3. Двухключевые, использующие в своих вычислениях два ключа: секретный и открытый.
В данной курсовой работе необходимо разработать алгоритм шифрования, основанный на сети Фейстеля.
Сеть Фейстеля подразумевает разбиение обрабатываемого блока данных на несколько субблоков (чаще всего — на два), один из которых обрабатывается некоей функцией f () и накладывается на один или несколько остальных субблоков. На рис. 1 приведена наиболее часто встречающаяся структура алгоритмов на основе сети Фейстеля.
Рисунок 1 — Структура алгоритмов на основе сети Фейстеля
Дополнительный аргумент функции f (), обозначенный на рис. 1 как Ki, называется ключом раунда. Наложение обработанного субблока на необработанный чаще всего выполняется с помощью логической операции «исключающее или» — XOR (как показано на рис. 1). Достаточно часто вместо XOR здесь используется сложение по модулю 2n, где n — размер субблока в битах. После наложения субблоки меняются местами, то есть в следующем раунде алгоритма обрабатывается уже другой субблок данных.
1 ОПИСАНИЕ СХЕМЫ ШИФРОВАНИЯ
Рисунок 2 — Схема шифрования
Сделаем подробное описание вышеприведенной схемы.
Считываем из файла два блока по одному байту (left и right).
Затем берем правый блок и выполняем перестановку битов в данном блоке по следующему принципу: 1 бит — 5 бит, 2 бит — 7 бит, 3 бит — 6 бит, 4 бит — 8 бит.
Ключ, обозначенный буквой K, представляет собой массив из 4 элементов по одному байту, каждый из которых используется в одной из четырех итераций.
Затем выполняем сложение по модулю 256 ключа и числа, полученного после перестановки в правом блоке. Сложение выполняется по следующей формуле:
(1)
Затем с результатом c, полученным после сложения по модулю 256, производим операцию XOR (исключающее «или») с левым блоком (left), считанным из файла.
(2)
Следующая операция — это циклический сдвиг на 2 бита влево, т. е. первые 2 бита числа d станут последними. Данная операция реализуется с помощью двух побитных сдвигов:
(3)
Теперь мы имеем измененный левый блок (left) и исходный правый блок (right). Меняем эти блоки местами, т. е. правый станет левым, а измененный левый правым.
Проводим 4 такие итерации и записываем полученные блоки в зашифрованный файл: сначала полученный левый блок, а затем полученный правый блок.
Таким алгоритмом шифруем весь файл. Если файл состоит из нечетного числа байт, то в последнем блоке вместо правого блока берем ноль и в конец зашифрованного файла также записываем еще один ноль, чтобы правильно расшифровать полученный файл.
3 ОПИСАНИЕ СХЕМЫ РАСШИФРОВАНИЯ
Рисунок 3 — Схема расшифрования
Сделаем подробное описание вышеприведенной схемы.
Считываем из зашифрованного файла два блока по одному байту (left и right).
Берем правый блок и производим с ним операцию циклического сдвига на 2 бита вправо, т. е. последние 2 бита числа right станут первыми. Данная операция реализуется с помощью двух побитных сдвигов:
(4)
Затем берем левый блок и выполняем перестановку битов в данном блоке по следующему принципу: 1 бит — 5 бит, 2 бит — 7 бит, 3 бит — 6 бит, 4 бит — 8 бит.
Ключ, обозначенный буквой K, представляет собой массив из 4 элементов по одному байту, каждый из которых используется в одной из четырех итераций.
Затем выполняем сложение по модулю 256 ключа и числа, полученного после перестановки в левом блоке. Сложение выполняется по следующей формуле:
(5)
Затем с результатом c, полученным после сложения по модулю 256, производим операцию XOR (исключающее «или») с правым блоком над которым произвели циклический сдвиг d.
(6)
Теперь мы имеем измененный правый блок (right) и исходный левый блок (left). Меняем эти блоки местами, т. е. левый станет правым, а измененный правый левым.
Проводим 4 такие итерации и записываем полученные блоки в зашифрованный файл: сначала полученный левый блок, а затем полученный правый блок.
Таким алгоритмом расшифровываем весь файл. Если файл состоит из нечетного числа байт, значит, при шифровании последний блок был неполный, и при расшифровании мы не запишем в файл для расшифрования правую часть последнего полного блока, а ранее записанный ноль отбросим.
3 СКРИНШОТЫ РАБОТАЮЩЕЙ ПРОГРАММЫ
Рисунок 4 — Окно программы при открытии (программа готова к работе)
Рисунок 5 — Шифрование файла
На данном этапе мы выбрали файл для шифрования. Путь к данному файлу записан в первом textBox’е. Прогресс бар показывает процесс шифрования: сколько байт обработано в процентах.
Рисунок 6 — Шифрование завершено
Шифрование файла завершено. Выведена скорость шифрования в мегабайтах в секунду. Прогресс бар полностью заполнен (100%). Также выведен хэш файла для шифрования для последующего сравнения с хэшем расшифрованного файла.
Рисунок 7 — Расшифрование файла
На данном этапе мы выбрали файл для расшифрования (файл, который получился в результате шифрования). Путь к данному файлу записан во втором textBox’е. Прогресс бар показывает процесс расшифрования: сколько байт обработано в процентах.
Рисунок 8 — Расшифрование завершено
Расшифрование файла завершено. Выведена скорость расшифрования в мегабайтах в секунду (почти совпадает со скоростью при шифровании). Прогресс бар полностью заполнен (100%). Также выведен хэш расшифрованного файла. Он равен хэшу исходного файла, значит расшифрование выполнено верно.
4 СКОРОСТЬ РАБОТЫ АЛГОРИТМОВ
Скорость работы для алгоритмов шифрования и расшифрования рассчитывается аналогично по следующей формуле:
(7)
где
— скорость шифрования/расшифрования в мегабитах в секунду;
— размер файла в мегабайтах;
— время на момент окончания шифрования/расшифрования;
— время на момент начала шифрования/расшифрования;
— время шифрования/расшифрования, выраженное в секундах;
В данной курсовой работе при шифровании и расшифровании файла длиной 14,2МБ была получена скорость, приблизительно равная 0,16 МБ/сек.
Тестирование производилось на компьютере со следующей конфигурацией:
Объем оперативной памяти: 1 ГБ;
Частота процессора: 2,66 ГГц.
ЗАКЛЮЧЕНИЕ
На сети Фейстеля основано большинство современных алгоритмов шифрования — благодаря множеству преимуществ подобной структуры, среди которых стоит отметить следующие:
1. Алгоритмы на основе сети Фейстеля могут быть сконструированы таким образом, что для зашифрования и расшифрования могут использоваться один и тот же код алгоритма — разница между этими операциями может состоять лишь в порядке применения ключей Ki; такое свойство алгоритма наиболее полезно при его аппаратной реализации или на платформах с ограниченными ресурсами;
2. Алгоритмы на основе сети Фейстеля являются наиболее изученными — таким алгоритмам посвящено огромное количество криптоаналитических исследований, что является несомненным преимуществом, как при разработке алгоритма, так и при его анализе.