Дьякова В.Н.., доценты Дьяков И.А., Коробова И.Л.

ФГБОУ ВПО «ТГТУ», Россия

 

МОДИФИКАЦИЯ АЛГОРИТМА ШИФРОВАНИЯ RC5

 

Алгоритм RC5 это блочный шифр, разработанный Роном Ривестом для RSA laboratories [1]. В этом алгоритме переменными являются: длина блока; количество циклов (итераций); длина ключа.

В блочном алгоритме RC5 размер слова определяет однозначно размер блока - размер блока в два раза больше размера слова. Например, задан размер слова в 32 бита - размер блока в этом случае будет 64 бита. Для лучшего результата (наверно имеется ввиду скорость работы) советуют выбирать размер слова равным разрядности регистров процессора, на котором реализуется алгоритм [1, 2].

В нашей работе исследовался алгоритм RC5-32/8/32. Алгоритм использует блок открытого текста длиной 64 бита. Для шифрования (рис.1) этот блок делится на два 32-битовых слова: A и B. Затем выполняются следующие действия:

A=A + S0; B=B + S1;

for i=1 to r ( A=((A xor B)<<<B)+S2i;  B=((B xor A)<<<A)+S2i+1)

где    r - количество итераций (в этом случае 8),  <<< - циклический сдвиг влево, S2i и S2i+1 - 32-битовые слова, зависящие от ключа.

         Дешифрование (рис. 2) происходит в обратном порядке. 64-битовый блок кодированного текста разбивается на два 32-битовых слова: А и B. Затем:

for i=r downto 1 ( B=((B - S2i+1)>>>A) xor A; A=((A - S2i)>>>B) xor B)

B=B - S1; A=A - S0

Создание массива ключей (рис.3) более сложно. Сначала байты ключа копируются в массив L из c 32-битовых слов, дополняя при необходимости заключительное слово нулями. Затем массив S инициализируется при помощи линейного генератора по модулю 232:

S0=P

for i=1 to 2(r+1)-1 ( Si=(Si-1 + Q) mod 232)

где    P=0xb7e151163 и Q=0x9e3379b9, основанные на двоичном представлении e и π.

         Затем подставляем L в S: i=j=0; A=B=0 и выполняем n раз( где n – максимум 2(r+1) и c):

          A=Si=(Si+A+B)<<<3

          B=Lj=(Lj+A+B)<<<(A+B)

          i=(i+1) mod 2(r+1)

          j=(j+1) mod c

                    

            Рис. 1. Шифрование                               Рис. 2. Дешифрование

 

Рис.3. Создание массива ключей

 

Модификация алгоритма состоит в том, что байты (от 1 до 7), которых не хватает для образования 64 битного слова, кодируются следующим образом:

for i=1to n ( bi=bi xor Si)

где    n – количество байт в «хвосте», bi  - один из выше описанных байтов, Si  - выше описанное слово, зависящее от ключа.

 

         Литература

         1. RC5// https://ru.wikipedia.org/wiki/RC5

         2. Что такое RC5// http://www.algoritmy.info/encrypt4.html