Перейти до вмісту

RC4

Матеріал з Вікіпедії — вільної енциклопедії.
Схема шифрування одного символу відкритого тексту за допомогою RC4

RC4 — потоковий шифр, розроблений Роном Рівестом (анг. Ron Rivest) у 1987 році, коли він працював у американській компанії RSA Security.

З часом було знайдено методи успішної атаки на цей алгоритм і тому зараз він не рекомендується до використання. Підтримка RC4 поступово прибирається з різних криптосистем.[1][2]

Став поширеним алгоритмом, використаний в таких популярних протоколах як Transport Layer Security (TLS) (для захисту інтернет трафіку) та WEP (для безпеки бездротових мереж). Серед інших виділяється швидкістю роботи та простотою програмної реалізації, але RC4 має вади, які свідчать про недоцільність його використання в новітніх системах. Особливо уразливий в таких випадках, коли:

  • початок вихідного потоку ключів не відкидається, що призводить до повторного використання набору ключів;
  • використовуються не випадкові або споріднені ключі.

Деякі шляхи використання RC4 можуть зробити криптосистему дуже небезпечною, як наприклад WEP.

Станом на 2013, є припущення, що деякі державні криптологічні агенції можуть мати здатність зламати RC4, навіть коли він використовується в протоколі TLS. Microsoft рекомендує відключити RC4 там, де це можливо[3].

Було доведено, що сучасні атаки на RC4 дозволяють зламати його протягом декількох днів або навіть годин. Тому в лютому 2015 року Internet Engineering Task Force (IETF) запропонувала в документі RFC 7465 припинити застосування RC4 в протоколі та реалізаціях TLS[1].

В серпні 2016 року в оновленні KB3151631 компанія Microsoft припинила використання RC4 в інтернет-браузерах починаючи з Internet Explorer 11 та Microsoft Edge[2].

Реалізація

[ред. | ред. код]

Наступний псевдокод показує приклад реалізації алгоритму: Виконуємо перестановку чисел таблиці 0-255 за допомогою ключа.

for i from 0 to 255
    S[i] := i
endfor
j := 0
for i from 0 to 255
    j := (j + S[i] + key[i mod keylength]) mod 256
    swap values of S[i] and S[j]
endfor

Виконуємо шифрування, з одночасною зміною таблиці 0-255:

for i from 0 to 255
    S[i] := i
endfor
j := 0
for i from 0 to 255
    j := (j + S[i] + key[i mod keylength]) mod 256
    swap values of S[i] and S[j]
endfor

Примітки

[ред. | ред. код]
  1. а б Andrei Popov (February 2015). RFC 7465. Prohibiting RC4 Cipher Suites. Internet Engineering Task Force. Архів оригіналу за 20 лютого 2015. Процитовано 12 серпня 2016.
  2. а б Mark Coppock (Aug 9, 2016). Microsoft deprecates RC4 in both Internet Explorer 11 and Edge. WinBeta. Архів оригіналу за 12 серпня 2016. Процитовано 12 серпня 2016.
  3. BetaFred. Советы по безопасности (Microsoft) 2868725. docs.microsoft.com (ru-ru) . Архів оригіналу за 28 березня 2022. Процитовано 19 травня 2019.

Посилання

[ред. | ред. код]