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

Алгоритм шифрования 3DES

Итак, первым в ряду зарубежных шифров рассмотрим 3DES, а точнее его ближайшего родственника DES (Data Encryption Standard), который хоть уже и не используется как таковой, но является предком 3DES.

DES разработан командой математиков научной лаборатории IBM, в которую входил уже знакомый нам Фейстель. Первая версия шифра получила имя «Люцифер», но затем он был модифицирован и в результате принят как официальный алгоритм шифрования данных (DEA). На протяжении более двадцати лет он оставался мировым стандартом, прежде чем его сменил Triple DES.

Рассмотрим, как работает алгоритм шифрования DES. Для этого необходимо вспомнить работу сети Фейстеля. DES - это сеть Фейстеля из 16 раундов с симметричными ключами шифрования. Длина блока текста - 64 бита, длина раундового ключа - 48 бит. Итак, пройдем основные этапы шифрования DES, опуская суровую математическую сторону:

  1. Текст, как и при любом другом шифровании, разбивается на блоки по 64 бита.
  2. Из 56-битного ключа генерируется 16 48-битных раундовых ключиков.
  3. Каждый блок подвергается перестановке, тоесть все биты входного блока перемешиваются согласно определенной таблице.
  4. Блок расщепляется на половинки и поступает в знакомую нам сеть Фейстеля, где прокручивается 16 раундов.
  5. Соединяем половинки.
  6. И еще одна перестановка.

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

Вот, собственно, все, что надо знать о работе алгоритма DES. Если углубляться в то, как работает функция, заданная в сети Фейстеля, то в ней все прекрасно. Она осуществляет и перестановку, и замену (S-боксы, как ты можешь помнить из предыдущей статьи), и сложение с раундовым ключом.

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

Но если взять компьютер с одним миллионом процессорных ядер, которые будут параллельно обрабатывать ключи, мы сможем проверить все множество ключей приблизительно за 20 часов. Когда был введен DES, стоимость такого компьютера равнялась нескольким миллионам долларов, но она быстро снизилась. Специальный компьютер был создан в 1998 году - и нашел ключ за 112 часов.

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

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

Тем не менее на практике атака осуществима, что делает алгоритм Double DES непригодным.

Совсем иначе дела обстоят с Triple DES. Использование трех ключей и применение алгоритмов в указанной на схеме последовательности продлило DES жизнь еще на несколько лет.

Алогоритм шифрования DES

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

Где же применяется DES? Да почти везде, его реализации присутствуют в большинстве программных библиотек. Однако кто знает, насколько использование DES безопасно в наше время? Хотя IBM утверждала, что работа алгоритма была результатом 17 человеко-лет интенсивного криптоанализа, некоторые люди опасались, не вставило ли NSA в алгоритм лазейку, которая позволяет агентству легко дешифровывать перехваченные сообщения.

Комитет по разведке сената США тщательно изучал этот вопрос и, разумеется, ничего не обнаружил, обвинения с NSA были сняты, результаты исследования тем не менее засекречены. Одним словом, в Америке еще долго крутились слухи и домыслы насчет того, стоит доверять DES или нет. Но, как я считаю, здесь ситуация описывается поговоркой «Умный не скажет, дурак не поймет». В конце концов NSA признало, что не могло доверить IBM столь важную миссию и внесло несколько корректировок вроде задания S-боксов.

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

Алгоритм шифрования AES

Победитель конкурса AES, объявленный в конце 1997 года, алгоритм Rijndael был разработан двумя бельгийскими криптографами - Йоаном Даменом (Joan Daemen) и Винсентом Рейменом (VincentRijmen).

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

AES оперирует 128-битными блоками данных и ключами по 128, 192 и 256 бит. Концептуально он отличается от DES, так как не базируется на сети Фейстеля, а представляет собой подстановочно-перестановочную сеть (SP-сеть), которую мы сейчас рассмотрим подробнее.

В AES байты открытого текста не делятся на две части, как в сети Фейстеля, а записываются в форму - матрицу (двумерный массив) байтов, расположенных таким образом:

AES действует следующими операциями:
1. ExpandKey - вычисление раундовых ключей для всех раундов.
2. SubBytes - замена битов по таблице замены (S-боксу).
3. ShiftRows - циклический сдвиг строк в форме на различные величины. 4. MixColumns - смешивание данных внутри каждого столбца формы.
5. AddRoundKey - сложение ключа раунда с формой.

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

Алгоритм шифрования IDEA

IDEA (International Data Encryption Algorithm) - алгоритм блочного симметричного шифрования, который был предложен на замену стандарта DES. Начальная версия алгоритма IDEA появилась в 1990 году. Алгоритм запатентован в США и в большинстве европейских стран. Владеет патентом Ascom Tech, но в некоммерческих целях алгоритм можно использовать бесплатно.

Размер блока в этом шифре - 64 бита, длина ключа - 128. Стоит сразу сказать, что алгоритм IDEA - самый молодой из перечисленных и его математика очень сложна. Минутка криптографического словарика.

В IDEA эти свойства достигаются за счет применения независимых математических операций. В отличие от DES, главной операцией которого является XOR (сложение по модулю 2), IDEA предусматривает наличие:

XOR;
сложения по модулю 2¹6;
умножения по модулю (2¹6; + 1).

Комбинирование этих трех операций обеспечивает комплексное преобразование входных данных, затрудняя криптоанализ IDEA по сравнению с DES.

В шифре IDEA выполняется восемь раундов, и в каждом раунде блок открытого текста подвергается преобразованию посредством математических операций. Любители «зреть в корень» могут позреть на схему одного раунда шифра IDEA, приведенную ниже. Блок текста, длиной 64 бита, делится на подблоки по 16 бит. Каждый такой полученный блочок поступает на вход раунда и подвергается сложному преобразованию.

Неповторимая IDEA

«Мне кажется, это самый лучший и надежный блочный алгоритм, опубликованный до настоящего времени», - говорит Брюс Шнайер об алгоритме IDEA.

Действительно, IDEA отличается высокой стойкостью благодаря своим многочисленным математическим операциям. Кроме того, к достоинствам данного алгоритма относится высокая скорость зашифрования - почти в два раза выше, чем у алгоритма DES (в зависимости от платформы, на которой выполняется шифрование). Однако скорость расшифровки снижается из-за тяжелых операций вычисления, обратных умножению по модулю (216 + 1).

Разумеется, и на этот сложный шифр мудрые криптографы пытались провести всевозможные атаки. Успеха достиг Пол Хокер, который реализовал атаку, предполагая, что криптоаналитик не имеет прямого доступа к искомому ключу (например, ключ прошит в каком-либо аппаратном шифраторе или смарт-карте), но может изменять определенным образом различные фрагменты ключа.

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

РЫБЫ БРЮСА ШНАЙЕРА

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

Мы вкратце познакомимся с одними из самых известных его детищ - алгоритмами шифрования Blowfish, Twofish и Threefish.

Алгоритм шифрования Blowfish

Первым на свет появился Blowfish. Как говорит сам Шнайер, этот алгоритм был разработан для реализации на больших микропроцессорах. Поэтому он компактен (всего 5 Кбайт памяти) и прост (использует простые математические операции - сложение, XOR и выборку из таблицы). Также алгоритм позволяет настраивать длину ключа (до 448 бит).

На 32-битных процессорах Blowfish выполняет шифрование значительно быстрее, нежели DES, однако на интеллектуальных платах в силу своей упрощенности он не особо применим. В основе Blowfish сеть Фейстеля из 16 раундов, которую ты уже должен хорошо понимать.

