Опубликован: 19.01.2010 | Уровень: специалист | Доступ: свободно
Дополнительный материал 16:

P. Упрощенный AES (S-AES)

P.2. Преобразования

Чтобы обеспечить безопасность, S-AES используют четыре типа преобразований: подстановка, перестановка, смешивание и сложение ключа. Ниже мы обсудим каждое из них.

Подстановка

Подстановка сделана для каждого полубайта (модуль данных на 4 бита). Для преобразований каждого полубайта используется только одна таблица, что означает, что если два полубайта одинаковые, то и результат преобразования одинаковый. В этом приложении преобразование определено процессом поиска таблицы.

Подполубайты

Первое преобразование, SubNibbles, используется на стороне шифрования. Для того чтобы заменять полубайты, мы интерпретируем каждый полубайт как 4 бита. Левые 2 бита определяют строку, а правые 2 бита определяют столбец таблицы подстановки. Шестнадцатеричная цифра в пересечении строки и столбца - новый полубайт. Рисунок P.7 показывает идею.

Преобразование SubNibble

Рис. P.7. Преобразование SubNibble

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

SubNibbles содержит четыре независимых преобразования от полубайта к полубайту.

Рисунок P.7 также показывает таблицы подстановки (S-блоки) для преобразования SubNibbles. Преобразование SubNibbles обеспечивает эффект перемешивания. Например, два полубайта, A16 и B16, которые отличаются только одним битом (самый правый бит), преобразованы к 016 и 316, которые отличаются двумя битами.

InvSubNibbles

InvSubNibbles - инверсия преобразования SubNibbles. На рис. P.7 также показано обратное преобразование. Мы можем легко проверить, что эти два преобразования инверсны друг другу.

Пример P.2

Рисунок P.8 показывает, как преобразовано состояние, применяющее преобразование SubNibbles. На рисунке также показано преобразование InvSubNibbles, которое создает первоначальное состояние. Обратите внимание, что если два полубайта имеют одинаковые значения, в результате их преобразования получается одинаковое значение - поскольку каждый полубайт использует одну и ту же таблицу.

Преобразование SubNibbles

Рис. P.8. Преобразование SubNibbles

Перестановка

Другое преобразование, которое проводится в раунде, - сдвиг, переставляющий полубайты. Преобразование сдвига в S-AES делается на уровне полубайта; порядок следования битов в полубайте не изменяется.

ShiftRows

Преобразование при шифровании, называемое ShiftRows, сдвигает биты строки влево. Число сдвигов зависит от номера строки (0, 1) в матрице состояний. Это означает, что строка 0 не сдвигается вообще, а строка 1 сдвигается на 1 полубайт. Рисунок P.9 показывает преобразование сдвига. Обратите внимание, что ShiftRows -преобразование работает одновременно только с одной строкой.

Преобразование ShiftRows

Рис. P.9. Преобразование ShiftRows
InvShiftRows

При дешифровании преобразование называется InvShiftRows и производит сдвиг вправо. Число сдвигов равно номеру строки в матрице состояний (0, 1).

Преобразования ShiftRows и InvShiftRows инверсны друг другу.

Пример P.3

Рисунок P.10 показывает, как преобразуется состояние с использованием ShiftRows. Рисунок также показывает как преобразование InvShiftRow создает первоначальное состояние.

Преобразование ShiftRows в примере P.3

Рис. P.10. Преобразование ShiftRows в примере P.3

Смешивание

Подстановка обеспечивает преобразование SubNibbles и изменяет значение полубайта исходя только из первоначального значения полубайта и входа в таблицу; процесс не включает соседние полубайты. Мы можем сказать, что преобразование SubNibbles происходит внутри полубайта. Перестановка, обеспеченная ShiftRows -преобразованием, обменивает полубайты, не переставляя биты в байтах. Мы можем сказать, что ShiftRows -.преобразование обмена полубайтами. Нам нужно также преобразование между полубайтами, которое изменяет биты в полубайте, учитывая биты в соседних полубайтах. Мы должны смешать полубайты, чтобы обеспечить рассеивание на побитовом уровне.

Смешивающееся преобразование изменяет содержание каждого полубайта, используя 2 полубайта одновременно и объединяя их, чтобы создать 2 новых полубайта. Чтобы гарантировать, что каждый новый полубайт отличается от других (даже если старые полубайты одинаковы), комбинация сначала умножает каждый полубайт на различную константу, а затем смешивает их. Смешивание может быть обеспечено матричным умножением. Как мы обсуждали в "Криптографические хэш-функции" , когда мы умножаем квадратную матрицу на матрицу-столбец, результат - новая матрица-столбец. Каждый элемент в новой матрице зависит от двух элементов старой матрицы после того, как они умножены на значение строки в матрице констант.

MixColumns

Преобразование MixColumns работает на уровне столбца; оно преобразовывает каждый столбец состояния в новый столбец. Преобразование - фактически матричное умножение столбца состояния на квадратную матрицу констант. Полубайты в столбце состояний и в матрице констант интерпретируются как слова по 4 бита (или полиномы) с коэффициентами в GF(2).

Умножение байтов делается в GF(24) по модулю. (x4 + x + 1) или ( 10011 ). Сложение - это операция ИСКЛЮЧАЮЩЕЕ ИЛИ на 4 бита. Рисунок P.11 показывает преобразование MixColumns.

Преобразование MixColumn

Рис. P.11. Преобразование MixColumn
InvMixColumns

InvMixColumns -преобразование - в основном такое же, как преобразование MixColumns. Если две матрицы констант инверсны друг другу, то несложно доказать, что эти два преобразования инверсны друг другу.

MixColumns - и InvMixColumns -преобразования инверсны друг другу.

Рисунок P.12 показывает, как преобразуется состояние, используя преобразование MixColumns. Мы также видим здесь, что преобразование InvMixColumns создает первоначальный текст.

Преобразование Mix Column в примере 7.5.

Рис. P.12. Преобразование Mix Column в примере 7.5.

Обратите внимание, что равные байты в старом состоянии неравны в новом состоянии. Например, два байта F во второй строке изменены на 4 и A.

Ключевое сложение

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

Если ключ шифра не добавляется к состоянию в каждом раунде, для противника очень просто найти исходный текст, учитывая зашифрованный текст. В этом случае ключ шифра - единственная гарантия безопасности между Алисой и Бобом.

S-AES использует процесс, называемый расширением ключа (он будет рассмотрен позже в этом приложении), который из ключа шифра создает три ключа раунда. Каждые ключ раунда имеет длину 16 битов - он применяется как два слова по 8 битов. При сложении ключа и состояниякаждое слово рассматривают как матрицу-столбец.

AddRoundKey

AddRoimdKey обрабатывает один столбец одновременно. Это преобразование похоже на MixColumns. MixColumns умножает квадратную матрицу констант на каждый столбец состояний.

AddRoundKey складывает слово ключа раунда с каждой матрицей-столбцом состояний. Операции в MixColumns - матричное умножение; операции в AddRoundKey - матричное сложение. Сложение выполнено в поле GF(24). Поскольку сложение и вычитание в этом поле одинаковы, преобразование AddRoundKey самоинверсно. Рисунок P.13 показывает преобразование AddRoundKey.

Преобразование AddRoundKey самоинверсно.
Преобразование  AddRoundKey

Рис. P.13. Преобразование AddRoundKey
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????