Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


Введение

OpenSSL — это инструмент защиты данных. Инструмент доступен в ОС Astra Linux по умолчанию. Версия 3.0.0 инструмента доступна начиная с В Astra Linux Special Edition 1.8 используется OpenSSL поколения 3 (версия 3.2). В более ранних обновлениях используется поколение 1.1 (версия 1.1). Узнать установленную версию OpenSSL можно командой:

Command

openssl version

Различия версий OpenSSL 1.1.1 и 3.0.0


Информация

Поддержка OpenSSL 1. 1.1 прекращена в сентябре 2023 года. Между версиями отсутствует прямая совместимость. Нумерация 2.х применяется только к FIPS-модулю в составе OpenSSL, поэтому после 1.1.1 идет версия 3.0.0

Новая концепция модульности

Основные различия поколений OpenSSL 1.1 и OpenSSL 3

Исключение интерактивного режима

В OpenSSL поколение 3 исключен интерактивный режим (режим командной строки). Для выполнения функций, ранее реализуемых в интерактивном режиме, следует использовать опции командной строки.

Новая концепция модульности

В OpenSSL поколение 3 используется новая концепция подключаемых модулей провайдеры Основным отличием версий 1.1.1 и 3.0.0 можно считать добавление новой концепции модульности инструмента OpenSSL провайдеров (providers). Новая концепция дополняет ENGINE API и динамически подгружаемые модули (engine) библиотеки libcrypto, содержащие алгоритмы защитного преобразования данных. Важным отличием провайдеров (providers) от модулей (engine) является уровень предоставляемого API — провайдеры предоставляют более высокоуровневые методы для работы с алгоритмами. Они обеспечивают полноценное окружение для работы альтернативных реализаций алгоритмов — является альтернативой интерфейсу для работы с динамически подключаемым модулями (ENGINE API), при этом провайдеры предоставляют более высокоуровневые методы работы (средства сериализации, примитивы, контексты и т.д.). Подгружаемые Динамически подгружаемые модули (engine) заменяют только сами алгоритмы защитного преобразования из библиотеки libcrypto в составе OpenSSL на альтернативные реализации. Для версий OpenSSL 3.0.0 и выше динамически подгружаемые модули (engine) признаны устаревшими, а их корректная поддержка не гарантируется.признаны устаревшими, а их дальнейшая поддержка не гарантируется.

Список провайдеров для OpenSSL версии 3.0.0 и выше поколения 3 доступен по команде:

Command

openssl list -providers

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

По умолчанию, встроенные алгоритмы инструмента OpenSSL, отмеченные как устаревшие отключены , исключены из состава встроенных алгоритмов и вынесены в отдельный провайдер legacy, определяемый в секции секцию legacy_sect конфигурационного файла openssl.cfg. Этот провайдер по умолчанию отключен.

Раскрыть
titleКак задействовать уставшие устаревшие алгоритмы для обеспечения совместимости

Для разового использования устаревшего алгоритма достаточно добавить опцию -provider legacy к команде, например так:

Command
Titleecho -n "hello" | openssl md4 -provider legacy

  MD4(stdin)= 866437cb7a794bce2b727acc0362ee27



Предупреждение

Использование устаревших алгоритмов защитного преобразования данных небезопасно!

Чтобы полностью задействовать устаревшие алгоритмы необходимо подключить провайдер legacy, для чего нужно отредактировать конфигурационный файл /etc/ssl/openssl.cfg следующим образом:

  1. Добавить строку в секцию [provider_sect]openssl_init] строку providers = provider_section, если она не была добавлена ранее:

    Блок кода
    [openssl_init]
    providers = provider_section # добавить или раскоментировать
    engines = engine_section


  2. Перейти в конец файла /etc/ssl/openssl.cfg.
  3. Добавить секцию [provider_section], если она не была добавлена ранее:

    Блок кода
    [provider_section] # По умолчанию есть, gostprov - провайдер ГОСТ# List of providers to load (список загружаемых провайдеров)
    [provider_sect]
    default = default_sect
    legacy = legacy_sect (добавленная строка)section # добавить или раскоментировать
    gostprov = gostprov_section 


    Информация

    Провайдер ГОСТ gostprov включается при установке пакета libgost-astra и выключается при его удалении


  4. Раскоментировать секцию  [default_sect]  и Раскомментировать параметр activate = 1 в секции [default_sect], если ранее он не был раскоментирован или добавить их:

    Блок кода
    [default_sect]
    activate  # добавить или раскоментировать
    activate = 1 # добавить или раскоментировать


  5. Добавить в Ниже добавить секцию [legacyprovider_sectsection]с параметром activate = 1 строку с указанием секции провайдера legacy = legacy_section. Итоговый вид секции провайдеров в конце файла /etc/ssl/openssl.cfg :

    Блок кода
    [defaultprovider_sectsection]
    activatedefault = 1
    
    default_section
    gostprov = gostprov_section
    legacy = legacy_section # добавить
    [legacy_sectsection] # добавить
    activate=1 # добавить
    [gostprov_section]
    activate=1
    [default_section] # добавить или раскоментировать 1
