Упрощенный AES (S-AES), разработан профессором Эдвардом Шаефером (Edward Schaefer) в Университете Санта-Клары, является образовательным инструментом и предназначен помочь студентам изучать структуру AES с использованием меньших блоков и ключей.
(рис P.1) Шифрация и дешифрация в S-AESНа стороне шифрования S-AES получают исходный текст на 16 битов и создают зашифрованный текст на 16 битов; на стороне дешифрации S-AES получают зашифрованный текст на 16 битов и создают исходный текст на 16 битов. Ключ шифра на 6 битов используется и для шифрования, и для дешифрования.
Раунды
S-AES -шифр не-Файстеля, который зашифровывает и расшифровывает блок данных в 16 битов. Он использует предварительный раунд преобразования и два раунда. Ключ шифра - также 16 битов. Рисунок P.2 показывает общий вид для алгоритма шифрования (называемого "шифр") и алгоритма дешифрования (называемого "обратный шифр"). Они совпадают, но ключи раунда применяются в обратном порядке.
(рис P.2) Общий вид блока шифрования S-AESНа рисунке P.2 ключи раунда, которые созданы алгоритмом расширения ключей, всегда содержат 16 бит, - они такого же размера, как и блок зашифрованного текста или исходный текст. В S-AES есть три ключа раунда - K0, K1 и K2.
Модули данных
Для представления данных S-AES, как показано на рис. P.3, используют пять модулей измерения: биты, полубайты, слова, блоки и состояния.
(рис P.3) Блоки данных используемых в S-AESБит
В S-AES бит -.двоичная цифра, которая принимает значение либо 0, либо 1. Для обозначения бита мы будем использовать латинскую букву b.
Полубайт
Полубайт - группа из 4 битов, которая может быть обработана как один объект, матрица-строка на 4 бита или матрица-столбец на 4 бита. Когда полубайт обрабатывается как матрица-строка, биты располагаются в матрице слева направо; когда полубайт обрабатывается как матрица-столбец, биты располагаются в матрице сверху вниз. Чтобы обозначить полубайт, мы используем строчную полужирную букву n. Обратите внимание, что полубайт - фактически одна шестнадцатеричная цифра.
Слово
Слово - группа 8 битов, которая может быть обработана как один объект: матриц-строка из двух полубайт или матрица-столбец из двух полубайт. Когда слово обрабатывается как матрица-строка, полубайты располагаются в матрице слева направо; когда слово рассматривается как матрица-столбец, полубайты располагаются в матрице сверху вниз. Чтобы обозначить слово, мы используем строчную полужирную букву w.
Блок
S-AES шифрует и расшифровывает блоки данных. Блок в S-AES - группа из 16 битов. Однако блок может быть представлен как матрица-строка из 4 полубайтов.
Состояние
В S-AES блок данных называется также состоянием. Мы используем полужирную заглавную букву S, чтобы обозначить состояние. Состояния, подобно блокам, состоят из 16 битов, но обычно они обрабатываются как матрицы по 4 полубайта. В этом случае каждый элемент состояния обозначается как sr,c, где. r ( 0 или 1 ) определяет строку и. c ( 0 или 1 ) определяет столбец. В начале шифра полубайты в блоке данных состояния располагаются столбец за столбцом и в каждом столбце сверху вниз. В конце шифра полубайты состояния извлекаются тем же способом, как показано на рис. P.4.
(рис P.4) Преобразования "Блок - состояние" "состояние - блок"Пример P.1
Давайте посмотрим, как можно блок в 16 битов представить как матрицу 2 x 2. Пусть текстовый блок имеет вид 1011 0111 1001 0110. Сначала мы представим блок как 4 полубайта. Затем заполняем матрицу состояний, "столбец за столбцом", как это показано на рис. P.5.
(рис P.5) Изменение шифрованного текста в состояниеСтруктура каждого раунда
Рисунок P.6 показывает, что каждое преобразование получает состояние и создает другое состояние, которое используется для следующего преобразования или следующего раунда. Секция предварительного преобразования (перед раундом) применяет одно преобразование ( ); последний раунд использует только три преобразования (преобразование MixColumns отсутствует).
(рис P.6) Структура каждого раунда на стороне шифрованияНа стороне дешифрования используются: обратные преобразования InvSubNibbles, InvShiftRows, InvMixColumns и
Чтобы обеспечить безопасность, S-AES используют четыре типа преобразований: подстановка, перестановка, смешивание и сложение ключа. Ниже мы обсудим каждое из них.
Подстановка сделана для каждого полубайта (модуль данных на 4 бита). Для преобразований каждого полубайта используется только одна таблица, что означает, что если два полубайта одинаковые, то и результат преобразования одинаковый. В этом приложении преобразование определено процессом поиска таблицы.
Подполубайты
Первое преобразование, SubNibbles, используется на стороне шифрования. Для того чтобы заменять полубайты, мы интерпретируем каждый полубайт как 4 бита. Левые 2 бита определяют строку, а правые 2 бита определяют столбец таблицы подстановки. Шестнадцатеричная цифра в пересечении строки и столбца - новый полубайт. Рисунок P.7 показывает идею.
(рис P.7) Преобразование SubNibbleВ преобразовании SubNibbles состояния обрабатываются как матрицы полубайтов 2 x 2. Преобразование осуществляется с одним полубайтом одновременно. Содержание каждого полубайта изменяется, но порядок полубайтов в матрице остается тем же самым. В процессе обработки каждый полубайт преобразуется независимо: есть четыре различных преобразования от полубайта к полубайту.
SubNibbles содержит четыре независимых преобразования от полубайта к полубайту.Рисунок P.7 также показывает таблицы подстановки (S-блоки) для преобразования SubNibbles. Преобразование SubNibbles обеспечивает эффект перемешивания. Например, два полубайта, A16 и B16, которые отличаются только одним битом (самый правый бит), преобразованы к 016 и 316, которые отличаются двумя битами.
InvSubNibbles - инверсия преобразования SubNibbles. На рис. P.7 также показано обратное преобразование. Мы можем легко проверить, что эти два преобразования инверсны друг другу.
Пример P.2
Рисунок P.8 показывает, как преобразовано состояние, применяющее преобразование SubNibbles. На рисунке также показано преобразование InvSubNibbles, которое создает первоначальное состояние. Обратите внимание, что если два полубайта имеют одинаковые значения, в результате их преобразования получается одинаковое значение - поскольку каждый полубайт использует одну и ту же таблицу.
(рис P.8) Преобразование SubNibbles
Другое преобразование, которое проводится в раунде, - сдвиг, переставляющий полубайты. Преобразование сдвига в S-AES делается на уровне полубайта; порядок следования битов в полубайте не изменяется.
Преобразование при шифровании, называемое ShiftRows, сдвигает биты строки влево. Число сдвигов зависит от номера строки (0, 1) в матрице состояний. Это означает, что строка 0 не сдвигается вообще, а строка 1 сдвигается на 1 полубайт.
Рисунок P.9 показывает преобразование сдвига. Обратите внимание, что ShiftRows -преобразование работает одновременно только с одной строкой.
(рис P.9) Преобразование ShiftRows
При дешифровании преобразование называется InvShiftRows и производит сдвиг вправо. Число сдвигов равно номеру строки в матрице состояний (0, 1).
Пример P.3
Рисунок P.10 показывает, как преобразуется состояние с использованием ShiftRows.
Рисунок также показывает как преобразование InvShiftRow создает первоначальное состояние.
(рис P.10) Преобразование ShiftRows в примере P.3
Подстановка обеспечивает преобразование SubNibbles и изменяет значение полубайта исходя только из первоначального значения полубайта и входа в SubNibbles происходит внутри полубайта. Перестановка, обеспеченная ShiftRows -преобразованием, обменивает полубайты, не переставляя биты в байтах. Мы можем сказать, что ShiftRows -.преобразование обмена полубайтами. Нам нужно также преобразование между полубайтами, которое изменяет биты в полубайте, учитывая биты в соседних полубайтах. Мы должны смешать полубайты, чтобы обеспечить рассеивание на побитовом уровне.
Смешивающееся преобразование изменяет содержание каждого полубайта, используя 2 полубайта одновременно и объединяя их, чтобы создать 2 новых полубайта. Чтобы гарантировать, что каждый новый полубайт отличается от других (даже если старые полубайты одинаковы), комбинация сначала умножает каждый полубайт на различную константу, а затем смешивает их. Смешивание может быть обеспечено матричным умножением. Как мы обсуждали в лекции 2, когда мы умножаем квадратную матрицу на матрицу-столбец, результат - новая матрица-столбец. Каждый элемент в новой матрице зависит от двух элементов старой матрицы после того, как они умножены на значение строки в матрице констант.
Преобразование MixColumns работает на уровне столбца; оно преобразовывает каждый столбец состояния в новый столбец. Преобразование - фактически матричное умножение столбца состояния на квадратную матрицу констант. Полубайты в столбце состояний и в матрице констант интерпретируются как слова по 4 бита (или полиномы) с коэффициентами в GF(2).
Умножение байтов делается в GF(24) по модулю. (x4 + x + 1) или ( 10011 ). Сложение - это операция ИСКЛЮЧАЮЩЕЕ ИЛИ на 4 бита. Рисунок P.11 показывает преобразование MixColumns.
(рис P.11) Преобразование MixColumn
InvMixColumns -преобразование - в основном такое же, как преобразование MixColumns. Если две матрицы констант инверсны друг другу, то несложно доказать, что эти два преобразования инверсны друг другу.
MixColumns - и InvMixColumns -преобразования инверсны друг другу.Рисунок P.12 показывает, как преобразуется состояние, используя преобразование MixColumns. Мы также видим здесь, что преобразование InvMixColumns создает первоначальный текст.
(рис P.12) Преобразование Mix Column в примере 7.5.Обратите внимание, что равные байты в старом состоянии неравны в новом состоянии. Например, два байта F во второй строке изменены на 4 и A.
Вероятно, самое важное преобразование - это то, которое включает ключ шифра. Все предыдущие преобразования используют известные алгоритмы, которые являются обратимыми.
Если ключ шифра не добавляется к состоянию в каждом раунде, для противника очень просто найти исходный текст, учитывая зашифрованный текст. В этом случае ключ шифра - единственная гарантия безопасности между Алисой и Бобом.
S-AES использует процесс, называемый расширением ключа (он будет рассмотрен позже в этом приложении), который из ключа шифра создает три ключа раунда. Каждые ключ раунда имеет длину 16 битов - он применяется как два слова по 8 битов. При сложении ключа и состояниякаждое слово рассматривают как матрицу-столбец.
AddRoimdKey обрабатывает один столбец одновременно. Это преобразование похоже на MixColumns. MixColumns умножает квадратную матрицу констант на каждый столбец состояний.
складывает слово ключа раунда с каждой матрицей-столбцом состояний. Операции в MixColumns - матричное умножение; операции в - матричное сложение. Сложение выполнено в поле GF(24). Поскольку сложение и вычитание в этом поле одинаковы, преобразование самоинверсно. Рисунок P.13 показывает преобразование .
AddRoundKey самоинверсно.
(рис P.13) Преобразование AddRoundKey
Процедура расширения ключа создает три ключа раунда по 16 битов из единственного ключа шифра на 16 битов. Первые ключи раунда используются для предварительного преобразования ( ); оставшиеся ключи применяются для последнего преобразования ( ) в конце раунда 1 и раунда 2.
Процедура расширения ключей создает слово ключа раунда последовательно - слово за словом, где слово - массив 2 полубайта. Процедура создает 6 слов, которые обозначаются
w0, w1, w2, .....,w5.
P.14 показывает, как создаются 6 слов из первоначального ключа.
(рис P.14) Создание слов в S-AESПроцесс создания слов в S-AES следующий:
W0, W 1 ) создаются из ключа шифра. Ключи шифра представляют как массив из 4 полубайтов ( n0 - n3 ). Первые 2 полубайта ( n0, n1 ) образуют слово W0; следующие 2 полубайта ( n2, n3 ) образуют слово w1. Другими словами, конкатенация слов в этой группе копирует ключ шифра.wi i = 2 - 5 ) создается следующим образом:(i mod 2) = 0, $$w_{i} = t_{i} \oplus w_{i-2}$$.
Здесь ti - временное слово, является результатом применения к wi двух процедур: SubWord и RotWord операции ИСКЛЮЧАЮЩЕЕ ИЛИ к результату с константой раунда Rcon[Nr], где Nr - номер раунда. Другими словами, мы имеем$$t_{i} = SubWord\(RotWord\ (w_{i-1})) \oplus RCon[N_{r}]$$
Слова w2 и w4 создаются, используя этот процесс.
w3 и w5 создаются, используя этот процесс.RotWord (вращение слова) - процедура, подобная преобразованию ShiftRows, но она применяется только к одной строке. Процедура получает слово как массив 2 полубайтов и сдвигает каждый полубайт влево с полным вращением (полный оборот) слова. В S-AES это заполнение 2 полубайтов в слове.
SubWord (слово-заменитель) - процедура является подобной преобразованию SubNibbels, но она применяется только к 2 полубайтам. Процедура берет каждый полубайт в слове и заменяет его другим полубайтом. Она использует таблицы SubNibbels, показанные на рис. P.7.
Константы раунда
Каждая константа раунда, RC, является значением, содержащим 2 полубайта, в котором самый правый полубайт всегда нуль. Рисунок P.14 также показывает значение RC
Пример P.4
Таблица P.1 показывает, как вычисляется ключ для каждого раунда. При этом предполагается, что Алиса и Боб согласовали ключ 247516.
| Раунд | Значение ti |
Первое слово в раунде | Второе слово в раунде | Ключ раунда |
|---|---|---|---|---|
| 0 | w0 = 24 |
w1 = 75 |
K0 = 2475 |
|
| 1 | t2 = 95 |
$$w_{2 }= 95 \oplus 24 = B1$$ | $$w_{2 }= B1 \oplus 75 = С4$$ | K0 = B1C4 |
| 2 | t4 = EC |
$$w_{4 }= B1 \oplus EC = 5D$$ | $$W_{5 }= 5D \oplus С4 = 99$$ | K2 = 5D99 |
В каждом раунде второе слово вычисляется очень просто. Для вычисления первого слова мы должны сначала вычислить значение временного слова ( ti ), как это показано ниже:
Теперь давайте посмотрим, как S-AES используют четыре типа преобразований для шифрования и дешифрования. Алгоритм шифрования будем называть шифратор, а алгоритм дешифрования - обратный шифратор.
S-AES - шифр не-Файстеля, и это означает, что каждое преобразование или группа преобразований должны быть обратимыми. Кроме того, шифратор и обратный шифратор должны использовать эти операции таким способом, при котором они отменяют друг друга. Ключи раунда должны использоваться в обратном порядке. Чтобы выполнить эти требования, преобразования применяются в установленном порядке в шифраторе и обратном шифраторе, как это показано на рис. P.15.
(рис P.15) Шифратор и обратный шифратор исходного проектаПервое: порядок использования SubNibbles и ShiftRows изменяется в обратном шифраторе. Второе: порядок MixColumns и в обратном шифраторе также изменяется. Это отличие в порядке необходимо, чтобы сделать каждое преобразование в шифре соответствующим по порядку его инверсии в обратном шифраторе. Следовательно, алгоритм дешифрования в целом - инверсия алгоритма шифрования. Обратите внимание, что ключи раунда используются в обратном порядке.
Пример P.5
Мы выбираем случайный блок исходного текста, ключ шифра, используемый в примере P.4, и определяем, какой получается блок зашифрованного текста:
Исходный текст: 1A2316 Ключ: 247516 Зашифрованный текст: 3AD216
Рисунок P.16 показывает значение состояний в каждом раунде. Мы используем ключи раунда, сгенерированные в примере P.4.
(рис P.16) Пример P.5 Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.