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

Алгоритм шифрования 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 стоит отнести практическую устойчивость ко всем атакам и хорошую скорость шифрования. К недостаткам алгоритма принято относить медленную скорость шифрования по сравнению с новейшими алгоритмами .

симметричным алгоритмом шифрования, разработанным Сюдзя Лай (Xuejia Lai) и Джеймсом Массей (James Massey) из швейцарского федерального института технологий. Первоначальная версия была опубликована в 1990 году. Пересмотренная версия алгоритма, усиленная средствами защиты от дифференциальных криптографических атак, была представлена в 1991 году и подробно описана в 1992 году.

IDEA является одним из нескольких симметричных криптографических алгоритмов, которыми первоначально предполагалось заменить DES .

Принципы разработки

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

Целью разработки IDEA было создание относительно стойкого криптографического алгоритма с достаточно простой реализацией.

Криптографическая стойкость

Следующие характеристики IDEA характеризуют его криптографическую стойкость:

  1. Длина блока : длина блока должна быть достаточной, чтобы скрыть все статистические характеристики исходного сообщения. С другой стороны, сложность реализации криптографической функции возрастает экспоненциально в соответствии с размером блока. Использование блока размером в 64 бита в 90-е годы означало достаточную силу. Более того, использование режима шифрования СВС говорит о дальнейшем усилении этого аспекта алгоритма.
  2. Длина ключа : длина ключа должна быть достаточно большой для того, чтобы предотвратить возможность простого перебора ключа. При длине ключа 128 бит IDEA считается достаточно безопасным.
  3. Конфузия : зашифрованный текст должен зависеть от ключа сложным и запутанным способом.
  4. Диффузия : каждый бит незашифрованного текста должен влиять на каждый бит зашифрованного текста. Распространение одного незашифрованного бита на большое количество зашифрованных бит скрывает статистическую структуру незашифрованного текста. Определить, как статистические характеристики зашифрованного текста зависят от статистических характеристик незашифрованного текста, должно быть непросто. IDEA с этой точки зрения является очень эффективным алгоритмом .

В IDEA два последних пункта выполняются с помощью трех операций. Это отличает его от DES , где все построено на использовании операции XOR и маленьких нелинейных S-boxes .

Каждая операция выполняется над двумя 16-битными входами и создает один 16-битный выход. Этими операциями являются:

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

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

Шифрование

Рассмотрим общую схему шифрования IDEA . Как и в любом алгоритме шифрования, здесь существует два входа: незашифрованный блок и ключ. В данном случае незашифрованный блок имеет длину 64 бита, ключ имеет длину 128 бит.

Состоит из восьми раундов , за которыми следует заключительное преобразование. Алгоритм разделяет блок на четыре 16-битных подблока. Каждый раунд получает на входе четыре 16-битных подблока и создает четыре 16-битных выходных подблока. Заключительное преобразование также получает на входе четыре 16-битных подблока и создает четыре 16-битных подблока. Каждый раунд использует шесть 16-битных ключей, заключительное преобразование использует четыре подключа , т.е. всего в алгоритме используется 52 подключа .


Рис. 3.1.
Последовательность преобразований отдельного раунда

Рассмотрим последовательность преобразований отдельного раунда .

Одним из основных элементов алгоритма, обеспечивающих диффузию , является структура, называемая МА (умножение/сложение):


Рис. 3.2.

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

Раунд начинается с преобразования, которое комбинирует четыре входных подблока с четырьмя подключами , используя операции сложения и умножения. Четыре выходных блока этого преобразования комбинируются, используя операцию XOR для формирования двух 16-битных блоков, которые являются входами МА структуры. Кроме того, МА структура имеет на входе еще два подключа и создает два 16-битных выхода.


Рис. 3.3.

В заключении четыре выходных подблока первого преобразования комбинируются с двумя выходными подблоками МА структуры, используя XOR для создания четырех выходных подблоков данной итерации. Заметим, что два выхода, которые частично создаются вторым и третьим входами (Х 2 и Х 3 ), меняются местами для создания второго и третьего выходов (W 12 и W 13 ). Это увеличивает перемешивание бит и делает алгоритм более стойким для дифференциального криптоанализа .

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

ВВЕДЕНИЕ

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

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-битными подключами и подблоками незашифрованного текста производятся операции, описанные ранее и представленные на схеме алгоритма.

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

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

Каждый 64-битный блок рассматривается как четыре 16-битных подблока, которые преобразуются с использованием следующих целочисленных операций.
1. Побитное сложение по модулю 2 (XOR) двух 16-битных операндов, которое будем обозначать как ..
2. Сложение двух целых 16-битных операндов по модулю 216, обозначенное как .
3. Умножение двух чисел без знака по модулю . Результат операции умножения усекается до длины в 16 бит. При вычислении данной операции существует исключение для кода со всеми нулями, который при умножении рассматривается как число . Данную операцию будем обозначать как .
Процедура шифрования состоит из восьми одинаковых раундов и дополнительного 9-го выходного раунда (рис. 8, а ).


Рис. 8 . Алгоритм IDEA:
а – схема процедуры шифрования; б – мультипликативно-аддитивная структура
На выходе 9-го раунда формируется содержимое четырёх 16-битных подблоков, образующих блок шифротекста.
Основной частью каждого раунда является мультипликативно-аддитивная структура (рис. 8, б ).

Здесь F F 2 16-битные значения, полученные из открытого текста,
Z Z 6 – 16-битные подключи.

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


Рис. 9 . Первый раунд шифрования алгоритма IDEA
Данные, получаемые на выходе i -го раунда шифрования, подаются на вход (i +1)-го раунда. Входными данными 1-го раунда являются четыре
16-битных подблока (X 1, X 2, X 3, X 4) 64-битного блока исходного текста.

Схема выполнения 9-го раунда шифрования приведена на рис. 10.


Рис. 10 . Девятый раунд шифрования алгоритма IDEA
Следует обратить внимание на то, что второй и третий подблоки промежуточного значения W меняются местами после выполнения каждого раунда шифрования кроме восьмого.

На каждом из девяти раундов используются значения 16-битных итерационных ключей Zi , которые получаются путём преобразования исходного 128-битного ключа K .

Первые 8 итерационных ключей Z 1…Z 8 берутся как восемь последовательных частей 128-битного ключа. Для получения следующих восьми итерационных ключей 128-битное значение ключа K циклически сдвигается на 25 бит влево и ключи Z 9…Z 16 вновь берутся как его 8 последовательных частей. Данный процесс повторяется до тех пор, пока не будут получены все 52 итерационных ключа.

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

Таблица 3
Значения ключей, используемых в алгоритме IDEA
для дешифрования

При этом выполняются следующие соотношения:
(9)
(10)
Таким образом, для ключа Zj значение, обозначаемое как –Zj , является аддитивным инверсным по модулю , а значение, обозначаемое как
– мультипликативным инверсным по модулю +1.

Порядок использования итерационных ключей при шифровании показан на рис. 11.


Рис. 11 . Порядок использования итерационных ключей алгоритма IDEA

При выполнении дешифрования раунды алгоритма выполняются в таком же порядке. На вход первого раунда подаётся четыре 16-битных подблока 64-битного блока шифротекста. Значения, полученные после выполнения выходного раунда, являются подблоками 64-битного блока исходного текста. Отличие от процедуры шифрования заключается в том, что вместо ключей Z 1...Z 52 используются ключи U 1...U 52.

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

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

Размещено на 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

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