Предупреждение

Использование устаревших алгоритмов защитного преобразования данных небезопасно!

Основной перечень функциональных различий между версиями OpenSSL 1.1.1 и 3.0.0

  1. 
    activate=1 # добавить или раскоментировать



Проверка работы провайдера

Проверить, включена ли поддержка legacy можно посмотрев список провайдеров :

Image Added

Или выполнив без опции -provider legacy команду :

Command
Titleecho -n "hello" | openssl md4

  MD4(stdin)= 866437cb7a794bce2b727acc0362ee27

Где md4 — любая из хэш-функций, отмеченная как устаревшая.

Основной перечень функциональных различий между версиями OpenSSL 1.1.1 и 3.0.0

  • Добавлены:
    • новые опции для openssl list (список доступен по команде openssl list -commands);
    • руководство по переходу к новой версии в раздел man(7) документации разработчиков OpenSSL;
    • функция OPENSSL_info() и
  • Добавлены новые опции для openssl list (список доступен по команде openssl list -commands).
  • Добавлено руководство по переходу к новой версии в раздел man(7) документации разработчиков OpenSSL.
  • Добавлены функция OPENSSL_info()  и
    • команда openssl info  для получения встроенной справки
    .
    • ;
    Реализована
    • поддержка подключаемых групп протокола TLSv1.3
    • ;
    Добавлена
    • поддержка Kernel TLS (KTLS) - обработки данных для протокола TLS на уровне ядра
    .
  • Лицензия Apache обновлена до v2.0.
  • Отмечены как устаревшие:
    • Типы и функции:
      • OCSP_REQ_CTX;
      • EC_KEY  и EC_KEY_METHOD;
      • RSA  и RSA_METHOD, DSA  и DSA_METHOD;
      • DH  и DH_METHOD, ERR_load;
      • ERR_put_error();
      • ERR_get_error_line();
      • ERR_get_error_line_data();
      • ERR_peek_error_line_data();
      • ERR_peek_last_error_line_data() и ERR_func_error_string();
      • все низкоуровневые хэш-функции алгоритмов MD2, MD4, MD5, MDC2, RIPEMD 160, SHA1, SHA224, SHA256, SHA384, SHA512 и Whirlpool;
      • все низкоуровневые функции защитного преобразования для алгоритмов AES, Blowfish, Camellia, CAST, DES, IDEA, RC2, RC4, RC5 и SEED;
      • хэш-функции EVP: MD2, MD4, MDC2, WHIRLPOOL и RIPEMD-160;
      • все низкоуровневые функции генерации открытого ключа для алгоритмов DH, DSA, ECDH, ECDSA и RSA . Протоколы SSL 3, TLS 1.0, TLS 1.1 и DTLS 1.0 работают только на уровне безопасности 0, за исключением случаев, когда используется обмен ключами RSA без SHA1;
    • интерфейс ENGINE API;
    • все варианты EVP-защитного преобразования алгоритмов  CAST5, BF, IDEA, SEED, RC2, RC4, RC5 и DES.
Информация

