Разработка программного комплекса потокового шифра RC4 для обучающихся по дисциплине «Криптография»
Разработка программного комплекса потокового шифра RC4 для обучающихся по дисциплине «Криптография»
Аннотация
В данной статье актуализирована криптография как эффективное средство защиты данных. Для ускорения времени шифрования и расшифрования данных актуальны потоковые шифры, реализованные на РСЛОС, но у этих типов генераторов недостаточная криптостойкость. Рассматривается алгоритм 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:
, где
2. Затем значения S-блоков перемешивается с помощью ключевой последовательности Key:
– Сначала обнулим счетчик j:
– Затем выполним следующие действия для
3. Меняем местами S[i] и S[j].
Этап второй – генерация псевдослучайного слова K:
1. Сначала обнулим счетчики i и j:
2. Затем следующие действия выполняются циклически необходимо число раз:
3. Меняем местами S[i] и S[j]
В 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);
Рисунок 1 - Первая часть кода функции RC4_Funct
Рисунок 2 - Вторая часть кода функции RC4_Funct
Рисунок 3 - Алфавит в программе
1. «Сообщение» – это поле предназначено для ввода текста, которое шифруется или расшифровывается.
2. «Ключ» – это поле предназначено для ввода ключа, который используется при шифровании или расшифровании введенного в поле «Сообщение» текста.
3. «Результат» – это поле предназначено для вывода результата шифрования или расшифрования текста, введенного в поле «Сообщение».
4. «Генерируемая последовательность» – это поле предназначено для вывода псевдослучайной последовательности, которая генерируется при шифровании или расшифровании.
5. «Зашифровать/Расшифровать» – это кнопка, при нажатии на которую происходит шифрование или расшифровка текста, введенного в поле «Сообщение».
Рисунок 4 - Окно программы «RC4»:
1 - поле для ввода текста; 2 - поле для ввода ключа шифрования; 3 - поле для вывода результата; 4 - поле для вывода псевдослучайной последовательности; 5 - кнопка действия; 6 - кнопка завершения работы
4. Демонстрация работы комплекса
Рисунок 5 - Алфавит
Массив S-блоков заполняется значение от 0 до 63. Далее счетчики j и i обнулятся и значения массива перемешиваются с помощью ключа:
, где
Далее для всех значений выполняется следующее:
S[i] и S[j] меняются местами.
Рассмотрим несколько итераций:
При i=0:
S[0] и S[48] меняются местами.
При i=1:
S[1] и S[1] меняются местами.
При i=2:
S[2] и S[39] меняются местами.
Рисунок 6 - Значения S-блоков после перемешивания
Обнуляем счетчики i и j.
И вычисляем значения K1.
Меняем местами S[1] и S[33]
Вычисляем значения K2.
Меняем местами S[2] и S[8]
Вычисляем значения K3.
Меняем местами S[3] и S[34]
Шифруем сообщение с помощью полученных значений:
Рисунок 7 - Результат работы приложения «RC4»
– K1=5;
– K2=32;
– K3=14;
– зашифрованное сообщение – «RmV».
Кроме этого, мы можем и легко расшифровать сообщение с исходным ключом.
Результатом демонстрации является верность ручного шифрования данных, поскольку они идентичны с результатом программного комплекса «RC4» при идентичных входных значениях.
5. Обсуждение
Новизной данной работы является программная реализация алгоритма RC4. Программный комплекс «RC4» является оригинальным решением с удобным интерфейсом для ввода-вывода данных, а представленный алгоритм позволяет шифровать данные вручную с целью получения практических навыков обучающимися.
Существуют и подобные работы , , , , но в других научных направлениях и во время разработки нашего программного комплекса мы опирались на некоторые рекомендации, предложенные в них, и актуализировали их. Разработанный программный комплекс «RC4» имеет удобный интерфейс (рис.4) для ввода входных данных и получения результата работы программы (рис.7).
Несмотря на то что данный алгоритм уже имеет несколько модификаций, разработанный комплекс может быть использован в учебном процессе в рамках учебной дисциплины – «Криптография» по направлению «Информационная безопасность». Обучающие сначала изучают алгоритм RC4, задают входные параметры, формируют таблицы данных и, выбрав необходимый по длине ключ шифрования, формируют ключевую последовательность. После этого выбирают открытый текст и выполняют шифрование выработанной на предыдущем этапе ключевой последовательностью. После получения шифрограммы обучающие, используя программный комплекс «RC4», проверяет результаты своей работы и если результат расчёта и «RC4» совпадут, то обучающиеся верно выполнили расчеты. Проведённые тесты показали корректность работы разработанного приложения.
6. Заключение
Проведенные исследования показали, что разработанное приложение «RC4» может корректно эмулировать работу потокового шифра RC4, выдавая результат, совпадающий с рассчитанными вручную данными. Это доказывает, что данное приложение может быть использовано в учебном процессе для формирования у обучающихся компетенций в области потокового шифрования. Обучение с помощью разработанного программного комплекса и методических рекомендаций позволит обучающимся лучше понять принципы и методы, лежащие в основе алгоритма RC4. Таким образом, представленный в статье программный комплекс может быть использован в учебном процессе в рамках дисциплины «Криптография» для обучающихся по направлению «Информационная безопасность».