Конкурс на Advanced Encryption Standard

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

= x * (2x + 1) mod 232.

 

В конце каждого раунда выполняется сдвиг субблоков.

При расшифровании подключи используются в обратном порядке, наложение подключей вместо сложения по модулю 232 выполняется вычитанием, а также сдвиг субблоков выполняется в начале раунда и в обратную сторону. Преобразование f() не претерпело изменений.

 

Рис. 8 - Расшифрование алгоритмом RC6

 

Процедура расширения ключа

Процедура расширения ключа RC6 аналогична RC5, за исключением того, что RC6 требуется существенно больше сгенерированных подключей, а именно 2R+4, то есть K0...K43 для 20 раундов. Рассмотрим данную процедуру для алгоритма RC6 в варианте для конкурса AES, то есть с указанными выше фиксированными параметрами.

Расширение ключа выполняется в два этапа:

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

 

K0 = P32, Ki+1 = Ki + Q32 mod 232,

 

где P32 и Q32 - псевдослучайные константы, образованные путем умножения на 232дробной части и последующего округления до ближайшего нечетного целого двух математических констант:

= B7E15163, Q32 = 9E3779B9

 

],.,Twofish-FK,RC6,,P32Q32.">Авторы алгоритма в его спецификации [] утверждают, что выбор данных значений не является важным. Соответственно, аналогично описанному выше алгоритму Twofish-FK, при необходимости создания реализации алгоритма RC6, не совместимой со стандартной, следует изменить значения P32 и Q32.

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

 

A = Ki = (Ki + A + B mod 232) <<< 3, B = KIj = (KIj + A + B mod 232) <<< (A + B), i = i + 1 mod 44, j = j + 1 mod c,

 

где i, j, A и B - временные переменные, их начальные значения равны нулю, KI - исходный ключ шифрования, представленный в виде c 32-битных слов. Выполняется 3c итераций цикла.

3.4 Финалист AES - шифр Serpent

 

Алгоритм разработан группой ученых из нескольких исследовательских центров мира. Алгоритм представляет собой сетей Фейштеля для четырех ветвей смешанного типа : 2 четные ветви изменяют совместо значения нечетных, затем меняются местами. В качестве криптопреобразований используются только исключающее "ИЛИ", табличные подстановки и битовые сдвиги. Алгоритм состоит из 32 раундов. Сами раунды составлены таким образом, что добавление к ветвями материала ключа на первом и последнем раундах образует входное и выходное забеливание.

 

Рис. 9 - Структура алгоритма Serpent

 

3.5 Финалист AES - шифр TwoFish

 

Алгоритм разработан команией Counterpain Security Systems, возглавляемой Брюсом Шнайером (англ. Bruce Schneier). Предыдущая программная разработка этой фирмы, называвшаяся BlowFish, являлась и до сих пор является признанным криптостойким алгоритмом.

В алгоритме TwoFish разработчики оставили некоторые удачные решения из проекта-предшественника, кроме этого произвели тщательные исследования по перемешиванию данных в сети Фейштеля. Алгоритм представляет собой сеть Фейштеля смешанного типа: первая и вторая ветвь на нечетных раундах производят модификацию третьей и четвертой, на четных раундах ситуация меняется на противоположную. В алгоритме используется криптопреобразование Адамара (англ. Pseudo-Hadamar Transform) - обратимое арифметическое сложение первого потока со вторым, а затем второго с первым.

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

 

Рис. 10 -Структура алгоритма TwoFish

 

.6 Победитель AES - шифр Rijndael

 

Данный алгоритм разработан двумя специалистами по криптографии из Бельгии. Он является нетрадиционным блочным шифром, поскольку не использует сеть Фейштеля для криптопреобразований. Алгоритм представляет каждый блок кодируемых данных в виде двумерного массива байт размером 4х4, 4х6 или 4х8 в зависимости от установленной длины блока. Далее на соответствующих этапах преобразования производятся либо над независимыми столбцами, либо над независимыми строками, либо вообще над отдельными байтами в таблице.

Все преобразования в шифре имеют строгое математическое обоснование. Сама структура и последовательность операций позволяют выполнять данный алгоритм эффективно как на 8-битных так и на 32-битных процессорах. В структуре алгоритма заложена возможность параллельного исполнения некоторых операций, что на многопроцессорных рабочих станциях может еще поднять скорость шифрования в 4 раза.

Алгоритм состоит из некоторого количества раундов (от 10 до 14 - это зависит от размера блока и длины ключа), в которых последовательно выполняются следующие операции: - табличная под?/p>