Rc4
Содержание:
История
Потоковый шифр RC4 был создан Рональдом Ривестом, сотрудником компании , в 1987 году. Сокращение «RC4» официально обозначает «Rivest cipher 4» или «шифр Ривеста» («4» — номер версии; см. RC2, RC5, RC6; RC1 никогда не публиковался; RC3 разрабатывался, но в нём была найдена уязвимость), но его часто считают сокращением от «Ron’s code» («код Рона»).
Поскольку данный алгоритм известен, он более не является коммерческой тайной. Однако, название «RC4» является торговой маркой компании . Чтобы избежать возможных претензий со стороны владельца торговой марки, шифр иногда называют «ARCFOUR» или «ARC4», имея в виду англ. alleged RC4 — «предполагаемый» RC4 (поскольку «RSA Security» официально не опубликовала алгоритм).
Алгоритм шифрования RC4 применяется в некоторых широко распространённых стандартах и протоколах шифрования (например, WEP, WPA, SSL и TLS).
RC4 стал популярен благодаря:
- простоте его аппаратной и программной реализации;
- высокой скорости работы алгоритма в обоих случаях.
В США длина ключа, рекомендуемая для использования внутри страны, равна 128 битам. Соглашение, заключённое между «SPA» (англ. software publishers association) и правительством США, разрешило экспортировать шифры RC4 с длиной ключа до 40 бит. 56-и битные ключи разрешено использовать заграничным отделениям американских компаний.
Свойства
Алгоритм RC5 обладает следующими свойствами:
- Пригодный как для аппаратной, так и для программной реализации (алгоритм использует операции, выполняющиеся одинаково быстро на всех процессорах).
- Каждый раунд обрабатывает весь блок целиком (типичный раунд сети Фейстеля обрабатывает только «подблок»).
- Одинаково хорош для машин с разной длиной машинного слова (то есть работает также хорошо и на 64-битных машинах).
- Имеет повторяющуюся структуру с переменным числом раундов, что позволяет пользователю самому выбирать между более высокой скоростью шифрования и большей защищенностью шифра.
- Имеет переменную длину ключа, что позволяет пользователю самому выбирать уровень безопасности, соответствующий специфике его приложения.
- Достаточно простой в реализации и анализе.
- Не требователен к памяти, что позволяет использовать его даже в мобильных и переносных устройствах.
Описание алгоритма
Ядро алгоритма поточных шифров состоит из функции — генератора псевдослучайных битов (гаммы), который выдаёт поток битов ключа (ключевой поток, гамму, последовательность псевдослучайных битов).
Режим гаммирования для поточных шифров
Алгоритм шифрования.
- Функция генерирует последовательность битов (ki{\displaystyle k_{i}}).
- Затем последовательность битов посредством операции «суммирование по модулю два» (xor) объединяется с открытым текстом (mi{\displaystyle m_{i}}). В результате получается шифрограмма (ci{\displaystyle c_{i}}):
ci=mi⊕ki{\displaystyle c_{i}=m_{i}\oplus k_{i}}.
Алгоритм расшифровки.
- Повторно создаётся (регенерируется) поток битов ключа (ключевой поток) (ki{\displaystyle k_{i}}).
- Поток битов ключа складывается с шифрограммой (ci{\displaystyle c_{i}}) операцией «xor». В силу свойств операции «xor» на выходе получается исходный (незашифрованный) текст (mi{\displaystyle m_{i}}):
mi=ci⊕ki=(mi⊕ki)⊕ki{\displaystyle m_{i}=c_{i}\oplus k_{i}=(m_{i}\oplus k_{i})\oplus k_{i}}
RC4 — фактически класс алгоритмов, определяемых размером блока (в дальнейшем S-блока). Параметр n является размером слова для алгоритма и определяет длину S-блока. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. В алгоритме нет противоречий на увеличение размера S-блока . При увеличении n, допустим, до 16 бит, элементов в S-блоке становится 65 536 и соответственно время начальной итерации будет увеличено. Однако, скорость шифрования возрастёт.
Внутреннее состояние RC4 представляется в виде массива размером 2n и двух счётчиков. Массив известен как S-блок, и далее будет обозначаться как . Он всегда содержит перестановку 2n возможных значений слова. Два счётчика обозначены через и .
Инициализация RC4 состоит из двух частей:
- инициализация S-блока;
- генерация псевдослучайного слова .
Инициализация S-блока
Алгоритм также известен как «key-scheduling algorithm» или «KSA». Этот алгоритм использует ключ, подаваемый на вход пользователем, сохранённый в , и имеющий длину байт.
Инициализация начинается с заполнения массива , далее этот массив перемешивается путём перестановок, определяемых ключом. Так как только одно действие выполняется над , то должно выполняться утверждение, что всегда содержит один набор значений, который был дан при первоначальной инициализации (S := i).
for i from 0 to 255
S := i
endfor
j := 0
for i from 0 to 255
j := ( j + S + Key ) mod 256 // n = 8 ; 28 = 256
поменять местами S и S
endfor
Генерация псевдослучайного слова K

