Курсовая работа: Защита информации от несанкционированного доступа
Рис. 4. Алгоритм зашифрования (расшифрования) данных в режиме гаммирования.
Режим простой замены – наиболее простой. Блоки данных по 64 бит проходят базовый цикл зашифрования (расшифрования). Результат – зашифрованная (расшифрованная информация). При таком режиме блоки независимы.
Режим гаммирования – чтобы блоки информации были зависимы друг от друга используется рекуррентный генератор последовательности чисел, который инициализируется синхропосылкой, прошедшей цикл зашифрования. Схема алгоритма шифрования в режиме гаммирования приведена на рисунке 3.2, ниже изложены пояснения к схеме:
Шаг 0. Определяет исходные данные для основного шага криптопреобразования: Tо(ш) – массив открытых (зашифрованных) данных произвольного размера, подвергаемый процедуре зашифрования (расшифрования), по ходу процедуры массив подвергается преобразованию порциями по 64 бита; S – синхропосылка, 64-битный элемент данных, необходимый для инициализации генератора гаммы;
Шаг 1. Начальное преобразование синхропосылки, выполняемое для ее «рандомизации», то есть для устранения статистических закономерностей, присутствующих в ней, результат используется как начальное заполнение РГПЧ;
Шаг 2. Один шаг работы РГПЧ, реализующий его рекуррентный алгоритм. В ходе данного шага старшая (S1 ) и младшая (S0 ) части последовательности данных вырабатываются независимо друг от друга;
Шаг 3. Гаммирование. Очередной 64-битный элемент, выработанный РГПЧ, подвергается процедуре зашифрования по циклу 32–З, результат используется как элемент гаммы для зашифрования (расшифрования) очередного блока открытых (зашифрованных) данных того же размера.
Шаг 4. Результат работы алгоритма – зашифрованный (расшифрованный) массив данных.
4. Программная реализация
4.1 Общее описание
Для разработки программы были выбраны языки программирования Delphi 5.0 (ObjectPascal) – разработка удобного интерфейса и встроенный ассемблер – для написания, собственно, алгоритмов шифрования.
Проект состоит из девяти модулей:
GOST, K1, K2 – реализация алгоритмов ГОСТ 28147-89 и тестовых методов шифрования.
CodingTools, CodingUnit – модули, реализующие вспомогательные алгоритмы и типы данных.
OptionsUnit, ProgressUnit, TestUnit – модули, описывающие интерфейс с пользователем.
Hazard – основной модуль программы. Создает окна и запускает программу.
Программа использует три формы (окна), созданные с помощью среды Delphi.
Основная форма TestForm, содержит список файлов и кнопки запуска процесса шифрования, выхода, вызова окна настроек, добавления и очистки списка (рисунок 4.1).
Окно настроек содержит списки поддерживаемых и применяемых методов шифрования, поле описания метода и поле ввода ключа (рисунок 4.2).
Третье окно – ProgressForm появляется при запуске процесса кодирования и состоит из двух надписей и двух индикаторов.
Рисунок 4.1 – Интерфейс программы
|
4.2 Дополнительные модули
Модуль CodingTools содержит описание типов для 64,48 и 32-разрядных чисел и процедуры их обработки: сложение по модулю 2, &, |, кодирование по таблице, разложение на числа меньшей разрядности. Также он содержит описания параметров кодирования и тип-шаблон функции шифрования.
Модуль CodingUnit содержит список встроенных алгоритмов и общие функции: обработка командной строки, подбор функции шифрования, шифрование файла, процедуры поиска функций по имени или индексу, поиск ошибок и оповещение.
Модули методов экспортируют каждый по две процедуры – шифрование и дешифрацию блоков по 64К.
5. Руководство пользователя