Алгоритм реализован в некоторых программных продуктах (FolderBolt, Nautilus, PGPfone), однако сейчас он уже теряет свою актуальность.

Алгоритм шифрования Twofish

За первой рыбой появились еще две - новый алгоритм Twofish был разработан Шнайером и компанией для участия в конкурсе AES. Работа Шнайера вышла в пятерку финалистов, однако победителем так и не стала, хотя обладала для этого всеми возможными плюсами. Это:

128-битный блочный симметричный шифр;
длина ключей: 128, 192 и 256 бит;
эффективная программная (в первую очередь на 32-битных процессорах) и аппаратная реализация;
гибкость (возможность использования ключа большей длины, применимость для поточного шифрования, хеш-функций и так далее); простота алгоритма - его удобно анализировать.

Однако по сравнению с Rijndael, занявшим пьедестал AES, Twofish был более сложным для анализа и обладал более низкой скоростью шифрования. Разработан этот алгоритм на основе Blowfish с некоторыми дополнениями и также представляет собой сеть Фейстеля.

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

Алгоритм шифрования Threefish

«В третий раз закинул старик в море невод…» и десять лет спустя получился шифр Threefish. На этот раз Шнайер решил переплюнуть AES и учел все недостатки предыдущего опыта. Криптограф не стал брать за основу сеть Фейстеля, а реализовал шифр на основе подстановочно-перестановочной сети (SP-сети), как в AES. Такая сеть основана на комбинации операций исключающего ИЛИ, сложения и циклического сдвига. В упрощенном виде все это выглядит так:

За счет простых операций Threefish значительно опережает в скорости AES. Кроме того, по заявлениям авторов, алгоритм имеет более высокий уровень безопасности, чем AES. Существует атака на 25 из 72 раундов Threefish, в то время как для AES - на 6 из 10. Так что Брюс Шнайер добился-таки своей победы, хоть и с опозданием.

Шифр послужил основой для создания хеш-функции Skein, которая участвовала в конкурсе на должность SHA-3. Сам Threefish широко используется и реализован в библиотеках для многих языков программирования.

ВЫВОДЫ

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

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

Ссылки:

Это первый урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:

  • Основы, исторические шифраторы, как работают (и анализируются) шифры сдвига, замены, Рихарда Зорге, шифр Вернама и шифровальные машины (ты здесь)
  • . часть 2. Что это такое, как выполняется распределение ключей и как выбрать криптостойкий ключ
  • Что тaкое сеть Фейстеля, какими бывают отечественные блочные шифры, используемые в современных протоколах, - ГОСТ 28147-89, «Кузнечик»
  • Современные зарубежные шифры . Часть 4. Что такое, как работают и в чем разница между 3DES, AES, Blowfish, IDEA, Threefish от Брюса Шнайдера
  • Электронная подпись . Виды ЭП, как они работают и как их использовать
  • Квантовая криптография . Что это такое, где используется и как помогает в распределении секретных ключей, генерации случайных чисел и электронной подписи

Last updated by at Июль 12, 2016 .

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ВВЕДЕНИЕ

1. АНАЛИТИЧЕСКАЯ ЧАСТЬ

1.1 Алгоритм IDEA

1.2.1 Алгоритм DES

1.2.2 Алгоритм RC6

1.2.3 Алгоритм ГОСТ 28147-89

1.2.4 Достоинства IDEA перед аналогами

1.4.1 Electronic Code Book - Электронная кодовая книга

1.4.2 Cipher Feed Back - обратная загрузка шифротекста

1.4.3 Output Feed Back - обратная загрузка выходных данных

1.4.4 Counter - шифрование со счётчиком

1.4.5 Достоинства Cipher Block Chaining перед аналогами

2. КОНСТРУКТОРСКАЯ ЧАСТЬ

2.3 Программная реализация

3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ВВЕДЕНИЕ

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

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

Классическим примером таких алгоритмов являются симметричные криптографические алгоритмы, перечисленные ниже:- простая подстановка;

- одиночная перестановка по ключу;

- двойная перестановка;

- перестановка "Магический квадрат";

- простая перестановка.

Полная утрата всех статистических закономерностей исходного сообщения является важным требованием к симметричному шифру. Для этого шифр должен иметь «эффект лавины», т.е. должно происходить сильное изменение шифроблока при 1битном изменении входных данных (в идеале должны меняться значения 1/2 бит шифроблока).

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

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

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

Существует множество алгоритмов симметричных шифров, существенными параметрами которых являются:

· стойкость;

· длина ключа;

· число раундов;

· длина обрабатываемого блока;

· сложность аппаратной/программной реализации;

· сложность преобразования.

1. АНАЛИТИЧЕСКАЯ ЧАСТЬ

1.1 Алгоритм IDEA

IDEA (англ. International Data Encryption Algorithm, международный алгоритм шифрования данных) -- симметричный блочный алгоритм шифрования данных, запатентованный швейцарской фирмой Ascom. Это алгоритм блочного симметричного шифрования, который был предложен на замену стандарта DES. Начальная версия алгоритма IDEA появилась в 1990г. Разработчики алгоритма, Ксуеджа Лай (Xuejia Lai) и Джеймс Мэсси (James Massey) из Швейцарского института ETH Zurich, дали ему название PES (Proposed Encryption Standard -предлагаемый стандарт шифрования).

Так как IDEA использует 128-битный ключ и 64-битный размер блока, открытый текст разбивается на блоки по 64 бит. Если такое разбиение невозможно, последний блок дополняется различными способами определённой последовательностью бит. Для избежания утечки информации о каждом отдельном блоке используются различные режимы шифрования. Каждый исходный незашифрованный 64-битный блок делится на четыре подблока по 16 бит каждый, так как все алгебраические операции, использующиеся в процессе шифрования, совершаются над 16-битными числами. Для шифрования и дешифрования IDEA использует один и тот же алгоритм.

В IDEA используются следующие математические операции:

? поразрядное сложение по модулю 2 (операция "исключающее ИЛИ");

? сложение беззнаковых целых по модулю 2 16 ;

? умножение беззнаковых целых по модулю (2 16 +1), причем блок из 16 нулей рассматривается как 2 16 ;

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

Структура алгоритма IDEA представлена ниже (рис. 1).

Рис. 1. Алгоритм шифрования IDEA

· режим электронной кодовой книги (ECB -- Electronic Code Book)

· режим сцепления блоков (СВС -- Cipher Block Chaining)

· режим обратной связи по шифртексту (CFB -- Cipher Feed Back)

· режим обратной связи по выходу (OFB -- Output Feed Back).

В данной курсовой работе рассматривается программная реализация алгоритма шифровании IDEA (режим Cipher Feed Back).

1.2 Сравнение аналогов алгоритма IDEA

1.2.1 Алгоритм DES

DES (Data Encryption Standart) -- Симметричный алгоритм шифрования, в котором один ключ используется, как для шифрования, так и для расшифрования данных. DES имеет блоки по 64 бит и 16 цикловую структуру сети Фейстеля, для шифрования использует ключ с длиной 56 бит.

Алгоритм использует комбинацию нелинейных (S-блоки) и линейных (перестановки E, IP, IP-1) преобразований.

Так как DES оперирует блоками 64-битного размера и использует 56-битный ключ, такая длина ключа соответствует 256 комбинаций, что обеспечивало до недавнего времени достаточный уровень безопасности, (8 четных битов полного 64-битного ключа не используются, биты четности являются наименьшими значащими битами байтов ключа). Входной блок данных, состоящий из 64 бит, преобразуется в выходной блок идентичной длины.

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

