84798

Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA (режим сцепления блоков шифра)

Курсовая

Информатика, кибернетика и программирование

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

Русский

2015-03-22

279.83 KB

12 чел.

26

 

Кафедра «Информатика и программное обеспечение»

КУРСОВАЯ РАБОТА

по дисциплине «Защита информации»

тема: «Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA (режим сцепления блоков шифра)»

                                                         Выполнил студент гр.11-ПрИ

                                                              _______________________Ретивых К.Е.

                                                         «_____»______________2015 г.

                                                         Руководитель

                                                         ____________к.т.н., доц. Дергачев К.В.

                                                         «_____»______________2015 г.

Брянск  2015 г.

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ 4

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

1.1 Алгоритм IDEA 6

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

1.2.1 Алгоритм DES 8

1.2.2 Алгоритм RC6 9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ 32

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

ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

  1. стойкость;
  2. длина ключа;
  3. число раундов;
  4. длина обрабатываемого блока;
  5. сложность аппаратной/программной реализации;
  6. сложность преобразования.

  1.  АНАЛИТИЧЕСКАЯ ЧАСТЬ
  2.  Алгоритм 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

Для IDEA рекомендовано несколько режимов:

  1. режим электронной кодовой книги (ECB — Electronic Code Book)
  2. режим сцепления блоков (СВС — Cipher Block Chaining)
  3. режим обратной связи по шифртексту (CFB — Cipher Feed Back)
  4. режим обратной связи по выходу (OFB — Output Feed Back).

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

  1.  Сравнение аналогов алгоритма IDEA
    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.  Алгоритм RC6

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

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

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

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

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

  1.  B = B + K0 mod 232 
  2.  D = D + K1 mod 232,

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

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

  1.  A = A + K42 mod 232 
  2.  C = C + K43 mod 232.

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

  1.  t1 = f(B) <<< 5,
  2.  t2 = f(D) <<< 5,
  3.  A = ((A Å t1) <<< t2) + K2i mod 232,
  4.  C = ((C Å t2) <<< t1) + K2i+1 mod 232,

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

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

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

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

  1. Простая структура алгоритма облегчает его анализ.
  2. Самый быстрый из алгоритмов – финалистов AES на 32-битных платформах.
  3. Зашифрование и расшифрование в алгоритме RC6 практически идентичны.

Недостатки алгоритма:

  1. Скорость шифрования при программной реализации сильно зависит от того, поддерживает ли платформа 32-битное умножение и вращение на переменное число бит.
  2. RC6 сложно реализуем аппаратно и в условиях ограниченных ресурсов.
  3. Достаточно сложно защищается от атак по времени выполнения и потребляемой мощности.
  4. Недостаточно полно поддерживает расширение ключей «на лету».
  5. Распараллеливание вычислений при шифровании алгоритмом RC6 реализуемо с ограничениями.
    1.  Алгоритм ГОСТ 28147-89

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

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

 

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

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

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

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

  1.  Достоинства 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.  Режим 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.  Сравнение аналогов режима шифрования CBC

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

  1.  
  2.  
  3.  
  4.  
  5.  

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

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

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

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

ECB шифрование: Сj = CIPHK(Pj) , где j=1…n

ECB расшифрование: Pj = CIPHK(Cj), где j=1…n

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

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

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).

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

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

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

Поэтому в алгоритме 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-1

Cn = Pn + MSBt (On)

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

I1 = IV

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

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

Pj = Cj + Oj, j = 1,2, … n-1

