RC4
Sidney Job | January 15, 2023
Всем привет, на связи SidneyJob, в этой статье я хотел бы показать один очень интересный способ поточного шифрования RC4!

Итак, начнем с теории
RC4 как и любой потоковый шифр строится на основе генератора псевдослучайных битов. RC4 также известен как ARC4 или ARCFOUR(alleged RC4) и является потоковым шифром, то есть это симметричный шифр, в котором каждый символ открытого текста преобразуется в символ шифрованного текста в зависимости не только от используемого ключа, но и от его расположения в потоке открытого текста. RC4 широко применяется в различных системах защиты информации в компьютерных сетях, например: в протоколах SSL и TLS, алгоритмах обеспечения безопасности беспроводных сетей WEP и WPA.
Преимущества данного шифра:
- Переменный размер ключа.
- Простота его аппаратной и программной реализации.
- Высокая скорость работы в обоих случаях.
Но не все так гладко, RC4 довольно уязвим, если:
- Используются не случайные или связанные ключи.
- Один ключевой поток используется дважды.
Итак, приступим к теории использования данного шифра!
Алгоритм шифрования
Функция генерирует последовательность битов, затем последовательность битов посредством операции xor объединяется с открытым текстом. В результате получается шифрограмма.
Алгоритм расшифровки
Повторно создаётся поток битов ключа. Поток битов ключа складывается с шифрограммой операцией xor. В силу свойств операции xor на выходе получается исходный (незашифрованный) текст
Инициализация RC4 состоит из двух частей:
- Инициализация S-блока.
- Генерация псевдослучайного слова K.
P.S.
S-блок — табличная подстановка, при которой группа битов отображается в другую группу битов. S-блок используется как промежуточная операция в алгоритмах симметричного шифрования.
Теперь приступим к практике!
Инициализация S-блока
Алгоритм также известен как “key-scheduling algorithm” или “KSA”. Этот алгоритм использует ключ, подаваемый на вход пользователем, сохранённый в key, и имеющий длину L байт. Инициализация начинается с заполнения массива S, далее этот массив перемешивается путём перестановок, определяемых ключом. Так как только одно действие выполняется над S, то должно выполняться утверждение, что S всегда содержит один набор значений, который был дан при первоначальной инициализации (S[i] := i).

Генерация псевдослучайного слова K
Эта часть алгоритма называется генератором псевдослучайной последовательности (pseudo-random generation algorithm, PRGA). Генератор ключевого потока RC4 переставляет значения, хранящиеся в S. В одном цикле RC4 определяется одно n-битное слово K из ключевого потока. В дальнейшем ключевое слово будет сложено по модулю два с исходным текстом, который пользователь хочет зашифровать, и будет получен зашифрованный текст.

Приступим к шифрованию и попробуем зашифровать и расшифровать сообщение "Hello World!"

С любовью, ваши SidneyJob и RESOLUTE ATTACK!