Генератор ключевого потока RC4
Эта часть алгоритма называется генератором псевдослучайной последовательности (англ. pseudo-random generation algorithm, PRGA).
Генератор ключевого потока RC4 переставляет значения, хранящиеся в . В одном цикле RC4 определяется одно n-битное слово из ключевого потока. В дальнейшем ключевое слово будет сложено по модулю два с исходным текстом, которое пользователь хочет зашифровать, и получен зашифрованный текст.
i := 0
j := 0
while Цикл генерации:
i := ( i + 1 ) mod 256
j := ( j + S ) mod 256
поменять местами S и S
t := ( S + S ) mod 256
K := S
сгенерировано псевдослучайное слово K (для n = 8 будет сгенерирован один байт)
endwhile
Очистите кэш и куки браузера, SSL кэш
Кэш и куки браузера могут быть частой причиной возникновения ошибок с SSL сертификатами. Рекомендуем сначала очистить в браузере кэш и куки. В Chrome нужно нажать сочетание клавиш Ctrl + Shift + Delete, выберите промежуток времени (Все время) и нажмите кнопку очистки данных (Удалить данные / Clear Data).

Чтобы очистить SSL кэш в Windows:
- Перейдите в раздел Панель управления ->Свойства браузера;
- Щелкните по вкладке ;
- Нажмите на кнопку Очистить SSL (Clear SSL State);
- Должно появится сообщение “SSL-кэш успешно очищен”;
- Осталось перезапустить браузер и проверить, осталась ли ошибка ERR_SSL_PROTOCOL_ERROR.