Pn = Cn + MSBt (On) , где «+» - это операция xor.

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

  1. Регистрация пользователя с полями:
  2. логин,
  3. пароль,
  4. ФИО,
  5. дата рождения,
  6. Авторизация пользователя с полями:
  7. логин,
  8. пароль;
  9. Шифрование исходного текста;
  10. Дешифрация зашифрованного текста;
  11. Отображение пользователю конечных этапов шифрования и дешифрования при удачной авторизации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1.  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), и возвращаем полученный хэш.
  2.  private static string ShiftByteLeft(string s) сдвиг на 25 битов циклически влево
  3.  private static string ShiftbyteRight(string s) сдвиг на 25 битов циклически вправо
  4.  private static string Sum(string a1, string a2) суммирование по модулю 2^16
  5.  private static string Multi(string a1, string a2) умножение по модулю 2^16+1
  6.  private static string XOR(string a1, string a2) исключающее ИЛИ
  7.  inline T setBit (T v, int nBitNumber) функция установки бита. Биты считаются от 0, нумерация идет слева-направо.
  8.  inline bool getBit (T v, int nBitNumber) функция получения значения бита(true/false).
  9.  map<int64, vector<int64>*> keys_archive; архив таблиц "раундовых" ключей, чтобы каждый раз не генерировать ключи заново (функция включает в себя: начальную перестановку ключа, конечную перестановку ключа, сдвиги, таблицу подстановок)..
  10.  private void idea_Encryption (string st1, string st2) алгоритм IDEA. Вход - 2 строки: 1) набор битов считанного блока (длина 64). 2) набор битов нашего ключа (длина 128). Выход - шифроблок (64 символа)
  11.  public string  idea_Decryption (string st1, string st2) функция дешифрования по алгоритму IDEA.
  12.  bool CheckLogin(int hash) функция читает логин, если хеш из аргументов равен считанному логину,  то закрывает файл и выдает положительный результат. Если нет – выдает сообщение «Неверный логин»
  13.  bool CheckPass(int login_hash, int pass_hash) функция читает логин и пароль, если логин равен запрошенному, но пароль не совпадает, то закрывает файл и выдает сообщение «Неверный пароль». Если логин и пароль совпадают, то функция возвращает «истина».

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

Рис. 6.  Форма авторизации

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

 

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


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

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

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

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

Результат:

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

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

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

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

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

Результат:

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

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

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

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

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

Результат:

  1. ФИО: ÑoZ)¤ÉŸ|=‘¬sT㔥~h>+q"ÊÍ?þ§]

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

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

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

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

Результат:

  1. ФИО: ÑoZ)¤ÉŸ|=‘¬sT㔥~h>+q"ÊÍ?þ§]

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

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

Исходный хэш: “2ѕ‰Ё§Ь“2ѕ‰Ё§Ь      ыjg!dG}

Тестируемый хэш: 1“2ѕ‰Ё§Ь“2ѕ‰Ё§Ь      ыjg!dG}

Результат:

  1. Сообщение об ошибке авторизации

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

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

Исходный хэш: 2ђ2ѕ‰Ё§Ьђ2ѕ‰Ё§Ьђ2ѕ‰Ё§Ьђ2ѕ‰Ё§Ь ђ2ѕ‰Ё§Ь 

Тестируемый хэш: 2ђ2ѕ‰Ё§Ьђ2ѕ‰Ё§Ьђ2ѕ1‰Ё§Ьђ2ѕ‰Ё§Ьђ2ѕ‰Ё§Ь

Результат:

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

  1. Википедия. Алгоритм DES [Электронный ресурс]. – Режим доступа: - http://ru.wikipedia.org/wiki/DES.
  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


 

А также другие работы, которые могут Вас заинтересовать

31486. Аналіз кредитоспроможності підприємства 153 KB
  Аналіз кредитоспроможності підприємства Лекція 14 2 год. Мета заняття: ознайомити студентів із класифікаційними моделями аналізу кредитоспроможності методикою оцінки кредитоспроможності позичальниківюридичних осіб згідно з методикою НБУ та методикою комплексного аналізу кредитоспроможності поглибити їхні знання щодо сутності кредитоспроможності підприємства розвивати логічне мислення студентів привчати творчо оперувати набутими знаннями виховувати інтерес до обраної професії. ПЛАН Сутність кредитоспроможності підприємства....
31487. Аналіз ділової активності підприємства 46.26 KB
  Аналіз ділової активності підприємства Лекція 15 2 год. Мета заняття: ознайомити студентів і поглибити їхні знання з питань основних напрямів оцінки ділової активності підприємства аналізу і порядку розрахунку показників ділової активності розвивати логічне мислення студентів привчати творчо оперувати набутими знаннями виховувати інтерес до обраної професії. Основні напрямки оцінки ділової активності підприємства. Показники що характеризують ділову активність підприємства – порядок їх розрахунку та методи оцінки.
