Криптографические алгоритмы защиты информации Blowfish

Автор: Пользователь скрыл имя, 08 Декабря 2011 в 19:45, курсовая работа

Краткое описание

Стремительное развитие средств вычислительной техники и открытых сетей передачи данных обусловило их широкое распространение в повседневной жизни и предпринимательской деятельности. Мощные вычислительные возможности и оперативность передачи информации не только оказали большое влияние на принципы ведения бизнеса, сложившиеся в большинстве традиционных отраслей, но и открыли новые направления развития предпринимательской деятельности. В современных условиях автоматизация банковской деятельности и управления предприятиями является «modus vivendi», а такие слова, как «Internet-banking», «e-commerce» и «smart-cards», уже не вызывают всеобщего удивления и жарких дебатов.
Однако последние достижения человеческой мысли в области компьютерных технологий связаны с появлением не только персональных компьютеров, сетей передачи данных и электронных денег, но и таких понятий, как хакер, информационное оружие, компьютерные вирусы и т.п. Оказывается, что под информационной безопасностью подразумевается одно из ведущих направлений развития информационных технологий - круг задач, решаемых в этой области, постоянно расширяется как в количественном, так и в качественном отношении.

Оглавление

Введение 4
1 Алгоритм Blowfish 29
1.1 Сеть Фейстеля 30
1.2 Описание алгоритма 33
1.3 Стойкость алгоритма 36
2 Криптографические системы 6
2.1 Основные понятия 6
2.2 Требования к криптографическим системам 7
2.3 Симметричные криптосистемы 9
2.4 Ассиметричные криптосистемы 11
2.5 Математические основы 15
3 Выбор оптимального блочного алгоритма шифрования 19
3.1 Сравнительная характеристика алгоритмов 19
3.2 Криптостойкость рассмотренных алгоритмов 25
4 Описание работы программы 38
Заключение 41
Список используемых источников 42
Приложение А Исходный код алгоритма Blowfish 43

Файлы: 1 файл

курсовая blowfish.docx

— 446.14 Кб (Скачать)

СОДЕРЖАНИЕ 

Введение 4

1 Алгоритм Blowfish 29

1.1 Сеть Фейстеля 30

1.2 Описание алгоритма 33

1.3 Стойкость алгоритма 36

2 Криптографические системы 6

2.1 Основные понятия 6

2.2 Требования к криптографическим системам 7

2.3 Симметричные криптосистемы 9

2.4 Ассиметричные криптосистемы 11

2.5 Математические основы 15

3 Выбор оптимального блочного алгоритма шифрования 19

3.1 Сравнительная характеристика алгоритмов 19

3.2 Криптостойкость рассмотренных алгоритмов 25

4 Описание работы программы 38

Заключение 41

Список используемых источников 42

Приложение А Исходный код алгоритма Blowfish 43

 

ВВЕДЕНИЕ

     Стремительное развитие средств вычислительной техники  и открытых сетей передачи данных обусловило их широкое распространение  в повседневной жизни и предпринимательской  деятельности. Мощные вычислительные возможности и оперативность  передачи информации не только оказали  большое влияние на принципы ведения  бизнеса, сложившиеся в большинстве  традиционных отраслей, но и открыли  новые направления развития предпринимательской  деятельности. В современных условиях автоматизация банковской деятельности и управления предприятиями является «modus vivendi», а такие слова, как «Internet-banking», «e-commerce» и «smart-cards», уже не вызывают всеобщего удивления и жарких дебатов.

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

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

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

 

   1 Алгоритм Blowfish

     Blowfish - это алгоритм, разработанный Брюсом Шнайером специально для реализации на больших микропроцессорах. Представляет собой сеть Фейстеля. Выполнен на простых и быстрых операциях: XOR, подстановка, сложение. Является не запатентованным и свободно распространяемым.

       При проектировании алгоритма  Blowfish Шнайер пытался удовлетворить следующим критериям:

  • Скорость. Программа, реализующая алгоритм Blowfish на 32-битовых микропроцессорах, шифрует данные со скоростью 26 тактов на байт.
  • Компактность. Для исполнения программной реализации алгоритма Blowfish достаточно 5 Кбайт памяти.
  • Простота. В алгоритме Blowfish используются только простые операции: сложение, XOR и подстановка из таблицы по 32-битовому операнду. Анализ его схемы несложен, что снижает риск ошибок реализации алгоритма.
  • Настраиваемая стойкость. Длина ключа Blowfish переменна и может достигать 448 бит.

     Алгоритм  Blowfish оптимизирован для применения в системах, не практикующих частой смены ключей, например, в линиях связи и программах автоматического шифрования файлов. При реализации на 32-битовых микропроцессорах с большим размером кэша данных, например, процессорах Pentium и PowerPC, алгоритм Blowfish заметно быстрее DES [4].

     1.1 Сеть Фейстеля

    Сеть Фейстеля (Feistel network) подразумевает разбиение обрабатываемого блока данных на несколько субблоков (чаще всего — на два), один из которых обрабатывается некоей функцией f и накладывается на один или несколько остальных субблоков. На рисунке 1 приведена наиболее часто встречающаяся структура алгоритмов на основе сети Фейстеля.

 

Рисунок 1 – Сеть Фейстеля

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

     Наложение обработанного субблока на необработанный чаще всего выполняется с помощью логической операции «исключающее или» (Exclusive OR, XOR), как показано на рисунке 1. Достаточно часто вместо XOR здесь используется сложение по модулю 2n, где n — размер субблока в битах. После наложения субблоки меняются местами, т. е. в следующем раунде алгоритма обрабатывается уже другой субблок данных.

     Такая структура алгоритмов шифрования получила свое название по имени Хорста Фейстеля (Horst Feistel) — одного из разработчиков алгоритма шифрования Lucifer и разработанного на его основе алгоритма DES (Data Encryption Standard) — бывшего (но до сих пор широко используемого) стандарта шифрования США. Оба этих алгоритма имеют структуру, аналогичную показанной на рисунке 1. Среди других алгоритмов, основанных на сети Фейстеля, можно привести в пример отечественный стандарт шифрования ГОСТ 28147-89, а также другие весьма известные алгоритмы: RC5, Blowfish, TEA, CAST-128 и т. Д [5].

     На  сети Фейстеля основано большинство современных алгоритмов шифрования — благодаря множеству преимуществ подобной структуры, среди которых стоит отметить следующие:

  • алгоритмы на основе сети Фейстеля могут быть сконструированы таким образом, что для зашифровывания и расшифровывания может использоваться один и тот же код алгоритма - разница между этими операциями может состоять лишь в порядке применения ключей Кi; такое свойство алгоритма наиболее полезно при его аппаратной реализации или на платформах с ограниченными ресурсами; в качестве примера такого алгоритма можно привести ГОСТ 28147-89;
  • алгоритмы на основе сети Фейстеля являются наиболее изученными — таким алгоритмам посвящено огромное количество криптоаналитических исследований, что является несомненным преимуществом как при разработке алгоритма, так и при его анализе.

      1.2 Описание алгоритма

      1.2 Описание алгоритма

     Blowfish представляет собой 64-битовый блочный алгоритм шифрования с ключом переменной длины. Алгоритм состоит из двух частей: расширения ключа и шифрования данных. Расширение ключа преобразует ключ длиной до 448 битов в несколько массивов подключей общим размером 4168 байт.

     Шифрование  данных заключается в последовательном исполнении простой функции 16 раз. На каждом раунде выполняются зависимая  от ключа перестановка и зависимая от ключа и данных подстановка. Используются только операции сложения и XOR над 32-битовыми словами. Единственные дополнительные операции каждого раунда - четыре взятия данных из индексированного массива.

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

     На  рисунке 2 изображено вычисление подключей.

     

 

     Рисунок 2 - Алгоритм Blowfish 

     Р-массив состоит из восемнадцати 32-битовых подключей:

           Р12,...,Р18

     Каждый  из четырех 32-битовых S-блоков содержит 256 элементов:

       S1,0, S1,1,…, S1,255

           S2,0, S2,2,…, S2,255

           S3,0, S3,3,…, S3,255

           S4,0, S4,4,…, S4,255

     Алгоритм  Blowfish представляет собой сеть Фейстеля, состоящей из 16 раундов. На вход подается 64-битовый элемент данных х. Для зашифрования данных:

     Разбить  х на  две  32-битовых половины: xL, xR

     Для i от 1 до 16:

           xL = xL Å   Pi

           xR = F (xL) Å   xR

           Переставить xL и xR

     Переставить xL и xR (отнять последнюю перестановку)

           xR = xR Å   P17

           xL = xL Å   P18

     Объединить  xL и xR

     Функция F рассчитывается следующим образом (Рисунок 4):

     

     Рисунок 3 - Функция F

     Разделить xL на четыре 8-битовых фрагмента: а, b, с и d

           F(xL) = ((S1,a + S2,bmod232)ÅS3,c) + S4,dmod232                                          

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

     В реализациях Blowfish, в которых требуется очень высокая скорость, цикл должен быть развернут, а все ключи храниться в кэше.

     Подключи рассчитываются с помощью самого алгоритма Blowfish. Вот какова точная последовательность действий.

  1. Сначала Р-массив, а затем четыре S-блока по порядку инициализируются фиксированной строкой. Эта строка состоит из шестнадцатеричных цифр π.
  2. Выполняется операция XOR над Р1 с первыми 32 битами ключа, XOR над Р2 со вторыми 32 битами ключа, и т.д. для всех битов ключа (вплоть до Р18). Операция XOR выполняется циклически над битами ключа до тех пор, пока весь Р-массив не будет инициализирован.
  3. Используя подключи, полученные на этапах 1 и 2, алгоритм Blowfish шифрует строку из одних нулей.
  4. Р1 и Р2 заменяются результатом этапа 3.
  5. Результат этапа 3 шифруется с помощью алгоритма Blowfish и модифицированных подключей.
  6. Р3 и Р4 заменяются результатом этапа 5.
  7. Далее по ходу процесса все элементы Р-массива, а затем все четыре S-блока по порядку заменяются выходом постоянно меняющегося алгоритма Blowfish.

     Всего для генерации всех необходимых  подключей требуется 521 итерация. Приложения могут сохранять подключи - нет необходимости выполнять процесс их получения многократно [4].

Информация о работе Криптографические алгоритмы защиты информации Blowfish