Поточный шифр RC4 был разработан в 1987 году Рональдом Ривестом (Ronald Rivest), одним из авторов схемы асимметричного шифрования RSA и сотрудником компании RSA Security. Сокращение RC4 официально обозначает «Rivest cipher 4» или «шифр Ривеста» (в разделе 7.4.3, мы дадим описание еще одного алгоритма Ривеста — RC6). Также как и алгоритм А5, алгоритм RC4 был засекречен своим автором — компанией RSA Security, однако его описание появилось в сети Интернет и было верифицировано.
Поточный шифр RC4 не использует в своей основе линейные регистры сдвига. Он представляет собой конечный автономный автомат, начальное состояние которого определяется значением ключа. Алгоритм ориентирован па реализацию на 8-битпых компьютерах и обладает очень высокой скоростью реализации. В настоящее время, несмотря на ряд уязвимостей, он применяется в некоторых широко распространённых стандартах и протоколах шифрования, например WEP, WPA, SSL и TLS.
Длина ключа алгоритма RC4 может быть произвольной, по кратной 8 битам. Изначальная аппаратура, изготовляемая RSA Security использовала 128 бит ключа на территории США и 40 бит — для экспортных изделий. Позднее, когда алгоритм RC4 стал известен широкой общественности и были проведены исследования, стало понятно, что длина ключа должна быть существенно больше.
Переменные, определяющие внутреннее состояние конечного автомата RC4, представляют собой:
1. Массив байт S = 5[0], — -, 5[255], определяющий биективное отображение кольца Z2s в себя (перестановку элементов кольца Z2"). Отображение задается следующим образом:
2. Два счетчика Qi, Qz? Z2s.
Алгоритм шифрования RC4 состоит из двух этапов: этапа инициализации внутренних состояний и этапа выработки гаммы, используемой для зашифрования/расшифрования сообщений.