31488. Комплексне оцінювання фінансового стану підприємства 93.99 KB
  Комплексне оцінювання фінансового стану підприємства Лекція 19 2 год. Студент повинен знати виховна мета: теоретичний матеріал досліджуваної теми методи створення рейтингу кластерного аналізу матричного аналізу та методи бальних оцінок методи порівняльної рейтингової оцінки метод рейтингового фінансового аналізу інтегральна рейтингова оцінка підприємства а також методи узагальнення результатів фінансового аналізу діяльності підприємства повинен навчитись практично застосовувати здобуті знання у подальшій практичній діяльності....
31489. Аналіз прибутковості та рентабельності підприємства 66.56 KB
  Аналіз прибутковості та рентабельності підприємства Лекція 16 2 год Актуальність теми: прибуток є головною метою та мотивом підприємницької діяльності матеріальним джерелом економічного та соціального розвитку інвестиційної та інноваційної діяльності. Дана тема дає можливість отримати уявлення про те які показники використовуються у процесі аналізу та оцінки прибутковості та рентабельності підприємства також осмислене вивчення даної теми дасть можливість оволодіти методикою розрахунку показників рентабельності та прибутковості та...
31490. Значення і теоретичні основи фінансового аналізу 166.5 KB
  Значення і теоретичні основи фінансового аналізу Лекція 1 2 год. Мета заняття: ознайомити студентів з питаннями необхідності та сутності фінансового аналізу; видами фінансового аналізу; привчати творчо оперувати набутими знаннями розвивати логічне мислення студентів. ПЛАН Необхідність та сутність фінансового аналізу. Предмет завдання напрями і принципи фінансового аналізу.
31491. Значення і теоретичні основи фінансового аналізу. Моделі фінансового аналізу 245.5 KB
  Значення і теоретичні основи фінансового аналізу Лекція 2 2 год. Мета заняття: ознайомити студентів з методами прийомами моделями та факторами фінансового аналізу; привчати творчо оперувати набутими знаннями розвивати логічне мислення студентів Методи і моделі фінансового аналізу. Прийоми фінансового аналізу. Суб’єкти і користувачі фінансового аналізу.
31492. Інформаційне забезпечення фінансового аналізу 243.5 KB
  Для того щоб мати чітку уяву про фінансовий стан підприємства потрібно вміти правильно розподілити ресурси виявити напрями які потребують розвитку визначити головні питання котрі потребують корегування. Чи знаєте Ви який фінансовий стан підприємства Знаходиться воно в стадії підйому чи скорочення своєї діяльності Скільки це буде продовжуватись Наскільки ефективно працює підприємство та що можна зробити для підвищення рентабельності Ці відповіді можна знайти коли Ви розберетесь у фінансових звітах. Нормативнодовідкова інформація...
31493. Інструменти виділення, канали і маски. Фотомонтажі 891.41 KB
  Photoshop має в своєму розпорядженні багатий набір засобів виділення серед яких інструменти виділення Mrquee Область Lsso Лассо Mgic Wnd Чарівна паличка; інструменти виділення контурів Pth Tools; спеціальна команда Color Rnge Колірний ряд; особливий режим виділення Quick Msk Швидка маска. Виділення і трансформація областей У Photoshop велика частина операцій редагування діють лише в межах виділеної області. Приклад обробки виділення кистю Для виділення областей правильної геометричної форми є чотири інструменти які зібрані...
31494. Інструменти кольорової коррекции і ретушування 734.31 KB
  Інструменти з групи Освітлювач У цьому вікні: Dodge Освітлювач для освітлення областей і збільшення яскравості зображення; Burn Затемнювач для затемнення областей і зменшення яскравості зображення; Sponge Губка міняє насиченість контраст зображення. Інструменти з групи Розмиття У цьому вікні: Blur Розмиття пом'якшує кордони між об'єктами; Shrpen Різкість збільшує чіткість зображення; Finger Палець розмазує розтушовує колір. Перший варіант надає можливість створення точних копій елементів зображення а другий колірних зразків...