В криптографията RC4 (известен също като ARC4 или ARCFOUR, от английското Alleged RC4) е широко използван софтуерен поточен шифър, проектиран за бързо генериране на поток от псевдослучайни байтове, които след това се XOR-ват с данните за криптиране или декриптиране. Исторически е използван в популярни протоколи като Secure Sockets Layer (SSL) за защита на интернет трафика и в стандарта WEP за безжични мрежи.
Кратка история
RC4 е създаден от Рон Ривест (Ron Rivest) от RSA Security през 1987 г. Първоначално алгоритъмът е третиран като търговска тайна. През септември 1994 г. имплементация на RC4 е публикувана в пощенския списък Cypherpunks и впоследствие разпространена в другите новинарски групи и уебсайтове в интернет. Публикуваната версия е потвърдена като истинска, тъй като резултатите съвпадат с тези на собственически софтуер, използващ лицензиран RC4. След тази публикация алгоритъмът вече не е търговска тайна, но името "RC4" остава защитено с търговска марка. За да се избегнат търговски претенции, често се използват имената "ARCFOUR" или "ARC4" (Alleged RC4).
Принцип на работа
RC4 е потоков шифър, който работи в два етапа:
- KSA (Key Scheduling Algorithm) — инициализира масив S с дължина 256 байта и го смесва, използвайки ключ с променлива дължина (често между 40 и 256 бита). Това създава начално състояние, зависещо от ключа.
- PRGA (Pseudo-Random Generation Algorithm) — генерира безкраен поток от байтове, като при всяка стъпка актуализира индекси i и j и прави размяна в масива S; изходният байт се получава от текущото състояние на S и се XOR-ва с байта от открития текст, за да се получи шифротекст (или обратно).
На високо ниво алгоритъмът използва масив S[0..255] и два индекса i, j. При KSA масивът се инициализира с последователни стойности и се разбърква с байтовете на ключа; при PRGA индексите се инкрементират и се правят постоянни размени, от които се извлича байт от потока.
Причини за широкото разпространение
- Простота: лесна реализация както в софтуер, така и в хардуер.
- Бързина: малко операции на байт, ефективен при малки и големи обеми данни.
- Гъвкавост: поддържа честно широк диапазон от дължини на ключа.
Уязвимости и известни атаки
Въпреки простотата и скоростта си, RC4 има няколко фундаментални слабости, които го правят неподходящ за съвременна криптография:
- Начални пристрастия (biases) в ключовия поток: Първите байтове от потока не са криптографски независими и съдържат статистически пристрастия. Това е основата за много атаки.
- Aтаки по WEP (Fluhrer, Mantin и Shamir — FMS): Определен начин на комбиниране на кратък IV с ключа в WEP позволява извличане на ключа чрез събиране на голям брой наблюдения. Това прави WEP практически несигурен.
- Повторно използване на един и същ поток: Ако два различни текста се криптират със същия ключов поток (например поради повторно използване на ключ/IV), XOR на двете шифротекста дава XOR на двата открити текста, което често позволява възстановяване на съдържанието.
- Дискриминиращи и отличителни атаки: Използвайки статистически пристрастия, атакуващ може да разграничи части от ключовия поток от случаен поток и в някои случаи да извлече информация за ключа или текстовете.
- Проблеми в TLS/SSL: Поради описаните пристрастия и практически атаки срещу потока, използването на RC4 в TLS/SSL беше постепенно обезсилено и накрая официално забранено в TLS чрез стандарти (вж. по-долу).
Практически съвети и мерки
- Отпадането на първите N байта от ключовия поток (т.нар. RC4-drop[N], например N = 768 или 1024) може да намали част от слабостите, свързани с началните пристрастия, но не може да гарантира сигурност срещу по-напреднали атаки.
- Никога не повтаряйте (не рециклирайте) един и същ ключ или двойка ключ+IV за различни съобщения — това е фундаментално изискване за потоковите шифри.
- Ако имате възможност, мигрирайте към съвременни и рецензирани алтернативи, като AES-GCM или ChaCha20-Poly1305, които предлагат по-добра сигурност и устойчивост на известни атаки.
Съвременно състояние и стандарти
Поради големия брой атаки и практическите проблеми, свързани с използването на RC4, през последните години мнозина експерти и стандарти за криптографиято го отклоняват от употреба. Например, използването на RC4 в TLS е забранено (вж. съответните стандарти и препоръки), а много софтуерни библиотеки и браузъри прекратяват или вече са прекратили поддръжката му. WEP е считан за несигурен и е заменен от WPA/WPA2 с по-сигурни методи.
Заключение
RC4 е важен исторически пример за потоков шифър — много прост и ефективен на практика през 90-те и началото на 2000-те години. Въпреки това не отговаря на съвременните стандарти за криптографска устойчивост поради ясни и експлоатируеми слабости. За нови проекти и продукти не се препоръчва използването му; вместо това е по-разумно да се избере добре изучен и поддържан модерен режим като AES-GCM или ChaCha20-Poly1305.