Основы современной криптографии
         

был объявлен конкурс на создание


Национальным институтом стандартов США (NIST) был объявлен конкурс на создание нового общенационального стандарта шифрования, который должен прийти на замену DES. Разрабатываемому стандарту было присвоено рабочее наименование AES (Advanced Encryption Standard). В качестве одного из кандидатов фирмой RSA Data Security, Inc. был представлен алгоритм RC6. В нем предусматривается использование четырех рабочих регистров, а также введена операция целочисленного умножения, позволяющая существенно увеличить возмущения, вносимые каждым циклом шифрования, что приводит к увеличению стойкости и/или возможности сократить число циклов.

RC6 является полностью параметризованным алгоритмом шифрования. Конкретная версия RC6 обозначается как RC6–w/r/b, где w обозначает длину слова в битах, r – ненулевое количество итерационных циклов шифрования, а b – длину ключа в байтах. Во всех вариантах RC6-w/r/b работает с четырьмя w-битовыми словами, используя шесть базовых операций, обозначаемых следующим образом:

a + b – целочисленное сложение по модулю 2w;

a – b – целочисленное вычитание по модулю 2w;

a Е b – побитовое "исключающее ИЛИ" w-битовых слов;

a ґ b – целочисленное умножение по модулю 2w;

a <<

b – циклический сдвиг w-битового слова влево на величину, заданную log2w

младшими битами b;

a >>

b – циклический сдвиг w-битового слова вправо на величину, заданную log2w младшими битами b;

Шифрование при помощи RC6-w/r/b описывается следующим образом:



Вход:

Исходный текст, записанный в 4 w-битовых входных регистрах A, B, C, D;

Число циклов шифрования r;

Ключевая таблица S[0; … 2r

+ 3] w-битовых слов.

Выход:

Шифрованный текст в регистрах A, B, C, D.

Процедура:

B = B + S[0]

D = D + S[1]

for i = 1 to r

do {

                t = (B

ґ (2B + 1)) << log2

w

                u = (D

ґ (2D + 1)) << log2

w

                A = ((A

Е t) << u) + S[2i]

                C = ((C

Е u) << t) + S[2i

+ 1]

                (A; B; C; D) = (B; C; D; A)

}

A = A + S[2r

+ 2]

C = C + S[2r

+ 3]

<

Содержание раздела