DES симметричная криптосистема, определенная как 16-раундовый шифр Фейстеля (Feistel) была первоначально предназначена для аппаратной реализации. Когда DES используется для передачи информации, то чтобы зашифровать и расшифровать сообщение или чтобы создать и проверить код подлинности сообщения (MAC) отправитель и получатель должны знать секретный ключ.

Процесс шифрования алгоритма DES заключается в начальной перестановке битов 64-битового блока, шестнадцати циклах шифрования и, наконец, обратной перестановки битов (рис. 2).

Рис.2. Алгоритм шифрования DES

1.2.2 Алгоритм RC6

Алгоритм RC6 -- симметричный блочный криптографический алгоритм, производный от алгоритма RC5.

Вариант шифра RC6, заявленный на конкурс AES, поддерживает блоки длиной 128 бит и ключи длиной 128, 192 и 256 бит, но сам алгоритм может быть сконфигурирован для поддержки более широкого диапазона длин как блоков, так и ключей (от 0 до 2040 бит).

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

Рис. 3. Алгоритм шифрования RС6

Структура шифрования алгоритма RC6 представлена на рис.3. Краткое описание алгоритма: в алгоритме используется 20 раундов преобразований, перед которыми выполняется частичное входное отбеливание:

o B = B + K 0 mod 2 32

o D = D + K 1 mod 2 32 ,

где A, B, C, D - текущие значения обрабатываемых 32-битных субблоков, а K 0 ...K 43 - фрагменты расширенного ключа.

Аналогичным образом выполняется частичное выходное отбеливание:

o A = A + K 42 mod 2 32

o C = C + K 43 mod 2 32 .

В каждом раунде алгоритма выполняются следующие действия:

o t 1 = f(B) <<< 5,

o t 2 = f(D) <<< 5,

o A = ((A Е t 1) <<< t 2) + K 2i mod 2 32 ,

o C = ((C Е t 2) <<< t 1) + K 2i+1 mod 2 32 ,

где t 1 и t 2 -- временные переменные, количество бит вращения на переменное число бит определяется значением 5 младших бит параметра (t 1 или t 2),функция f() выполняет следующее квадратичное преобразование:

f(x) = x * (2x + 1) mod 2 32 .

В конце каждого раунда выполняется сдвиг субблоков.

Достоинства алгоритма:

· Простая структура алгоритма облегчает его анализ.

· Самый быстрый из алгоритмов - финалистов AES на 32-битных платформах.

· Зашифрование и расшифрование в алгоритме RC6 практически идентичны. Недостатки алгоритма:

· Скорость шифрования при программной реализации сильно зависит от того, поддерживает ли платформа 32-битное умножение и вращение на переменное число бит.

· RC6 сложно реализуем аппаратно и в условиях ограниченных ресурсов.

· Достаточно сложно защищается от атак по времени выполнения и потребляемой мощности.

· Недостаточно полно поддерживает расширение ключей «на лету».

· Распараллеливание вычислений при шифровании алгоритмом RC6 реализуемо с ограничениями.

1.2.3 Алгоритм ГОСТ 28147-89

ГОСТ 28147-89 -- советский и российский стандарт симметричного шифрования, введённый в 1990 году, также является стандартом СНГ. Полное название -- «ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования».

Структура алгоритма представлена далее (рис. 4).

Рис. 4. Алгоритм шифрования ГОСТ 28147-89

Блочный шифроалгоритм. При использовании метода шифрования с гаммированием, может выполнять функции поточного шифроалгоритма. ГОСТ 28147-89 -- блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Основа алгоритма шифра -- сеть Фейстеля. Выделяют четыре режима работы ГОСТ 28147-89: простой замены, гаммирование, гаммирование с обратной связью, режим выработки имитовставки.

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

Недостатки алгоритма: Основные проблемы ГОСТа связаны с неполнотой стандарта в части генерации ключей и таблиц замен. Считается, что у ГОСТа существуют «слабые» ключи и таблицы замен, но в стандарте не описываются критерии выбора и отсева «слабых». Также стандарт не специфицирует алгоритм генерации таблицы замен (S-блоков). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой, поднимает ряд проблем: нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен; реализации алгоритма от различных производителей могут использовать разные таблицы замен и могут быть несовместимы между собой; возможность преднамеренного предоставления слабых таблиц замен лицензирующими органами РФ.

1.2.4 Достоинства IDEA перед аналогами

В программной реализации на Intel486SX по сравнению с DES IDEA в два раза быстрее, что является существенным повышением скорости, длина ключа у IDEA имеет размер 128 бит, против 56 бит у DES, что является хорошим улучшением против полного перебора ключей. Вероятность использования слабых ключей очень мала и составляет 1/2 64 . IDEA быстрее алгоритма ГОСТ 28147-89 (в программной реализации на Intel486SX). Использование IDEA в параллельных режимах шифрования на процессорах Pentium III и Pentium MMX позволяет получать высокие скорости. По сравнению с финалистами AES, 4-way IDEA лишь слегка медленнее, чем RC6 и Rijndael на Pentium II, но быстрее, чем Twofish и MARS. На Pentium III 4-way IDEA даже быстрее RC6 и Rijndael. Преимуществом также является хорошая изученность и устойчивость к общеизвестным средствам криптоанализа.

1.3 Режим Cipher Block Chaining - сцепление блоков по шифротексту

В режиме шифрования CBC происходит "сцепливание" всех блоков сообщения по шифротексту.

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

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

Таким образом для всех i = 1...n блок шифртекста C(i) определяется следующим образом:

C(i) = IDEA(M(i) xor C(i-1)),

Расшифрование выполняется следующим образом:

M(i) = C(i-1) xor IDEA-1(C(i)),

Блок M(i) является функцией только C(i-1) и C(i). Поэтому ошибка при передаче приведет к потере только двух блоков исходного текста.

1.4 Сравнение аналогов режима шифрования CBC

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

1.4.1 Electronic Code Book - Электронная кодовая книга

Данный режим является электронным аналогом режима, использовавшегося агентами для отправки зашифрованного сообщения ещё в начале XX века. Агент получал блокнот, каждая страница которого содержала уникальную последовательность - код с помощью которого и зашифровывалось сообщение. После использования такая страница вырывалась из блокнота и уничтожалась. При необходимости сообщение дополнялось так, чтоб на вырываемых страничках не оставалось не использованного кода. Принимающая сторона имела копию блокнота, поэтому, при условии синхронного использования страниц такой режим шифрования обеспечивал как зашифрование так и расшифрование сообщений. В ECB использованию одной страницы кодовой книги при зашифровании соответствует применение к входным данным преобразования функцией CIPH k , а при расшифровании - CIPH -1 k . Обоим сторонам для того, чтобы синхронизироваться достаточно договориться о значении секретного ключа K .

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

С j = CIPH K (P j) ,

где j=1…n

ECB расшифрование:

P j = CIPH K (C j),

где j=1…n

Таким образом шифрование происходит блоками, соответствующими размеру входных/выходных данных для функций и. Блоки шифруются отдельно и независимо друг от друга, что позволяет делать это параллельно. Это достоинство режима ECB и его простота скрадываются двумя значительными недостатками. Первый - то, что длина сообщения должна быть кратна длине блока входных данных блочного шифра, то есть всё сообщение либо можно разбить на целое число таких блоков, либо необходимо каким-то образом дополнять последний блок не несущими информацию данными. Второй недостаток ещё более существенный.

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

1.4.2 Cipher Feed Back

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