SecurityEdit
Roos’ Biases and Key Reconstruction from PermutationEdit
In 1995, Andrew Roos experimentally observed that the first byte of the keystream is correlated to the first three bytes of the key and the first few bytes of the permutation after the KSA are correlated to some linear combination of the key bytes. These biases remained unproved until 2007, when Paul, Rathi and Maitra proved the keystream-key correlation and Paul and Maitra proved the permutation-key correlations. The latter work also used Roos’ permutation-key correlations to design the first algorithm for complete key reconstruction from the final permutation after the KSA, without any assumption on the key or IV. This algorithm has a constant probability of success in a time which is the square root of the exhaustive key search complexity. Subsequently, many other works have been done on key reconstruction from RC4 internal states. In another work, Maitra and Paul showed that the Roos type biases still persist even when one considers nested permutation indices, like or . These types of biases are used in some of the later key reconstruction methods for increasing the success probability.
Biased Outputs of the RC4Edit
The complete characterization of a single step of RC4 PRGA was performed by Basu, Ganguly, Maitra and Paul. Considering all the permutations, they prove that the distribution of the output is not uniform given i and j, and as a consequence, information about j is always leaked from the output.
Fluhrer, Mantin and Shamir attackEdit
Cryptosystems can defend against this attack by discarding the initial portion of the keystream. Such a modified algorithm is traditionally called «RC4-drop», where n is the number of initial keystream bytes that are dropped. The SCAN default is n = 768 bytes, but a conservative value would be n = 3072 bytes.
Combinatorial problem Edit
Модификации RC4
Ранее рассматривались атаки, основанные на коррелируемости первых байт шифрованного текста и ключа. Подобные слабости алгоритма могут быть решены отбрасыванием начальной части шифрованного текста. Надёжным считается отбрасывание первых 256, 512, 768 и 1024 байт. Исследования начала шифротекста были проведены для показания ненадёжности определённого числа первых байтов, что может привести к получению злоумышленником ключа шифрования.
Были предложены несколько модификаций RC4 выполняющие поставленную задачу усиления безопасности при использовании алгоритма: RC4A, VMPC, RC4+.
RC4A
В 2004 году свет увидела работа Souradyuti Paul и Bart Preneel, в которой предлагалась модификация RC4A.
Для RC4A используется два S-блока вместо одного, как в RC4, обозначим и . Для них соответствующе используются два счётчика , . Счётчик , как и для RC4, используется в единственном числе для всего алгоритма.
Принцип выполнения алгоритма остается прежним, но имеется ряд отличий:
- является параметром для .
- За одну итерацию, то есть за одно увеличение индекса , генерируется два байта шифротекста.
Алгоритм :
i := 0
j₁ := 0
j₂ := 0
while Цикл генерации:
i := i + 1
j₁ := ( j₁ + S₁ ) mod 256
поменять местами S₁ и S₁
I₂ := ( S₁ + S₁ ) mod 256
output := S₂
j₂ = ( j₂ + S₂ ) mod 256
поменять местами S₂ и S₂
I₁ = ( S₂ + S₂ ) mod 256
output := S₁
endwhile
Скорость шифрования данного алгоритма может быть увеличена за счёт распараллеливания.
RC4+
В 2008 году была разработана и предложена модификация RC4+. Авторы Subhamoy Maitra и Goutam Paul модифицировали инициализацию S-блока(KSA+), использовав 3-уровневое скремблирование. Также модификации был подвергнут алгоритм генерации псевдослучайного слова (PRGA+).
Алгоритм:
Все арифметические операции выполняются по mod 256. Символами «<<» и «>>» обозначены битовые сдвиги влево и вправо соответственно. Символ «⊕» обозначает операцию «исключающее ИЛИ»
while Цикл генерации:
i := i + 1
a := S
j := j + a
b := S
S := b (поменяли местами S и S)
S := a
c := S + S
output ( S + S ) ⊕ S
endwhile
История
Потоковый шифр RC4 был создан Рональдом Ривестом, сотрудником компании , в 1987 году. Сокращение «RC4» официально обозначает «Rivest cipher 4» или «шифр Ривеста» («4» — номер версии; см. RC2, RC5, RC6; RC1 никогда не публиковался; RC3 разрабатывался, но в нём была найдена уязвимость), но его часто считают сокращением от «Ron’s code» («код Рона»).
Поскольку данный алгоритм известен, он более не является коммерческой тайной. Однако, название «RC4» является торговой маркой компании . Чтобы избежать возможных претензий со стороны владельца торговой марки, шифр иногда называют «ARCFOUR» или «ARC4», имея в виду англ. alleged RC4 — «предполагаемый» RC4 (поскольку «RSA Security» официально не опубликовала алгоритм).
Алгоритм шифрования RC4 применяется в некоторых широко распространённых стандартах и протоколах шифрования (например, WEP, WPA, SSL и TLS).
RC4 стал популярен благодаря:
- простоте его аппаратной и программной реализации;
- высокой скорости работы алгоритма в обоих случаях.
В США длина ключа, рекомендуемая для использования внутри страны, равна 128 битам. Соглашение, заключённое между «SPA» (англ. software publishers association) и правительством США, разрешило экспортировать шифры RC4 с длиной ключа до 40 бит. 56-и битные ключи разрешено использовать заграничным отделениям американских компаний.
Включите поддержку протоколов TLS и SSL
И самый последний пункт – скорее всего для решения проблемы вам достаточно будет включить поддержку старых версий протоколов TLS и SSL. В большинстве случае он окажется самым эффективным, но я намеренно перенес его в конец статьи. Объясню почему.
Старые версии протоколов TLS и SSL отключены не по простой прихоти разработчиков, а в связи с наличием большого количества уязвимостей, которые позволяют злоумышленникам перехватить ваши данные в HTTPS трафике и даже видоизменить их. Бездумное включение старых протоколов существенно снижает вашу безопасность в Интернете, поэтому к этому способу нужно прибегать в последнюю очередь, если все другое точно не помогло.
Современные браузеры и ОС уже давно отказались от поддержки устаревших и уязвимых протоколов SSL/TLS (SSL 2.0, SSL 3.0 и TLS 1.1). Стандартном сейчас считаются TLS 1.2 и TLS 1.3
Если на стороне сайта используется меньшая версия протокола SSL/TLS, чем поддерживается клиентом/браузером, пользователь видит ошибку установки безопасного подключения.
Чтобы включить старые версии протоколов SSL/TLS (еще раз отмечаю – это небезопасно):
- Откройте Панель Управления ->Свойства браузера;
- Перейдите на вкладку Дополнительно;
- Включите опции TLS 1.0, TLS 1.1 и TLS 1.2 (если не помогло, включите также SSL 3.0,2.0).
- Перезапустите браузер.
Если все рассмотренные способы не помогли избавиться от ошибки «Этот сайт не может обеспечить безопасное соединение» также попробуйте:
- Проверить, что в файле C:WindowsSystem32driversetchosts отсутствуют статические записи;
- Попробуйте использовать публичные DNS сервера, например – DNS сервер Google. В настройках сетевого подключения в качестве предпочитаемого DNS сервера укажите IP адрес 8.8.8.8;
- В Панели управления -> свойства браузера, убедитесь, что для зоны Интернет выбрана уровень безопасности Выше среднего или Средний. Если выбрана зона Высокий, некоторые SSL подключения могут блокироваться браузером.
- Возможно проблема связана с сертификатом сайта – проверьте его с помощью онлайн утилит SSL Checker;
- В Chrome проверьте, включен ли протокол TLS 1.3:
- В адресной строке перейдите в раздел настроек chrome://flags;
- С помощью поиска найдите параметр TLS 1.3;
- Убедитесь, что он включен (Enabled) или находится в состоянии Default. Если отключен – его нужно включить.
Клиент и сервер поддерживают разные версии протокола SSL или набора шифров. Скорее всего, сервер использует шифр RC4, который считается небезопасным.
Открываем настройки, указав в адресной строке браузера: chrome://flags Ищем настройку «Максимальная версия TLS включена» (Ctrl+F). В выпадающем списке выбираем минимальную версию TLS. Нажимаем на кнопку перезапустить. Пытаемся открыть нужный сайт снова. P.S.: Может отобразится сообщение «Ваше подключение не защищено», если этот факт Вас не пугает, нажмите на ссылку «Дополнительно». После чего, в отображённом тексте, нажмите на ссылку «Перейти на сайт (небезопасно)».
Модификации RC4
Ранее рассматривались атаки, основанные на коррелируемости первых байт шифрованного текста и ключа. Подобные слабости алгоритма могут быть решены отбрасыванием начальной части шифрованного текста. Надёжным считается отбрасывание первых 256, 512, 768 и 1024 байт. Исследования начала шифротекста были проведены для показания ненадёжности определённого числа первых байтов, что может привести к получению злоумышленником ключа шифрования.
Были предложены несколько модификаций RC4 выполняющие поставленную задачу усиления безопасности при использовании алгоритма: RC4A, VMPC, RC4+.
RC4A
В 2004 году свет увидела работа Souradyuti Paul и Bart Preneel, в которой предлагалась модификация RC4A.
Для RC4A используется два S-блока вместо одного, как в RC4, обозначим и . Для них соответствующе используются два счётчика , . Счётчик , как и для RC4, используется в единственном числе для всего алгоритма.
Принцип выполнения алгоритма остается прежним, но имеется ряд отличий:
- является параметром для .
- За одну итерацию, то есть за одно увеличение индекса , генерируется два байта шифротекста.
Алгоритм :
i := 0
j₁ := 0
j₂ := 0
while Цикл генерации:
i := i + 1
j₁ := ( j₁ + S₁ ) mod 256
поменять местами S₁ и S₁
I₂ := ( S₁ + S₁ ) mod 256
output := S₂
j₂ = ( j₂ + S₂ ) mod 256
поменять местами S₂ и S₂
I₁ = ( S₂ + S₂ ) mod 256
output := S₁
endwhile
Скорость шифрования данного алгоритма может быть увеличена за счёт распараллеливания.
RC4+
В 2008 году была разработана и предложена модификация RC4+. Авторы Subhamoy Maitra и Goutam Paul модифицировали инициализацию S-блока(KSA+), использовав 3-уровневое скремблирование. Также модификации был подвергнут алгоритм генерации псевдослучайного слова (PRGA+).
Алгоритм:
Все арифметические операции выполняются по mod 256. Символами «<<» и «>>» обозначены битовые сдвиги влево и вправо соответственно. Символ «⊕» обозначает операцию «исключающее ИЛИ»
while Цикл генерации:
i := i + 1
a := S
j := j + a
b := S
S := b (поменяли местами S и S)
S := a
c := S + S
output ( S + S ) ⊕ S
endwhile
История
Потоковый шифр RC4 был создан Рональдом Ривестом, сотрудником компании , в 1987 году. Сокращение «RC4» официально обозначает «Rivest cipher 4» или «шифр Ривеста» («4» — номер версии; см. RC2, RC5, RC6; RC1 никогда не публиковался; RC3 разрабатывался, но в нём была найдена уязвимость), но его часто считают сокращением от «Ron’s code» («код Рона»).
Поскольку данный алгоритм известен, он более не является коммерческой тайной. Однако, название «RC4» является торговой маркой компании . Чтобы избежать возможных претензий со стороны владельца торговой марки, шифр иногда называют «ARCFOUR» или «ARC4», имея в виду англ. alleged RC4 — «предполагаемый» RC4 (поскольку «RSA Security» официально не опубликовала алгоритм).
Алгоритм шифрования RC4 применяется в некоторых широко распространённых стандартах и протоколах шифрования (например, WEP, WPA, SSL и TLS).
RC4 стал популярен благодаря:
- простоте его аппаратной и программной реализации;
- высокой скорости работы алгоритма в обоих случаях.
В США длина ключа, рекомендуемая для использования внутри страны, равна 128 битам. Соглашение, заключённое между «SPA» (англ. software publishers association) и правительством США, разрешило экспортировать шифры RC4 с длиной ключа до 40 бит. 56-и битные ключи разрешено использовать заграничным отделениям американских компаний.
Проверьте настройки антивируса и файрвола
Если на вашем компьютере установлены антивирусная программа или межсетевой экран (часто он встроен в антивирус), возможно доступ к сайту блокируется именно ими. Чтобы понять, ограничивают ли доступ к сайту антивирусы или файрволы, попробуйте на время приостановить их работу.Во многих современных антивирусах по-умолчанию присутствует модуль проверки SST/TLS сертификатов сайтов. Если антивирус обнаружит, что сайт использует недостаточно защищенный (или самоподписанный) сертификат или устаревшую версию протокола SSL (тот же SSL v3 или ниже), доступ к пользователя к такому сайту может быть ограничен. Попробуйте отключить сканирование HTTP/HTTPS трафика и SSL сертификатов. Как вы понимает, все зависит от того, какой антивирус и вас установлен. Например:
- В Dr.Web блокировать доступ к сайтам может встроенный сетевой экран (SpIDer Gate);
- В ESET NOD32 нужно отключить опцию «Включить фильтрацию протокола SSL/TLS»;
- В Avast опция называется «Включить сканирование HTTPs» (находится в разделе Настройки -> Активная защита -> Веб экран -> Настройки -> Основные настройки).
Описание алгоритма
Ядро алгоритма поточных шифров состоит из функции — генератора псевдослучайных битов (гаммы), который выдаёт поток битов ключа (ключевой поток, гамму, последовательность псевдослучайных битов).
Режим гаммирования для поточных шифров
Алгоритм шифрования.
- Функция генерирует последовательность битов (ki{\displaystyle k_{i}}).
- Затем последовательность битов посредством операции «суммирование по модулю два» (xor) объединяется с открытым текстом (mi{\displaystyle m_{i}}). В результате получается шифрограмма (ci{\displaystyle c_{i}}):
ci=mi⊕ki{\displaystyle c_{i}=m_{i}\oplus k_{i}}.
Алгоритм расшифровки.
- Повторно создаётся (регенерируется) поток битов ключа (ключевой поток) (ki{\displaystyle k_{i}}).
- Поток битов ключа складывается с шифрограммой (ci{\displaystyle c_{i}}) операцией «xor». В силу свойств операции «xor» на выходе получается исходный (незашифрованный) текст (mi{\displaystyle m_{i}}):
mi=ci⊕ki=(mi⊕ki)⊕ki{\displaystyle m_{i}=c_{i}\oplus k_{i}=(m_{i}\oplus k_{i})\oplus k_{i}}
RC4 — фактически класс алгоритмов, определяемых размером блока (в дальнейшем S-блока). Параметр n является размером слова для алгоритма и определяет длину S-блока. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. В алгоритме нет противоречий на увеличение размера S-блока . При увеличении n, допустим, до 16 бит, элементов в S-блоке становится 65 536 и соответственно время начальной итерации будет увеличено. Однако, скорость шифрования возрастёт.
Внутреннее состояние RC4 представляется в виде массива размером 2n и двух счётчиков. Массив известен как S-блок, и далее будет обозначаться как . Он всегда содержит перестановку 2n возможных значений слова. Два счётчика обозначены через и .
Инициализация RC4 состоит из двух частей:
- инициализация S-блока;
- генерация псевдослучайного слова .
Инициализация S-блока
Алгоритм также известен как «key-scheduling algorithm» или «KSA». Этот алгоритм использует ключ, подаваемый на вход пользователем, сохранённый в , и имеющий длину байт.
Инициализация начинается с заполнения массива , далее этот массив перемешивается путём перестановок, определяемых ключом. Так как только одно действие выполняется над , то должно выполняться утверждение, что всегда содержит один набор значений, который был дан при первоначальной инициализации (S := i).
for i from 0 to 255
S := i
endfor
j := 0
for i from 0 to 255
j := ( j + S + Key ) mod 256 // n = 8 ; 28 = 256
поменять местами S и S
endfor
Генерация псевдослучайного слова K

