RC4

RC4

Sidney Job | January 15, 2023

 

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

Итак, начнем с теории


RC4 как и любой потоковый шифр строится на основе генератора псевдослучайных битов. RC4 также известен как ARC4 или ARCFOUR(alleged RC4) и является потоковым шифром, то есть это симметричный шифр, в котором каждый символ открытого текста преобразуется в символ шифрованного текста в зависимости не только от используемого ключа, но и от его расположения в потоке открытого текста. RC4 широко применяется в различных системах защиты информации в компьютерных сетях, например: в протоколах SSL и TLS, алгоритмах обеспечения безопасности беспроводных сетей WEP и WPA.


Преимущества данного шифра:

  • Переменный размер ключа.
  • Простота его аппаратной и программной реализации.
  • Высокая скорость работы в обоих случаях.


Но не все так гладко, RC4 довольно уязвим, если:

  • Используются не случайные или связанные ключи.
  • Один ключевой поток используется дважды.


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


Алгоритм шифрования

Функция генерирует последовательность битов, затем последовательность битов посредством операции xor объединяется с открытым текстом. В результате получается шифрограмма.


Алгоритм расшифровки

Повторно создаётся поток битов ключа. Поток битов ключа складывается с шифрограммой операцией xor. В силу свойств операции xor на выходе получается исходный (незашифрованный) текст


Инициализация RC4 состоит из двух частей:

  1. Инициализация S-блока.
  2. Генерация псевдослучайного слова 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!




Report Page