Что такое aes 128

Алгоритм шифрования AES

После того как мы на прошлой неделе опубликовали информацию о готовящихся к продаже новых криптотелефонах X-Telecom Secure Mobile, в которых используется алгоритм шифрования AES-256, многие люди стали звонить и интересоваться, что это за алгоритм AES, насколько он надежен и удовлетворяет ли он требования информационной безопасности.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Алгоритм Advanced Encryption Standard

Advanced Encryption Standard – симметричный алгоритм блочного шифрования, принятый правительством США в качестве стандарта в результате конкурса, проведенного между технологическими институтами. Он заменил устаревший Data Encryption Standard, который больше не соответствовал требованиям сетевой безопасности, усложнившимся в XXI веке.

Этот алгоритм, кроме аббревиатуры AES, иногда называют еще Rijndael – это анаграмма из частей имен бельгийских программистов Joan Daemen и Vinent Rijmen, которые разработали AES. Строго говоря, AES и Rijndael – не совсем одно и то же, поскольку AES имеет фиксированный размер блока в 128 бит и размеры ключей в 128, 192 и 256 бит, в то время как для Rijndael могут быть заданы любые размеры блока и ключа, от минимума в 32 бит до максимума в 256 бит.

Алгоритм AES был одобрен Агентством национальной безопасности США как пригодный для шифрования особо секретной информации. Однако, правительство постановило, что AES должен периодически подвергаться проверкам и улучшениям, чтобы надежно хранить зашифрованные данные.

Информация, определенная как секретная, должна быть защищена посредством AES с длиной ключей 128, 192 и 256 бит. Для информации, определенной как особо секретная, эта длина составляет 192 или 256 бит. Суть AES в том, что любая «лобовая атака» на защищенные данные – то есть подбор всех возможных паролей – в перспективе очень сильно растягивается. Если представить, что взломщик располагает огромными ресурсами, то есть целой коллекцией суперкомпьютеров, то при усердном старании доступ к зашифрованным данным он мог бы получить через десятки лет. Если же в его распоряжении ничего этого нет, то взлом AES займет астрономически долгое время.

Надежность алгоритма шифрования AES

Считается, что используемый в Advanced Encryption Standard ключ длиной в 128 бит – достаточно надежная защита против лобовой атаки, то есть с чисто математической точки зрения подобрать один правильный пароль из всех возможных – трудноосуществимая задача. Несмотря даже на некоторые недостатки AES, взломать защищенную с помощью этого алгоритма информацию практически нереально.

Любой криптографический алгоритм требует ключ размером в то или иное количество бит, чтобы зашифровать данные, как показано в схеме №1.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

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

Вот пример перебора 4-битного ключа:

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Потребуется максимум 16 стадий, чтобы проверить каждую возможную комбинацию, начиная с «0000». Лобовая атака за некоторое время может пробить такой простой алгоритм.

Таблица на рисунке ниже показывает возможное число комбинаций с учетом размера ключа:

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Обратите внимание на то, что по мере увеличения размера ключа количество комбинаций возрастает экспоненциально. Математические исчисления доказывают, что размер ключа в 128 бит надежнейшим образом защищает от лобовой атаки:

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

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

Для сравнения: возраст Вселенной – где-то между 13 и 14 миллиардами лет. Даже если предположить, что некий супер-суперкомпьютер мог быть справляться с алгоритмом DES за одну секунду, то на взлом AES у него ушло бы около 149 триллионов лет.

Как видите, размера ключа в 128 бит вполне достаточно, хотя совершенно секретная информация все равно шифруется с размером в 256 бит. Следующее предположение доказывает, что стандарт 128 бит будет оставаться актуальным и в будущем.

При всех этих условиях все население планеты смогло бы взломать один ключ… за 77,000,000,000,000,000,000,000,000 лет.

При этом интересно отметить, что разница между размером ключа в 128 бит и 256 бит не так уж принципиальна. Если бы кто-то придумал бы некую программу, способную взломать 128-битную систему, то 256 бит для этого гения не были бы помехой.

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

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

