Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Курсовая работа
Реализация криптографического алгоритма «ГОСТ 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
Заключение………………………………………………….……………………
Список литературы………………………………………………………………
Приложение………………………………………………………………………
Шифрование является наиболее широко используемым криптографическим методом сохранения конфиденциальности информации, он защищает данные от несанкционированного ознакомления с ними.
Криптография наука о защите информации с использованием математических методов. Существует и наука, противоположная криптографии и посвященная методам вскрытия защищенной информации криптоанализ.
Существует несколько типов криптографических алгоритмов, прежде всего они делятся на три основных категории:
В данной курсовой работе алгоритм ГОСТ 28147-89 реализован в режиме гаммирования.
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 Требования к составу и параметрам технических средств
Для работы программы желательно иметь персональный компьютер со следующей характеристикой:
1.3.4 Описание алгоритма ГОСТ 28147-89
Алгоритм ГОСТ 28147-89 шифрует информацию блоками по 64 бита, которые разбиваются на два субблока по 32 бита (N1 и N2). Субблок N1 определенным образом обрабатывается, после чего его значение складывается со значением субблока N2 (сложение выполняется по модулю 2), затем субблоки меняются местами. Такое преобразование выполняется определенное количество раундов 16 или 32 в зависимости от режима работы алгоритма. В каждом раунде выполняются следующие операции:
Ключ шифрования алгоритма ГОСТ 28147-89 имеет размерность 256 битов, а K - это его 32 битная часть, т. е. 256 битный ключ шифрования представляется в виде конкатенации 32 битных подключей.
K0, K1, K2, K3, K4, K5, K6, K7.
В процессе шифрования используется один из этих подключей в зависимости от номера раунда.
Табличная замена используется таким образом: на вход подается блок данных определенной размерности (в этом случае 4 - битный), числовое представление которого определяет номер выходного значения. Например, имеем таблицу следующего вида:
4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1.
Пусть на вход пришел 4 битный блок «0100», т. е. значение 4. Согласно таблице, выходное значение будет равно 15, т. е. «1111»
1.3.5 Описание алгоритма ГОСТ 28147-89 в режиме гаммирования
В режиме гаммирования каждый блок открытого текста побитно складывается по модулю 2 с блоком гаммы шифра размером 64 бита. Гамма шифра это специальная последовательность, которая вырабатывается с помощью описанных в пункте 1.4.4 преобразований следующим образом:
Для расшифровывания аналогичным образом выполняется выработка гаммы, затем снова применяется операция XOR к битам зашифрованного текста и гаммы.
1.3.6 Входные данные
Входными данными программы являются открытые и закрытые файлы любого типа, размер которых не превышает 2Гб.
1.3.7 Выходные данные
Результатом работы программы является открытый или закрытый файл.
1.3.8 Безопасность и секретность
Программа имеет повышенную степень секретности, т. к. в ней содержится таблица замен. Получение данной программы «злоумышленниками» увеличивает шансы на вскрытие файлов, зашифрованных данной программой. Так же повышенную степень секретности имеет ключ, поэтому его нельзя передавать вместе с зашифрованными данными.
1.3.9 Мобильность
Для копирования программы с диска или flash-USB на компьютер необходимо:
1. Распаковать RAR-архив, расположенный на диске (flash-USB), в какую-либо папку на жёстком диске компьютера.
2. Запустить программу.
Выполнение разработки должно включать две стадии:
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.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 режима работы:
Список литературы
ПРИЛОЖЕНИЕ
Блок-схема подпрограммы 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