Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

задание

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.11.2024

Курсовая работа

Реализация криптографического алгоритма «ГОСТ 28147-89»

в режиме гаммирования


Содержание

Введение…………………………………………………………………………...6

1   Техническое задание ………………………………………………………….8

1.1 Основания для разработки …………………………………………....8

 1.2 Функциональное и эксплуатационное назначение изделия …….......8

1.3 Методические ограничения ………………………………………....8

1.3.1 Стандарты …………………………………………………....8

         1.3.2 Программная совместимость ……………………………....8

1.3.3 Требования к составу и параметрам технических

средств ……………………………………………………………….8

1.3.4 Описание алгоритма ГОСТ 28147-89………………………9

1.3.5 Описание алгоритма ГОСТ 28147-89 в режиме гаммирования………………………………………………………9

1.3.6 Входные данные ……………………………………………10

1.3.7 Выходные данные …………………………………………..10

1.3.8 Безопасность и секретность ………………………………..10

1.3.9 Мобильность ………………………………………………..10

 1.4 Стадии и этапы разработки ……………………………………….. 11

1.5 Технико-экономические  показатели разработки ………………...11

1.6 Порядок контроля и приемки……………………………………….11

2 Пояснительная записка ……………………………………………………….13

 2.1 Функциональные и эксплуатационные характеристики  ………....13

    2.2 Описание программы ………………………………………………..13

                  2.2.1 Функциональное описание …………………………………..13                                           

                  2.2.2 Интерфейс программного продукта ………………………...14

Заключение………………………………………………….……………………

Список литературы………………………………………………………………

Приложение………………………………………………………………………


       Введение

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

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

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

  1.  бесключевые алгоритмы, которые не используют каких – либо ключей в процессе криптографических преобразований;
  2.  одноключевые алгоритмы, использующие в своих вычислениях некий секретный ключ;
  3.  двухключевые алгоритмы, в которых на различных этапах вычислений применяются два вида ключей: секретные и открытые.

В данной курсовой работе алгоритм ГОСТ 28147-89 реализован в режиме гаммирования.

  1.  
    ТЕХНИЧЕСКОЕ ЗАДАНИЕ

       1.1 Основания для разработки

Основанием для разработки является задание к курсовому  проекту по предмету «Программирование».

       

       1.2 Функциональное и эксплуатационное назначение изделия

Перечень требований пользователя к программному изделию.

Программа должна обеспечивать:

  •  удобный интерфейс;
  •  лёгкость в использовании;

1.3 Методические ограничения

1.3.1 Стандарты

Разработка программной документации и программы должна производиться согласно ЕСПД, ГОСТ 19.701-90, ГОСТ 2.304-88.

1.3.2 Программная совместимость

Выход должен работать под управлением операционной систем Windows 98/NT/XP/Vista/se7en/Win8.

1.3.3 Требования к составу и параметрам технических средств

 Для работы программы желательно иметь персональный компьютер со следующей характеристикой:

  •  микропроцессор Intel core i3 с тактовой частотой 2.1 ГГц;
  •  видеоадаптер SVGA с цветным дисплеем;
  •  объём ОЗУ не менее 1 Гб;
  •  объём свободного места на жестком диске 5 Mб;
  •  USB-порт.
  •  CD – ROM .

1.3.4 Описание алгоритма ГОСТ 28147-89

Алгоритм ГОСТ 28147-89 шифрует информацию блоками по 64 бита, которые разбиваются на два субблока по 32 бита (N1 и N2). Субблок N1 определенным образом обрабатывается, после чего его значение складывается со значением субблока N2 (сложение выполняется по модулю 2), затем субблоки меняются местами. Такое преобразование выполняется определенное количество раундов 16 или 32 в зависимости от режима работы алгоритма. В каждом раунде выполняются следующие операции:

  1.  Наложение ключа. Содержимое субблока N1 складывается по модулю  с частью ключа K.

Ключ шифрования алгоритма ГОСТ 28147-89 имеет размерность 256 битов, а K - это его 32 – битная часть, т. е. 256 – битный ключ шифрования представляется в виде конкатенации 32 – битных подключей.

K0, K1, K2, K3, K4, K5, K6, K7.

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

  1.  Табличная замена. После наложения ключа субблок N1 разбивается на 8 частей по 4 бита, значение каждой из которых по отдельности заменяется в соответствии с таблицей замены для данной части субблока.

Табличная замена используется таким образом: на вход подается блок данных определенной размерности (в этом случае – 4 - битный), числовое представление которого определяет номер выходного значения. Например, имеем таблицу следующего вида:

4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1.

