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


Алгоритм SAFER+ - часть 2


Линейное перемешивание представляет собой умножение текстового блока справа на специальную невырожденную матрицу M. При этом все операции выполняются побайтно по модулю 256.

Подмешивание подключа K2r+1

производится так же, как и подмешивание первого подключа в каждой итерации.

При расшифровании вначале подмешивается подключ K2r+1, при этом операция сложения по модулю 256 заменяется на вычитание. Затем выполняются итерации расшифрования.

i-я итерация расшифрования выполняет преобразование, обратное к r-i+1-й итерации шифрования (r – число итераций) и также содержит 4 слоя. Вначале текстовый блок умножается на матрицу, обратную к матрице шифрования

Затем подмешивается подключ K2r?2i+2, так же, как и второй подключ в итерации шифрования, только сложение с ключом по модулю 256 заменяется вычитанием.

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

И, наконец, подмешивается подключ K2r?2i+1

(с учетом тех же замечаний, что относились к подмешиванию подключа K2r?2i+2).

Для завершения описания алгоритма осталось указать, как из ключа пользователя получаются подключи для итераций.

При обработке ключа пользователя применяются так называемые слова смещения B2, B3, ..., B33

длиной по 16 байт, которые вычисляются по формулам:

,

где Bi,jj-й байт i-го слова смещения (j = 1…16). При этом значение Bi,j=256 представляется нулем. Слова смещения являются константами и могут быть вычислены заранее.

Для длины ключа в 128 бит используются только слова B2, … B17, для ключа в 192 бита используются слова смещения B2,…,B25, а для ключа в 256 бит используются все слова.

Генерация подключей осуществляется по следующему алгоритму:

В качестве первого подключа используются первые шестнадцать байтов пользовательского ключа. Далее пользовательский ключ записывается в ключевой регистр размером на один байт больше длины ключа. После этого все байты ключа суммируются поразрядно по модулю 2 и результат записывается в дополнительный байт регистра. После чего для получения требуемых подключей повторяется итеративная процедура, заключающаяся в следующем:

1.         Содержимое каждого байта в регистре циклически сдвигается влево на 3 позиции;

2.         Производится выборка 16 байт из регистра. При этом для получения подключа Ki

выбираются идущие подряд байты регистра, начиная с i-го (если достигнут конец регистра, то оставшиеся байты выбираются с его начала);

3.         Выбранные байты складываются с соответствующими байтами слова смещения Bi

по модулю 256. Результат сложения и является подключом Ki.




- Начало -  - Назад -  - Вперед -



Книжный магазин