В этом режиме размер блока может отличаться от 64. Исходный файл M считывается последовательными t-битовыми блоками (t <= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

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

Для всех i = 1...n блок шифртекста C(i) определяется следующим образом:

C(i) = M(i) xor P(i-1),

где P(i-1) - старшие t битов операции IDEA(С(i-1)), причем, C(0) = IV.

Обновление сдвигового регистра осуществляется путем удаления его старших t битов и дописывания справа C(i).

Восстановление зашифрованных данных также не представляет труда: P(i-1) и C(i) вычисляются аналогичным образом и M(i) = C(i) xor P(i-1).

1.4.3 Output Feed Back

Режим OFB, как и CFB является поточным, то есть функция вызывается в алгоритме до суммирования с порцией открытого текста. Но на этот раз на вход подаётся не шифротекст с предыдущей итерации, а просто её же выходные данные. То есть происходит зацикливание функции.

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

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

I j = O j -1 , j = 1,2, … n

C j = P j + O j , j = 1,2, … n-1

C n = P n + MSB t (O n)

OFB расшифрование:

I j = O j - 1 , j = 2, … n

O j = CIPH K (I j), j = 1,2, … n

P j = C j + O j , j = 1,2, … n-1

P n = C n + MSB t (O n) ,

где «+» - это операция xor.

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

1.4.4 Counter - шифрование со счётчиком

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

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

Таким образом шифротекст в алгоритме режима CTR получается суммированием по модулю 2 очередного блока открытого текста с выходными данными функции. На вход функции подаётся очередное значение Tj счётчика блоков сообщения. Расшифрование происходит также путём суммирования по модулю 2 очередного блока шифротекста и результата преобразования функцией очередного значения счётчика Tj. Обе операции за- и расшифрования в режиме CTR можно производить параллельно и независимо для всех блоков. Кроме того в этом режиме также отсутствует проблема последнего блока. CTR шифрование:

CTR расшифрование:

Режим CTR обладает всеми достоинствами режима ECB (параллельное исполнение, простота и возможность непосредственного шифрования любого блока сообщения по отдельности и независимо от других блоков). Но кроме того, режим CTR исправляет все недостатки шифрования в режиме электронной кодовой книги: одинаковые блоки открытого текста теперь уже не будут преобразованы в одинаковые блоки шифротекста; отпадает необходимость дополнения последнего блока шифротекста. К тому же в этом режиме (как в любом поточном режиме) используется только функция зашифрования, а для некоторых блочных шифров (например для AES - нового американского стандарта блочного шифра), это даёт некоторый выигрыш в производительности. Вот почему этот режим зачастую является наиболее эффективным.

1.4.5 Достоинства Cipher Block Chaining перед аналогами

Итак, можно сделать вывод, что режим симметричного шифрования CВС имеет явное преимущество среди выше рассматриваемых, а именно: в режиме расшифрования, когда весь шифртекст уже получен, функции вполне можно исполнять параллельно и независимо для всех блоков сообщения. Это даёт значительный выигрыш по времени.

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

2. КОНСТРУКТОРСКАЯ ЧАСТЬ

2.1 Функциональное моделирование

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

· Регистрация пользователя с полями:

· Шифрование исходного текста;

· Дешифрация зашифрованного текста;

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

2.2 Алгоритмическое конструирование

Обобщенный алгоритм шифрования IDEA приведен ниже (рис. 5).

После начала работы программы пользователь должен ввести пару: логин + пароль на форме авторизации, либо заполнить форму регистрации. После ввода символов на формах, начнет работать функция шифрования при нажатии на кнопку «Вход» или «Регистрация» соответственно.

Из файла считывается 64-битовый блок данных, который делится на четыре 16-битовых субблока. Эти четыре субблока становятся входом в первый цикл алгоритма. На рисунке эти подблоки обозначены D 1 , D 2 , D 3 , D 4 В каждом раунде используются свои подключи согласно таблице подключей (рис. 6). Над 16-битными подключами и подблоками незашифрованного текста производятся операции, описанные ранее и представленные на схеме алгоритма.

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

Затем берется следующий 64-битный блок незашифрованного текста и алгоритм шифрования повторяется. Так продолжается до тех пор, пока не зашифруются все 64-битные блоки исходного текста.

Зашифрованное сообщение пользователь увидит после успешной авторизации.

Метод вычисления, использующийся для расшифровки текста по существу такой же, как и при его шифровании. Единственное отличие состоит в том, что для расшифровки используются другие подключи. В процессе расшифровки подключи должны использоваться в обратном порядке. Первый и четвёртый подключи i-го раунда расшифровки получаются из первого и четвёртого подключа (10-i)-го раунда шифрования мультипликативной инверсией. Для 1-го и 9-го раундов второй и третий подключи расшифровки получаются из второго и третьего подключей 9-го и 1-го раундов шифрования аддитивной инверсией. Для раундов со 2-го по 8-й второй и третий подключи расшифровки получаются из третьего и второго подключей с 8-го по 2-й раундов шифрования аддитивной инверсией. Последние два подключа i-го раунда расшифровки равны последним двум подключам (9-i)-го раунда шифрования.

Расшифрованное сообщение пользователь увидит после успешного заполнения формы авторизации, при правильно введенном логине и пароле.

Рис. 5. Структура алгоритма IDEA

Рис. 6. Подключи шифрования и дешифрования алгоритма IDEA

2.3 Программная реализация

Курсовая работа реализована в среде программирования Microsoft Visual Studio 2012. Язык программирования, который использовался при написании работы - C#.

Список основных процедур - обработчиков, в которых заложен функционал разрабатываемой программы:

· public static int idea_hash_cbс (char *s, int len, int k, int iv) функция вычисления хэша CBС. В данной функции мы получаем текущее значение для XOR"а (iv), создаем указатель на массив хешируемых данных, делим размер массива на 8 (делаем проверку на кратность 8), шифруем по формуле: C(i) = IDEA(C(i-1) ^ S(i), KEY), и возвращаем полученный хэш.

· private static string ShiftByteLeft(string s) сдвиг на 25 битов циклически влево

· private static string ShiftbyteRight(string s) сдвиг на 25 битов циклически вправо

· private static string Sum(string a1, string a2) суммирование по модулю 2^16

· private static string Multi(string a1, string a2) умножение по модулю 2^16+1 private static string XOR(string a1, string a2) исключающее ИЛИ

· inline T setBit (T v, int nBitNumber) функция установки бита. Биты считаются от 0, нумерация идет слева-направо.

· inline bool getBit (T v, int nBitNumber) функция получения значения бита(true/false).

· map*> keys_archive; архив таблиц "раундовых" ключей, чтобы каждый раз не генерировать ключи заново (функция включает в себя: начальную перестановку ключа, конечную перестановку ключа, сдвиги, таблицу подстановок). private void idea_Encryption (string st1, string st2) алгоритм IDEA. Вход - 2 строки: 1) набор битов считанного блока (длина 64). 2) набор битов нашего ключа (длина 128). Выход - шифроблок (64 символа) public string idea_Decryption (string st1, string st2) функция дешифрования по алгоритму IDEA.

· bool CheckLogin(int hash) функция читает логин, если хеш из аргументов равен считанному логину, то закрывает файл и выдает положительный результат. Если нет - выдает сообщение «Неверный логин»

· bool CheckPass(int login_hash, int pass_hash) функция читает логин и пароль, если логин равен запрошенному, но пароль не совпадает, то закрывает файл и выдает сообщение «Неверный пароль». Если логин и пароль совпадают, то функция возвращает «истина».

Программа состоит из трех форм: форма регистрации (рис. 7.), форма авторизации (рис.8.) и форма с выводом зашифрованного и расшифрованного текста (рис. 9.). Данные формы представлены ниже.

