Материал: Методические указания к практическим занятиям по дисциплине «Криптографические протоколы» для специальности «Компьютерная безопасность». Мокроусов А.Н., Остапенко А.Г

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Процедура инициализации SEAL

procedure Initialize a(n,l,A,B,C,D,n1,n2,n3,n4) A←n R[4l];

B←(n»»8)R[4l+1];

C←(n»»16)R[4l+2];

D←(n»»24)R[4l+3]; for j ← 1 to 2 do

P←A&0x7fc; B←B+T[P/4]; A←A»»9; P←B&0x7fc; C←C+T[P/4]; B←B»»9; P←C&0x7fc; D←D+T[P/4]; C←C»»9; P←D&0x7fc; A←A+T[P/4]; D←D»»9;

(n1,n2,n3,n4)←(A,B,C,D); P←A&0x7fc; B←B+T[P/4]; A←A»»9; P←B&0x7fc; C←C+T[P/4]; B←B»»9; P←C&0x7fc; D←D+T[P/4]; C←C»»9; P←D&0x7fc; A←A+T[P/4]; D←D»»9;

Для пояснения сути функционирования алгоритма воспользуемся схемой внутреннего цикла алгоритма SEAL, представленной на рис. 7.

Алгоритм управляется тремя полученными из ключа таблицами: R, S и T. Предварительная обработка отображает ключ k на эти таблицы с помощью процедуры, основанной на SHA. 2-килобайтная таблица T представляет собой S-блок

9*32 битов.

SEAL использует четыре 32-битовых регистра, A, B, C и D, начальные значения которых определяются n и полученными по k таблицами R и T. Эти регистры изменяются в ходе итераций, каждая из которых состоит из восьми этапов. На каждом этапе 9 битов первого регистра (все равно A, B, C или D) используются в качестве индекса таблицы T. Затем выбранное из T значение складывается со вторым регистром (снова одному из A, B, C или D) или объединяется с его содержимым с помощью XOR. Потом первый регистр циклически сдвигается на 9 позиций.

29

Рис. 7. Внутренний цикл SEAL

На некоторых этапах второй регистр далее модифицируется с помощью сложения или XOR с содержимым первого регистра (уже сдвинутым). После 8 таких этапов A, B, C и D добавляются к потоку ключей, при этом каждый из них маскируется сложением или XOR с определенным словом из S. Итерация завершается прибавлением к A и C дополнительных значений, зависящих от n, n1, n2, n3, n4, выбор конкретного значения определяется четностью номера итерации. По-видимому, при разработке этой схемы главными были следующие идеи:

1)использование большого, секретного, получаемого из ключа S-блока (T);

2)чередующиеся некоммутируемые арифметические операции (сложение и XOR);

3)использование внутреннего состояния, поддерживаемого шифром, которое не проявляется явно в

30

потоке данных (значения ni, которые модифицируют A и C в конце каждой итерации);

4) изменение функции этапа в соответствии с номером этапа и изменение функции итерации в соответствии с номером итерации.

Задание:

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

Порядок выполнения работы:

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

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

Оформление отчета:

В отчете следует привести краткие теоретические сведения. Кроме того, должны быть представлены: краткая блок-схема, текст программы, шифруемый набор символов, результаты выполнения программы.

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

1.В чем заключается суть метода шифрования SEAL?

2.Какие главные идеи внутреннего цикла SEAL?

3.Что используется в качестве функции генерации

таблиц?

4.Назовите проблемы, при решении которых могут использоваться криптографические методы.

31

5.В чем отличие криптографии от стеганографии?

6.Какие задачи решает современная криптография?

7.Сформулируйте требования к криптографическим системам защиты информации.

8.Дайте определения понятиям: алфавит, криптограмма, криптографическая система, криптографический протокол, символ, шифр, электронная (цифровая) подпись.

32

Практическая работа № 7 Шифрование данных с помощью алгоритма RC2

Цель работы: изучить методы шифрования данных в алгоритме RC2 и освоить их практическое применение.

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

Структура алгоритма

Алгоритм RC2 шифрует данные блоками по 64 бита с использованием ключей переменного размера: от 8 до 1024 битов включительно; рекомендуемым размером ключа является 64 бита.

Алгоритм является сетью Фейстеля, в нем выполняются 18 раундов преобразований. Причем раунды алгоритма делятся на 2 типа: смешивающие (mix) раунды и объединяющие (mesh) раунды. Общая структура алгоритма такова:

1.Выполняются 5 смешивающих раундов.

2.Выполняется 1 объединяющий раунд.

3.Выполняются 6 смешивающих раундов.

4.Выполняется 1 объединяющий раунд.

5.Выполняются 5 смешивающих раундов.

Структура смешивающего раунда приведена на рис. 8. Предполагается, что шифруемый блок данных разделен на 4 16-битных слова R0 ,....R3 , над которыми смешивающий раунд

в цикле по i от 0 до 3 выполняет следующие операции (составляющие показанную на рис. 1 функцию f () ):

33

Источник: https://studfile.net/preview/16563503/