EVP — высокоуровневый API для работы с алгоритмами защитного преобразования данных, работающий без привязки к их конкретным реализациям

    • ;
    • функции для генерации асимметричных пар ключей;
    • OSSL_LIB_CTX , контекст библиотеки libcrypto для менеджеров контекстов;
    • новые функции для поддержки структур OSSL_LIB_CTX в OpenSSL API;
    • алгоритмы X25519, X448, Ed25519, Ed448, SHAKE128 и SHAKE256 включены в состав FIPS-провайдеров;
    • полноценный HTTP/HTTPS-клиент, поддерживающий:
      • методы GET и POST;
      • произвольные типы содержимого запросов и ответов
      • TLS;
      • соединения через HTTP-прокси;
      • соединения и обмен данными через пользовательский BIOs (разрешающий неявные соединения) и обработку таймаутов.
    • инструмент util/check-format.pl для проверки соблюдения правил безопасности при разработке приложений;
    • методы OSSL_ENCODER  и OSSL_DECODER  для операций по защите данных и работающие через API;
    • структура OSSL_PARAM_BLD , облегчающая работу с API OSSL_PARAM;
    • макросы ERR_raise() и ERR_raise_data() для работы с ошибками;
    • функция OSSL_PROVIDER_available() для проверки доступности провайдера;
    • команда openssl mac, использующая API EVP_MAC;
    • команда openssl kdf, которая использует API EVP_KDF;
    • поддержка инструментов для трассировки и вывода данных отладки;
    • интерфейс хэш-функций EVP_MAC . Поддерживаются следующие функции: BLAKE2, CMAC, GMAC, HMAC, KMAC, POLY1305 и SIPHASH;
    • интерфейс формирования ключей EVP_KDF . Поддерживаются следующие функции формирования ключа: HKDF, KBKDF, KRB5 KDF, PBKDF2, PKCS12 KDF, SCRYPT, SSH KDF, SSKDF, TLS1 PRF, X9.42 KDF и X9.63 KDF;
    • поддержка протокола управления сертификатами CMP, позволяющая запрашивать сертификаты у удостоверяющего центра через HTTP/HTTPS (инструмент openssl-cmp);
  • Для TLS по умолчанию установлен уровень безопасности 1, при этом  запрещено использование сертификатов X509, подписанных с использованием SHA1 (такие сертификаты не проходят проверку подлинности);
  • Включены инструменты отладки enable-crypto-debug  и enable-crypto-debug-backtrace, применяется очистка адресов и обнаружение утечек;
  • Удалены:
    • интерактивный режим утилиты openssl;
    • интерфейс RAND_DRBG API;
  • Отмечены как устаревшие:
    • Типы и функции:
      • OCSP_REQ_CTX;
      • EC_KEY  и EC_KEY_METHOD;
      • RSA  и RSA_METHOD, DSA  и DSA_METHOD;
      • DH  и DH_METHOD, ERR_load;
      • ERR_put_error();
      • ERR_get_error_line();
      • ERR_get_error_line_data();
      • ERR_peek_error_line_data();
      • ERR_peek_last_error_line_data() и ERR_func_error_string();
      • все низкоуровневые хэш-функции алгоритмов MD2, MD4, MD5, MDC2, RIPEMD 160, SHA1, SHA224, SHA256, SHA384, SHA512 и Whirlpool;
      • все низкоуровневые функции защитного преобразования для алгоритмов AES, Blowfish, Camellia, CAST, DES, IDEA, RC2, RC4, RC5 и SEED;
      • хэш-функции EVP: MD2, MD4, MDC2, WHIRLPOOL и RIPEMD-160;
      • все низкоуровневые функции генерации открытого ключа для алгоритмов DH, DSA, ECDH, ECDSA и RSA . Протоколы SSL 3, TLS 1.0, TLS 1.1 и DTLS 1.0 работают только на уровне безопасности 0, за исключением случаев, когда используется обмен ключами RSA без SHA1;
    • интерфейс ENGINE API (EVP — высокоуровневый API для работы с алгоритмами защитного преобразования данных, работающий без привязки к их конкретным реализациям);

      Информация

      EVP — высокоуровневый API для работы с алгоритмами защитного преобразования данных, работающий без привязки к их конкретным реализациям


    • все варианты EVP-защитного преобразования алгоритмов CAST5, BF, IDEA, SEED, RC2, RC4, RC5 и DES.
  • Лицензия Apache обновлена до v2.0;
  • Добавлены функции для генерации асимметричных пар ключей.
  • Удален интерфейс RAND_DRBG API.
  • Добавлен OSSL_LIB_CTX , контекст библиотеки libcrypto для менеджеров контекстов.
  • В OpenSSL API добавлены новые функции для поддержки структур OSSL_LIB_CTX.
  • Из утилиты openssl  удален интерактивный режим.
  • Алгоритмы X25519, X448, Ed25519, Ed448, SHAKE128 и SHAKE256 включены в состав FIPS-провайдеров.
  • Сертификаты X509, подписанные с использованием SHA1, больше не разрешены при уровне безопасности 1 или выше. Уровень безопасности по умолчанию для TLS равен 1. Сертификаты, подписанные с использованием SHA1 по умолчанию больше не проходят проверку подлинности серверов или клиентов.
  • Инструменты отладки enable-crypto-debug  и enable-crypto-debug-backtrace  были отключены, теперь применяется очистка адресов и обнаружение утечек.
  • Появилась поддержка протокола управления сертификатами CMP, который позволяет запрашивать сертификаты у сервера удостоверяющего центра. Утилита openssl-cmp  для работы с сертификатами позволяет передавать запросы через HTTP/HTTPS.
  • Добавлен полноценный HTTP/HTTPS-клиент, поддерживающий методы GET и POST, произвольные типы содержимого запросов и ответов, поддерживающий TLS, соединения через HTTP-прокси, соединения и обмен данными через пользовательский BIOs (разрешающий неявные соединения) и обработку таймаутов.
  • Добавлен инструмент util/check-format.pl для проверки соблюдения правил безопасности при разработке приложений.
  • Добавлены методы OSSL_ENCODER  и OSSL_DECODER  для операций по защите данных и работающие через API.
  • Добавлена структура OSSL_PARAM_BLD , облегчающая работу с API OSSL_PARAM.
  • Добавлены макросы ERR_raise() и ERR_raise_data() для работы с ошибками.
  • Добавлена функция OSSL_PROVIDER_available()  для проверки доступности провайдера.
  • Добавлена команда openssl mac, который использует API EVP_MAC.
  • Добавлена команда openssl kdf, которая использует API EVP_KDF.
  • Добавлена поддержка инструментов для трассировки и вывода данных отладки.
  • Добавлен интерфейс хэш-функций EVP_MAC . Поддерживаются следующие функции BLAKE2, CMAC, GMAC, HMAC, KMAC, POLY1305 и SIPHASH.
  • Добавлен интерфейс формирования ключей EVP_KDF . Поддерживаются следующие функции формирования ключа : HKDF, KBKDF, KRB5 KDF, PBKDF2, PKCS12 KDF, SCRYPT, SSH KDF, SSKDF, TLS1 PRF, X9.42 KDF и X9.63 KDF.

