Криптографические алгоритмы защиты информации 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 Кб (Скачать)

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

     В своей книге «Прикладная криптография»  Брюс Шнайер привел следующие ограничения алгоритма Blowfish.

  • «Алгоритм Blowfish не годится для применения в случаях, где требуется частая смена ключей». Процедура расширения ключа является достаточно ресурсоемкой, поэтому одно из достоинств алгоритма Blowfish — достаточно высокая скорость шифрования — проявляется только в тех случаях, если на одном ключе шифруется достаточно большой объем информации. И наоборот, если менять ключ после каждого из шифруемых блоков, скорость алгоритма становится катастрофически низкой именно из-за необходимости каждый раз выполнять расширение ключа. Сам Шнайер рекомендует в приложениях, где критична скорость, хранить уже развернутый ключ (т.е. значения К1..К18 и S1..S4) и загружать его целиком вместо выполнения расширения исходного ключа шифрования.
  • «Большие требования к памяти не позволяют использовать этот алгоритм в смарт-картах». Стоит сказать, что принципиальная возможность реализации алгоритма в смарт-картах была одним из важных условий при выборе нового стандарта шифрования США на конкурсе AES, т. е. данный недостаток алгоритма Blowfish можно считать серьезным.

     Кроме того, стоит отметить и менее серьезные  недостатки алгоритма:

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

     Алгоритм  Blowfish имеет и достаточно серьезные преимущества, в частности:

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

     Однако  стоит сказать, что известный  эксперт Серж Воденэ обнаружил, что методом дифференциального криптоанализа r-раундового алгоритма Blowfish с известными таблицами замен можно вычислить значения К1..K18 при наличии 28r+1 выбранных открытых текстов. Это не актуально для полнораундовой версии алгоритма (и, тем более, для описанной выше полноценной версии алгоритма с вычисляемыми таблицами замен), но при использовании слабого ключа (Серж Воденэ обнаружил также у алгоритма Blowfish наличие слабых ключей, которые приводят к генерации слабых таблиц замен) выбранных открытых текстов требуется существенно меньше: 24r + 1[5].

     Слабым  называют ключ, для которого два  элемента данного S-блока идентичны. До выполнения расширения ключа невозможно установить факт слабости ключа.

     Не  известны факты успешного криптоанализа алгоритма Blowfish. В целях безопасности не следует реализовывать Blowfish с уменьшенным числом раундов. Компания Kent Marsh Ltd. встроила алгоритм Blowfish в свой продукт FolderBolt, предназначенный для обеспечения защиты Microsoft Windows и Macintosh. Кроме того, алгоритм входит в Nautilus и PGPfone [4]. 

 

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

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

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

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

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

     Криптосистемы подразделяются на симметричные и асимметричные (или с открытым (публичным) ключом).

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

     В системах с открытым ключом используются два ключа - открытый (публичный) и закрытый (секретный), которые математически связаны друг с другом. Информация зашифровывается с помощью открытого ключа, который доступен всем желающим, а расшифровывается с помощью закрытого ключа, известного только получателю сообщения. [3].

 

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

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

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

     1. Знание алгоритма шифрования не должно синжатъ криптостойскости шифра. Это фундаментальное требование было сформулировано в XIX веке Керкхоффом и разделяет криптосистемы общего использования (алгоритм доступен потенциальному нарушителю) и ограниченного использования (алгоритм держится в секрете). Безусловно, все массово используемые криптосистемы должны отвечать этому требованию. Взлом шифров в системе сотовой связи GSM или защите дисков DVD от незаконного воспроизведения - наглядные примеры последствий, к которым может привести несоблюдение этого требования.

     2. Зашифрованное сообщение должно поддаваться чтению только при наличии ключа. Используемое в программе MS Word 6.0/95 «шифрование» документа на самом деле только запрещало его открытие в данной программе. Сам же текст не шифровался и был доступен для чтения в любом текстовом редакторе.

     3. Шифр должен быть стойким даже в случае если нарущителю известно достаточно большое количество исходных данных и соответствующих им зашифрованных данных.

     4. Число операций, необходимых для расшифровывания информации путем перебора всевозможных ключей должно иметь строгую нижнюю оценку и должно либо выходить за пределы возможностей современных компьютеров (с учетом возможности организации сетевых вычислений) или требовать создания использования дорогих вычислительных систем.

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

     6. Структурные элементы алгоритма шифрования должны быть неизменными.

     7. Длина шифрованного текста должна быть равной длине исходного текста.

     8. Дополнительные биты, вводимые в сообщение в процессе шифрования, должны быть полностью и надежно скрыты в шифрованном тексте.

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

     10. Любой ключ из множества возможных должен обеспечивать равную криптостойкостъ. В этом случае принято говорить о линейном (однородном) пространстве ключей [3].

     Как уже было сказано выше криптосистемы делятся на симметричные и ассиметричные.

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

     Симметричные  криптосистемы— способ шифрования, в котором для зашифрования и расшифровывания применяется один и тот же криптографический ключ. До изобретения схемы асимметричного шифрования единственным существовавшим способом являлось симметричное шифрование. Ключ алгоритма должен сохраняться в секрете обеими сторонами. Алгоритм шифрования выбирается сторонами до начала обмена сообщениями [6].

     В настоящее время симметричные шифры  — это:

  • блочные шифры. Обрабатывают информацию блоками определённой длины (обычно 64, 128 бит), применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами. Результатом повторения раундов является лавинный эффект — нарастающая потеря соответствия битов между блоками открытых и зашифрованных данных.
  • поточные шифры, в которых шифрование проводится над каждым битом либо байтом исходного (открытого) текста с использованием гаммирования. Поточный шифр может быть легко создан на основе блочного (например, ГОСТ 28147-89 в режиме гаммирования), запущенного в специальном режиме.

     Большинство симметричных шифров используют сложную  комбинацию большого количества подстановок  и перестановок. Многие такие шифры  исполняются в несколько (иногда до 80) проходов, используя на каждом проходе «ключ прохода». Множество  «ключей прохода» для всех проходов называется «расписанием ключей» (key schedule). Как правило, оно создается из ключа выполнением над ним неких операций, в том числе перестановок и подстановок.

     Типичным  способом построения алгоритмов симметричного шифрования является сеть Фейстеля [смотреть раздел 4.1].

     Достоинство симметричных криптосистем заключается  в следующем:

  • скорость (по данным Applied Cryptography — на 3 порядка выше)
  • простота реализации (за счёт более простых операций)
  • меньшая требуемая длина ключа для сопоставимой стойкости
  • изученность (за счёт большего возраста)

     Недостатки:

  • сложность управления ключами в большой сети. Означает квадратичное возрастание числа пар ключей, которые надо генерировать, передавать, хранить и уничтожать в сети. Для сети в 10 абонентов требуется 45 ключей, для 100 уже 4950, для 1000 — 499500 и т. д.
  • сложность обмена ключами. Для применения необходимо решить проблему надёжной передачи ключей каждому абоненту, так как нужен секретный канал для передачи каждого ключа обеим сторонам.

     Для компенсации недостатков симметричного  шифрования в настоящее время  широко применяется комбинированная (гибридная) криптографическая схема, где с помощью асимметричного шифрования передаётся сеансовый ключ, используемый сторонами для обмена данными с помощью симметричного шифрования.

     Важным  свойством симметричных шифров является невозможность их использования  для подтверждения авторства, так  как ключ известен каждой стороне [6].

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

     Криптографическая система с открытым ключом (или асимметричное шифрование, асимметричный шифр) — система шифрования и/или электронной цифровой подписи (ЭЦП), при которой открытый ключ передаётся по открытому (то есть незащищённому, доступному для наблюдения) каналу, и используется для проверки ЭЦП и для шифрования сообщения. Для генерации ЭЦП и для расшифрования сообщения используется секретный ключ. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколах TLS и его предшественнике SSL (лежащих в основе HTTPS), в SSH. Также используется в PGP, S/MIME.

     Идея  криптографии с открытым ключом очень  тесно связана с идеей односторонних  функций, то есть таких функций f(x), что  по известному x довольно просто найти значение f(x), тогда как определение x из f(x) сложно в смысле теории [7].

     Но  сама односторонняя функция бесполезна в применении: ею можно зашифровать  сообщение, но расшифровать нельзя. Поэтому  криптография с открытым ключом использует односторонние функции с лазейкой. Лазейка — это некий секрет, который помогает расшифровать. То есть существует такой y, что зная f(x) и y, можно вычислить x. К примеру, если разобрать часы на множество  составных частей, то очень сложно собрать вновь работающие часы. Но если есть инструкция по сборке (лазейка), то можно легко решить эту проблему.

     Понять  идеи и методы криптографии с открытым ключом помогает следующий пример —  хранение паролей в компьютере. Каждый пользователь в сети имеет свой пароль. При входе, он указывает имя и  вводит секретный пароль. Но если хранить  пароль на диске компьютера, то кто-нибудь его может считать (особенно легко  это сделать администратору этого  компьютера) и получить доступ к  секретной информации. Для решения  задачи используется односторонняя  функция. При создании секретного пароля в компьютере сохраняется не сам  пароль, а результат вычисления функции  от этого пароля и имени пользователя. Например, пользователь Алиса придумала  пароль «Гладиолус». При сохранении этих данных вычисляется результат  функции f(ГЛАДИОЛУС), пусть результатом  будет строка РОМАШКА, которая и  будет сохранена в системе. В  результате файл паролей примет следующий вид:

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