программный блочный шифрование аутентификация

Рис.8. Форма Регистрации

Рис.9. Форма вывода информации

3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

Тест 1. Тестирование проверки наличия логина пользователя

Входные данные:

· Нажатие на кнопку Вход при не введенном логине

Результат:

· Сообщение об ошибке. Просьба ввести логин

Тест 2. Тестирование проверки введенного пароля пользователя

Входные данные:

· Нажатие на кнопку Вход при не введенном пароле

Результат:

· Сообщение об ошибке. Просьба ввести пароль

Вывод: функция проверки работает корректно.

Тест 3. Тестирование функции шифрования при длине текста не более 50 символов.

Входные данные:

· ФИО: Какой-то текст

Тест 4. Тестирование функции шифрования при длине текста более 50 символов.

Входные данные:

· ФИО: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Вывод: функция шифрования работает корректно.

Тест 4. Добавление символа в начало зашифрованного хэша.

Тест 5. Добавление символа в середину зашифрованного хэша.

Вывод: дешифрация части текста не будет произведена.

ЗАКЛЮЧЕНИЕ

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

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

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

СПИСОК ЛИТЕРАТУРЫ

1. Википедия. Алгоритм IDEA [Электронный ресурс]. - Режим доступа: - http://ru.wikipedia.org/wiki/IDEA.

2. MSDN [Электронный ресурс]. - Режим доступа: - http://msdn.microsoft.com/ru-ru/.

3. Википедия. Режим сцепления блоков шифротекста [Электронный ресурс]. - Режим доступа: - https://ru.wikipedia.org/wiki/Режим_сцепления_блоков_шифротекста.

4. [Электронный ресурс] - Олег Зензин -- Режимы шифрования, раздел Накопление ошибок в различных режимах шифрования - Режим доступа: - http://citforum.ru/security/cryptography/rejim_shifrov/

5. [Электронный ресурс] - Сравнительный обзор алгоритмов PGP - Режим доступа: - https://www.pgpru.com/biblioteka/statji/sravniteljnyjjobzoralgoritmovpgp

Размещено на Allbest.ru

Подобные документы

    Реализация алгоритма DES и режимов шифрования для любой длины сообщения и любой длины ключа. Шифрование сообщений различной длины и ключа с замериванием времени и скорости шифрования. Реализация алгоритма RSA. Сохранение зашифрованного файла на диск.

    курсовая работа , добавлен 26.01.2010

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

    курсовая работа , добавлен 27.03.2012

    История появления симметричных алгоритмов шифрования. Роль симметричного ключа в обеспечении степени секретности сообщения. Диффузия и конфузия как способы преобразования бит данных. Алгоритмы шифрования DES и IDEA, их основные достоинства и недостатки.

    лабораторная работа , добавлен 18.03.2013

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

    курсовая работа , добавлен 17.02.2011

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

    курсовая работа , добавлен 29.10.2017

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

    контрольная работа , добавлен 26.09.2012

    Разработка программы, реализующей процедуры шифрования и расшифрования текста по стандарту DES (Data Encryption Standard). Структура алгоритма шифрования, схема выработки ключевых элементов. Использование криптографического программного средства.

    курсовая работа , добавлен 15.06.2013

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

    курсовая работа , добавлен 13.11.2009

    Симметричные криптосистемы как способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. Разбор и реализация шифрования алгоритма: простая и двойная перестановка, перестановка "магический квадрат".

    курсовая работа , добавлен 11.03.2013

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

Алгоритм IDEA (International Data Encryption Algorithm ) является блочным шифром. Он оперирует 64-битовыми блоками открытого текста. Несомненным достоинством алгоритма IDEA является то, что его ключ имеет длину 128 бит. Один и тот же алгоритм используется и для шифрования, и для дешифрования.

Первая версия алгоритма IDEA была предложена в 1990 г., ее авторы - Х.Лей и Дж.Мэсси. Первоначальное алгоритм назывался PES (Proposed Encryption Standard). Улучшенный вариант этого алгоритма, разработанный в 1991 г., получил название IPES (Improved Proposed Encryption Standard). В 1992 г. IPES изменил свое имя на IDEA. Алгоритм IDEA использует при шифровании процессы смешивания и рассеивания, которые легко реализуются аппаратными и программными средствами.

    В IDEA используются следующие математические операции:
  • поразрядное сложение по модулю 2 (операция "исключающее ИЛИ"); операция обозначается как (+);
  • сложение беззнаковых целых по модулю 2 16 ; операция обозначается как [+];
  • умножение беззнаковых целых по модулю (2 16 +1), причем блок из 16 нулей рассматривается как 2 16 ; операция обозначается как (·).

Все операции выполняются над 16-битовыми субблоками.

    Эти три операции несовместимы в том смысле, что:
  • никакая пара из этих трех операций не удовлетворяет ассоциативному закону,
    например a[+] (b(+)c) # (a[+]b) (+)c;
  • никакая пара из этих трех операций не удовлетворяет дистрибутивному закону,
    например a[+] (b(·)c) # (a[+]b) (·) (a[+]с) .

Комбинирование этих трех операций обеспечивает комплексное преобразование входных данных, существенно затрудняя крипто-анализ IDEA по сравнению с DES , который базируется исключительно на операции "исключающее ИЛИ".

Общая схема алгоритма IDEA приведена на рис.1. 64-битовый блок данных делится на четыре 16-битовых субблока. Эти четыре субблока становятся входом в первый цикл алгоритма. Всего выполняется восемь циклов. Между циклами второй и третий субблоки меняются местами. В каждом цикле выполняется следующая последовательность операций:

  1. (+) - сложение результатов шагов 1 и 3.
  2. (+) - сложение результатов шагов 2 и 4.
  3. (·) - умножение результата шага 5 и пятого подключа.
  4. [+] - сложение результатов шагов 6 и 7.
  5. (·) - умножение результата шага 8 и шестого подключа.
  6. [+] - сложение результатов шагов 7 и 9.
  7. (+) - сложение результатов шагов 1 и 9.
  8. (+) - сложение результатов шагов 3 и 9.
  9. (+) - сложение результатов шагов 2 и 10.
  10. (+) - сложение результатов шагов 4 и 10.

Рис.1. Cхема алгоритма IDEA (режим шифрования)

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

    После восьмого цикла осуществляется заключительное преобразование выхода:
  1. (·) - умножение субблока X 1 и первого подключа.
  2. [+] - сложение субблока X 2 и второго подключа.
  3. [+] - сложение субблока X 3 и третьего подключа.
  4. (·) - умножение субблока X 4 и четвертого подключа.

Полученные четыре субблока Y 1 ...Y 4 объединяют в блок шифртекста.

Создание подключей Z 1 ...Z 6 также относительно несложно. Алгоритм использует всего 52 подключа (по шесть для каждого из восьми циклов и еще четыре для преобразования выхода). Сначала 128-битовый ключ делится на восемь 16-битовых подключей. Это - первые восемь подключей для алгоритма (шесть подключей - для первого цикла и первые два подключа - для второго). Затем 128-битовый ключ циклически сдвигается влево на 25 бит и снова делится на восемь подключей (четыре подключа - для второго цикла и четыре подключа - для третьего). Ключ снова циклически сдвигается влево на 25 бит для получения следующих восьми подключей и т.д., пока выполнение алгоритма не завершится.

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

