@node ru2814789 @section ГОСТ 28147-89 (Магма) @table @asis @item Что за алгоритм Блочный шифр @item Размер блока 64 бит @item Размер ключа 256 бит @item Структура Сеть Фейстеля @item Число раундов 32 @item RFC @itemize @item @url{https://tools.ietf.org/html/rfc5830.html, 5830} @item @url{https://tools.ietf.org/html/rfc8891.html, 8891} (Магма) @end itemize @item Лучшая атака 2@sup{224} имея 2@sup{32} пар открытый-зашифрованный текст. Всё очень сильно зависит от используемых таблиц замен @item Wikipedia @url{https://ru.wikipedia.org/wiki/%D0%93%D0%9E%D0%A1%D0%A2_28147-89, статья} @end table @strong{Особенности}: @itemize @item Разработан ещё в СССР, 8-ым управлением КГБ. @item Стандарт не фиксирует значения таблиц замен (S-box). @itemize @item Если бы S-box был фиксирован в стандарте, то в нём могли бы быть "лазейки". @item Секретный S-box можно использовать как дополнительную ключевую информацию. @item Это не позволяет определить стойкость алгоритма не зная таблиц замены. Самостоятельный выбор может существенно повлиять на криптостойкость алгоритма. @item Реализации алгоритма, использующие разные таблицы, не совместимы между собой. @end itemize @item Из-за маленького размера блока необходимо быть аккуратным при его использовании и часто менять ключи. @item Название "Магма" введено в стандарте @ref{ru34122015, Кузнечика}. Магма идентичен ГОСТ 28147-89, за исключением фиксированной таблицы замены и немного отличающегося преобразования ключей и блоков. @end itemize @anchor{2814789Impl} @strong{Реализации} @multitable @columnfractions 0.6 0.1 0.3 @headitem Ссылка @tab Язык @tab Комментарий @item @url{http://gostcrypto.com/doc/GostCipher.html} @tab JavaScript @tab @item @url{http://www.gogost.cypherpunks.ru/} @tab Go @tab @item @url{http://www.pygost.cypherpunks.ru/} @tab Python @tab @item @url{http://www.libressl.org/} @tab C @tab @item @url{https://github.com/openssl/openssl/tree/master/engines} @tab C @tab @item @url{https://github.com/Roman-Oliynykov/ciphers-speed} @tab C++ @tab @item @url{https://www.gnu.org/software/libgcrypt/} @tab C @tab @end multitable