OpenSSL и ГОСТ. Настройка

Содержание

Введение

Все государственные структуры обязаны использовать в своих информационных системах только ГОСТ криптографические алгоритм. Поэтому, всем IT специалистам приходятся сталкиваться с  криптографией по ГОСТ при разработке или сопровождению информационных систем, если в требованиях есть условие по взаимодействию с информационными системами государственных органов.

Одним из самым популярных кроссплатформенных инструментов для работы с криптографией является проект OpenSSL. Поддержка ГОСТ алгоритмов добавлена в OpenSSL 1.0.0. Начиная с этой версии, после правильной настройки, мы получим полноценную работу с ГОСТ алгоритмами в наших проектах, если они используют OpenSSl.

Для использования ГОСТ алгоритмов в OpenSSL необходимо установить последнюю версию:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssl

Настройка OpenSSL

После этого нужно настроить OpenSSL. Для этого необходимо в начало конфигурационного файла OpenSSL, который расположен по адресу /etc/ssl/openssl.cnf после

#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#

добавить

openssl_conf=openssl_def

и в конец файла добавить:

# OpenSSL default section
[openssl_def]
engines = engine_section

# Engine scetion
[engine_section]
gost = gost_section

# Engine gost section
[gost_section]
engine_id = gost
dynamic_path = /usr/lib/ssl/engines/libgost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Описание параметров:

  • Параметр engine_id указывает на название движка. Устанавливаем значение gost.
  • Параметр dynamic_path указывает на путь до динамической библиотеки libgost.
  • Параметр default_algorithms указывает на использование движком всех алгоримов, которые есть в движке.
  • Параметр CRYPT_PARAMS опция только для библиотеки libgost. Позволяет пользователю выбирать наборы параметров симметричного алгоритма шифрования. Без этой опции не будет работать опция -gost89, что в свою очередь ведёт к тому, что при шифровании данных вместо GOST 28147-89 используется rc2-cbc.

Сохраняем файл.

Проверка пути библиотеки libgost.so

Далее находим расположение библиотеки libgost.so

sudo find / -name "libgost.so"

Если библиотека не расположена по путь, указанному в файле конфигурации с предыдущего шага (/usr/lib/ssl/engines/libgost.so), то создаём симлинк

sudo mkdir -p /usr/lib/ssl/engines
sudo ln -s /usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/libgost.so /usr/lib/ssl/engines/libgost.so

Внимательно проверяем путь и архитектуру библиотеки того места, откуда мы ставим симлинк!

Проверка работы

Проверка правильности настройки можно командой

openssl ciphers|tr ':' '\n'|grep GOST

в ответ должны получить что-то в виде:

GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89

На этом всё, поддержка ГОСТ алгоритмов в OpenSSL включена! С чем, собственно, можно и поздравить!

Источник - документация проекта OpenSSL