Пусть на вход пришел 4 – битный блок «0100», т. е. значение 4. Согласно таблице, выходное значение будет равно 15, т. е. «1111»

  1.  Побитовый циклический сдвиг влево на 11 битов.

1.3.5 Описание алгоритма ГОСТ 28147-89 в режиме гаммирования

В режиме гаммирования каждый блок открытого текста побитно складывается по модулю 2 с блоком гаммы шифра размером 64 бита. Гамма шифра – это специальная последовательность, которая вырабатывается с помощью описанных в пункте 1.4.4 преобразований следующим образом:

  1.  В регистры N1 и N2 записывается их начальное заполнение – 64-битная величина, называемая «синхропосылкой»
  2.  Выполняется зашифровывание содержимого регистров N1 и N2 в режиме простой замены.
  3.  Содержимое N1 складывается по модулю (2-1) с константой С1 = 2, результат сложения записывается в регистр N1.
  4.  Содержимое N2 складывается по модулю 2 с константой С2 = 2, результат сложения записывается в регистр N2
  5.  Содержимое регистров N1 и N2 подается на выход в качестве 64-битного блока гаммы шифра.
  6.  Если необходим следующий блок гаммы (т. е. необходимо продолжить зашифровывание или расшифровывание), выполняется возврат к шагу 2.

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

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

Входными данными программы являются открытые и закрытые файлы любого типа, размер которых не превышает 2Гб.

 

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

Результатом работы программы является открытый или закрытый файл.

1.3.8 Безопасность и секретность

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

1.3.9 Мобильность

Для копирования программы с диска или flash-USB  на компьютер необходимо:

1. Распаковать RAR-архив, расположенный на диске (flash-USB), в какую-либо папку на жёстком диске компьютера.

2. Запустить программу.

   1.4 Стадии и этапы разработки

Выполнение разработки должно включать две стадии:

1  Техническое задание

2  Пояснительная записка

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

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

       1.5 Технико-экономические  показатели разработки

Программное изделие разрабатывается в качестве курсовой работы, поэтому технико-экономические показатели не рассчитываются.

 1.6 Порядок контроля и приемки

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

 Тест 1. На вход программе подается открытый (незашифрованный) файл данных размером не более 2 Гб, на выходе программа должна предоставить закрытый (зашифрованный) файл.

 Тест 2.  На вход программе подается закрытый (зашифрованный) файл,

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

 Тест 3. На вход программе подается файл размером больше 2 Гб,

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

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

 Тест 5. Открыть файл возобновления процесса, созданный в тесте 4, в результате чего программа должна возобновить процесс зашифровывания файла с того места где была прервана.

 Тест 6. Повторить тесты 4 и 5, для процесса расшифровывания файла.

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

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


                         2   ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

2.1 Функциональные и эксплуатационные характеристики

Программа обладает следующими характеристиками:

  •  удобный интерфейс;
  •  лёгкость в использовании;
  •  обрабатывает файлы любого типа размером до 2 Гб

2.2 Описание программы

2.2.1 Функциональное описание

(Основные процедуры и функции, использованные в программе)

String sek2time(double c)// в качестве параметра подается количество секунд возвращается строка формата чч:мм:cc

Start(bool start)// запускает поток в котором происходит расшифровывание или зашифровывание данных, в зависимости от значения параметра start

kod(String path, String pathOut,int start)// подпрограмма реализующая зашифровывание данных, параметрами служат путь к открытому файлу, путь к закрытому файлу, и переменная указывающая на начало (с какого 64-битного блока начинать зашифровывание)

dekod(String path, String pathOut, int start)// подпрограмма реализующая расшифровывание данных, параметрами служат путь к закрытому файлу, путь к открытому файлу, и переменная указывающая на начало (с какого 64-битного блока начинать расшифровывание)

unsigned long Zamena(unsigned long b, bool k) // на вход подается 32-битный блок данных, где он разбивается на 8 4-битных блока, которые пропускаются через таблицу замен.

unsigned long SdvigIter(unsigned long b) // на вход подается 32-битный блок данных, который циклически с двигается на 11 бит в лево.

2.2.2 Интерфейс программного продукта

После запуска программы на экран выводится заставка программы:

После заставки открывается главное окно программы:


З
аключение

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

Симметричное шифрование бывает двух видов: блочное и потоковое. Блочное шифрование – в этом случае информация разбивается на блоки фиксированной длины (например, 64 или 128 битов), после чего эти блоки поочередно шифруются. Причем в различных алгоритмах шифрования или даже в разных режимах работы одного и того же алгоритма блоки могут шифроваться независимо друг от друга или «со сцеплением» - когда результат зашифровывания текущего блока данных зависит от значения предыдущего блока или результата зашифровывания предыдущего блока.

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

