на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Алгоритм шифрования/хеширования двоичных файлов на основе сети Фейстеля: принцип работы, реализация, скорость работы

Алгоритм шифрования/хеширования двоичных файлов на основе сети Фейстеля: принцип работы, реализация, скорость работы

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

Дальневосточный государственный технический университет

(ДВПИ им. В.В. Куйбышева)

Кафедра конструирования и производства радиоаппаратуры

Пояснительная записка к курсовой работе

по дисциплине

«Информационная безопасность и защита информации»

на тему:

АЛГОРИТМ ШИФРОВАНИЯ/ХЕШИРОВАНИЯ ДВОИЧНЫХ ФАЙЛОВ НА ОСНОВЕ СЕТИ ФЕЙСТЕЛЯ: ПРИНЦИП РАБОТЫ, РЕАЛИЗАЦИЯ, СКОРОСТЬ РАБОТЫ

Выполнил

студент группы Р-7791

Павловский М.И.

2010

СОДЕРЖАНИЕ

  • ВВЕДЕНИЕ
  • 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. Алгоритмы на основе сети Фейстеля являются наиболее изученными - таким алгоритмам посвящено огромное количество криптоаналитических исследований, что является несомненным преимуществом, как при разработке алгоритма, так и при его анализе.



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.