logo
+7 (495) 997-37-74
Москва, ул.Международная, 15

AES: Стандарт шифрования AES

AES (Advanced Encryption Standard) — это т. н. «симметричный» алгоритм шифрования, принятый в качестве стандарта и широко используемый в различных областях IT и вообще практически во всех сферах нашей, немыслимой без современных технологий, жизни.

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

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

Симметричный алгоритм

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

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

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

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

Блочное шифрование

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

Цитата из википедии: шифр подстановки — это метод шифрования, в котором элементы исходного открытого текста заменяются зашифрованным текстом в соответствии с некоторым правилом. Элементами текста могут быть отдельные символы (самый распространённый случай), пары букв, тройки букв, комбинирование этих случаев и так далее.

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

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

Другими словами этот режим называют ещё режимом ECB (Electronic Codebook) «электронной кодовой книги» или «простой замены».

Здесь нужно упомянуть об одной проблеме подобного подхода — если мы шифруем отдельные блоки независимо друг от друга, то часть информации может «просачиваться» в зашифрованное сообщение и может быть обнаружена (неавторизованной стороной).

Это хорошо иллюстрируется следующим примером — вторая картинка хоть и зашифрована, но на ней явно просматривается исходная информация.

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

Режим CBC

Режим CBC (Cipher Block Chaining) — это т. н. «режим сцепления блоков шифротекста» при котором:

  • Сообщение разбивается на блоки одинакового размера. При необходимости последний блок дополняется до стандартной длины 128 бит.
  • Шифрование очередного блока сообщения выполняется с использованием предыдущего зашифрованного блока. Для первого блока предыдущего зашифрованного блока не существует, поэтому его шифруют с использованием «вектора инициализации» (initialization vector, IV).
  • Вектор инициализации — случайное число. Размер (длина) IV равна размеру блока.
  • Расшифровка выполняется с использованием тех же ключа k и вектора инициализации IV.

К достоинствам режима CBC можно отнести:

  • постоянную скорость обработки блоков
  • отсутствие статистических особенностей, характерных для режима ECB
  • возможность распараллеливания расшифровки

Режим CBC также не идеален и не лишён некоторых недостатков:

  • возможно определить начало изменения данных по изменению шифротекста
  • невозможность распараллеливания шифрования (поскольку для шифрования каждого блока требуется блок, зашифрованный на предыдущем шаге)

Кроме двух вышеозначенных режимов работы, существуют и другие, более продвинутые, например:

  • РСВС (Propagating Cipher Block Chaining) «режим распространяющегося сцепления блоков шифра»
  • CFB (Cipher Feedback) «режим обратной связи по шифротексту»
  • OFB (Output Feedback) «режим обратной связи по выходу»
  • CTR (Counter mode) «режим счётчика»
  • и т. д.

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

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

Алгоритм шифрования AES основан на принципе подстановок и перестановок и имеет архитектуру для которой характерно:

  • представление шифруемого блока в виде двумерного байтового массива
  • шифрование за один раунд всего блока данных
  • выполнение криптографических преобразований, как над отдельными байтами массива, так и над его строками и столбцами. Это обеспечивает «диффузию» данных одновременно в двух направлениях — по строкам и по столбцам.

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

AES и микроконтроллеры

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

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

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

Заключение

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

Ссылки по теме

AES: Стандарт шифрования AES

AES: Библиотека AESLib

AES: Работа в режиме Single block

AES: Работа в режиме Multiple blocks