Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
P. Упрощенный AES (S-AES)
P.2. Преобразования
Чтобы обеспечить безопасность, S-AES используют четыре типа преобразований: подстановка, перестановка, смешивание и сложение ключа. Ниже мы обсудим каждое из них.
Подстановка
Подстановка сделана для каждого полубайта (модуль данных на 4 бита). Для преобразований каждого полубайта используется только одна таблица, что означает, что если два полубайта одинаковые, то и результат преобразования одинаковый. В этом приложении преобразование определено процессом поиска таблицы.
Подполубайты
Первое преобразование, SubNibbles, используется на стороне шифрования. Для того чтобы заменять полубайты, мы интерпретируем каждый полубайт как 4 бита. Левые 2 бита определяют строку, а правые 2 бита определяют столбец таблицы подстановки. Шестнадцатеричная цифра в пересечении строки и столбца - новый полубайт. Рисунок P.7 показывает идею.
В преобразовании SubNibbles состояния обрабатываются как матрицы полубайтов 2 x 2. Преобразование осуществляется с одним полубайтом одновременно. Содержание каждого полубайта изменяется, но порядок полубайтов в матрице остается тем же самым. В процессе обработки каждый полубайт преобразуется независимо: есть четыре различных преобразования от полубайта к полубайту.
Рисунок P.7 также показывает таблицы подстановки (S-блоки) для преобразования SubNibbles. Преобразование SubNibbles обеспечивает эффект перемешивания. Например, два полубайта, A16 и B16, которые отличаются только одним битом (самый правый бит), преобразованы к 016 и 316, которые отличаются двумя битами.
InvSubNibbles
InvSubNibbles - инверсия преобразования SubNibbles. На рис. P.7 также показано обратное преобразование. Мы можем легко проверить, что эти два преобразования инверсны друг другу.
Пример P.2
Рисунок P.8 показывает, как преобразовано состояние, применяющее преобразование SubNibbles. На рисунке также показано преобразование InvSubNibbles, которое создает первоначальное состояние. Обратите внимание, что если два полубайта имеют одинаковые значения, в результате их преобразования получается одинаковое значение - поскольку каждый полубайт использует одну и ту же таблицу.
Перестановка
Другое преобразование, которое проводится в раунде, - сдвиг, переставляющий полубайты. Преобразование сдвига в S-AES делается на уровне полубайта; порядок следования битов в полубайте не изменяется.
ShiftRows
Преобразование при шифровании, называемое ShiftRows, сдвигает биты строки влево. Число сдвигов зависит от номера строки (0, 1) в матрице состояний. Это означает, что строка 0 не сдвигается вообще, а строка 1 сдвигается на 1 полубайт. Рисунок P.9 показывает преобразование сдвига. Обратите внимание, что ShiftRows -преобразование работает одновременно только с одной строкой.
InvShiftRows
При дешифровании преобразование называется InvShiftRows и производит сдвиг вправо. Число сдвигов равно номеру строки в матрице состояний (0, 1).
Пример P.3
Рисунок P.10 показывает, как преобразуется состояние с использованием ShiftRows. Рисунок также показывает как преобразование InvShiftRow создает первоначальное состояние.
Смешивание
Подстановка обеспечивает преобразование SubNibbles и изменяет значение полубайта исходя только из первоначального значения полубайта и входа в таблицу; процесс не включает соседние полубайты. Мы можем сказать, что преобразование SubNibbles происходит внутри полубайта. Перестановка, обеспеченная ShiftRows -преобразованием, обменивает полубайты, не переставляя биты в байтах. Мы можем сказать, что ShiftRows -.преобразование обмена полубайтами. Нам нужно также преобразование между полубайтами, которое изменяет биты в полубайте, учитывая биты в соседних полубайтах. Мы должны смешать полубайты, чтобы обеспечить рассеивание на побитовом уровне.
Смешивающееся преобразование изменяет содержание каждого полубайта, используя 2 полубайта одновременно и объединяя их, чтобы создать 2 новых полубайта. Чтобы гарантировать, что каждый новый полубайт отличается от других (даже если старые полубайты одинаковы), комбинация сначала умножает каждый полубайт на различную константу, а затем смешивает их. Смешивание может быть обеспечено матричным умножением. Как мы обсуждали в "Криптографические хэш-функции" , когда мы умножаем квадратную матрицу на матрицу-столбец, результат - новая матрица-столбец. Каждый элемент в новой матрице зависит от двух элементов старой матрицы после того, как они умножены на значение строки в матрице констант.
MixColumns
Преобразование MixColumns работает на уровне столбца; оно преобразовывает каждый столбец состояния в новый столбец. Преобразование - фактически матричное умножение столбца состояния на квадратную матрицу констант. Полубайты в столбце состояний и в матрице констант интерпретируются как слова по 4 бита (или полиномы) с коэффициентами в GF(2).
Умножение байтов делается в GF(24) по модулю. (x4 + x + 1) или ( 10011 ). Сложение - это операция ИСКЛЮЧАЮЩЕЕ ИЛИ на 4 бита. Рисунок P.11 показывает преобразование MixColumns.
InvMixColumns
InvMixColumns -преобразование - в основном такое же, как преобразование MixColumns. Если две матрицы констант инверсны друг другу, то несложно доказать, что эти два преобразования инверсны друг другу.
Рисунок P.12 показывает, как преобразуется состояние, используя преобразование MixColumns. Мы также видим здесь, что преобразование InvMixColumns создает первоначальный текст.
Обратите внимание, что равные байты в старом состоянии неравны в новом состоянии. Например, два байта F во второй строке изменены на 4 и A.
Ключевое сложение
Вероятно, самое важное преобразование - это то, которое включает ключ шифра. Все предыдущие преобразования используют известные алгоритмы, которые являются обратимыми.
Если ключ шифра не добавляется к состоянию в каждом раунде, для противника очень просто найти исходный текст, учитывая зашифрованный текст. В этом случае ключ шифра - единственная гарантия безопасности между Алисой и Бобом.
S-AES использует процесс, называемый расширением ключа (он будет рассмотрен позже в этом приложении), который из ключа шифра создает три ключа раунда. Каждые ключ раунда имеет длину 16 битов - он применяется как два слова по 8 битов. При сложении ключа и состояниякаждое слово рассматривают как матрицу-столбец.
AddRoundKey
AddRoimdKey обрабатывает один столбец одновременно. Это преобразование похоже на MixColumns. MixColumns умножает квадратную матрицу констант на каждый столбец состояний.
AddRoundKey складывает слово ключа раунда с каждой матрицей-столбцом состояний. Операции в MixColumns - матричное умножение; операции в AddRoundKey - матричное сложение. Сложение выполнено в поле GF(24). Поскольку сложение и вычитание в этом поле одинаковы, преобразование AddRoundKey самоинверсно. Рисунок P.13 показывает преобразование AddRoundKey.