Как использовать AES с STM32

Опубликовано: 24.05.2015 Автор: Александр

Бывает так, что при разработке какого-либо устройства необходимо скрыть передаваемую информацию, иначе говоря – зашифровать. Особенно такая необходимость возникает при передачи данных открытым способом: по линиям связи (проводам) или по радиоканалу. Существует множество алгоритмов шифрования, каждый имеет свои особенности и стойкость. В этой статье вы найдете как просто и достаточно крепко зашифровать свои данные.

AES Rijndael

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

За основу библиотеки взят труд немцев: ссылка. Написана была библиотека для AVR, однако переписал ее для использования и на STM32, при желании можно перенести и на STM8.

Библиотека позволяет шифровать и дешифровать по алгоритму AES с ключами 128, 196 и 256 бит. Причем шифрование и дешифровка производится достаточно быстро:

function clock cycles
init (128 bit) 4632
init (192 bit) 5082
init (256 bit) 6161
enc (128 bit) 21279
enc (192 bit) 25724
enc (256 bit) 30174
dec (128 bit) 39340
dec (192 bit) 47799
dec (256 bit) 56253

Блок для шифрования должен быть длиной 16 байт, не больше, не меньше. Это особенность алгоритма. Поэтому, если нужно зашифровать блоки большего размера, то нужно разбить его на кратные 16 байт.

Перед использованием в программе, необходимо сгенерировать вспомогательную переменную.

Для начала объявим переменные:

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

Можно использовать функции для 128, 196 и 256 битного ключа.

Ну а далее шифрование и дешифрование производится элементарно:

AES на STM32

Теперь шифруем:

AES STM32 зашифровано

И дешифруем:

AES STM32

Как видим данные успешно были дешифрованы и они соответствуют исходным.

В заключении архив с проектом и библиотекой ссылка

В рубриках: Электроника
Метки: , ,
Поделиться записью:

Один комментарий к “Как использовать AES с STM32”

  1. Петр:

    Статья хорошо помогла. Импортировалась в Keil без проблем. Спасибо!