Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Дальневосточный государственный технический университет
(ДВПИ им. В.В. Куйбышева)
Кафедра конструирования и производства радиоаппаратуры
Пояснительная записка к курсовой работе
по дисциплине
«Информационная безопасность и защита информации»
на тему:
АЛГОРИТМ ШИФРОВАНИЯ/ХЕШИРОВАНИЯ ДВОИЧНЫХ ФАЙЛОВ НА ОСНОВЕ СЕТИ ФЕЙСТЕЛЯ: ПРИНЦИП РАБОТЫ, РЕАЛИЗАЦИЯ, СКОРОСТЬ РАБОТЫ
Выполнил
студент группы Р-7791
Павловский М.И.
2010
СОДЕРЖАНИЕ
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 такие итерации и записываем полученные блоки в зашифрованный файл: сначала полученный левый блок, а затем полученный правый блок.
Таким алгоритмом шифруем весь файл. Если файл состоит из нечетного числа байт, то в последнем блоке вместо правого блока берем ноль и в конец зашифрованного файла также записываем еще один ноль, чтобы правильно расшифровать полученный файл.
1. Алгоритмы на основе сети Фейстеля могут быть сконструированы таким образом, что для зашифрования и расшифрования могут использоваться один и тот же код алгоритма - разница между этими операциями может состоять лишь в порядке применения ключей Ki; такое свойство алгоритма наиболее полезно при его аппаратной реализации или на платформах с ограниченными ресурсами;
2. Алгоритмы на основе сети Фейстеля являются наиболее изученными - таким алгоритмам посвящено огромное количество криптоаналитических исследований, что является несомненным преимуществом, как при разработке алгоритма, так и при его анализе.