Генератор ключевого потока RC4
Эта часть алгоритма называется генератором псевдослучайной последовательности (англ. pseudo-random generation algorithm, PRGA).
Генератор ключевого потока RC4 переставляет значения, хранящиеся в . В одном цикле RC4 определяется одно n-битное слово из ключевого потока. В дальнейшем ключевое слово будет сложено по модулю два с исходным текстом, которое пользователь хочет зашифровать, и получен зашифрованный текст.
i := 0
j := 0
while Цикл генерации:
i := ( i + 1 ) mod 256
j := ( j + S ) mod 256
поменять местами S и S
t := ( S + S ) mod 256
K := S
сгенерировано псевдослучайное слово K (для n = 8 будет сгенерирован один байт)
endwhile
Криптостойкость
RSA потратила много времени на анализ его работы с 64-битным блоком. Так в период с 1995 по 1998 г. они опубликовали ряд отчетов, в которых подробно проанализировали криптостойкость алгоритма RC5.
Оценка для линейного криптоанализа показывает, что алгоритм безопасен после 6 раундов.
Дифференциальный криптоанализ требует 224{\displaystyle 2^{24}} выбранных открытых текстов для алгоритма с 5 раундами, 245{\displaystyle 2^{45}} для 10 раундов, 253{\displaystyle 2^{53}} для 12 раундов и 268{\displaystyle 2^{68}} для 15 раундов. А так как существует всего лишь 264{\displaystyle 2^{64}} возможных различных открытых текстов, то дифференциальный криптоанализ невозможен для алгоритма в 15 и более раундов.
Так что рекомендуется использовать 18-20 раундов, или по крайней мере не меньше 15 вместо тех 12 раундов которые рекомендовал сам Ривест.
RSA Security Challenge
Для стимуляции изучения и применения шифра RC5 RSA Security Inc. 28 января 1997 года предложила взломать серию сообщений, зашифрованных алгоритмом RC5 с разными параметрами, назначив за взлом каждого сообщения приз в $10 000. Шифр с самыми слабыми параметрами RC5-32/12/5 был взломан в течение нескольких часов. Тем не менее, последний осуществлённый взлом шифра RC5-32/12/8 потребовал уже 5 лет вычислений в рамках проекта распределённых вычислений RC5-64 (здесь 64=b·8, длина ключа в битах) под руководством distributed.net. По-прежнему неприступными пока остаются RC5-32/12/b для b от 9 до 16. distributed.net запустил проект RC5-72 для взлома RC5-32/12/9, в котором по состоянию на октября 2013 года удалось перебрать около 3% ключей.
В мае 2007 года RSA Security Inc. объявила о прекращении поддержки соревнования и выплаты денежного вознаграждения. Чтобы не прекращать проект RC-72, distributed.net решила спонсировать для него приз в $4 000 из собственных средств.
Атака по времени выполнения
На платформах, где операция циклического сдвига на переменное число битов выполняется за различное число тактов процессора, возможна атака по времени исполнения на алгоритм RC5. Два варианта подобной атаки были сформулированы криптоаналитиками Говардом Хейзом и Хеленой Хандшух (англ. Helena Handschuh). Они установили, что ключ может быть вычислен после выполнения около 220 операций шифрования с высокоточными замерами времени исполнения и затем от 228 до 240 пробных операций шифрования. Самый простой метод борьбы с подобными атаками — принудительное выполнение сдвигов за постоянное число тактов (например, за время выполнения самого медленного сдвига).
Модификации RC4
Ранее рассматривались атаки, основанные на коррелируемости первых байт шифрованного текста и ключа. Подобные слабости алгоритма могут быть решены отбрасыванием начальной части шифрованного текста. Надёжным считается отбрасывание первых 256, 512, 768 и 1024 байт. Исследования начала шифротекста были проведены для показания ненадёжности определённого числа первых байтов, что может привести к получению злоумышленником ключа шифрования.
Были предложены несколько модификаций RC4 выполняющие поставленную задачу усиления безопасности при использовании алгоритма: RC4A, VMPC, RC4+.
RC4A
В 2004 году свет увидела работа Souradyuti Paul и Bart Preneel, в которой предлагалась модификация RC4A.
Для RC4A используется два S-блока вместо одного, как в RC4, обозначим и . Для них соответствующе используются два счётчика , . Счётчик , как и для RC4, используется в единственном числе для всего алгоритма.
Принцип выполнения алгоритма остается прежним, но имеется ряд отличий:
- является параметром для .
- За одну итерацию, то есть за одно увеличение индекса , генерируется два байта шифротекста.
Алгоритм :
i := 0
j₁ := 0
j₂ := 0
while Цикл генерации:
i := i + 1
j₁ := ( j₁ + S₁ ) mod 256
поменять местами S₁ и S₁
I₂ := ( S₁ + S₁ ) mod 256
output := S₂
j₂ = ( j₂ + S₂ ) mod 256
поменять местами S₂ и S₂
I₁ = ( S₂ + S₂ ) mod 256
output := S₁
endwhile
Скорость шифрования данного алгоритма может быть увеличена за счёт распараллеливания.
RC4+
В 2008 году была разработана и предложена модификация RC4+. Авторы Subhamoy Maitra и Goutam Paul модифицировали инициализацию S-блока(KSA+), использовав 3-уровневое скремблирование. Также модификации был подвергнут алгоритм генерации псевдослучайного слова (PRGA+).
Алгоритм:
Все арифметические операции выполняются по mod 256. Символами «<<» и «>>» обозначены битовые сдвиги влево и вправо соответственно. Символ «⊕» обозначает операцию «исключающее ИЛИ»
while Цикл генерации:
i := i + 1
a := S
j := j + a
b := S
S := b (поменяли местами S и S)
S := a
c := S + S
output ( S + S ) ⊕ S
endwhile
История
Потоковый шифр RC4 был создан Рональдом Ривестом, сотрудником компании , в 1987 году. Сокращение «RC4» официально обозначает «Rivest cipher 4» или «шифр Ривеста» («4» — номер версии; см. RC2, RC5, RC6; RC1 никогда не публиковался; RC3 разрабатывался, но в нём была найдена уязвимость), но его часто считают сокращением от «Ron’s code» («код Рона»).
Поскольку данный алгоритм известен, он более не является коммерческой тайной. Однако, название «RC4» является торговой маркой компании . Чтобы избежать возможных претензий со стороны владельца торговой марки, шифр иногда называют «ARCFOUR» или «ARC4», имея в виду англ. alleged RC4 — «предполагаемый» RC4 (поскольку «RSA Security» официально не опубликовала алгоритм).
Алгоритм шифрования RC4 применяется в некоторых широко распространённых стандартах и протоколах шифрования (например, WEP, WPA, SSL и TLS).
RC4 стал популярен благодаря:
- простоте его аппаратной и программной реализации;
- высокой скорости работы алгоритма в обоих случаях.
В США длина ключа, рекомендуемая для использования внутри страны, равна 128 битам. Соглашение, заключённое между «SPA» (англ. software publishers association) и правительством США, разрешило экспортировать шифры RC4 с длиной ключа до 40 бит. 56-и битные ключи разрешено использовать заграничным отделениям американских компаний.