RC5
RC5 (Ron’s Code 5 или Rivest’s Cipher 5) — это блочный шифр, разработанный Роном Ривестом из компании RSA Security[англ.] с переменным количеством раундов, длиной блока и длиной ключа. Это расширяет сферу использования и упрощает переход на более сильный вариант алгоритма. ОписаниеСуществует несколько различных вариантов алгоритма, в которых преобразования в «пол-раундах» классического RC5 несколько изменены. В классическом алгоритме используются три примитивных операции и их инверсии:
Основным нововведением является использование операции сдвига на переменное число бит, не использовавшиеся в более ранних алгоритмах шифрования. Эти операции одинаково быстро выполняются на большинстве процессоров, но в то же время значительно усложняют дифференциальный и линейный криптоанализ алгоритма. Шифрование по алгоритму RC5 состоит из двух этапов. Процедура расширения ключа и непосредственно шифрование. Для расшифрования выполняется сначала процедура расширения ключа, а затем операции, обратные процедуре шифрования. Все операции сложения и вычитания выполняются по модулю . ПараметрыТак как алгоритм RC5 имеет переменные параметры, то для спецификации алгоритма с конкретными параметрами принято обозначение RC5-W/R/b, где
Расширение ключаПеред непосредственно шифрованием или расшифрованием данных выполняется процедура расширения ключа. Процедура генерации ключа состоит из четырёх этапов:
Генерация константДля заданного параметра генерируются две псевдослучайные величины используя две математические константы: (экспонента) и (Золотое сечение).
где — это округление до ближайшего нечетного целого. Для получатся следующие константы: Разбиение ключа на словаНа этом этапе происходит копирование ключа в массив слов …, где , где , то есть, количество байт в слове. Если не кратен , то дополняется нулевыми битами до ближайшего большего размера , кратного . В случае если , то мы устанавливаем значение , а . Построение таблицы расширенных ключейНа этом этапе происходит построение таблицы расширенных ключей , которое выполняется следующим образом: ПеремешиваниеЦиклически N раз выполняются следующие действия:
причем — временные переменные, начальные значения которых равны 0. Количество итераций цикла — это максимальное из двух значений и . ШифрованиеПеред первым раундом выполняются операции наложения расширенного ключа на шифруемые данные: В каждом раунде выполняются следующие действия: РасшифрованиеДля Расшифрования данных используются обратные операции, то есть для выполняются следующие раунды: После выполнения всех раундов, исходное сообщение находится из выражения: СвойстваАлгоритм RC5 обладает следующими свойствами:[1]
Криптостойкость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 является его простота в реализации и анализе, вполне логично, что многие криптологи[кто?] захотели усовершенствовать классический алгоритм. Общая структура алгоритма оставалась без изменений, менялись только действия выполняемые над каждым блоком в процессе непосредственно шифрования. Так появилось несколько различных вариантов этого алгоритма: RC5XORВ этом алгоритме сложение с ключом раунда по модулю заменено операцией XOR: Этот алгоритм оказался уязвим для дифференциального и линейного криптоанализа. Бирюкову и Кушилевицу удалось найти атаку методом дифференциального криптоанализа для алгоритма RC5XOR-32/12/16, используя 228 выбранных открытых текстов. RC5PВ этом алгоритме сложение двух обрабатываемых «подблоков» операцией XOR заменено сложением по модулю : RC5PFRВ данном алгоритме циклический сдвиг осуществляется на фиксированное для данного раунда число бит, а не на переменное.
где фиксированное число. Этот алгоритм не достаточно хорошо изучен, однако предполагается,[кем?] что он неустойчив к дифференциальному криптоанализу. RC5KFRВ этом алгоритме число бит сдвига зависит от ключа алгоритма и от текущего раунда:
Этот алгоритм также не достаточно хорошо изучен. RC5RAВ этом алгоритме число бит сдвига определяется с помощью некоторой функции от другого «подблока»:
Предполагается,[кем?] что алгоритм RC5RA ещё более стоек к известным методам криптоанализа, чем RC5. Примечания
Ссылки
|