МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
на тему: "Защита информации от несанкционированного доступа"
по курсу "Кодирование и защита
информации"
2004
АННОТАЦИЯ
Пояснительная записка содержит описание разработанной программы и руководство по ее использованию. Также в ней приводится описание используемых методов шифрования информации.
СОДЕРЖАНИЕ
АННОТАЦИЯ
ВВЕДЕНИЕ
Постановка задачи
Основные понятия
Выбор методов шифрования
Программная реализация
Общее описание
Дополнительные модули
Руководство пользователя
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ А
Введение
В настоящее время большое внимание уделяется информации, недаром наш век называют «информационным». Во время того, как люди познают технологии хранения и передачи информации, встает вопрос о ее защите от несанкционированного доступа. Для решения этой проблемы было разработано большое количество разнообразных методов кодирования информации, которые могут быть реализованы программно. Данная разработка представляет собой программный модуль, обеспечивающий шифрование и расшифровывание информационных блоков.
1. Постановка задачи
Необходимо разработать программу для шифрования и расшифровывания файлов на основе настроек пользователя. Для шифрования использовать ГОСТ 28147-89. Разработать удобный интерфейс общения с пользователем. Поставить программу на платформу Windows, что обеспечит ее расширение, дополнение и удобство использования.
2. Основные понятия
В данной работе будет рассматриваться защита информации, хранящейся в электронном виде, от несанкционированного доступа. Для обеспечения секретности информации используются следующие методы:
хранение на съемном носителе;
ограничение доступа к системе;
хранение в зашифрованном виде;
Комбинированием этих средств защиты можно добиться относительно хорошей защищенности информации. Невозможно абсолютно защитить информацию от несанкционированного доступа (взлома). Любой из этих способов поддается взлому в некоторой степени. Вопрос в том, будет ли выгодно взламывать или нет. Если затраты ресурсов на защиту (стоимость защиты) больше чем затраты на взлом, то система защищена плохо.
Данная разработка является криптографической частью системы защиты – она зашифровывает и расшифровывает информацию, поэтому ниже будут приведены только основные понятия криптографии.
Шифр – последовательность операций, проводимых над открытыми (закрытыми) данными и ключом с целью получения закрытой (открытой) последовательности.
Ключ – конкретное для каждого нового кода значение каких-нибудь характеристик алгоритма криптографической защиты.
Гамма шифра – это некоторая псевдослучайная последовательность заданной длины, используемая для шифрования.
Гаммирование – процес наложения гаммы шифра на открытые данные.
Зашифровывание – процесс преобразования открытых данных в закрытые с помощью шифра и ключа.
Расшифровывание – процедура преобразования закрытых данных в открытые с помощью шифра и ключа.
Шифрование – зашифровывание и (или) расшифровывание.
Дешифрование – совокупность действий по преобразованию закрытых данных в открытые без знания ключа и (или) алгоритма зашифровывания.
Имитозащита – защита от ложной информации. Осуществляется по собственным алгоритмам, с помощью выработки имитовставки.
Имитовставка – последовательность данных определенной длины, полученных специальными методами гаммирования из открытых исходных данных. Содержимое имитовставки является эталоном для проверки всей остальной информации.
3. Выбор методов шифрования
Для шифрования информации в программу встроены следующие алгоритмы:
ГОСТ 28147-89 - стандарт шифрования Российской Федерации. В программе используется два режима кодирования – режим простой замены и режим гаммирования. Данные кодируются по 64 бита (8 байт) с помощью 256-битного (32-байтного) ключа.
Два простых метода, вложенных как пример построения модулей для программы. Кодирование по 64 бит, ключ – 64 бит.
Программа может быть дополнена алгоритмами кодирования, т.е. рекомпилирована с дополнительными модулями. В дальнейших версиях предполагается создание модульных расширений (plug-in) для программы, которые будут содержать дополнительные алгоритмы криптографических преобразований.
Рассмотрим подробнее алгоритм криптографического преобразования ГОСТ 28147-89. Ключ состоит из восьми 32-битных элементов, рассматриваемых как беззнаковые целые числа. Таким образом, ключ составляет 256 бит или 32 байта. При шифровании используется таблица замен, являющейся матрицей 8х16, содержащей 4-битовые элементы (числа от 0 до 15). Основной шаг криптопреобразования – оператор, определяющий преобразование 64-битового блока. Дополнительным параметром этого оператора является 32-битный блок, в качестве которого используется какой – либо элемент ключа.
Алгоритм основного шага криптопреобразования
Рисунок 3.1 Схема основного шага криптопреобразования алгоритма ГОСТ 28147-89.
Определяет исходные данные для основного шага криптопреобразования: N –преобразуемый 64-битовый блок данных, в ходе выполнения шага его младшая (N1) и старшая (N2) части обрабатываются как отдельные 32-битовые целые числа без знака. Таким образом, можно записать N=(N1,N2). X – 32-битовый элемент ключа;
Сложение с ключом. Младшая половина преобразуемого блока складывается по модулю 232 с используемым на шаге элементом ключа, результат передается на следующий шаг;
Поблочная замена. 32-битовое значение, полученное на предыдущем шаге, интерпретируется как массив из восьми 4-битовых блоков кода: S=(S0,S1,S2,S3,S4,S5,S6,S7). Далее значение каждого из восьми блоков заменяется на новое, которое выбирается по таблице замен следующим образом: значение блока Si заменяется на Si-тый по порядку элемент (нумерация с нуля) i-того узла замен (т.е. i-той строки таблицы замен, нумерация также с нуля). Другими словами, в качестве замены для значения блока выбирается элемент из таблицы замен с номером строки, равным номеру заменяемого блока, и номером столбца, равным значению заменяемого блока как 4-битового целого неотрицательного числа.
Циклический сдвиг на 11 бит влево. Результат предыдущего шага сдвигается циклически на 11 бит в сторону старших разрядов и передается на следующий шаг. На схеме алгоритма символом 11 обозначена функция циклического сдвига своего аргумента на 11 бит в сторону старших разрядов.
Побитовое сложение: значение, полученное на шаге 3, побитно складывается по модулю 2 со старшей половиной преобразуемого блока.
Сдвиг по цепочке: младшая часть преобразуемого блока сдвигается на место старшей, а на ее место помещается результат выполнения предыдущего шага.
Полученное значение преобразуемого блока возвращается как результат выполнения алгоритма основного шага криптопреобразования.
Базовые циклы:
цикл выработки имитовставки (0123456701234567)
Для каждого элемента данных выполняется основной шаг криптографического преобразования с элементами ключа, порядок Базовые циклы построены из основных шагов криптографического преобразования. Существует всего три базовых цикла, различающиеся порядком следования ключевых элементов:
цикл зашифрования (01234567012345670123456776543210)
цикл расшифрования (01234567765432107654321076543210)
следования которых приведен выше. Для циклов шифрования левая и правая половины блока меняются местами, для цикла выработки имитовставки – нет.
Предусматривается три режима шифрования данных: простая замена, гаммирование, гаммирование с обратной связью и один дополнительный редим формирования имитовставки.
Рис. 4. Алгоритм зашифрования (расшифрования) данных в режиме гаммирования.
Режим простой замены – наиболее простой. Блоки данных по 64 бит проходят базовый цикл зашифрования (расшифрования). Результат – зашифрованная (расшифрованная информация). При таком режиме блоки независимы.
Режим гаммирования – чтобы блоки информации были зависимы друг от друга используется рекуррентный генератор последовательности чисел, который инициализируется синхропосылкой, прошедшей цикл зашифрования. Схема алгоритма шифрования в режиме гаммирования приведена на рисунке 3.2, ниже изложены пояснения к схеме:
Определяет исходные данные для основного шага криптопреобразования: Tо(ш) – массив открытых (зашифрованных) данных произвольного размера, подвергаемый процедуре зашифрования (расшифрования), по ходу процедуры массив подвергается преобразованию порциями по 64 бита; S – синхропосылка, 64-битный элемент данных, необходимый для инициализации генератора гаммы;
Начальное преобразование синхропосылки, выполняемое для ее «рандомизации», то есть для устранения статистических закономерностей, присутствующих в ней, результат используется как начальное заполнение РГПЧ;
Один шаг работы РГПЧ, реализующий его рекуррентный алгоритм. В ходе данного шага старшая (S1) и младшая (S0) части последовательности данных вырабатываются независимо друг от друга;
Гаммирование. Очередной 64-битный элемент, выработанный РГПЧ, подвергается процедуре зашифрования по циклу 32–З, результат используется как элемент гаммы для зашифрования (расшифрования) очередного блока открытых (зашифрованных) данных того же размера.
Результат работы алгоритма – зашифрованный (расшифрованный) массив данных.
4. Программная реализация
4.1 Общее описание
Для разработки программы были выбраны языки программирования Delphi 5.0 (Object Pascal) – разработка удобного интерфейса и встроенный ассемблер – для написания, собственно, алгоритмов шифрования.
Проект состоит из девяти модулей:
GOST, K1, K2 – реализация алгоритмов ГОСТ 28147-89 и тестовых методов шифрования.
CodingTools, CodingUnit – модули, реализующие вспомогательные алгоритмы и типы данных.
OptionsUnit, ProgressUnit, TestUnit – модули, описывающие интерфейс с пользователем.
Hazard – основной модуль программы. Создает окна и запускает программу.
Программа использует три формы (окна), созданные с помощью среды Delphi.
Основная форма TestForm, содержит список файлов и кнопки запуска процесса шифрования, выхода, вызова окна настроек, добавления и очистки списка (рисунок 4.1).
Окно настроек содержит списки поддерживаемых и применяемых методов шифрования, поле описания метода и поле ввода ключа (рисунок 4.2).
Третье окно – ProgressForm появляется при запуске процесса кодирования и состоит из двух надписей и двух индикаторов.
Рисунок 4.1 – Интерфейс программы
Рисунок 4.2 – Окно настроек
4.2 Дополнительные модули
Модуль CodingTools содержит описание типов для 64,48 и 32-разрядных чисел и процедуры их обработки: сложение по модулю 2, &, |, кодирование по таблице, разложение на числа меньшей разрядности. Также он содержит описания параметров кодирования и тип-шаблон функции шифрования.
Модуль CodingUnit содержит список встроенных алгоритмов и общие функции: обработка командной строки, подбор функции шифрования, шифрование файла, процедуры поиска функций по имени или индексу, поиск ошибок и оповещение.
Модули методов экспортируют каждый по две процедуры – шифрование и дешифрацию блоков по 64К.
5. Руководство пользователя
Программа работает под управлением ОС Windows 95/98/ME и требует правильной инсталляции. После инсталляции программу можно запустить из меню «Пуск» либо из командной строки эмуляции MS-DOS.
Командная строка имеет следующий вид:
Hazard.exe [/D] [путь к файлу [путь к файлу […]]]
/D – дешифрование
Чтобы запустить программу в режиме шифрования или дешифрования из графической оболочки Windows нужно воспользоваться соответствующими ярлыками из меню «Программы».
Чтобы добавить файлы в список шифрования/дешифрования можно воспользоваться соответствующей кнопкой на главной панели программы, либо «перетащить» их из окна проводника Windows.
Чтобы выбрать алгоритм шифрования нужно нажать кнопку «Настройки». Появится окно со списками поддерживаемых и применяющихся методов и полем ввода ключа.
После выбора методов программа рассчитает окончательный ключ, который может быть использован для расшифровывания файлов. Можно не запоминать окончательный ключ, в таком случае необходимо запомнить ключи каждого из выбранных методов и при расшифровывании сделать соответствующие настройки.
При нажатии на кнопку запуска появится индикатор прогресса, который отобразит состояние процесса шифрования текущего файла и процесса шифрования в общем.
При дешифровании следует учитывать, что программа расшифровывает файлы только с расширением .crf.
Заключение
В результате курсовой работы была разработана первая версия программы, осуществляющей шифрование информации. В дальнейшем предполагается разработка и усовершенствование комплекса программ, обеспечивающих защиту информации от несанкционированного доступа. В процессе разработки были закреплены навыки шифрования информации по ГОСТ 28147-89 и программирования на ассемблере.
Библиографический список
Конспект лекций по курсу «Кодирование и защита информации»
Андрей Винокуров. «Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86»
Михаил Гук. «Процессоры Pentium II, Pentium Pro и просто Pentium», Санкт-Петербург «Питер», 1999 г.
Приложение А
program Hazard;
uses
Windows,
Messages,
SysUtils,
Forms,
TestUnit in 'TestUnit.pas' {MainForm},
CodingUnit in 'CodingUnit.pas',
OptionsUnit in 'OptionsUnit.pas' {OptionsForm},
K1 in 'K1.pas',
K2 in 'K2.pas',
K3 in 'K3.pas',
ProgressUnit in 'ProgressUnit.pas' {ProgressForm},
GOST in 'GOST.pas';
{$R *.RES}
{$R Laynik.res}
function AlreadyRunning: boolean;
begin
Result:=False;
if FindWindow('TMainForm','Кодирование')<>0 then
Result:=True;
end;
begin
Decode:=false;
If not AlreadyRunning then
|