К алгоритмам блочного симметричного шифрования относится и алгоритм ГОСТ 28147-89.

Алгоритм ГОСТ 28147-89 является обязательным для применения в качестве алгоритма шифрования в государственных организациях РФ и ряде коммерческих.

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

Алгоритм ГОСТ 28147-89 имеет 4 режима работы:

  1.  Простой замены;
  2.  Гаммирования;
  3.  Гаммирования с обратной связью;
  4.  Выработки имитовставки.


Список литературы

  1.  Архангельский А.Я. C++ Builder 6. Справочное пособие. Книга 1. Язык C++ [электронный ресурс]/ А.Я. Архангельский. М. : Бином-Пресс, 2012г. 544с.
  2.  Динман М.И. С++. Освой на примерах [электронный ресурс]/ М.И. Динман. СПб.: БХВ-Петербург, 2010г. 384с.
  3.  Шилдт Г. Самоучитель С++: Пер. с англ. – 3-е изд./ Г. Шилдт. СПб. : БХВ-Петербург, 2009г. 688с.
  4.   Павловская Т. А. C/C++. Программирование на языке высокого уровня Т.А. Павловская. СПб. : Питер, 2008г. 461с.
  5.  Панасенко С.П. Алгоритмы шифрования. Специальный справочник С.П. Панасенко. СПб. : БХВ-Петербург, 2012г. 576с.  


ПРИЛОЖЕНИЕ

 Блок-схема подпрограммы Kode(String, String, int)

Блок-схема подпрограммы deKode(String, String, int)

PAGE 3


End

Создаем .res

pause

Записываем весь блок

Записываем не весь блок

Складываем субблоки гаммы с константами

Складываем субблоки по модулю 2 и меняем их местами увеличиваем k на единицу

SdvigIter(block1[n1)

Zamena(block1[n1],true)

Складываем по модулю 2 в 32 первый субблок гаммы с к-ым подключем

k=0 n1=0 n2=1

k=8

i:=1,32

k:=0

i :=lavel, sizeBlock/2

?

Сдвигаемся от начала файла на start байт

?

Используем переданную гамму

Считываем гамму из файла

?

?

start=0

Key

Создаем файл

Дописываем файл

?

?

start <> 0

?

Path, pathOut, start

?

Start

Если последний блок

Складываем субблоки гаммы с константами

Складываем субблоки по модулю 2 и меняем их местами увеличиваем k на единицу

SdvigIter(block1[n1)

Zamena(block1[n1],false)

Складываем по модулю 2 в 32 первый субблок гаммы с к-ым подключем

из стр.49

к стр.49

5

4

1

2

3

k=0 n1=0 n2=1

k=8

i:=1,32

k:=0

i :=lavel, sizeBlock/2

?

Сдвигаемся от начала файла на start байт

?

Используем переданную гамму

Считываем гамму из файла

?

?

start=0

Key

Создаем файл

Дописываем файл

?

?

start <> 0

?

Path, pathOut, start

?

Start

3

2

1

4

5

к стр.47

из стр.47

1

2

3

из стр.46

4

5

к стр.46

?

Записываем не весь блок

Записываем весь блок

pause

Создаем .res

End

Если последний блок

1

2

3

4

5

к стр.48

из стр.48




1. 2013 г
2. Легенда о Сигурде и Гудрун
3. Кутта Задача коши
4. охотник за головами
5. 1 Цель работы Научиться работать в среде MS ccess создавать таблицы и редактировать их
6.  Отражаются предметы и явления целиком целостность2
7. объектные связи в рекламе сегодня отличаются сложностью
8. Однофазный трёхуровневый преобразователь с улучшенным гармоническим спектром входного тока
9. истинным знанием и мнением
10. Вино- экономика, политика и религия
11. х классов 19 декабря 2013 года Предмет Класс Груп
12. А исследования инвестиционной привлекательности стран мира
13. Квартирный вопрос 08 Ваши фамилия имя отчество возраст Фамилия
14. Общей и дифференциальной психологии Материалы для самостоятельной работы студентов по курсу
15. История политических и правовых учений специальность Юриспруденция для студентов заочного обучения
16. Testrbeit 3 Existenzformen die indoeurop~ische Sprchfmilie lte Germnen In welchen Existenzformen ist die deutsche Sprche im Lufe ihrer Entwicklungsgeschichte beknnt
17. Теплоэнергетические генераторы и радиоизотопные источники энерги
18. Состояние банковской системы Российской Федерации в кризисный и посткризисный периоды экономик
19. Замятин роман «Мы» (1920г)
20. то тип которому кстати очень подходит его которкое странное имя ~ Тре