Таблица 1
Подключи шифрования и дешифрования алгоритма IDEA
Цикл Подключи шифрования Подключи дешифрования
1 Z 1 (1) Z 2 (1) Z 3 (1) Z 4 (1) Z 5 (1) Z 6 (1) Z 1 (9)-1 -Z 2 (9) -Z 3 (9) Z 4 (9)-1 Z 5 (8) Z 6 (8)
2 Z 1 (2) Z 2 (2) Z 3 (2) Z 4 (2) Z 5 (2) Z 6 (2) Z 1 (8)-1 -Z 3 (8) -Z 2 (8) Z 4 (8)-1 Z 5 (7) Z 6 (7)
3 Z 1 (3) Z 2 (3) Z 3 (3) Z 4 (3) Z 5 (3) Z 6 (3) Z 1 (7)-1 -Z 2 (7) -Z 3 (7) Z 4 (7)-1 Z 5 (6) Z 6 (6)
4 Z 1 (4) Z 2 (4) Z 3 (4) Z 4 (4) Z 5 (4) Z 6 (4) Z 1 (6)-1 -Z 3 (6) -Z 2 (6) Z 4 (6)-1 Z 5 (5) Z 6 (5)
5 Z 1 (5) Z 2 (5) Z 3 (5) Z 4 (5) Z 5 (5) Z 6 (5) Z 1 (5)-1 -Z 2 (5) -Z 3 (5) Z 4 (5)-1 Z 5 (4) Z 6 (4)
6 Z 1 (6) Z 2 (6) Z 3 (6) Z 4 (6) Z 5 (6) Z 6 (6) Z 1 (4)-1 -Z 3 (4) -Z 2 (4) Z 4 (4)-1 Z 5 (3) Z 6 (3)
7 Z 1 (7) Z 2 (7) Z 3 (7) Z 4 (7) Z 5 (7) Z 6 (7) Z 1 (3)-1 -Z 2 (3) -Z 3 (3) Z 4 (3)-1 Z 5 (2) Z 6 (2)
8 Z 1 (8) Z 2 (8) Z 3 (8) Z 4 (8) Z 5 (8) Z 6 (8) Z 1 (2)-1 -Z 3 (2) -Z 2 (2) Z 4 (2)-1 Z 5 (1) Z 6 (1)
Преобра-
зование
выхода
Z 1 (9) Z 2 (9) Z 3 (9) Z 4 (9) Z 1 (1)-1 -Z 2 (1) -Z 3 (1) Z 4 (1)-1

Для реализации алгоритма IDEA было принято соглашение, что мультипликативная обратная величина (1/x) от 0 равна 0.

Алгоритм IDEA обладает рядом преимуществ перед алгоритмом DES . Он зачительно безопаснее алгоритма DES, поскольку 128-битовый ключ алгоритма IDEA вдвое больше ключа DES. Внутренняя структура алгоритма IDEA обеспечивает лучшую устойчивость к криптоанализ у. Существующие программные реализации примерно вдвое быстрее реализаций алгоритма DES. Алгоритм IDEA запатентован в Европе и США.

ВВЕДЕНИЕ

АНАЛИТИЧЕСКАЯ ЧАСТЬ

1 Алгоритм IDEA

2 Сравнение аналогов алгоритма IDEA

2.1 Алгоритм DES

2.2 Алгоритм RC6

2.3 Алгоритм ГОСТ 28147-89

2.4 Достоинства IDEA перед аналогами

3 Режим Cipher Block Chaining - сцепление блоков по шифротексту

4 Сравнение аналогов режима шифрования CBC

4.1 Electronic Code Book - Электронная кодовая книга

4.2 Cipher Feed Back - обратная загрузка шифротекста

4.3 Output Feed Back - обратная загрузка выходных данных

4.4 Counter - шифрование со счётчиком

4.5 Достоинства Cipher Block Chaining перед аналогами

КОНСТРУКТОРСКАЯ ЧАСТЬ

1 Функциональное моделирование

2 Алгоритмическое конструирование

3 Программная реализация

ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ВВЕДЕНИЕ

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

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

Классическим примером таких алгоритмов являются симметричные криптографические алгоритмы, перечисленные ниже:- простая подстановка;

одиночная перестановка по ключу;

двойная перестановка;

перестановка "Магический квадрат";

простая перестановка.

Полная утрата всех статистических закономерностей исходного сообщения является важным требованием к симметричному шифру. Для этого шифр должен иметь «эффект лавины», т.е. должно происходить сильное изменение шифроблока при 1битном изменении входных данных (в идеале должны меняться значения 1/2 бит шифроблока).

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

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

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

Существует множество алгоритмов симметричных шифров, существенными параметрами которых являются:

·стойкость;

·длина ключа;

·число раундов;

·длина обрабатываемого блока;

·сложность аппаратной/программной реализации;

·сложность преобразования.

1.АНАЛИТИЧЕСКАЯ ЧАСТЬ

1Алгоритм IDEA

IDEA (англ. International Data Encryption Algorithm, международный алгоритм шифрования данных) - симметричный блочный алгоритм шифрования данных, запатентованный швейцарской фирмой Ascom. Это алгоритм блочного симметричного шифрования, который был предложен на замену стандарта DES. Начальная версия алгоритма IDEA появилась в 1990г. Разработчики алгоритма, Ксуеджа Лай (Xuejia Lai) и Джеймс Мэсси (James Massey) из Швейцарского института ETH Zurich, дали ему название PES (Proposed Encryption Standard -предлагаемый стандарт шифрования).

Так как IDEA использует 128-битный ключ и 64-битный размер блока, открытый текст разбивается на блоки по 64 бит. Если такое разбиение невозможно, последний блок дополняется различными способами определённой последовательностью бит. Для избежания утечки информации о каждом отдельном блоке используются различные режимы шифрования. Каждый исходный незашифрованный 64-битный блок делится на четыре подблока по 16 бит каждый, так как все алгебраические операции, использующиеся в процессе шифрования, совершаются над 16-битными числами. Для шифрования и дешифрования IDEA использует один и тот же алгоритм.

В IDEA используются следующие математические операции:

 поразрядное сложение по модулю 2 (операция "исключающее ИЛИ");

 сложение беззнаковых целых по модулю 216;

 умножение беззнаковых целых по модулю (216+1), причем блок из 16 нулей рассматривается как 216;

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

Структура алгоритма IDEA представлена ниже (рис. 1).

Рис. 1. Алгоритм шифрования IDEA

·режим электронной кодовой книги (ECB - Electronic Code Book)

·режим сцепления блоков (СВС - Cipher Block Chaining)

·режим обратной связи по шифртексту (CFB - Cipher Feed Back)

·режим обратной связи по выходу (OFB - Output Feed Back).

В данной курсовой работе рассматривается программная реализация алгоритма шифровании IDEA (режим Cipher Feed Back).

1.2Сравнение аналогов алгоритма IDEA

1.2.1Алгоритм DES

DES (Data Encryption Standart) - Симметричный алгоритм шифрования, в котором один ключ используется, как для шифрования, так и для расшифрования данных. DES имеет блоки по 64 бит и 16 цикловую структуру сети Фейстеля, для шифрования использует ключ с длиной 56 бит.

Алгоритм использует комбинацию нелинейных (S-блоки) и линейных (перестановки E, IP, IP-1) преобразований.

Так как DES оперирует блоками 64-битного размера и использует 56-битный ключ, такая длина ключа соответствует 256 комбинаций, что обеспечивало до недавнего времени достаточный уровень безопасности, (8 четных битов полного 64-битного ключа не используются, биты четности являются наименьшими значащими битами байтов ключа). Входной блок данных, состоящий из 64 бит, преобразуется в выходной блок идентичной длины.

