Разработка программного комплекса потокового шифра RC4 для обучающихся по дисциплине «Криптография»

Научная статья
DOI:
https://doi.org/10.60797/IRJ.2024.147.15
Выпуск: № 9 (147), 2024
Предложена:
08.06.2024
Принята:
05.09.2024
Опубликована:
17.09.2024
46
1
XML
PDF

Аннотация

В данной статье актуализирована криптография как эффективное средство защиты данных. Для ускорения времени шифрования и расшифрования данных актуальны потоковые шифры, реализованные на РСЛОС, но у этих типов генераторов недостаточная криптостойкость. Рассматривается алгоритм RC4, представлен алгоритм, а также представлена программная реализация алгоритма на языке C++/CLI. Дается подробное описание исходного кода и графического интерфейса, разработанного программного комплекса и проверяется корректность его работы. Проведена демонстрация работы комплекса: задана кодировка символов, заданы массивы и получены S-блоки, представлено шифрование сообщения и получена шифрограмма. Разработанный программный комплекс и представленные алгоритмы могут быть использованы в учебном процессе в рамках дисциплины «Криптография» для обучающихся по направлению «Информационная безопасность».

1. Введение

На сегодняшний день криптография – это одно из надёжных направлений при защите информации. Эффективные криптографические системы делают данные защищёнными от нарушения их конфиденциальности и целостности. Современные алгоритмы очень криптостойкие и шифротексты не поддаются взлому, включающие различные методы криптоанализа. Известно, что алгоритмы бывают симметричные (одноключеные) и ассиметричные (двухключевые)

; ассиметричные используются, например, для идентификации отправителя данных или же для защиты от изменений данных при передаче, симметричные для шифрования самих данных, которые передаются по каналу. Кроме того, к системам передачи данных предъявляются требования по скорости обработки данных и передачи их
. Однако в реальных системах, учитывая различные сложности современных симметричных алгоритмов шифрования, падает скорость обработки и передачи данных. Например, в известном алгоритме Advanced Encryption Standard (AES) данных разбиваются по 128 битовые блоки и проходят 10 итерационных шагов табличной замены байтов, смещения строк, смешивания столбцов и добавления раундового ключа
. Всё это требует затрат вычислительных ресурсов.

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

. Обычно для генерации гаммы используется регистр сдвига с линейной обратной связи (РСЛОС). Генератор псевдослучайной последовательности, основанный на РСЛОС, является хорошим, так как перед началом работы в регистр заносится случайная последовательность бит, однако не обладает достаточной криптостойкостью из-за линейных связей
.

Более распространённым является шифр – RC4. Известно, что потоковый шифр RC4 применяется в различных сетевых протоколах безопасности, таких как SSL и TLS. Также RC4 используется для обеспечения безопасности в беспроводных сетях Wi-Fi, в алгоритмах WEP и WPA. Главными преимуществами RC4 являются высокая скорость работы и программной, и аппаратной реализаций, и переменная длинна ключа

. Длина ключа может варьироваться от 40 до 2048 бит. Поэтому также в RC4 для генерации гаммы используется алгоритм «key-scheduling algorithm», сокращено KSA
.

Целью данной статья является разработка учебного комплекса для изучения алгоритма RC4 обучающимся. Для достижения поставленной цели необходимо выполнить следующие задачи:

– исследовать алгоритм RC4 и представить пошаговые операции;

– разработать программную реализацию алгоритма RC4 с графической формой ввода данных и получения результатов;

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

Рассмотрим более подробнее алгоритм RC4.

2. Алгоритм RС4

Введем следующие обозначения:

- S[i] – значение i-ого S-блока;

- Key[i] – значение i-ого элемента ключевой последовательности;

- L – длина ключевой последовательности;

- a mod b – остаток от деления a на b.

RC4 состоит из следующих шагов

:

1. Массива блоков S. Блок S содержит одно из 2n, где n это Размерность слова, используемого в алгоритме. Значение n также определяет размер S-блока. Размерность массива S-блоков равна 2n.

2. Двух внутренних счетчиков, обозначаемых как i и j.

3. Ключевой последовательности Key.

4. Псевдослучайного слова K.

Описание двух этапов работы алгоритма потокового шифра RC4.

Этап первый – алгоритм KSA:

1. Сначала все S-блоки заполняются значениями от 0 до 2n-1:

img, где img

2. Затем значения S-блоков перемешивается с помощью ключевой последовательности Key:

– Сначала обнулим счетчик j:

img

– Затем выполним следующие действия для img

img

3. Меняем местами S[i] и S[j].

Этап второй – генерация псевдослучайного слова K:

1. Сначала обнулим счетчики i и j:

img

img

2. Затем следующие действия выполняются циклически необходимо число раз:

img

img

3. Меняем местами S[i] и S[j]

img

img

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

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

Для наглядной демонстрации работы алгоритма RC4 было разработано программное обеспечение «RC4», которое эмулирует работу потокового шифра RC4, для n = 6. Программа разработана на языке C++/CLI.

На рис. 1 и рис. 2 представлен исходный код основной функции разработанной программы. Где:

– RC4_Funct – функция эмулирующая работу алгоритма RC4;

– i и j – внутренние счетчики RC4;

– L – длина ключевой последовательности;

– S[64] – массива S-блоков;

– CopyMes – строка, содержащая значение сообщения в кодировке (рис. 5);

– CopyKey – строка, содержащая значение ключа в кодировке с (рис. 5).
Первая часть кода функции RC4_Funct

Рисунок 1 - Первая часть кода функции RC4_Funct

Вторая часть кода функции RC4_Funct

