Как ускорить шифрование по ГОСТ 28147-89 на процессоре Baikal-M

Наиболее важные замечания перед написанием алгоритма


В этом посте на примере описания реализации алгоритма шифрования по ГОСТ 28147–89, построенного на сети Фейстеля, показаны возможности процессора Baikal-M и проведен анализ конвейера и сравнительные испытания реализации алгоритма с помощью векторных вычислений с сопроцессором SIMD и без него.

Для тех, у кого нет времени или желания читать #многобукв# сразу результат – на Baikal-M можно получить 8 * 650Мбит/c ~ 5.2Гбит/с (с одного А57 ядра ~650Мбит/с)

СнК Baikal-M


Общая схема СнК ниже. Важно — СнК содержит 8 ядер ARM Cortex A57 (алгоритм оптимизирован под это ядро)



Ядро ARM Cortex-A57


Оптимизация алгоритма ГОСТ89 производится согласно документу ARM Cortex-A57 software optimization guide.
На следующем рисунке отображена схема конвейера ядер Cortex-A57 в составе процессора Baikal-M, для которого производилась оптимизация алгоритма.
Читать дальше →