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

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

.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
315 Кб
Скачать

2642

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

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

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

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

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

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

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

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

Липецк 2009

УДК 681.3.067(07)

А-471

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

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

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

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

В.А. Алексеев, Липецк: ЛГТУ, 2009. – 16 с. — опубл. 17.10.2013. —

Электрон. версия печ. публ. — Доступ с сайта ЭБС IPRbooks.

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

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

Предназначены для студентов направления 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 представляется в виде последовательности блоков Mi некоторой фиксированной для данного шифра длины (в битах). Каждый такой блок шифруется отдельно и получается блок шифра такой же длины. К блочным криптосистемам относятся алгоритмы 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

cmECB=1, //ECB cmCBC=2, //CBC cmCFB=3, //CFB cmOFB=4 //OFB

}

Для блочных алгоритмов в режимах ECB, CBC программа должна передавать данные объекту «Cipher», реализующему алгоритм шифрования,

частями, кратными размеру блока. Для потоковых и блочных шифров в режиме потоковых – частями произвольного размера или побайтно. Объект «Cipher»

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

Содержание отчета

1.Титульный лист.

2.Задание.

3.Краткая справка по используемому алгоритму: авторы, год разработки,

достоинства, недостатки, надежность, способы криптоанализа.

4.Описание алгоритма (по шагам или в виде блок-схемы).

5.Программная реализация алгоритма.

6.Тестовые примеры.

7.Литература.

Контрольные вопросы

1.Классификация симметричных криптосистем.

2.Принцип работы блочных шифров.

3.Принцип работы потоковых шифров.

4.Схема Фейстеля.

5.Способы повышения защищенности криптосистем, основанных на схеме Фейстеля.

6.Общая схема алгоритма DES.

7.Общая схема алгоритма ГОСТ 28147-89.

8.Режимы применения блочных шифров.

9

Лабораторная работа №3

Реализация криптографической защиты данных

Цель работы

Изучить архитектуру криптографических сервисов, встроенных в современные операционные системы, получить практические навыки использования криптографических средств Microsoft .Net Framework при программировании прикладных приложений.

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

В операционных системах семейства Microsoft Windows NT реализация криптографических алгоритмов инкапсулирована в провайдерах криптографических сервисов (Cryptographic Service Providers, CSP) –

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

симметричное шифрование;

шифрование с открытым ключом;

цифровая подпись;

обмен ключами;

защищенный канал передачи (SSL и др.).

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

(Microsoft Base Cryptographic Provider, Strong Cryptographic Provider, Enhanced Cryptographic Provider и др.). Этот набор провайдеров может расширяться, в

том числе за счет сторонних производителей (например, криптопровайдер КриптоПро CSP российской компании «Крипто-Про» реализует принятые в качестве стандартов в РФ алгоритмы шифрования и цифровой подписи, имеет сертификат соответствия ФСБ России). Для работы в операционных системах

Microsoft провайдеры должны иметь цифровую подпись от Microsoft,

10

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