Таким образом, все звонки и сообщения в криптотелефонах X-Telecom шифруются очень надежно, ведь кроме AES-256 еще дополнительно используется алгоритм Twofish и несколько вспомогательных алгоритмов — в комплексе это дает совершенную 100%-ую защиту вашего общения от прослушки любыми современными способами.

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

AES (Advanced Encryption Standard)

Advanced Encryption Standard- AES. Американский стандарт, опубликованный в 2001 году. В современный криптографических подуктах, наверно, не найдется таких, которые бы не использовали AES. Используется в WI-FI, WinRAR, PGP. DES- предшественник AES.

Содержание

Структура алгоритма шифрования

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

В каждом раунде алгоритма выполняются следующие преобразования (см. рис. 1):

1. Операция SubBytes, представляющая собой табличную замену каждого байта массива данных

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Размер ключа, битR
12810
19212
25614

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

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Расширение ключа

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

В 1997 году был объявлен конкурс на алгоритм AES. Инициатор конкурса NIST(National Institute of Standarts). 1997г.-открытие;

1998г.- раунд 1(15 алгоритмов);

1999г.- раунд 2(5 алгоритмов);

2000г.- финал(1 алгоритм).

К кандидатам предъявлялись следующие требования:

5 алгоритмов, дошедших до финала:

RC6, Twofish, Serpent, MARS, Rijndael. Все алгоитмы были достойными,но победил Rijndael.

Авторы: Vincent Rijmen, Joan Daemon.

AES первый алгоритм, не реализованный как Сеть Фейстеля.

Описание AES

Шифрование производится за R раундов.

В процедуре AddRoundKey ключ из каждого раунда, выработанный процедурой Key Expansion, объединяется с X.

Процедура SubBytes() обрабатывает каждый байт состояния, независимо производя нелинейную замену байтов используя таблицу замен(S-box).

ShiftRows работает со строками X. При этой трансформации строки состояния циклически сдвигаются влево на r байт по горизонтали, в зависимости от номера строки. Для нулевой строки r = 0, для первой строки r = 1Б и тд.

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

Определения и вспомогательные процедуры

Определения

Blockпоследовательность бит, из которых состоит input, output, State и Round Key. Также под Block можно понимать последовательность байт
Cipher Keyсекретный, криптографический ключ, который используется Key Expansion процедурой, чтобы произвести набор ключей для раундов(Round Keys); может быть представлен как прямоугольный массив байтов, имеющий четыре строки и Nk колонок.
Ciphertextвыходные данные алгоритма шифрования
Key Expansionпроцедура используемая для генерации Round Keys из Cipher Key
Round KeyRound Keys получаются из Cipher Key используя процедуру Key Expansion. Они применяются к State при шифровании и расшифровании
Stateпромежуточный результат шифрования, который может быть представлен как прямоугольный массив байтов имеющий 4 строки и Nb колонок
S-boxнелинейная таблица замен, использующаяся в нескольких трансформациях замены байт и в процедуре Key Expansion для взаимнооднозначной замены значения байта
Nbчисло столбцов(32-ух битных слов), составляющих State. Для, AES Nb = 4
Nkчисло 32-ух битных слов, составляющих шифроключ. Для AES, Nk = 4,6, или 8
Nrчисло раундов, которое является функцией Nk и Nb. Для AES, Nr = 10, 12, 14
Rcon[]массив, который состоит из битов 32-х разрядного слова и является постоянным для данного раунда
Вспомогательные процедуры