Рисунок 2 - Вторая часть кода функции RC4_Funct

Кодировка на рис. 5 хранится в программе в виде переменной alf (рис. 3). Работа данной функции ничем не отличается от работы алгоритма, представленного выше, кроме двух циклов в начале, которые переводят значения ключа и сообщения из кодировки UTF-16, используемой внутри программы, в кодировку (рис. 5).
Алфавит в программе

Рисунок 3 - Алфавит в программе

На рис. 4 представлено рабочее окно «RC4», где:

1. «Сообщение» – это поле предназначено для ввода текста, которое шифруется или расшифровывается.

2. «Ключ» – это поле предназначено для ввода ключа, который используется при шифровании или расшифровании введенного в поле «Сообщение» текста.

3. «Результат» – это поле предназначено для вывода результата шифрования или расшифрования текста, введенного в поле «Сообщение».

4. «Генерируемая последовательность» – это поле предназначено для вывода псевдослучайной последовательности, которая генерируется при шифровании или расшифровании.

5. «Зашифровать/Расшифровать» – это кнопка, при нажатии на которую происходит шифрование или расшифровка текста, введенного в поле «Сообщение».

6. «Выход» – это кнопка, при нажатии на которую приложение завершает свою работу.
Окно программы «RC4»: 1 - поле для ввода текста; 2 - поле для ввода ключа шифрования; 3 - поле для вывода результата; 4 - поле для вывода псевдослучайной последовательности; 5 - кнопка действия; 6 - кнопка завершения работы

Рисунок 4 - Окно программы «RC4»: 

1 - поле для ввода текста; 2 - поле для ввода ключа шифрования; 3 - поле для вывода результата; 4 - поле для вывода псевдослучайной последовательности; 5 - кнопка действия; 6 - кнопка завершения работы

4. Демонстрация работы комплекса

Для демонстрации работы алгоритма и проверки корректности работы программы проведем эксперимент и зашифруем сообщение «MSP», при помощи ключа «Key». В качестве кодировки символов будем использовать алфавит, представленный на рис. 5.
Алфавит

Рисунок 5 - Алфавит

Этап первый:

Массив S-блоков заполняется значение от 0 до 63. Далее счетчики j и i обнулятся и значения массива перемешиваются с помощью ключа:

img, где img

img

img

Далее для всех значений img выполняется следующее:

img

S[i] и S[j] меняются местами.

Рассмотрим несколько итераций:

При i=0:

img

S[0] и S[48] меняются местами.

При i=1:

img

S[1] и S[1] меняются местами.

При i=2:

img

S[2] и S[39] меняются местами.

И так далее. В конце перемешивания в массиве S-блоков будет находиться последовательность, представленная на рис. 6.
Значения S-блоков после перемешивания

Рисунок 6 - Значения S-блоков после перемешивания

Этап второй:

Обнуляем счетчики i и j.

img

img

И вычисляем значения K1.

img

img

Меняем местами S[1] и S[33]

img

img

Вычисляем значения K2.

img

img

Меняем местами S[2] и S[8]

img

img

Вычисляем значения K3.

img

img

Меняем местами S[3] и S[34]

img

img

Шифруем сообщение с помощью полученных значений:

img

img

img

Для проверки результата зашифруем сообщение «MSP» ключом «Key» используя разработанное программное обеспечение (рис. 7).
Результат работы приложения «RC4»

Рисунок 7 - Результат работы приложения «RC4»

В итоге, результаты работы приложения «RC4» совпадает с ручными расчетами:

– K1=5;

– K2=32;

– K3=14;

– зашифрованное сообщение – «RmV».

Кроме этого, мы можем и легко расшифровать сообщение с исходным ключом.

Результатом демонстрации является верность ручного шифрования данных, поскольку они идентичны с результатом программного комплекса «RC4» при идентичных входных значениях.

5. Обсуждение

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

Существуют и подобные работы

,
,
,
, но в других научных направлениях и во время разработки нашего программного комплекса мы опирались на некоторые рекомендации, предложенные в них, и актуализировали их. Разработанный программный комплекс «RC4» имеет удобный интерфейс (рис.4) для ввода входных данных и получения результата работы программы (рис.7).

Несмотря на то что данный алгоритм уже имеет несколько модификаций, разработанный комплекс может быть использован в учебном процессе в рамках учебной дисциплины – «Криптография» по направлению «Информационная безопасность». Обучающие сначала изучают алгоритм RC4, задают входные параметры, формируют таблицы данных и, выбрав необходимый по длине ключ шифрования, формируют ключевую последовательность. После этого выбирают открытый текст и выполняют шифрование выработанной на предыдущем этапе ключевой последовательностью. После получения шифрограммы обучающие, используя программный комплекс «RC4», проверяет результаты своей работы и если результат расчёта и «RC4» совпадут, то обучающиеся верно выполнили расчеты. Проведённые тесты показали корректность работы разработанного приложения.

6. Заключение

Проведенные исследования показали, что разработанное приложение «RC4» может корректно эмулировать работу потокового шифра RC4, выдавая результат, совпадающий с рассчитанными вручную данными. Это доказывает, что данное приложение может быть использовано в учебном процессе для формирования у обучающихся компетенций в области потокового шифрования. Обучение с помощью разработанного программного комплекса и методических рекомендаций позволит обучающимся лучше понять принципы и методы, лежащие в основе алгоритма RC4. Таким образом, представленный в статье программный комплекс может быть использован в учебном процессе в рамках дисциплины «Криптография» для обучающихся по направлению «Информационная безопасность».

Метрика статьи

Просмотров:46
Скачиваний:1
Просмотры
Всего:
Просмотров:46