RC2
RC2 — это симметричный блочный шифр, разработанный в 1987 году Роном Ривестом из лаборатории MIT для компании RSA Data Security. Шифр известен своей простотой, высокой скоростью работы и переменной длиной ключа, что делало его привлекательным для использования в коммерческих и правительственных приложениях, в частности, в протоколе SSL/TLS и в системе шифрования электронной почты S/MIME. Несмотря на то, что RC2 был разработан как альтернатива более сложному алгоритму DES, впоследствии он был признан устаревшим из-за уязвимости к атакам с использованием современных вычислительных мощностей.
История
Разработка RC2 была инициирована в ответ на потребность в более быстром и гибком шифре, чем стандарт DES, который к тому времени уже подвергался критике за относительно короткий 56-битный ключ. В 1987 году Рон Ривест создал два алгоритма: RC2 и RC4. RC2 был спроектирован как блочный шифр с переменной длиной ключа (от 1 до 128 байт), что позволяло адаптировать его под различные уровни безопасности и экспортные ограничения США того времени.
Первоначально алгоритм был запатентован компанией RSA Data Security, и его детали не раскрывались публично. Однако в 1996 году исходный код RC2 был анонимно опубликован в сети Usenet, что привело к его широкому распространению и анализу. После этого патентные ограничения фактически перестали действовать, и шифр вошёл в состав многих открытых библиотек, таких как OpenSSL и Bouncy Castle.
Алгоритм
Общая структура
RC2 является блочным шифром с размером блока 64 бита (8 байт). Он использует переменную длину ключа: от 1 до 128 байт (8–1024 бит). Алгоритм основан на сети Фейстеля, что обеспечивает обратимость шифрования и дешифрования при использовании одного и того же ключа.
Процедура расширения ключа
Перед шифрованием ключ расширяется до массива из 64 16-битных слов (K[0]…K[63]). Процесс расширения включает:
- Копирование исходного ключа в первые L байт массива K.
- Заполнение оставшихся байт с помощью линейного конгруэнтного генератора (LCG) с параметрами: a = 257, c = 1, m = 256.
- Применение операции «смешивания» (mix) для каждого слова, где используется таблица замен PITABLE (Permutation and Inversion Table) — фиксированный массив из 256 байт, полученный из цифр числа π.
Раунды шифрования
RC2 выполняет 16 раундов шифрования. Каждый раунд состоит из трёх операций:
- Смешивание (mix): преобразование одного 16-битного слова с использованием таблицы PITABLE и сложения по модулю 2^16.
- Перестановка (mash): обмен между словами, зависящий от раунда.
- Сложение с ключом: добавление соответствующего слова расширенного ключа.
На выходе получается 64-битный шифротекст. Дешифрование выполняется в обратном порядке с использованием тех же ключей.
Режимы работы
RC2 может использоваться в различных режимах блочного шифрования, таких как ECB (Electronic Codebook), CBC (Cipher Block Chaining), CFB (Cipher Feedback) и OFB (Output Feedback). Наиболее распространённым является режим CBC, который обеспечивает лучшую защиту от статистических атак.
Применение
Протокол SSL/TLS
RC2 был одним из первых шифров, включённых в спецификацию протокола SSL (Secure Sockets Layer) версии 2.0 и 3.0, а также в его преемника TLS (Transport Layer Security). В ранних версиях SSL/TLS RC2 использовался для шифрования данных, передаваемых между клиентом и сервером, особенно в браузерах Netscape и Internet Explorer. С появлением более сильных алгоритмов (AES, 3DES) и уязвимостей RC2, его применение в SSL/TLS было прекращено. В современных версиях TLS (1.2 и 1.3) RC2 не поддерживается.
Система S/MIME
Стандарт S/MIME (Secure/Multipurpose Internet Mail Extensions) версии 2 и 3 поддерживал RC2 как один из алгоритмов для шифрования электронной почты. Шифр использовался для защиты содержимого писем и вложений. Однако из-за слабости 40-битной версии (экспортное ограничение) и последующей уязвимости к атакам, S/MIME перешёл на использование AES.
Другие применения
RC2 также применялся в:
- Протоколе Kerberos (версии 4 и ранние версии 5) для шифрования аутентификационных данных.
- Файловых архиваторах (например, WinZip) для защиты паролем.
- Системах управления базами данных (например, Microsoft SQL Server) для шифрования резервных копий.
Криптоанализ и уязвимости
Атаки на RC2
RC2 подвергался нескольким видам криптоаналитических атак:
- Атака на основе связанных ключей (related-key attack): в 1997 году Джон Келси и Брюс Шнайер показали, что при использовании связанных ключей (например, отличающихся одним битом) можно восстановить ключ с трудоёмкостью около 2^56 операций.
- Атака с известным открытым текстом (known-plaintext attack): в 2000 году группа исследователей (Кнутссон, Мейер и др.) продемонстрировала, что для 64-битного ключа атака требует около 2^55 вызовов шифра.
- Атака с выбранным открытым текстом (chosen-plaintext attack): в 2004 году была опубликована атака, позволяющая восстановить ключ за 2^47 операций для 64-битного ключа.
Статус безопасности
На сегодняшний день RC2 считается полностью устаревшим и небезопасным для использования в новых системах. Ключи длиной 40 бит (экспортная версия) могут быть взломаны за несколько секунд на современном оборудовании. Даже 128-битная версия подвержена атакам с трудоёмкостью около 2^56, что значительно ниже теоретической стойкости. Основные рекомендации криптографических стандартов (NIST, ISO, IETF) предписывают отказ от RC2 в пользу AES или ChaCha20.
Сравнение с другими шифрами
| Характеристика | RC2 | DES | 3DES | AES |
|---|---|---|---|---|
| Размер блока | 64 бит | 64 бит | 64 бит | 128 бит |
| Длина ключа | 1–128 байт | 56 бит | 112/168 бит | 128/192/256 бит |
| Количество раундов | 16 | 16 | 48 | 10/12/14 |
| Скорость (на 32-битном процессоре) | ~10 Мб/с | ~5 Мб/с | ~2 Мб/с | ~20 Мб/с |
| Криптостойкость (2024 г.) | Устаревший | Устаревший | Устаревший | Современный |
Интересные факты
- Название «RC2» расшифровывается как «Rivest Cipher 2» (шифр Ривеста 2). Существует также RC1 (неопубликованный), RC4 (потоковый шифр), RC5 и RC6 (блочные шифры).
- В 1990-е годы из-за экспортных ограничений США RC2 часто поставлялся с ключом длиной 40 бит, что делало его уязвимым для атак методом полного перебора.
- Алгоритм PITABLE, используемый в RC2, был получен из цифр числа π, что является распространённым приёмом для создания псевдослучайных таблиц.
- В 2011 году компания Microsoft объявила о прекращении поддержки RC2 в своих продуктах (Windows, Office, Exchange) и рекомендовала переходить на AES.
Источники
- Rivest, R. L. (1987). «The RC2 Encryption Algorithm». MIT Laboratory for Computer Science.
- Schneier, B. (1996). «Applied Cryptography». John Wiley & Sons.
- Kelsey, J., Schneier, B., Wagner, D. (1997). «Related-Key Cryptanalysis of 3-WAY, Biham-DES, CAST, DES-X, NewDES, RC2, and TEA».
- Knudsen, L. R., Meier, W., Rijmen, V. (2000). «The Security of the RC2 Block Cipher».
- IETF RFC 2268 (1998). «A Description of the RC2(r) Encryption Algorithm».
- NIST Special Publication 800-67 (2012). «Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →