RC5

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
RC5
Создатель Рон Ривест
Создан 1994 год
Опубликован 1994 год
Размер ключа 0-2040 битов (128 по умолчанию)
Размер блока 32, 64 или 128 битов (64 по умолчанию для 32-разрядных платформ)
Число раундов 1-255 (12 по умолчанию)
Тип Сеть Фейстеля

RC5(Ron’s Code 5илиRivest’s Cipher 5) — этоблочный шифр,разработанныйРоном Ривестомиз компанииRSA Security[англ.]с переменным количествомраундов,длиной блока и длинойключа.Это расширяет сферу использования и упрощает переход на более сильный вариант алгоритма.

Существует несколькоразличных вариантов алгоритма,в которых преобразования в «пол-раундах» классического RC5 несколько изменены. В классическом алгоритме используются три примитивных операции и их инверсии:

Основным нововведением является использование операции сдвига на переменное число бит, не использовавшиеся в более ранних алгоритмах шифрования. Эти операции одинаково быстро выполняются на большинствепроцессоров,но в то же время значительно усложняютдифференциальныйилинейный криптоанализалгоритма.

Шифрование по алгоритму RC5 состоит из двух этапов. Процедура расширения ключа и непосредственношифрование.Для расшифрования выполняется сначала процедура расширения ключа, а затем операции, обратные процедуре шифрования. Все операции сложения ивычитаниявыполняются по модулю.

Так как алгоритм RC5 имеет переменные параметры, то для спецификации алгоритма с конкретными параметрами принято обозначениеRC5-W/R/b,где

  • W— половина длины блока вбитах,возможные значения 16, 32 и 64. Для эффективной реализации величинуWрекомендуют брать равныммашинному слову.Например, для 32-битных платформ оптимальным будет выборW=32, что соответствует размеру блока 64 бита.
  • R— числораундов,возможные значения от 0 до 255. Увеличение числа раундов обеспечивает увеличение уровня безопасности шифра. Так, приR=0 информация шифроваться не будет. Также алгоритм RC5 используеттаблицу расширенных ключейразмераслов, которая получается из ключа заданного пользователем.
  • b— длина ключа вбайтах,возможные значения от 0 до 255.

Расширение ключа

[править|править код]

Перед непосредственно шифрованием или расшифрованием данных выполняется процедура расширения ключа. Процедура генерации ключа состоит из четырёх этапов:

  • Генерация констант
  • Разбиение ключа на слова
  • Построение таблицы расширенных ключей
  • Перемешивание

Генерация констант

[править|править код]

Для заданного параметрагенерируются две псевдослучайные величины используя две математические константы:(экспонента) и(Золотое сечение).

,

где— этоокруглениедо ближайшего нечетного целого.

Дляполучатся следующие константы:

Разбиение ключа на слова

[править|править код]

На этом этапе происходит копирование ключав массив слов,где,где,то есть, количество байт в слове.

Еслине кратен,тодополняется нулевыми битами до ближайшего большего размера,кратного.

В случае если,то мы устанавливаем значение.

Построение таблицы расширенных ключей

[править|править код]

На этом этапе происходит построение таблицы расширенных ключей,которое выполняется следующим образом:

Перемешивание

[править|править код]

Циклически N раз выполняются следующие действия:

,

причем— временные переменные, начальные значения которых равны 0. Количество итераций цикла— это максимальное из двух значенийи.


Перед первым раундом выполняются операции наложения расширенного ключа на шифруемые данные:

В каждом раунде выполняются следующие действия:

Расшифрование

[править|править код]

Для Расшифрования данных используются обратные операции, то есть длявыполняются следующие раунды:

После выполнения всех раундов, исходное сообщение находится из выражения:

Алгоритм RC5 обладает следующими свойствами:[1]

  • Пригодный как для аппаратной, так и для программной реализации (алгоритм использует операции, выполняющиеся одинаково быстро на всехпроцессорах).
  • Каждый раунд обрабатывает весь блок целиком (типичный раундсети Фейстеляобрабатывает только «подблок»).
  • Одинаково хорош для машин с разной длиной машинного слова (то есть работает также хорошо и на 64-битных машинах).
  • Имеет повторяющуюся структуру с переменным числом раундов, что позволяет пользователю самому выбирать между более высокой скоростью шифрования и большей защищенностью шифра.
  • Имеет переменную длину ключа, что позволяет пользователю самому выбирать уровень безопасности, соответствующий специфике его приложения.
  • Достаточно простой в реализации и анализе.
  • Не требователен к памяти, что позволяет использовать его даже в мобильных и переносных устройствах.

Криптостойкость

[править|править код]

RSA потратила много времени на анализ его работы с 64-битным блоком. Так в период с 1995 по 1998 г. они опубликовали ряд отчётов, в которых подробно проанализировали криптостойкость алгоритма RC5. Оценка для линейного криптоанализа показывает, что алгоритм безопасен после 6 раундов. Дифференциальный криптоанализ требуетвыбранных открытых текстов для алгоритма с 5 раундами,для 10 раундов,для 12 раундов идля 15 раундов. А так как существует всего лишьвозможных различных открытых текстов, то дифференциальный криптоанализ невозможен для алгоритма в 15 и более раундов. Так что рекомендуется использовать 18-20 раундов, или по крайней мере не меньше 15 вместо тех 12 раундов которые рекомендовал сам Ривест.

RSA Security Challenge

[править|править код]

Для стимуляции изучения и применения шифра RC5 RSA Security 28 января 1997 года предложила взломать серию сообщений, зашифрованных алгоритмом RC5 с разными параметрами,[2]назначив за взлом каждого сообщения приз в $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, в котором по состоянию на январь 2023 года удалось перебрать около 10 % ключей.[3]

В мае 2007 года RSA Security Inc. объявила о прекращении поддержки соревнования и выплаты денежного вознаграждения. Чтобы не прекращать проектRC-72,distributed.net решила спонсировать для него приз в $4 000 из собственных средств.[4]

Атака по времени выполнения

[править|править код]

На платформах, где операция циклического сдвига на переменное число битов выполняется за различное числотактов процессора,возможнаатака по времениисполнения на алгоритм RC5. Два варианта подобной атаки были сформулированы криптоаналитикамиГовардом ХейзомиХеленой Хандшух(англ.Helena Handschuh). Они установили, что ключ может быть вычислен после выполнения около 220 операций шифрования с высокоточными замерами времени исполнения и затем от 228 до 240 пробных операций шифрования. Самый простой метод борьбы с подобными атаками — принудительное выполнение сдвигов за постоянное число тактов (например, за время выполнения самого медленного сдвига).

Варианты алгоритма

[править|править код]

Так как одним из свойств RC5 является его простота в реализации и анализе, вполне логично, что многие криптологи[кто?]захотели усовершенствовать классический алгоритм. Общая структура алгоритма оставалась без изменений, менялись толькодействия выполняемые над каждым блоком в процессе непосредственно шифрования.Так появилось несколько различных вариантов этого алгоритма:

В этом алгоритме сложение с ключом раунда по модулюзаменено операцией XOR:

Этот алгоритм оказался уязвим для дифференциального и линейного криптоанализа. Бирюкову и Кушилевицу удалось найти атаку методом дифференциального криптоанализа для алгоритма RC5XOR-32/12/16, используя 228 выбранных открытых текстов.

В этом алгоритме сложение двух обрабатываемых «подблоков» операцией XOR заменено сложением по модулю:

В данном алгоритме циклический сдвиг осуществляется на фиксированное для данного раунда число бит, а не на переменное.

,

гдефиксированное число.

Этот алгоритм не достаточно хорошо изучен, однако предполагается,[кем?]что он неустойчив к дифференциальному криптоанализу.

В этом алгоритме число бит сдвига зависит от ключа алгоритма и от текущего раунда:

,

Этот алгоритм также не достаточно хорошо изучен.

В этом алгоритме число бит сдвига определяется с помощью некоторой функции от другого «подблока»:

,

Предполагается,[кем?]что алгоритм RC5RA ещё более стоек к известным методам криптоанализа, чем RC5.

  1. Rivest, R. L. (1994)."The RC5 Encryption Algorithm"(PDF).Proceedings of the Second International Workshop on Fast Software Encryption (FSE) 1994e.pp. 86—96. Архивировано изоригинала(pdf)17 апреля 2007.Дата обращения:27 октября 2009.{{cite conference}}:Игнорируется текст: "ref-en" (справка)Источник.Дата обращения: 27 октября 2009. Архивировано изоригинала17 апреля 2007 года.
  2. The RSA Laboratories Secret-Key ChallengeАрхивировано23 мая 2004 года.
  3. RC5-72: Overall project statistics.Дата обращения: 14 февраля 2010.Архивировано9 октября 2018 года.
  4. distributed.net: staff blogs — 2008 — September — 08