AddRoundKey()трансформация при шифровании и обратном шифровании, при которой Round Key XOR’ится c State. Длина RoundKey равна размеру State(те, если Nb = 4, то длина RoundKey равна 128 бит или 16 байт)
InvMixColumns()трансформация при расшифровании которая является обратной по отношению к MixColumns()
InvShiftRows()трансформация при расшифровании которая является обратной по отношению к ShiftRows()
InvSubBytes()трансформация при расшифровании которая является обратной по отношению к SubBytes()
MixColumns()трансформация при шифровании которая берет все столбцы State и смешивает их данные (независимо друг от друга), чтобы получить новые столбцы
RotWord()функция, использующаяся в процедуре Key Expansion, которая берет 4-х байтное слово и производит над ним циклическую перестановку
ShiftRows()трансформации при шифровании, которые обрабатывают State, циклически смещая последние три строки State на разные величины
SubBytes()трансформации при шифровании которые обрабатывают State используя нелинейную таблицу замещения байтов(S-box), применяя её независимо к каждому байту State
SubWord()функция, используемая в процедуре Key Expansion, которая берет на входе четырёх-байтное слово и применяя S-box к каждому из четырёх байтов выдаёт выходное слово

Шифрование

AES является стандартом, основанным на алгоритме Rijndael. Для AES длина input(блока входных данных) и State(состояния) постоянна и равна 128 бит, а длина шифроключа K составляет 128, 192, или 256 бит. При этом, исходный алгоритм Rijndael допускает длину ключа и размер блока от 128 до 256 бит с шагом в 32 бита. Для обозначения выбранных длин input, State и Cipher Key в байтах используется нотация Nb = 4 для input и State, Nk = 4, 6, 8 для Cipher Key соответственно для разных длин ключей.

Отдельные трансформации SubBytes(), ShiftRows(), MixColumns(), и AddRoundKey() — обрабатывают State. Массив w[] — содержит key schedule.

SubBytes()

ShiftRows()

ShiftRows работает со строками State. При этой трансформации строки состояния циклически сдвигаются на r байт по горизонтали, в зависимости от номера строки. Для нулевой строки r = 0, для первой строки r = 1Б и тд.. Таким образом каждая колонка выходного состояния после применения процедуры ShiftRows состоит из байтов из каждой колонки начального состояния. Для алгоритма Rijndael паттерн смещения строк для 128 и 192-ух битных строк одинаков. Однако для блока размером 256 бит отличается от предыдущих тем, что 2, 3, и 4-е строки смещаются на 1, 3, и 4 байта соответственно.

MixColumns()

AddRoundKey()

KeyExpansion()

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

Варианты алгоритма

На базе алгоритма Rijndael, лежащего в основе AES, реализованы альтернативные криптоалгоритмы. Среди наиболее известных — участники конкурса Nessie: Anubis на инволюциях, автором которого является Винсент Рэймен и усиленный вариант шифра — Grand Cru Йохана Борста.

Источник

Как работает AES (Advanced Encryption Standard)

Однажды я проверял за переводчиком проект по СХД, и там было такое предложение:

Data can be automatically encrypted inside disk storage systems using high-security 128-bit AES technology

Переводчик ничтоже сумняшеся выдал перевод, в котором значилось следующее:

Удалось найти достойное видео на английском, где работа алгоритма разложена по полкам — некоторые вещи опущены, но по крайней мере после его изучения, переводчик уже не будет задумываться о том, разряды там или биты.

Мы его транскрибировали и перевели, оно ниже, с незначительными купюрами. Желаю приятного чтения.

1. Предисловие

— … ты слышал название Rijndael?

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

Что ж… Давай начнем с некоторых чисел, которые мы вскользь упомянули в последнем видео. AES – это симметричный алгоритм блочного шифрования, который оперирует блоками по 128 бит.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Это значит, что AES берет 128 бит исходного сообщения и превращает их с помощью некоего ключа в 128-битный шифротекст. Размер ключа может быть 128, 192 или 256 бит.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Поэтому уровень безопасности разнится от надежного до, как мне кажется, чрезмерно надежного.