Различия версий 3.0.0 и 3.1.0

  • Добавлены:
      Добавлен
      • параметр конфигурации провайдера FIPS для принудительной проверки EMS во время выполнения KDF TLS1_PRF. Для проверки
      к команде
      • к команде openssl fipsinstall необходимо добавить параметр -ems-check
      .
      • ;
      • поддержка алгоритма KMAC (KECCAK Message Authentication Code) в функцию KBKDF (Key Based Key Derivation Function);
    • провайдер Провайдер FIPS включает в себя алгоритмы 3DES в режиме ECB, CBC и Adds для обеспечения обратной совместимости с прошлыми версиями OpenSSL. Использование алгоритмов в операциях указывается опцией fips=yes.
    • Добавлена поддержка алгоритма KMAC (KECCAK Message Authentication Code) в функцию KBKDF (Key Based Key Derivation Function).
    • OpenSSL. Использование алгоритмов в операциях указывается опцией fips=yes;
    • поддержка Поддержка провайдерами инструкции RNDR и регистров RNDRRS для ARM-архитектуры (aarch64) при генерации случайных чисел.;
    • Команды команды s_client и s_server теперь сообщают, когда версия TLS не включает механизм повторного согласования, что позволяет избежать ошибок при работе с TLS и повторном согласовании в начале сеанса связи.;
    • Поддержка поддержка AES-GCM с помощью инструкций AVX 512 vAES и vPCLMULQDQ.;
    • Параллельное параллельное двухпроцессорное 1536/2048-разрядное модульное возведение в степень для процессоров с поддержкой AVX512_IFMA.;
    • начиная с версии OpenSSL 3.1 отмечены как устаревшие начиная и могут быть отключены путем определения макроса OPENSSL_NO_DEPRECATED_3_1 следующие функции:Функции:
      • OPENSSL_LH_stats,
      • OPENSSL_LH_node_stats,
      • OPENSSL_LH_node_usage_stats,
      • OPENSSL_LH_stats_bio, ;
      • OPENSSL_LH_node_stats_bio ;
      • OPENSSL_LH_node_usage_stats_bio

    отмечены как устаревшие начиная с версии OpenSSL 3.1 и могут быть отключены путем определения макроса OPENSSL_NO_DEPRECATED_3_1.

    • Макрос DEFINE_LHASH_OF заменен на DEFINE_LHASH_OF_EX.
    • Для подписей PKCS#1 RSASSA-PSS длина значения параметра salt может изменяться до максимальной, чтобы соответствовать FIPS 186-4. Чтобы использовать максимальную длину нужно присвоить значение OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX для параметра rsa_pss_saltlen.
    Информация

    Параметр salt определяет длину входной строки, передающейся вместе с преобразуемыми данными в хэш-функцию

    Различия версий 3.1.0 и 3.2.0

      • ;
      • OPENSSL_LH_stats_bio;
      • OPENSSL_LH_node_stats_bio;
      • OPENSSL_LH_node_usage_stats_bio;
    • Макрос DEFINE_LHASH_OF заменен на DEFINE_LHASH_OF_EX;
    • Для подписей PKCS#1 RSASSA-PSS длина значения параметра salt может изменяться до максимальной, чтобы соответствовать FIPS 186-4. Чтобы использовать максимальную длину нужно присвоить значение OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX для параметра rsa_pss_saltlen

      Информация

      Параметр salt определяет длину входной строки, передающейся вместе с преобразуемыми данными в хэш-функцию


    Различия версий 3.1.0 и 3.2.0

    • Добавлены:
    • Алгоритм хэширования BLAKE2b поддерживает настраиваемую длину выходных данных путем установки параметра size .
    • Добавлена возможность удаления объектов из хранилища с помощью метода OUR-LOCAL_STORE_delete()  и соответствующей функции API провайдера-хранилища mgmt OSSL_FUNC_store_delete() .
    • Добавлена функция OSSL_FUNC_store_open_ex() в API провайдера-хранилища mgmt для передачи обратного вызова ключевой фразы при открытии хранилища.
    • Изменена длина параметра salt по умолчанию, используемая файлами PBES2 KDF (PBKDF2 и scrypt), с 8 байт до 16 байт. В стандарте PKCS#5 (RFC 8018) для PBE используется длина записи в 64 байта, а для PBES2 рекомендуется использовать минимум 64 бита. Для соответствия требованиям FIPS в PBKDF2 требуется длина записи в 128 бит. Это влияет на параметры утилиты openssl , такие как genrsa и pkcs8, так же на методы API, такие как PM_write_bio_Private Key(), которые зависят от значения по умолчанию.
    • В утилите openssl для параметров pkcs8 и enc была добавлена
      • поддержка настраиваемой длины выходных данных путем установки параметра size в алгоритм хеширования BLAKE2b;
      • возможность удаления объектов из хранилища с помощью метода OUR-LOCAL_STORE_delete()  и соответствующей функции API провайдера-хранилища mgmt OSSL_FUNC_store_delete() ;
      • функция OSSL_FUNC_store_open_ex() в API провайдера-хранилища mgmt для передачи обратного вызова ключевой фразы при открытии хранилища;
      • поддержка на стороне клиента для QUICK;
      • дополнительная опция saltlen, позволяющая изменить значение параметра salt не должно быть задано по умолчанию
      .
    • Изменено значение параметра конфигурации ess_cert_id_alg по умолчанию, которое используется для вычисления идентификатора сертификата открытого ключа TSA. Алгоритм по умолчанию обновлен до SHA256 вместо SHA1.
    • Оптимизация для алгоритма SM2 в aarch64. Добавлена новая опция настройки no-sm2-precomp для отключения предварительно вычисленной таблицы.
    • Добавлена поддержка на стороне клиента для QUICK.
    • Реализация эллиптической кривой secp384r1 с использованием редукции для повышения скорости работы некоторых алгоритмов.Чтобы включить реализацию, необходимо использовать параметр сборки enable-ec_nistp_64_gcc_128.
    • Добавлена поддержка алгоритма SHA256/192.
    • Добавлена поддержка безопасного получения обновления сертификата корневого центра сертификации в CMP.
    • Добавлена функция SSL_get 0_group_name() для предоставления доступа к имени группы, используемой для обмена ключами TLS.
    • Добавлены конфигурационные опции no-http для принудительного отключения поддержки HTTP, no-apps и no-docs,чтобы отключить использование приложений командной строки для утилиты openssl и вывод документации.
    • Добавлена конфигурационная опция  no-necks, которая отключает поддержку кривых X25519, X448 и EdDSA.
    • Добавлены функции провайдера OSSL_FUNC_key mgmt_im/export_types_ex(), которые получают контекст провайдера в качестве параметра.
    • Новаяфункцияв библиотеке ssl_lib под названиемSSL_get_handshake_rtt которая позволяет вычислять время доставки пакетов для протокола TLS.
      • в утилите openssl для параметров pkcs8 и enc;
      • поддержка алгоритма SHA256/192;
      • поддержка безопасного получения обновления сертификата корневого центра сертификации в CMP;
      • функция SSL_get 0_group_name() для предоставления доступа к имени группы, используемой для обмена ключами TLS;
      • конфигурационные опции no-http для принудительного отключения поддержки HTTP, no-apps и no-docs,чтобы отключить использование приложений командной строки для утилиты openssl и вывод документации;
      • конфигурационная опция  no-necks, которая отключает поддержку кривых X25519, X448 и EdDSA;
      • функции провайдера OSSL_FUNC_key mgmt_im/export_types_ex(), которые получают контекст провайдера в качестве параметра;
      • функцияв библиотеке ssl_libSSL_get_handshake_rtt, позволяющая вычислять время доставки пакетов для протокола TLS;
      • расширенный командный режим для команды s_client (параметр “-adv”);
      • опция -quic в команде s_client разрешающая подключение к серверам QUIC (требуется использование расширения ALPN протокола TLS с помощью опции -alpn);
      • поддержка необработанного открытого ключа (RFC7250);
      • функция EC_GROUP_to_params(), которая создает массив SSL_PARAM из заданной EC_GROUP;
      • добавлена функция OSSL_sleep(), не зависящая от платформы;
      • поддержка подключаемых (на основе провайдера) алгоритмов подписи TLS, что позволяет выполнять операции аутентификации по протоколу TLS 1.3 с использованием алгоритмов, по умолчанию не включенных в OpenSSL;
      • поддержка подключаемых (на основе провайдера) алгоритмов подписи CMS, что позволяет CMS подписывать и проверять операции с помощью алгоритмов, которые по умолчанию не включены в OpenSSL;
      • поддержка гибридного защитного преобразования с открытым ключом (HPKE);
      • поддержка сжатия сертификатов (RFC8879), включая библиотеки для сжатия Brotli и Zstandard;
      • возможность указывать пользовательские атрибуты к файлам стандарта PKCS#12;
      • API метод PKCS12_create_ex2, идентичный существующему PKCS12_create_ex, но допускающий заданный пользователем обратных вызовов;
      • KCS12_SAFEBAG_set_0_attr, позволяющий добавлять новые значения переменной attr к существующему стеку STACK_OF attrs;
      • опция определения длины параметра salt для стандарта PKCS#12;
      • дополнительные профили защиты SRTP из RFC8723 и RFC8269;
      • поддержка механизма TCP Fast Open для (RFC7413), что позволяет передавать данные в пакетах SYN и SYN-ACK;
      • наборы для защитного преобразования на основе DHE_PSK (RFC 4279) и ECDHE_PSK (RFC 5489);
      • новые API-интерфейсы SSL для работы с отпечатками TLS/SSL;
      • поддержка Bignum-значений в API OSSL_PARAM;
      • проверка ключей для X.509 при подписании разрабатываемого кода в соответствии с требованиями добровольной сертификации CA/Browser Forum;
      • новые методы BIO_sendmmsg() и BIO_recvmmsg() для работы с защищенными потоками BIO, которые позволяют отправлять и получать несколько сообщений за один вызов. (подробности доступны в BIO_sendmmsg(3));
      • функции BIO_s_dgram_pair() и BIO_s_dgram_mem() для поддержки работы c памятью в защищенных потоках BIO и корректной работы методов BIO_sendmmsg() и BIO_recvmmsg();
      • поддержка кривых Brainpool в TLS-1.3;
      • поддержка функций формирования ключа по алгоритмам Argon2d, Argon2i, Argon2id KDFs, а также базовая реализация пула потоков для некоторых платформ;
      • возможность использования готовых наборов чисел в процессе защитного преобразования в функциях CMS API и с помощью параметра  -digest для утилиты openssl;
      • реализация эллиптической кривой secp384r1 с использованием редукции для повышения скорости работы некоторых алгоритмов (параметр сборки enable-ec_nistp_64_gcc_128);
      • поддержка всех пяти экземпляров схем цифровой подписи EdDSA из RFC8032: Ed25519, Ed25519 ctx, Ed25519ph, Ed448 и Ed448ph (потоковая передача пока не поддерживается для вариантов HashEdDSA (Ed25519ph и Ed448ph));
      • поддержка процессорных инструкций SM4-XTS;
      • поддержка детерминированных подписей ECDSA (RFC6979);
      • поддержка алгоритма AES-GCM-SIV (RFC8452);
      • поддержка HPKE DHKEM у провайдеров, используемых точкой доступа HPKE (RFC9180);
      • новая опция настройки no-sm2-precomp для отключения предварительно вычисленной таблицы для оптимизации алгоритма SM2 в aarch64;
      • поддержка файлов PKCS12 без MAC в функции PKCS12_parse();
    • изменена длина параметра salt по умолчанию, используемая файлами PBES2 KDF (PBKDF2 и scrypt), с 8 байт до 16 байт:
      • в стандарте PKCS#5 (RFC 8018):
        • для PBE используется длина записи в 64 байта;
        • для PBES2 рекомендуется использовать минимум 64 бита;
      • для соответствия требованиям FIPS в PBKDF2 требуется длина записи в 128 бит, что влияет на параметры утилиты openssl , такие как genrsa и pkcs8, так же на методы API, такие как PM_write_bio_Private Key(), зависящие от значения по умолчанию;
    • изменено значение параметра конфигурации ess_cert_id_alg по умолчанию, которое используется для вычисления идентификатора сертификата открытого ключа TSA. Алгоритм по умолчанию обновлен до SHA256 вместо SHA1;
    • при использовании команды openssl x509 для проверки атрибутов сертификата когда проверка завершается неудачей возвращается код завершения с описанием ошибки;
    • уровень безопасности SSL/TLS по умолчанию был изменен с 1 на 2. Ключи RSA, DSA и DH менее 2048 бит, а также ключи ECC менее 224 бит больше не применимы;
    • функции семейства SSL_CTX_set_cipher_list определяют защитное преобразование, используя имена стандарта IANA;
    • функция получения ключа PVK была перенесена из b2i_PVK_bio_ex() в отдельный криптографический провайдер в качестве EVP_KDF. Приложения, которым требуется этот KDF, должны будут загружать устаревший криптографический провайдер;
    • наборы алгоритмов защитного преобразования с режимом CCM 8 в TLS были понижены до нулевого уровня безопасности;
    • имена в X.509 теперь по умолчанию отображаются в виде строк UTF-8;
    • приложения x509, ca и req теперь выдают сертификаты X.509 v3. Опция -x509v1 в req поддерживает генерацию сертификатов X.509 v1;
    • функции X509_sign() и X509_sign_ctx(), проверяют, имеет ли сертификат X.509 версию 3, если информация о сертификате содержит упоминания X.509;
    • API CMS расширен методами CMS_SignedData и CMS_EnvelopedData для обработки данных;
    • функции CMS_add0_cert() и CMS_add1_cert() не выдают ошибку, если добавляемый сертификат уже присутствует;
    • функции CMS_sign_ex() и CMS_sign() игнорируют любые повторяющиеся сертификаты в аргументах certs;
    • для
    • Добавлен расширенный командный режим для команды s_client. Для его использования необходимо указывать параметр “-adv”.После запуска s_client с помощью “-adv” введите “{help}”, чтобы отобразить список доступных команд.
    • Добавлена опция -quic в команде s_client, чтобы разрешить подключение к серверам QUIC. Для QUICK требуется использование расширения ALPN протокола TLS, поэтому это необходимо указать это с помощью опции -alpn. Рекомендуется использовать расширенный режим в s_client указав это параметром -adv.
    • Добавлена поддержка необработанного открытого ключа (RFC7250). Аутентификация поддерживается путем сопоставления ключей с локальной политикой (записи TLSA на основе существующих ключей) или DANE (записи TLSA, полученные приложением из DNS). Записи TLSA также будут соответствовать одному и тому же ключу в сертификате сервера, если не предусматривается использование необработанного открытого ключа. TLSA-запись позволяет владельцу домена подтвердить подлинность используемого сертификата или цифровой подписи средствами DNSSEC.
    • Добавлена функция EC_GROUP_to_params(), которая создает массив SSL_PARAM из заданной EC_GROUP.
    • Реализована поддержка всех пяти экземпляров схем цифровой подписи EdDSA из RFC8032: Ed25519, Ed25519 ctx, Ed25519ph, Ed448 и Ed448ph. Потоковая передача пока не поддерживается для вариантов HashEdDSA (Ed25519ph и Ed448ph).
    • Реализована поддержка процессорных инструкций SM4-XTS.
    • Добавлена функция OSSL_sleep(), не зависящая от платформы.
    • Реализована поддержка детерминированных подписей ECDSA (RFC6979).
    • Реализована поддержка алгоритма AES-GCM-SIV (RFC8452).
    • Добавлена поддержка подключаемых (на основе провайдера) алгоритмов подписи TLS. Это позволяет выполнять операции аутентификации по протоколу TLS 1.3 с использованием алгоритмов, по умолчанию не включенных в OpenSSL.
    • Добавлена поддержка подключаемых (на основе провайдера) алгоритмов подписи CMS. Это позволяет CMS подписывать и проверять операции с помощью алгоритмов, которые по умолчанию не включены в OpenSSL.
    • Добавлена поддержка гибридного защитного преобразования с открытым ключом (HPKE).Внешние API определены в файле include/openssl/hpc.h и задокументированы в  doc/man3/OSSL_HPKE_CTX_new.ipod.
    • Реализована поддержка HPKE DHKEM у провайдеров, используемых точкой доступа HPKE (RFC9180).
    • Добавлена поддержка сжатия сертификатов (RFC8879), включая библиотеки для сжатия Brotli и Zstandard.
    • Добавлена возможность указывать пользовательские атрибуты к файлам стандарта PKCS#12. Добавлен новый API метод PKCS12_create_ex2, идентичный существующему PKCS12_create_ex, но допускающий заданный пользователем обратных вызовов.
    • Добавлен новый PKCS12_SAFEBAG_set_0_attr, который позволяет добавлять новые значения переменной attr к существующему стеку STACK_OF attrs.
    • Для стандарта PKCS#12 добавлена опция определения длины параметра salt.
    • Добавлены дополнительные профили защиты SRTP из RFC8723 и RFC8269.
    • Добавлена поддержка механизма TCP Fast Open для (RFC7413), что позволяет передавать данные в пакетах SYN и SYN-ACK.
    • Добавлены наборы для защитного преобразования на основе DHE_PSK (RFC 4279) и ECDHE_PSK (RFC 5489).
    • Добавьте новые API-интерфейсы SSL для работы с отпечатками TLS/SSL.
    • Функция PKCS12_parse() теперь поддерживает файлы PKCS12 без MAC.
    • Добавлена поддержка Bignum-значений в API OSSL_PARAM.
    • При использовании команды openssl x509 для проверки атрибутов сертификата когда проверка завершается неудачей возвращается код завершения с описанием ошибки.
    • Уровень безопасности SSL/TLS по умолчанию был изменен с 1 на 2. Ключи RSA, DSA и DH менее 2048 бит, а также ключи ECC менее 224 бит больше не применимы.
    • Функции семейства SSL_CTX_set_cipher_list определяют защитное преобразование, используя имена стандарта IANA.
    • Функция получения ключа PVK была перенесена из b2i_PVK_bio_ex() в отдельный криптографический провайдер в качестве EVP_KDF. Приложения, которым требуется этот KDF, должны будут загружать устаревший криптографический провайдер.
    • Наборы алгоритмов защитного преобразования с режимом CCM 8 в TLS были понижены до нулевого уровня безопасности.
    • Имена в X.509 теперь по умолчанию отображаются в виде строк UTF-8.
    • Добавлена проверка ключей для X.509 при подписании разрабатываемого кода в соответствии с требованиями добровольной сертификации CA/Browser Forum.
    • Приложения x509, ca и req теперь выдают сертификаты X.509 v3. Опция -x509v1 в req поддерживает генерацию сертификатов X.509 v1.
    • Функции X509_sign() и X509_sign_ctx(), проверяют, имеет ли сертификат X.509 версию 3, если информация о сертификате содержит упоминания X.509.
    • API CMS расширен методами CMS_SignedData и CMS_EnvelopedData для обработки данных.
    • Функции CMS_add0_cert() и CMS_add1_cert() не выдают ошибку, если добавляемый сертификат уже присутствует.
    • Функции CMS_sign_ex() и CMS_sign() игнорируют любые повторяющиеся сертификаты в аргументах certs.
    • Добавлены новые методы BIO_sendmmsg() и BIO_recvmmsg() для работы с защищенными потоками BIO, которые позволяют отправлять и получать несколько сообщений за один вызов. (подробности доступны в BIO_sendmmsg(3)).
    • Добавлены функции BIO_s_dgram_pair() и BIO_s_dgram_mem() для поддержки работы c памятью в защищенных потоках BIO и корректной работы методов BIO_sendmmsg() и BIO_recvmmsg().
    • Для протокола TLS 1.3 в режиме CCM включена поддержка KTLS (kernel TLS) - защитного преобразования на уровне ядра. Актуально для релизов ядра Linux 5.4.164, 5.10.84, 5.15.7 и любых последующих версий новее 5.16.;
    • Для для команд s_server и s_client доступна опция -ktls, которая включает поддержку технологии KTLS.;
    • Поддержка поддержка функции KTLS sendfile() для технологии Linux Zero-Copy.;
    • Вызовы OBJ_  теперь потокобезопасны и используют глобальную блокировку.
    • Добавлена возможность использования готовых наборов чисел в процессе защитного преобразования в функциях CMS API и с помощью параметра  -digest для утилиты openssl.
    • вызовы OBJ_  теперь потокобезопасны и используют глобальную блокировку;
    • функция Функция OPENSSL_malloc() и другие функции распределения теперь генерируют ошибки при сбоях.;
    • В в качестве защитных мер от уязвимости CVE-2020-25659 при использовании алгоритма RSA стандарта PKCS#1 версии 1.5 в случае ошибки в процессе обратного защитного преобразования не будет выводиться сообщение об ошибке с подробностями о производимой операции.
    • Добавлена поддержка кривых Brainpool в TLS-1.3.
    • Добавлена поддержка функций формирования ключа по алгоритмам Argon2d, Argon2i, Argon2id KDFs, а также базовая реализация пула потоков для некоторых платформсообщение об ошибке с подробностями о производимой операции.

    Поддержка отечественных алгоритмов защитного преобразования ГОСТ

    OpenSSL 1.1

    .1

    Поддержка серии алгоритмов защитного преобразования ГОСТ реализована при помощи пакета libgost-astra, предоставляющего модуль для (engine) поддержки алгоритмов ГОСТ

    OpenSSL 3.0.0 и более новые версии

    Дополнительно внедрена концепция подключаемых провайдеров. Нативная поддержка алгоритмов ГОСТ разработчиками OpenSSL.

    Функции для работы с библиотеками алгоритмов ГОСТ по умолчанию доступны в Astra Linux Special Edition.

    .

    При установленном пакете libgost-astra перечень поддерживаемых алгоритмов ГОСТ доступен по команде:

    Command

    openssl engine gost -c

    OpenSSL 3

    Поддержка серии алгоритмов защитного преобразования ГОСТ реализована при помощи пакета libgost-astra, адаптированного для работы с OpenSSL поколение 3 и предоставляющего модуль (engine) и провайдер (provider) поддержки алгоритмов ГОСТ.

    При установленном пакете libgost-astra перечень Перечень поддерживаемых алгоритмов ГОСТ доступен по команде:

    Command

    openssl engine gost -c

    Поддержка

    Сроки поддержки версий OpenSSL

    разработчиком

    разработчиками OpenSSL


    Версия OpenSSLСовместимость OpenSSL с прошлыми версиямиДата релиза версии OpenSSLДата окончания поддержки OpenSSL разработчиками инструмента
    1.1.1совместима11 сентября 201811 сентября 2023
    3.0.0частично7 сентября 20217 сентября 2026
    3.1.0совместима14 марта 202314 марта 2025
    3.2.0совместима23 ноября 202323 ноября 2025 



...