Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Математические основы криптологии..pdf
Скачиваний:
102
Добавлен:
05.02.2023
Размер:
6.01 Mб
Скачать

Для слов, позиция которых кратна Nk, перед применением операции XOR слово w[i–l] подвергается воздействию двух дополнительных функций: RotWord, осуществляющей побайтовый сдвиг 32-разрядного слова по формуле {a0 a1 a2 a3} {a1 a2 a3 a0}, и SubWord, осуществляющей побайтовую замену с использованием S-блока функции SubBytes. Затем к полученному значению прибавляется раундовая константа Rcon[j] = 2j–1. В итоге значение w[i] равно

w[i] = SubWord(RotWord(w[i – 1])) Rcon[i/Nk] w[i Nk].

i-ый раундовый ключ получается из слов массива раундового ключа от w[Nbi] и до w[Nb(i+1)].

Функция расшифрования

Если преобразования, используемые в функции зашифрования, инвертировать и затем применить в обратном порядке, то можно произвести обратное расшифрование. При расшифровании используются следующие преобразования: InvShiftRows, InvSubBytes,

InvMixColumns и AddRoundKey (рисунок 4а).

InvShiftRows – инверсия преобразования ShiftRows. Байты в последних трех строках состояния циклически сдвигаются вправо на различное число байт. Первая строка (r = 0) не сдвигается. Вторая строка (r = 1) сдвигается на 1 байт, третья строка (r = 2) – на 2 байта, четвертая строка (r = 3) – на 3 байта.

InvSubBytes – инверсия преобразования замены байта, в котором к каждому байту состояния применяется обратный S-блок.

InvMixColumns – инверсия преобразования MixColumns. InvMixColumns оперирует состоянием столбец за столбцом, обрабатывая каждый столбец как 4-элементный полином, как описано в ранее. Столбцы рассматривают как полиномы над GF(28) и умножаются по модулю x4 + 1 на фиксированный полином a–1(x)

a–1(x) = {0b}x3 + {0d}x2 + {09}x + {0e}.

Это может быть представлено в матричном виде:

s0cs1cs2cs3c

 

0e

0b 0d

09 s0c

 

 

 

 

 

09

0e 0b 0d

s

 

,

0 c 3.

 

 

0d

09 0e

0b

1c

 

 

 

s2c

 

 

 

 

 

0b

0d 09 0e

 

 

 

 

 

 

s3c

 

 

 

В результате на выходе получаются следующие байты: s'0c = ({0e} • s0c) ({0b} • s1c) ({0d} • s2c) ({09} • s3c), s'1c = ({09} • s0c) ({0e} • s1c) ({0b} • s2c) ({0d} • s3c), s'2c = ({0d} • s0c) ({09} • s1c) ({0e} • s2c) ({0b} • s3c),

207

s'3c = ({0b} • s0c) ({0d} • s1c) ({09} • s2c) ({0e} • s3c).

Преобразование AddRoundKey является собственной инверсией, т.к. использует только операцию XOR.

В функции обратного расшифрования (рисунок 4а) последовательность преобразований отличается от последовательности преобразований при зашифровании, в то время как форма расширенных ключей для зашифрования и расшифрования остается той же самом. Однако, несколько свойств алгоритма AES позволяют функции расшифрования иметь ту же самую последовательность преобразований как и при зашифровании (с преобразованиями, замененными их инверсиями) (рисунок 2.37б). Это достигается при внесении изменений в расширенный ключ.

 

Входной блок

 

Входной блок

 

 

 

 

 

 

 

 

 

 

 

 

 

AddRoundKey

 

AddRoundKey

round

 

 

round

 

 

= 1 .. 9

 

= 1 .. 9

 

InvShiftRows

InvSubBytes

InvSubBytes

InvShiftRows

AddRoundKey

InvMixColumns

InvMixColumns

AddRoundKey

InvShiftRows

InvSubBytes

InvSubBytes

InvShiftRows

AddRoundKey

AddRoundKey

Выходной блок

 

Выходной блок