Если вы обнаружите, что ваш браузер использует 128 бит, это нормально. Ключ такого размера был указан как часть AES, поэтому алгоритму Rjjndael этого должно быть достаточно. Просто представьте: у нас есть 16 байтов, или 128 бит, мы что-то с ними делаем и получаем шифротекст. И поскольку все происходит в SP-сети, то есть подстановочно-перестановочной, мы что-нибудь подставим, или применим метод конфузии, и что-нибудь переставим, переместим элементы, чтобы также использовать метод диффузии. Вы же не хотите, чтобы у вас было как в Энигме — один байт на входе и один на выходе, ибо это очень легко поддается криптоанализу, и история это подтверждала неоднократно.

2. Деление на блоки.

Итак, вместо длинных рядов бит или байтов, как в большинстве алгоритмов шифрования, в AES элементы организованы в матрицы 4 на 4 по 128 бит. Получается, нас есть сообщение размером 128 бит или 16 байтов в виде матрицы 4 на 4.

Каждый раз, когда я рисую матрицу, получается как-то так.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

В первой ячейке будет байт 0, здесь байт 1, байт 2, байт 3, затем 4, 5, 6, 7, то есть байты размещаются по столбцам сверху вниз.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

Иными словами, мы берем 128 бит нашего сообщения и расписываем его в таком порядке.

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

В алгоритме AES происходит несколько разных операций, но запомните, что все они совершаются в матрице 4 на 4. Так что же мы будем делать? Мы работаем с SP-сетью, поэтому мы совершим подстановки и перестановки элементов с помощью разных команд и потом в определенный момент добавим наш ключ.

3. Наложение фрагмента ключа через XOR

Итак, это наш открытый текст и, в первую очередь, мы берем часть нашего ключа и совершаем сложение по модулю 2, или функцию XOR.

Как вы помните, мы используем наш ключ между раундами. Именно он обеспечивает секретность, так как остальная часть алгоритма есть в открытом доступе. Давайте рассмотрим раунд шифрования.

Всё это и есть один раунд.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

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

Если размер вашего ключа 128 бит, у вас 10 таких раундов, если 192 бита – 12 раундов, если 256 бит – 14 раундов.

Но имейте в виду, что алгоритм раундов один и тот же, так же между раундами применяется функция XOR в AddRoundKey. Мы не используем каждый раз один и тот же ключ. Как я объяснял в видео про SP-сеть, мы берем исходный ключ, расширяем его с помощью так называемого расписания ключей (key schedule) и создаем разные раундовые ключи.

Таким образом, у нас получится ключ 0, затем ключ 1, ключ 2 и так далее, в зависимости от того, какой раунд мы рассматриваем, то есть в каждом раунде используется часть расширенного ключа.

Мы не будем подробно говорить о расписании ключей, это довольно простой процесс и, подразумевается, что, прежде всего, он должен быть быстрым. KeyExpansion берет ваш исходный ключ и расширяет его настолько, чтобы его можно было использовать в разных раундах. Итак, это был очень коротенький обзор алгоритма AES.

4. О сложении: XOR и поля Галуа

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

Полагаю, возникает вопрос: что происходит на каждом из этих этапов? Для меня алгоритм AES изящен именно потому, что он не использует операции, которых можно было бы от него ожидать.

Конечно, XOR повсеместно применяется в криптографии, но на самом деле все операции в AES по сути своей математические и производятся над так называемым конечным полем.

Мы уже немного рассказывали о конечных полях или полях Галуа в своем видео про кодирование с помощью кода Рида – Соломона (Reed Solomon encoding).

Смысл заключается в использовании теории поля Галуа для конечных полей и выполнении множества длинных делений и сложений чисел в пределах этого поля.

Например, у вас есть некоторое количество элементов, скажем, все числа от 0 до 10, например, и у вас есть различные операции, которые можно выполнять в пределах этого поля. Таким образом, в Rjjndael у нас поле Галуа из 2’8 элементов.

Что такое aes 128. Смотреть фото Что такое aes 128. Смотреть картинку Что такое aes 128. Картинка про Что такое aes 128. Фото Что такое aes 128

А затем в этом поле можно производить сложение, вычитание, умножение и деление или вычисление мультипликативного обратного X’-1.

Важно помнить о конечном поле, если мы не будем углубляться в математику, что 2’8 элементов – это 16 байтов, так что каждый из элементов в этом поле Галуа – это байт. Так что мы начинаем с 00000000 и движемся к 11111111. Таким образом, в этом конкретном конечном поле 256 таких элементов.

Если мы берем наше изначальное сообщение, нужно знать, даже если вы не взглянете на него снова, что какую бы операцию мы с ним не проводили, мы получим другой элемент их этого поля. Мы никогда не выходим за пределы поля, ни за верхнюю, ни за нижнюю границу, знаете ли, и не уходим в отрицательные числа или что-то в этом роде, здесь нет чисел с плавающей запятой и ничего подобного. Если мы берем одно из чисел и добавляем его к другому, то находим третье в пределах поля. Точно также, если мы умножаем или наоборот вычисляем мультипликативный обратный, или делим, мы переходим к другому числу. Поле Галуа довольно удобно для построения шифра на его основе, потому что большинство действий имеют свою противоположность, например, сложение и вычитание отменяют друг друга, так же как умножение и вычисление мультипликативного обратного или деление, и мы можем перемещаться по этому полю. Но мы всегда остаемся в пределах наших байтов. Если мы представляем путь данных в AES в виде матрицы 4 на 4, это наш 128-битный блок, и мы можем совершать операции в пределах этого конечного поля, и после всех действий мы всё еще будем в нем.

Количество бит не увеличится до 130 или 140, и никакой подобной катастрофы не произойдет.

Так вот, вернемся к схеме, и, держа ее в голове, поговорим о том, что делает каждая функция.

5. Внутри раунда. Операция 1: SubBytes

SubBytes – наш блок подстановки, это буквально таблица преобразования, причем хитро разработанная. Создатели просто ее придумали. Каждый байт связан с другим байтом из S-блока в зависимости от их функции в этом поле. Но гораздо важнее, что с помощью некоторых свойств ее постарались сделать как можно более сложной. Так что она очень нелинейная, и трудно представить в виде математической функции ее саму и ее действие. В общем, давайте просто попробуем, и тогда мы сможем ее обсудить.

Итак, у нас есть наша матрица, давайте пока отложим нашу схему… у нас есть наша матрица (нам нужно было бы нарисовать ее много раз). Пишем байт 0, байт 1, и так до байта 15.

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

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

Точно также нет никаких фиксированных точек с противоположным значением, то есть биты заменяются по другому принципу. Например, противоположное число для 1010 – это 0101, и так для всего байта.

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

6. Внутри раунда. Операция 2: ShiftRows

Мы взяли наш открытый текст, применили часть нашего раундового ключа, то есть наш первоначальный ключ, и затем в начале раунда мы сделали подстановку, используя S-блок. После этого мы собираемся сдвинуть строки с помощью функции ShiftRows.

На самом деле это просто. С первым рядом мы ничего не делаем.

Второй ряд мы передвинем на один шаг влево. Тогда байт 1 пройдет весь путь в конец строки, потому что элементы движутся по кругу. Этот байт движется сюда, этот – сюда, а этот – сюда. А первый, очевидно, движется в конец строки.

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

Так что этот байт движется вот сюда, этот – сюда и так далее.

Помните, что этот процесс многократно повторяется, и что наша цель – переставить элементы и перемешать их. Так вот, если на данном этапе мы передвигаем байты из одного столбца в другой в пределах строки, когда через минуту мы перейдем к следующей операции, на этот раз внутри столбцов, вы увидите, что на самом деле мы смешиваем элементы во всей матрице. Поэтому всего за пару раундов всё очень сильно перемешивается. Очевидно, это очень хорошо, потому что взломать такой шифр будет гораздо труднее.

Итак, мы просто берем байты и переставляем их в другое место в пределах матрицы. Теперь мы подходим к функции MixColumns, которая следует за SubBytes.

7. Внутри раунда. Операция 3: MixColumns

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

