Добрый день
Разрабатываем приложение, использующее отечественные криптографические алгоритмы, в частности вычисление HMAC хэша средствами OpenSSL. Digest считаем алгоритмом ГОСТ Р 34.11-2012 (256 бит). Столкнулись со странной проблемой, что если использовать либу, входящую в состав Астра Линукса (/usr/lib/x86_64-linux-gnu/engines-1.1/gost-astra.so), то производительность вычисления хэша оказывается примерно в 4-5 раз хуже, чем если собрать эту же либу из исходников https://github.com/gost-engine/engine, ветка openssl_1_1_1.
Почему может быть такая разница? Либа в составе астра линукса получается это что-то другое, она считает ГОСТовые алгоритмы как-то иначе? Ее исходные коды где-нибудь доступны для самостоятельной сборки?
Код вычисления HMAC у нас примерно такой, вызываем функцию:
передавая ей первым параметром функцию
Либа подключается динамически, меняя один файл .SO на другой, получаем разницу в производительности в 4-5 раз.
Разрабатываем приложение, использующее отечественные криптографические алгоритмы, в частности вычисление HMAC хэша средствами OpenSSL. Digest считаем алгоритмом ГОСТ Р 34.11-2012 (256 бит). Столкнулись со странной проблемой, что если использовать либу, входящую в состав Астра Линукса (/usr/lib/x86_64-linux-gnu/engines-1.1/gost-astra.so), то производительность вычисления хэша оказывается примерно в 4-5 раз хуже, чем если собрать эту же либу из исходников https://github.com/gost-engine/engine, ветка openssl_1_1_1.
Почему может быть такая разница? Либа в составе астра линукса получается это что-то другое, она считает ГОСТовые алгоритмы как-то иначе? Ее исходные коды где-нибудь доступны для самостоятельной сборки?
Код вычисления HMAC у нас примерно такой, вызываем функцию:
Код:
unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
int key_len, const unsigned char *d, int n,
unsigned char *md, unsigned int *md_len);
Код:
EVP_MD *digest_gost2012_256(void);