Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы и средства криптографической защиты информации (90

..pdf
Скачиваний:
5
Добавлен:
15.11.2022
Размер:
411.51 Кб
Скачать

2642

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

«Липецкий государственный технический университет»

Кафедра автоматизированных систем управления

МЕТОДЫ И СРЕДСТВА КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ к проведению лабораторных работ по курсу

«МЕТОДЫ И СРЕДСТВА ЗАЩИТЫ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ»

В.А. Алексеев

Липецк 2009

2642

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

«Липецкий государственный технический университет»

Кафедра автоматизированных систем управления

МЕТОДЫ И СРЕДСТВА КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ к проведению лабораторных работ по курсу

«МЕТОДЫ И СРЕДСТВА ЗАЩИТЫ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ»

 

 

В.А. Алексеев

Утверждаю к печати

Проректор по учебной работе

Объем

1,0 печ.л.

Ю.П. Качановский

Тираж

100 экз.

«___» ____________ 2010 г.

Липецк 2010

2642

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

«Липецкий государственный технический университет»

Кафедра автоматизированных систем управления

МЕТОДЫ И СРЕДСТВА КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ к проведению лабораторных работ по курсу

«МЕТОДЫ И СРЕДСТВА ЗАЩИТЫ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ»

В.А. Алексеев

Липецк 2009

3

УДК 681.3.067(07) А-471

Рецензент: к.т.н. П.А. Домашнев

Алексеев, В.А.

A471 Методы и средства криптографической защиты информации [Текст] / Методические указания к проведению лабораторных работ по курсу «Методы и средства защиты компьютерной информации» / В.А. Алексеев,

Липецк: ЛГТУ, 2009. – 16 с.

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

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

Предназначены для студентов направления 230100.62 «Информатика и вычислительная техника», специальностей 230102.65 «Автоматизированные системы обработки информации и управления» и 010503.65 «Математическое обеспечение и администрирование информационных систем».

Табл. 2. Рис. 3. Библиогр.: 7 назв.

© Липецкий государственный технический университет, 2009

Лабораторная работа №2 Реализация симметричной криптосистемы

Цель работы

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

Теоретические сведения

Современные криптосистемы по количеству используемых в операциях шифрования и дешифрования ключей делятся на:

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

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

Симметричные криптосистемы обладают высокой производительностью

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

Обозначим: M – передаваемое сообщение (открытый текст), K

секретный ключ. Тогда C = EK [M] - шифрованное сообщение, полученное при

криптопреобразовании

исходного

сообщения E[]

с ключом K . Операция

дешифрования

D[]

является

обратной

операции

шифрования:

DK [C] = DK [EK [M]] = M .

Симметричные криптосистемы основаны на 2-х базовых операциях преобразования исходного (открытого) текста: подстановке и перестановке. Подстановка состоит в замене символов исходного сообщения символами шифра по определенному правилу (правило может быть достаточно сложным).

Перестановка – в «перемешивании» символов исходного сообщения. В

3

современных криптосистемах к открытому тексту последовательно применяется множество преобразований подстановки-перестановки.

Симметричные криптосистемы подразделяются на блочные и потоковые. В блочных криптосистемах открытый текст M представляется в виде последовательности блоков M i некоторой фиксированной для данного шифра длины (в битах). Каждый такой блок шифруется отдельно и получается блок шифра такой же длины. К блочным криптосистемам относятся алгоритмы DES, RC5, IDEA, Blowfish, ГОСТ 28147-89 и многие другие.

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

 

 

Открытый текст

 

 

L0

 

R0

 

 

 

 

 

K1

 

 

 

 

+

F

 

 

 

 

 

Раунд 1

 

 

 

 

 

 

 

 

L1

 

 

R1

 

 

Ln-1

 

 

Rn-1

 

 

 

 

Kn

+

F

 

 

 

 

Раунд n

Ln

 

 

Rn

Шифрованный текст

Рис. 1. Классическая схема Фейстеля

4

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

Li = Ri 1

 

 

 

),

R = L

F(R

,K

i

i i 1

i 1

 

 

где i – раунд шифрования, – операция сложения по модулю 2 (XOR, исключающее «или»), Ki – подключ раунда, получаемый из общего ключа.

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

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

1.Длина блока данных.

2.Вид функции F.

3.Метод генерации подключей Ki по ключу K.

4.Количество раундов.

В наибольшей степени классической схеме Фейстеля соответствует алгоритм DES, в который добавлены начальная и завершающая (обратная начальной) перестановки. Эта же схема с дополнениями положена в основу алгоритмов симметричного шифрования RC5, CAST-128, Blowfish, IDEA, ГОСТ 28147-89 и многих других. Примером блочного симметричного алгоритма шифрования, не использующего данную схему, является RC2.

Блочные шифры на практике могут применяться в следующих режимах: 1. Режим электронной шифровальной книги (ECB). Каждый блок

шифруется независимо от других блоков.

5

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

3.Режим шифрованной обратной связи (CFB). Потоковый режим работы блочного шифра c зависимостью шифрования последующих символов от результатов шифрования предыдущих.

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

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

Задание

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

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

interface ISymmetricCipher

{

//Шифрование, возвращаемое значение — код ошибки или 0

int EncryptBuffer(

 

void* Buf,

//открытый текст

6

uint BufLen, //длина открытого текста

void** OutBuf, //буфер под шифротекст (если NULL, выделяется внутри функции)

uint* OutLen //длина буфера под шифротекст (если буфер передается в функцию)

);

//Дешифрование, возвращаемое значение — код ошибки или 0

int DecryptBuffer(

 

void* Buf,

//шифротекст

uint BufLen,

//длина шифротекста

void** OutBuf,

//буфер под открытый текст (если NULL,

 

выделяется внутри функции)

uint* OutLen

//длина буфера под открытый текст (если буфер

 

передается в функцию)

);

 

//Установка ключа шифрования/дешифрования, возвращаемое значение —

код ошибки или 0

 

int SetKey(

 

void* Buf,

//буфер, содержащий ключ

uint BufLen

//длина ключа

);

//Установка размера блока для шифрования/дешифрования, возвращаемое значение — код ошибки или 0

int SetBlockLength(

uint Len //размер блока

);

//Установка начального значения для шифрования/дешифрования, возвращаемое значение — код ошибки или 0

int SetIV(

7

void* Buf,

//буфер, содержащий начальное значение

uint BufLen

//длина начального значения

);

 

 

//Класс и режим работы алгоритма

 

ECipherClass GetCipherClass(void) const;

ECipherMode GetCipherMode(void) const;

//Название алгоритма

 

string GetCipherName(void) const;

 

//Параметры ключа

 

int GetMinKeyLength(void) const;

//минимальный размер ключа

int GetMaxKeyLength(void) const;

//максимальный размер ключа

//Параметры блока

 

int GetMinBlockLength(void) const;

//минимальный размер блока

int GetMaxBlockLength(void) const;

//максимальный размер блока

//Признак необходимости и длина начального значения (Initial Value), если

0 — не нужно

int GetIVLength(void) const;

}

В определении интерфейса используются следующие типы: //Класс алгоритма шифрования

enum ECipherClass

{

ctBlock=1, //блочный ctStream=2 //потоковый

}

//Режим работы алгоритма шифрования enum ECipherMode

{

cmStream=0, //для потоковых шифров

8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]