Вследствие использования 56-битного ключа шифрования алгоритм DES может быть взломан путем тотального перебора на любой современной вычислительной системе за вполне реальные сроки - несколько дней.симметричная криптосистема, определенная как 16-раундовый шифр Фейстеля (Feistel) была первоначально предназначена для аппаратной реализации. Когда DES используется для передачи информации, то чтобы зашифровать и расшифровать сообщение или чтобы создать и проверить код подлинности сообщения (MAC) отправитель и получатель должны знать секретный ключ.

Процесс шифрования алгоритма DES заключается в начальной перестановке битов 64-битового блока, шестнадцати циклах шифрования и, наконец, обратной перестановки битов (рис. 2).

Рис.2. Алгоритм шифрования DES

1.2.2Алгоритм RC6

Вариант шифра RC6, заявленный на конкурс AES, поддерживает блоки длиной 128 бит и ключи длиной 128, 192 и 256 бит, но сам алгоритм может быть сконфигурирован для поддержки более широкого диапазона длин как блоков, так и ключей (от 0 до 2040 бит).

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

Рис. 3. Алгоритм шифрования RС6

Структура шифрования алгоритма RC6 представлена на рис.3. Краткое описание алгоритма: в алгоритме используется 20 раундов преобразований, перед которыми выполняется частичное входное отбеливание:

oB = B + K0 mod 232

oD = D + K1 mod 232,

где A, B, C, D - текущие значения обрабатываемых 32-битных субблоков, а K0...K43 - фрагменты расширенного ключа.

Аналогичным образом выполняется частичное выходное отбеливание:

oA = A + K42 mod 232

oC = C + K43 mod 232.

В каждом раунде алгоритма выполняются следующие действия:

ot1 = f(B) <<< 5,

ot2 = f(D) <<< 5,

oA = ((A Å t1) <<< t2) + K2i mod 232,

oC = ((C Å t2) <<< t1) + K2i+1 mod 232,

где t1 и t2 - временные переменные, количество бит вращения на переменное число бит определяется значением 5 младших бит параметра (t1 или t2),функция f() выполняет следующее квадратичное преобразование:

(x) = x * (2x + 1) mod 232.

В конце каждого раунда выполняется сдвиг субблоков.

Достоинства алгоритма:

·Простая структура алгоритма облегчает его анализ.

·Самый быстрый из алгоритмов - финалистов AES на 32-битных платформах.

·Зашифрование и расшифрование в алгоритме RC6 практически идентичны. Недостатки алгоритма:

·Скорость шифрования при программной реализации сильно зависит от того, поддерживает ли платформа 32-битное умножение и вращение на переменное число бит.

·RC6 сложно реализуем аппаратно и в условиях ограниченных ресурсов.

·Достаточно сложно защищается от атак по времени выполнения и потребляемой мощности.

·Недостаточно полно поддерживает расширение ключей «на лету».

·Распараллеливание вычислений при шифровании алгоритмом RC6 реализуемо с ограничениями.

1.2.3Алгоритм ГОСТ 28147-89

ГОСТ 28147-89 - советский и российский стандарт симметричного шифрования, введённый в 1990 году, также является стандартом СНГ. Полное название - «ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования».

Рис. 4. Алгоритм шифрования ГОСТ 28147-89

Блочный шифроалгоритм. При использовании метода шифрования с гаммированием, может выполнять функции поточного шифроалгоритма. ГОСТ 28147-89 - блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Основа алгоритма шифра - сеть Фейстеля. Выделяют четыре режима работы ГОСТ 28147-89: простой замены, гаммирование, гаммирование с обратной связью, режим выработки имитовставки.

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

Недостатки алгоритма: Основные проблемы ГОСТа связаны с неполнотой стандарта в части генерации ключей и таблиц замен. Считается, что у ГОСТа существуют «слабые» ключи и таблицы замен, но в стандарте не описываются критерии выбора и отсева «слабых». Также стандарт не специфицирует алгоритм генерации таблицы замен (S-блоков). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой, поднимает ряд проблем: нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен; реализации алгоритма от различных производителей могут использовать разные таблицы замен и могут быть несовместимы между собой; возможность преднамеренного предоставления слабых таблиц замен лицензирующими органами РФ.

1.2.4Достоинства IDEA перед аналогами

В программной реализации на Intel486SX по сравнению с DES IDEA в два раза быстрее, что является существенным повышением скорости, длина ключа у IDEA имеет размер 128 бит, против 56 бит у DES, что является хорошим улучшением против полного перебора ключей. Вероятность использования слабых ключей очень мала и составляет 1/264 . IDEA быстрее алгоритма ГОСТ 28147-89 (в программной реализации на Intel486SX ). Использование IDEA в параллельных режимах шифрования на процессорах Pentium III и Pentium MMX позволяет получать высокие скорости. По сравнению с финалистами AES, 4-way IDEA лишь слегка медленнее, чем RC6 и Rijndael на Pentium II , но быстрее, чем Twofish и MARS . На Pentium III 4-way IDEA даже быстрее RC6 и Rijndael . Преимуществом также является хорошая изученность и устойчивость к общеизвестным средствам криптоанализа.

1.3Режим Cipher Block Chaining - сцепление блоков по шифротексту

В режиме шифрования CBC происходит "сцепливание" всех блоков сообщения по шифротексту.

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

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

Таким образом для всех i = 1...n блок шифртекста C(i) определяется следующим образом:

C(i) = IDEA(M(i) xor C(i-1)),

Расшифрование выполняется следующим образом:

M(i) = C(i-1) xor IDEA-1(C(i)),

Блок M(i) является функцией только C(i-1) и C(i). Поэтому ошибка при передаче приведет к потере только двух блоков исходного текста.

1.4Сравнение аналогов режима шифрования CBC

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

1.4.1 Electronic Code Book - Электронная кодовая книга

Данный режим является электронным аналогом режима, использовавшегося агентами для отправки зашифрованного сообщения ещё в начале XX века. Агент получал блокнот, каждая страница которого содержала уникальную последовательность - код с помощью которого и зашифровывалось сообщение. После использования такая страница вырывалась из блокнота и уничтожалась. При необходимости сообщение дополнялось так, чтоб на вырываемых страничках не оставалось не использованного кода. Принимающая сторона имела копию блокнота, поэтому, при условии синхронного использования страниц такой режим шифрования обеспечивал как зашифрование так и расшифрование сообщений. В ECB использованию одной страницы кодовой книги при зашифровании соответствует применение к входным данным преобразования функцией CIPHk , а при расшифровании - CIPH-1k. Обоим сторонам для того, чтобы синхронизироваться достаточно договориться о значении секретного ключа K .

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

Сj = CIPHK(Pj) ,

ECB расшифрование:

Pj = CIPHK(Cj),

Таким образом шифрование происходит блоками, соответствующими размеру входных/выходных данных для функций и. Блоки шифруются отдельно и независимо друг от друга, что позволяет делать это параллельно. Это достоинство режима ECB и его простота скрадываются двумя значительными недостатками. Первый - то, что длина сообщения должна быть кратна длине блока входных данных блочного шифра, то есть всё сообщение либо можно разбить на целое число таких блоков, либо необходимо каким-то образом дополнять последний блок не несущими информацию данными. Второй недостаток ещё более существенный.

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

1.4.2 Cipher Feed Back - обратная загрузка шифротекста

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

В этом режиме размер блока может отличаться от 64. Исходный файл M считывается последовательными t-битовыми блоками (t <= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

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

Для всех i = 1...n блок шифртекста C(i) определяется следующим образом:

(i) = M(i) xor P(i-1),

где P(i-1) - старшие t битов операции IDEA(С(i-1)), причем, C(0) = IV.

Обновление сдвигового регистра осуществляется путем удаления его старших t битов и дописывания справа C(i).

Восстановление зашифрованных данных также не представляет труда: P(i-1) и C(i) вычисляются аналогичным образом и M(i) = C(i) xor P(i-1).

1.4.3 Output Feed Back - обратная загрузка выходных данных

Режим OFB, как и CFB является поточным, то есть функция вызывается в алгоритме до суммирования с порцией открытого текста. Но на этот раз на вход подаётся не шифротекст с предыдущей итерации, а просто её же выходные данные. То есть происходит зацикливание функции.

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

I1 = IV

Ij = O j-1, j = 1,2, … n

Oj = CIPHK (Ij), j = 1,2, … n

Cj = Pj + Oj, j = 1,2, … n-1n = Pn + MSBt (On)

OFB расшифрование:

I1 = IVj = O j-1, j = 2, … nj = CIPHK (Ij), j = 1,2, … nj = Cj + Oj, j = 1,2, … n-1n = Cn + MSBt (On) ,

где «+» - это операция xor.

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

1.4.4 Counter - шифрование со счётчиком

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

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

Таким образом шифротекст в алгоритме режима CTR получается суммированием по модулю 2 очередного блока открытого текста с выходными данными функции. На вход функции подаётся очередное значение Tj счётчика блоков сообщения. Расшифрование происходит также путём суммирования по модулю 2 очередного блока шифротекста и результата преобразования функцией очередного значения счётчика Tj. Обе операции за- и расшифрования в режиме CTR можно производить параллельно и независимо для всех блоков. Кроме того в этом режиме также отсутствует проблема последнего блока. CTR шифрование:

расшифрование:

Режим CTR обладает всеми достоинствами режима ECB (параллельное исполнение, простота и возможность непосредственного шифрования любого блока сообщения по отдельности и независимо от других блоков). Но кроме того, режим CTR исправляет все недостатки шифрования в режиме электронной кодовой книги: одинаковые блоки открытого текста теперь уже не будут преобразованы в одинаковые блоки шифротекста; отпадает необходимость дополнения последнего блока шифротекста. К тому же в этом режиме (как в любом поточном режиме) используется только функция зашифрования, а для некоторых блочных шифров (например для AES - нового американского стандарта блочного шифра), это даёт некоторый выигрыш в производительности. Вот почему этот режим зачастую является наиболее эффективным.

1.4.5 Достоинства Cipher Block Chaining перед аналогами

Итак, можно сделать вывод, что режим симметричного шифрования CВС имеет явное преимущество среди выше рассматриваемых, а именно: в режиме расшифрования, когда весь шифртекст уже получен, функции вполне можно исполнять параллельно и независимо для всех блоков сообщения. Это даёт значительный выигрыш по времени.

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

2. КОНСТРУКТОРСКАЯ ЧАСТЬ

1 Функциональное моделирование

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

·Регистрация пользователя с полями:

oлогин,

oпароль,

oФИО,

oдата рождения,

·Авторизация пользователя с полями:

oлогин,

oпароль;

·Шифрование исходного текста;

·Дешифрация зашифрованного текста;

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

2 Алгоритмическое конструирование

Обобщенный алгоритм шифрования IDEA приведен ниже (рис. 5).

После начала работы программы пользователь должен ввести пару: логин + пароль на форме авторизации, либо заполнить форму регистрации. После ввода символов на формах, начнет работать функция шифрования при нажатии на кнопку «Вход» или «Регистрация» соответственно.

Из файла считывается 64-битовый блок данных, который делится на четыре 16-битовых субблока. Эти четыре субблока становятся входом в первый цикл алгоритма. На рисунке эти подблоки обозначены D1, D2, D3, D4 В каждом раунде используются свои подключи согласно таблице подключей (рис. 6). Над 16-битными подключами и подблоками незашифрованного текста производятся операции, описанные ранее и представленные на схеме алгоритма.

Алгоритм шифрования RC6

RC6 -- симметричный блочный криптографический алгоритм, производный от алгоритма RC5. Был создан Роном Ривестом, Мэттом Робшау и Рэем Сиднеем для удовлетворения требований конкурса Advanced Encryption Standard (AES). Алгоритм был одним из пяти финалистов конкурса, был также представлен NESSIE и CRYPTREC.

RC6 -- полностью параметризированная семья алгоритмов шифрования. Для спецификации алгоритма с конкретными параметрами, принято обозначение

w -- длина машинного слова в битах;

r -- число раундов;

b -- длина ключа в байтах. Возможные значения 0..255 байт.

Общая схема реализации алгоритма RC6 представлена на Рисунке 8.

Рисунок 8 - Общая схема RC6.

Вариант алгоритма RC6, который был заявлен на AES, как уже было сказано, поддерживает блоки длиной 128 бит и ключи длиной 128, 192 и 256 бит, а также содержит 20 раундов. То есть

криптосистема шифрование данные

где b=128,192 или 256 бит. В отношении такого алгоритма никаких атак не было обнаружено. Были обнаружены атаки только против упрощенных версий алгоритма, то есть алгоритма с уменьшенным количеством раундов.

Полагается, что лучший вариант нападения на RС6, доступный для криптоаналитика, является полным перебором b-байтового ключа шифрования (или расширенный ключевой массив S , когда предоставленный пользователем ключ шифрования особенно длинный). Таким образом, можно заключить, что RC6 можно считать полностью безопасным алгоритмом.

Алгоритм шифрования IDEA

IDEA -- симметричный блочный алгоритм шифрования данных, запатентованный швейцарской фирмой Ascom. Известен тем, что применялся в пакете программ шифрования PGP. В ноябре 2000 года IDEA был представлен в качестве кандидата в проекте NESSIE в рамках программы Европейской комиссии IST .

Общая структура алгоритма приведена на рисунке 9.

Рисунок 9 - Общая схема IDEA

Первую версию алгоритма разработали в 1990 году Лай и Джеймс Мэсси из Швейцарского института ETH Zьrich в качестве замены DES. Алгоритм использует 128 бит ключевой информации и оперирует блоками данных длиной 64 бита.

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

Принципиальным нововведением в IDEA является использование операций из разных алгебраических групп, а именно:

сложение по модулю;

умножение по модулю;

побитовое исключающее ИЛИ (XOR).

Эти три операции несовместимы в том смысле, что:

никакие две из них не удовлетворяют дистрибутивному закону, то есть:

a*(b+c) <> (a*b)+(a*c)

никакие две из них не удовлетворяют ассоциативному закону, то есть:

a+(b XOR c) <> (a+b) XOR c.

Применение этих трех операций затрудняет криптоанализ IDEA по сравнению с DES, который основан исключительно на операции исключающее ИЛИ, а также позволяет отказаться от использования S-блоков и таблиц замены .

Сам процесс шифрования состоит из восьми одинаковых раундов шифрования и одного выходного преобразования. Исходный незашифрованный текст делится на блоки по 64 бита. Каждый такой блок делится на четыре подблока по 16 бит каждый. В каждом раунде используются свои подключи согласно таблице подключей. Над 16-битными подключами и подблоками незашифрованного текста производятся следующие операции:

умножение по модулю 216 + 1 = 65537, причем вместо нуля используется 216;

сложение по модулю 216;

побитовое исключающее ИЛИ.

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

умножение по модулю 216 +1;

сложение по модулю 216.

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

К неоспоримым достоинствам IDEA стоит отнести практическую устойчивость ко всем атакам и хорошую скорость шифрования. К недостаткам алгоритма принято относить медленную скорость шифрования по сравнению с новейшими алгоритмами .