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

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

Так как алгоритм шифрования представляет собой композицию обратимых преобразований, то расшифрование производится путем применения обратных преобразований к выходному блоку (состоянию):

InvSubBytes() – обратная замена байтов– побайтовая нелинейная подстановка в State -блоках с использованием фиксированной таблицы замен размерностью 8x256 (inverse affain map);

InvShiftRows() – обратный циклический сдвиг строк массива State на различное количество байт;

InvMixColumns() – восстановление значений столбцов – умножение столбцов состояния, рассматриваемых как многочлены над GF (28);

Функция обратного расшифрования. Если вместо SubBytes (), ShiftRows (), MixColumns () и AddRoundKey () в обратной последовательности выполнить инверсные им преобразования, можно построить функцию обратного расшифро­вания. При этом порядок использования раундовых ключей является обратным по отношению к тому, который используется при зашифровании.

При замене байтов используется S-box, обратный к S-box, используемому при шифровании, при сдвиге строк три последних строки состояния циклически сдвигают­ся соответственно на Nb-Cl, Nb-C2 и Nb-C3 байт, при перемеши­вании колонок используется умножение на многочлен

,

обратный к введенному выше многочлену с(х).

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

а) обратной замены байтов;

б) обратного сдвига строк;

в) обратного перемешивания столбцов;

г) наложения инверсного циклового ключа, получаемого путем при­менения обратного замешивания столбцов к соответствующему цикловому ключу.

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

Алгоритм прямогорасшифрования. Алгоритм обратного рас­ши­фрования, описанный выше, имеет порядок прило­жения операций-функ­ций, обратный порядку операций в алгоритме прямого за­шифрования, но использует те же параметры развёрнутого ключа. Изменив опре­деленным образом последователь­ность планирования ключа, можно построить еще один алгоритм – алгоритм прямого расшифрования.

Два следующих свойства позволяют сделать это:

• Порядок приложения функций SubBytes () и ShiftRows () не играет роли. То же самое верно и для операций InvSubBytes () и InvShiftRows (). Это происходит потому, что функции SubBytes () и InvSubBytes () работают с байтами, а операции ShiftRows () и InvShiftRows () сдвигают целые байты, не затрагивая их значений.

• Операция MixColumns () является линейной относительно входных данных, что означает InvMixColumns (State XOR RoundKey) = = InvMixColumns (State) XOR InvMixColumns (RoundKey)

Эти свойства функций алгоритма шифрования позволяют изменить порядок применения функций InvSubBytes () и InvShiftRows (). Функции AddRounKey () и InvMixColumns () также могут быть применены в обратном порядке, но при условии, что столбцы (32-битные слова) развёрнутого ключа расшифрования предварительно пропущены через функцию InvMixColumns ().

Таким образом, можно реализовать более эффективный способ расшифрова­ния с тем же порядком приложения функций, что и в алгоритме зашифрования.

Алгоритм расшифрования играет несколько менее важную роль в конструкции шифра, так как в некоторых режимах работы расшифрование не используется (СFВ, гаммирование, вычисление вектора аутентифика­ции). Реализация алгоритма допускает высокую степень распараллели­вания. Все преобразования в цикле шифрования могут выполняться параллельно над байтами, строками или столбцами состояния. В тех приложениях, где особые требования к скорости шифрования, рас­ширение ключа целесообразно выполнить один раз и многократно использовать расширенный ключ для обработки входных блоков. Если ключ шифра необходимо часто изменять, то расширение ключа можно выполнять параллельно с циклами шифрования.

В заключение сформулируем основные особенности AES:

² новая архитектура «квадрат», обеспечивающая быстрое рассеивание и перемешивание информации, при этом за один раунд преобразованию подвергается весь входной блок;

² байт-ориентированная структура, удобная для реализация на 8-разрядных микроконтроллерах;

² все раундовые преобразования суть операции в конечных полях, допускающие эффективную аппаратную и программную реализацию на различных платформах.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: