Содержание

Skip to end of metadata
Go to start of metadata

Пакет libgost_astra

В состав дистрибутивов ОСОН Орёл и ОССН Смоленск входит пакет библиотек для выполнения защитного преобразования по алгоритмам ГОСТ

libgost-astra

Данный пакет обеспечивает включение в состав методов защитного преобразования,
поддерживаемых пакетами openssl и openvpn, следующих алгоритмов:

  • ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012 - алгоритмы цифровой подписи.
    Также поддерживается обмен ключами, основанный на открытых ключах (детали см. в RFC 4357).
    Алгоритмы используют
    • Закрытые ключи 256 бит для  ГОСТ 2001, и 256/512 бит для ГОСТ 2012. 
    • Открытые ключи 512 бит для GOST 2001 и 512/1024 for GOST 2012.
  • ГОСТ Р 34.11-94 Алгоритм хеширования. Хэш 256 бит.
  • ГОСТ Р 34.11-2012 Алгоритм хеширования. Хэш 256 и 512 бит.
  • ГОСТ 28147-89 - Симметричное защитное преобразование с ключем 256 бит.
    Реализованы режимы CBC, CFB и CNT, поддерживается алгоритмы "key meshing" (RFC 4357).
  • ГОСТ 28147-89 в режиме выработки имитовставки. Базируется на алгоритме симметричного защитного преобразования.
    Имеет симметричный ключ 256 бит и разрядность вставки от 8 до 64 (по умолчанию 32) бит. 
  • ГОСТ Р 34.13–2015 - Симметричное защитное преобразование "Кузнечик" ("Grasshopper"")

Установку пакета можно осуществить из графического менеджера пакетов, или из командной строки командой

apt install libgost-astra

После установки для подключения установленных алгоритмов следует внести измения в файл конфигурации службы openssl (/etc/ssl/openssl.cnf).

Образец стандартного конфигурационного файла при установке пакета копируется в файл с образцом конфигурации

/usr/share/doc/libgost-astra/openssl.cnf.gz

и, если в конфигурацию openssl не вносились никакие изменения, которые жалко потерять,
образец можно просто распаковать в файл конфигурации /etc/ssl/openssl.cnf. Например, командой


gunzip -c /usr/share/doc/libgost-astra/openssl.cnf.gz | sudo tee /etc/ssl/openssl.cnf1 > /dev/null

Генерация ключей

Для генерации ключей можно использовать стандартную команду openssl, например:

openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out seckey.pem
При этом ключ -algorithm используется для указания алгоритма, а ключ -pkeyopt используется для передачи параметров алгоритму.
Поддерживаются следующие сочетания алгоритмов и параметров:

АлгоритмПараметры
gost20010, A, B, C, XA, XB
gost2012_256
gost2012_512A, B

Ручная настройка конфигурации openssl

Добавить в начало файла /etc/ssl/openssl.cnf строку

openssl_conf = openssl_def

В конец файла добавить строчки

[openssl_def]
engines = engine_section

[engine_section]
gost-astra = gost_section

[gost_section]
engine_id = gost-astra
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/gost-astra.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Значения параметров в секции [gost_section]:

ПараметрЗначение
engine_id = gost-astra

Указывает на название движка (английский термин - engine). Устанавливаем значение gost-astra.

Проверить список установленных и включенных движков можно командой

openssl engine
При установленном и включенном движке libgost-astra ответ команды будет выглядеть примерно так:

# openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(gost-astra) Astra implementation of GOST engine
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/gost-astra.so

Указывает путь до динамической библиотеки gost-astra.so.
Значение переменной, указывающей место размещения библиотеки, зависит от используемой версии SSL
(в приведённом примере - использовалась версия 1.1.х, и указано размещение "по умолчанию" при установке пакета).
Однако, при необходимости, библиотеку можно разместить в любом месте, указав соответствующее значение размещения.

Проверить текущую установленную версию openssl можно командой

openssl version

default_algorithms = ALL

Разрешает использование движком всех алгоримов, имеющихся в движке.

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

openssl engine gost-astra -c

При установленном и включенном движке libgost-astra ответ команды будет выглядеть примерно так:

# openssl engine gost-astra -c
(gost-astra) Astra implementation of GOST engine
 [gost89, gost89-cnt, gost89-cnt-12, gost89-cbc, grasshopper-ecb, grasshopper-cbc, grasshopper-cfb, grasshopper-ofb, grasshopper-ctr, md_gost94, gost-mac, md_gost12_256, md_gost12_512, gost-mac-12, gost2001, gost-mac, gost2012_256, gost2012_512, gost-mac-12]
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSetПараметр CRYPT_PARAMS применяется только для библиотеки gost-astra.
Позволяет пользователю выбирать наборы параметров симметричного алгоритма защитного преобразования.
Без этой опции не будет работать опция -gost89, что, в свою очередь, приведёт к тому, что для защитного преобразования вместо GOST 28147-89 будет использоваться rc2-cbc.


Инструмент быстрого запуска сервиса OpenVPN автоматически перезаписывают файл конфигурации openssl, добавляя в него указания на библиотеку.


1 Comment

  1. Добавил про генерацию ключей.

    Позже напишу поподробнее.

    Шухрат Махмадиев