Development of RC4 stream cipher software for students of "Cryptography" discipline

Research article
DOI:
https://doi.org/10.60797/IRJ.2024.147.15
Issue: № 9 (147), 2024
Suggested:
08.06.2024
Accepted:
05.09.2024
Published:
17.09.2024
45
1
XML
PDF

Abstract

This article actualizes cryptography as an effective means of data protection. Stream ciphers implemented on LFSR are relevant to speed up the time of encryption and decryption of data, but these types of generators have insufficient cryptographic strength. The RC4 algorithm is discussed, the algorithm is presented, and the software implementation of the algorithm in C++/CLI is presented. A detailed description of the source code and graphical interface of the developed software complex is given and the correctness of its operation is checked. Demonstration of the complex operation is carried out: character encoding is set, arrays are set and S-blocks are obtained, message encryption is presented and cryptogram is received. The developed software complex and the presented algorithms can be used in the educational process in the framework of the discipline "Cryptography" for students in the direction of "Information Security".

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. Таким образом, представленный в статье программный комплекс может быть использован в учебном процессе в рамках дисциплины «Криптография» для обучающихся по направлению «Информационная безопасность».

Article metrics

Views:45
Downloads:1
Views
Total:
Views:45