а)

 

б)

Рис. 2.37. Схемы функций обратного (а) и прямого (б) расшифрования

Существует два свойства, которые делают возможным использование функции прямого расшифрования:

1.Преобразования SubBytes и ShiftRows можно переставлять местами, т.е. можно сначала применить преобразование SubBytes, а затем ShiftRows, и наоборот – сначала ShiftRows, а затем SubBytes. То же самое верно и для их инверсий InvSubBytes и InvShiftRows.

2.Операции смешивания столбцов MixColumns и InvMixColumns являются линейными относительно входных данных, т.е.

InvMixColumns(State XOR Round Key) =

= InvMixColumns(State) XOR InvMixColumns(Round Key).

Эти свойства позволяют изменить порядок преобразований InvSubBytes и InvShiftRows. Порядок преобразований AddRoundKey и InvMixColumns также может быть полностью

208

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

Режим обратной связи по шифртексту (CFB)

Врежиме обратной связи по шифртексту (CFB) выходные блоки зашифрованного текста за счет обратной связи становятся входными блоками для последующего шифрования. Чтобы получить зашифрованный текст, открытый текст складывается, с помощью операции XOR, со сгенерированными выходными блоками. В качестве начального входного блока в режиме CFB используется значение вектора инициализации IV. Значение IV может быть открытым, но при этом должно быть непредсказуемым.

Врежиме CFB используется целочисленный параметр s, 1 ≤ s b, где b – размер блока (в байтах) открытого и зашифрованного текстов. Значение s иногда включается в название режима, например, 1-битовый режим CFB, 8-битовый режим CFB, 64-битовый режим CFB, или 128-битовый режим CFB.

При зашифровании в режиме CFB первым входным блоком является значение IV (рисунок 2.38). Чтобы произвести первый входной блок к значению IV применяется операция шифрования. Первая доля зашифрованного текста производится операцией XOR между первой долей открытого текста и s старшими битами первого выходного блока. Оставшиеся (bs) бит первого выходного блока отбрасываются. Затем (bs) младших бита значения IV соединяются операцией конкатенации с s битами первой доли зашифрованного текста, для формирования второго входного блока. Другими словами для формирования второго входного блока биты первого входного блока циклически сдвигаются на s позиции влево, и затем доля зашифрованного текста заменяет s младших бит.

209

 

IV

зашифрование

Входной блок

Шифрование

 

 

Выходной блок

 

Открытый

 

текст 1

 

Шифртекст 1

 

IV

расшифрование

Входной блок

Шифрование

 

 

Выходной блок

 

Шифр-

 

текст 1

 

Открытый текст

Входной блок

Входной блок

Шифрование

Шифрование

Выходной блок

Выходной блок

Открытый

Открытый

текст 2

текст n

Шифртекст 2

Шифртекст n

Входной блок

Входной блок

Шифрование

Шифрование

Выходной блок

Выходной блок

Шифр-

Шифр-

текст 2

текст n

Открытый текст

Открытый текст

Рис. 2.38. Режим CFB

Процесс повторяется до тех пор, пока от каждой доли открытого текста не будет получена доля зашифрованного текста. Чтобы сформировать долю зашифрованного текста s старших бит каждого выходного блока складываются, с помощью операции XOR, с соответствующей долей открытого текста. Каждая доля зашифрованного текста (кроме последней) подается назад, как описано выше, чтобы сформировать новый входной блок. Обратная связь может быть описана в терминах отдельных бит следующим образом: если i1i2ib j-й входной блок, а c1c2cs j-ая доля зашифрованного текста, то (j+1)-й входной блок: i1i2ibc1c2cs.

При расшифровании в режиме CFB значение IV является первым входным блоком. Каждый последующий входной блок формируется как при CFB зашифровании, соединяя операцией конкатенации (bs) младших бит предыдущего входного блока с s старшими битами предыдущего зашифрованного текста. Чтобы произвести выходные блоки к каждому входному блоку применяется функция шифрования. Чтобы получить доли открытого текста

210