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

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 97 Следующий »

Данная статья применима к:

  • 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 по умолчанию. Узнать установленную версию OpenSSL можно командой:

openssl version

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

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

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

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

openssl list -providers
По умолчанию, все алгоритмы инструмента OpenSSL, отмеченные как устаревшие отключены и вынесены в отдельный провайдер legacy_sect

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

Задействовать устаревшие алгоритмы можно отредактировав конфигурационный файл openssl.cfg следующим образом:

  1. Добавить строку в секцию [provider_sect] :

    # List of providers to load (список загружаемых провайдеров)
    [provider_sect]
    default = default_sect
    legacy = legacy_sect (добавленная строка)
  2. Раскомментировать параметр activate = 1 секции [default_sect] :

    [default_sect]
    activate = 1
  3. Ниже добавить секцию [legacy_sect] с параметром activate = 1 :

    [default_sect]
    activate = 1
    
    [legacy_sect]
    activate = 1

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

  • Добавлено множество новых опций для openssl list .
  • Добавлено руководство по переходу к новой версии в раздел man(7) документации разработчиков OpenSSL.
  • Добавлены функция OPENSSL_info()  и команда openssl info  для получения встроенной справки.
  • Реализована поддержка подключаемых групп протокола TLSv1.3. 
  • Добавлена поддержка Kernel TLS (KTLS) - обработки данных для протокола TLS на уровне ядра.
  • Лицензия Apache обновлена до v2.0.
  • ENGINE API отмечен как устаревший.
  • Все варианты EVP-защитного преобразования CAST5, BF, IDEA, SEED, RC2, RC4, RC5 и DES отмечены как устаревшие.

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

  • Хэш-функции EVP: MD2, MD4, MDC2, WHIRLPOOL и RIPEMD-160 отмечены как устаревшие.
  • Добавлены удобные функции для генерации асимметричных пар ключей.
  • Типы и функции:
    • OCSP_REQ_CTX,
    • EC_KEY  и EC_KEY_METHOD,
    • RSA  и RSA_METHOD, DSA  и DSA_METHOD,
    • DH  и DH_METHOD, ERR_load 

отмечены как устаревшие.

  • Удален интерфейс 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() для работы с ошибками.
  • Функции:
    • 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()  

отмечены как устаревшие.

  • Добавлена функция 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.
  • Все низкоуровневые хэш-функции алгоритмов MD2, MD4, MD5, MDC2, RIPEMD 160, SHA1, SHA224, SHA256, SHA384, SHA512 и Whirlpool  отмечены как устаревшие.
  • Все низкоуровневые функции защитного преобразования для алгоритмов AES, Blowfish, Camellia, CAST, DES, IDEA, RC2, RC4, RC5 и SEED  отмечены как устаревшие.
  • Все низкоуровневые функции генерации открытого ключа для алгоритмов DH, DSA, ECDH, ECDSA и RSA  отмечены как устаревшие. Протоколы SSL 3, TLS 1.0, TLS 1.1 и DTLS 1.0 работают только на уровне безопасности 0, за исключением случаев, когда используется обмен ключами RSA без SHA1.

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

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

  • Алгоритм хэширования 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 была добавлена дополнительная опция 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.
  • Добавлен расширенный командный режим для команды 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.
  • Функция 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.

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

openssl engine gost -c

Поддержка версий 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 


  • Нет меток