Мы возьмем первый столбец и смешаем байты в нем, а потом отдельно второй, третий и так далее. Так что это операция производится в пределах столбца. Этот байт переместился сюда, а затем перемешался с другими элементами в этом столбце. Этот передвинулся сюда и перемешался с другими элементами в этом столбце. Таким образом, эти две операции в тандеме хорошенько всё перемешивают, если представить это с технической точки зрения. Здесь используется матричное умножение.

Давай просто оторвем еще один листочек. Нам сегодня нужно много бумаги. Возьмем один столбец с элементами, например, С0, С1, С2, С3 и умножим его как вектор на матрицу.

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

2311
1231
1123
3112

Эти числа достаточно велики и настолько перемешаны, что здесь происходят довольно интересные процессы, но одновременно эти числа и достаточно малы, чтобы процессы происходили быстро, как в более сложных реализациях и тому подобное. Если бы в матрице вместо 2 было бы 50, все происходило бы медленнее.

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

Мы повторяем этот процесс, чтобы получить все остальные значения.

В конце концов после всех перемешиваний, перемещений и переставлений мы получаем новый столбец с битами и байтами.

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

Наша операция сложения – это XOR, а умножение – это умножение внутри конечного поля по модулю многочлена. Остальные подробности мы обсудим как-нибудь в другой раз.

8. Заключение

А сейчас, давайте еще раз проговорим весь алгоритм сначала:

Мы подставим некоторые байты на место других, используя хорошо продуманный S-блок. Затем мы сдвинем элементы в строке и после этого смешаем элементы в столбцах.

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

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

9. Post Scriptum

— Скажи, а этот алгоритм когда-нибудь дает сбои?

— Просто кажется, что в нем так много этапов и так много составляющих.

— А, понял. Это очень хороший вопрос. Я думаю, что на него есть два ответа. С технической точки зрения, нет, потому что существуют так называемые тестовые векторы, где индекс массива для каждого байта начинается с нуля, и когда вы применяете ключ, то у вас должен получиться этот алгоритм, так вы сможете проверить свой аргумент, прежде чем загрузите код в производственную среду. Но с точки зрения осуществления безопасности, на самом деле, да. Поэтому если неправильно реализовать код, можно подорвать безопасность всего шифра. Например, случались кэш-атаки по времени и атаки по сторонним каналам, когда биты ключа раскрывались, потому что люди не уделяли должного внимания реализации.

Одна из главных особенностей AES как стандарта заключается в эффективности использования ЦП. Существуют расширенные инструкции AES по выполнению одного раунда, последнего раунда и т. д. для микропроцессоров Intel и других производителей. Эти процессоры невосприимчивы к такого рода атакам, и они невероятно быстрые. Если использовать AES на процессоре, который оптимизирован под такие задачи, с помощью правильных инструкций, то можно рассчитывать на шифрование со скоростью гигабит в секунду, что весьма быстро. Поэтому в BitLocker или в каком-нибудь шифровании диска вы даже глазом не успеете моргнуть. Вы кликнули файл, и процессор тут же расшифровал его и показал вам, прежде чем вы смогли осознать, что произошло. Это всё благодаря скорости процессов.

Может быть, мы еще немного поговорим о полях Галуа, потому что, мне нравится, когда говорят… Прежде всего, пожалуйста, поищите Галуа, Эвариста Галуа в Википедии, потому что он очарователен.

— Разве он не погиб на дуэли?

Да, в 20 лет он погиб на дуэли. Он опубликовал три знаковые работы по конечным полям, многочленам и прочим вещам. Я не математик и не знаю всей истории. Но дело в том, что этот парень…

На этом загадочном моменте видео обрывается, и мы заканчиваем свою историю про неряшливый перевод.

Полагаем, из этих объяснений стало понятно, что ни о каких разрядах там речь не идет, а речь исключительно о перемешивании битов в несколько раундов.

Надеемся, было познавательно.

Ирина Мирошникова (транскрибация), Светлана Дугинова (перевод), Евгений Бартов (выбор сюжета, вступление, редактура), Галина Таранова (оформление)

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *