Криптоалгоритм RC5

Материал из DRKB


Особенностью этой криптосистемы является использование операций циклического сдвига, зависящих от преобразуемых данных RC5 [12,13]. Это задает непредопределенность операций преобразования, выполняемых над преобразуемыми подблоками данных, что по замыслу разработчиков должно привести к достижению высокой криптостойкости. В этой криптосистеме предусмотрена возможность задания пользователем числа раундов и размера входного блока данных. Входной блок разбивается на два подблока одинаковой длины. Обозначим длину подблока в битах через b. Шифрование заключается в поочередном преобразовании подблоков с использованием операций поразрядного суммирования по модулю два, суммирования по модулю 26 и управляемых операций циклического сдвига. Варианты операции циклического сдвига различаются величиной сдвига от 0 до b-1 бит. Для обозначения операции циклического сдвига подблока (слова) W на X бит будем применять запись W <<< X (сдвиг влево) и W >>> X (сдвиг вправо). Для выбора конкретной модификации операции циклического сдвига используется log2 b младших разрядов управляющего блока.

На каждом раунде преобразования используется отдельная пара подключей, поэтому при выборе различного числа раундов преобразования используется ключ шифрования различной длины. Для удобства пользователей в шифре RC5 используется алгоритм инициализации, выполняемый однократно при запуске криптосистемы. На этом этапе предвычислений по секретному ключу пользователя в зависимости от заданного числа раундов R формируется ключ шифрования в виде последовательности, содержащей 2(R+1) b-битовых подключей. Подключи используются по фиксированному расписанию, т. е. для всех входных блоков на данном шаге преобразования используется один и тот же подключ. Для того, чтобы указать значения конкретных параметров настройки алгоритма применяется запись RC5-b/R/l, где l - длина секретного ключа в байтах.

Типичной является модификация RC5-32/12/16, которая соответствует 64-битовому входному блоку данных, 128-битовому секретному ключу и 12 раундам шифрования. Эта модификация является стойкой к известным методам криптоанализа и может применяться для защиты данных в автоматизированных системах обработки информации и управления. В случае применения 64-разрядных микропроцессоров целесообразно применение модификации RC5-64/12/16, которая обеспечит более высокую скорость преобразования. Кроме того, при преобразовании 128-битовых блоков исходного текста повышается стойкость шифрования за счет увеличения числа управляющих битов с 5 до 6.

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

Рассмотрим процедуры шифрования и дешифрования, которые составляют сущность криптосистемы RC5. Обозначим ключ шифрования как последовательность подключей Q0, Q1, ..., Q2R+1. Процедуры шифрования и дешифрования блока Т = A | В описываются следующими простыми алгоритмами:

BХОД: Исходное значение b-битовых подблоков A и В.

1. Установить счетчик i = 1 и число раундов R и выполнить преобразования:

А := (A + Q0) mod 2b;
В := (B + Q1) mod 2b.

2. Преобразовать:

A := {[(A ⊕ В) <<< В] + Q2i} mod 2b
B := {[(B ⊕ A) <<< A] + Q2i+1} mod 2b

3. Если i ? R, то прирастить i := i + 1 и перейти к шагу 2.

4. СТОП.

ВЫХОД: Преобразованное значение подблоков A и В.


Алгоритм дешифрования.

1. Установить счетчик i = R.

2. Преобразовать:

B := {[(В - Q2i+1) mod 2b] >>> A} ⊕ A
A := {[(A - Q2i) mod 2b] >>> В} ⊕ В.

3. Если i ? 1, то уменьшить на 1 значение счетчика i := i - 1 и перейти к шагу 2.

4. Преобразовать:

B := (B - Q1) mod 2b;
A := (A - Q0) mod 2b


Шифрующие преобразования в криптосистеме RC5

Des rc5.png


Схема шифрующих преобразований одного раунда представлена на рис. Операция циклического сдвига относится к быстрым элементарным операциям современных процессоров, Кроме того, время выполнения операции циклического сдвига не зависит от величины сдвига. При программной реализации модификация RC5-32/12/16 обеспечивает скорость шифрования порядка нескольких Мбайт/с для микропроцессора Pentium. В приведенных алгоритмах не используются операция табличной подстановки, которые являются типичными нелинейными операциями для многих блочных криптосистем, Нелинейными операциями рассмотренного шифра являются операции циклического сдвига, зависящие от преобразуемых данных. Как шифрование, так и дешифрование начинается с выполнения операции над подблоками и подключами. Это обусловливает различие в операциях циклического сдвига на каждом раунде шифрования в дешифрования. Двухместные операции ⊕ (xor), выполняемые над двумя подблоками, усиливают эффект размножения ошибки.


Source: http://delphiworld.narod.ru/
ID: 04007