Оглавление |
---|
Информация | ||
---|---|---|
| ||
Информация | ||
---|---|---|
| ||
|
Введение
OpenSSL — это инструмент защиты данных. Инструмент доступен в ОС Astra Linux по умолчанию. В Astra Linux Special Edition 1.8 используется OpenSSL поколения 3 (версия 3.2). В более ранних обновлениях используется поколение 1.1 (версия 1.1). Узнать установленную версию OpenSSL можно командой:
Command |
---|
openssl version |
Информация |
---|
Поддержка OpenSSL 1.1 .1 прекращена в сентябре 2023 года. Между версиями отсутствует прямая совместимость. Нумерация 2.х применяется только к FIPS-модулю в составе OpenSSL, поэтому после 1.1.1 идет версия 3.0.0 |
OpenSSL 3.0.0 включает в себя множество изменений и улучшений по сравнению с предыдущей версией 1.1.1. Новая версия инструмента доступна в Astra Linux Special Edition 1.8.
Новая концепция модульности
Основные различия поколений OpenSSL 1.1 и OpenSSL 3
Исключение интерактивного режима
В OpenSSL поколение 3 исключен интерактивный режим (режим командной строки). Для выполнения функций, ранее реализуемых в интерактивном режиме, следует использовать опции командной строки.
Новая концепция модульности
В OpenSSL поколение 3 используется новая концепция подключаемых модулей — провайдеры Основным изменением можно считать добавление новой концепции модульности инструмента 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_sect
. . Этот провайдер по умолчанию отключен.
Раскрыть | ||||||||
---|---|---|---|---|---|---|---|---|
|
Блок кода |
---|
# List of providers to load (список загружаемых провайдеров)
[provider_sect]
default = default_sect
legacy = legacy_sect (добавленная строка) |
Раскомментировать параметр activate = 1
секции [default_sect]
:
Блок кода |
---|
[default_sect]
activate = 1 |
Ниже добавить секцию [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()
отмечены как устаревшие.
Для разового использования устаревшего алгоритма достаточно добавить опцию
Чтобы полностью задействовать устаревшие алгоритмы необходимо подключить провайдер
Проверка работы провайдераПроверить, включена ли поддержка Или выполнив без опции
Где |
Основной перечень функциональных различий между версиями OpenSSL 1.1.1 и 3.0.0
- Добавлены:
- Добавлена функция
OSSL_PROVIDER_available()
для проверки доступности провайдера. - Добавлена команда
openssl mac
, который использует API EVP_MAC. - Добавлена
- новые опции для
openssl list
(список доступен по командеopenssl list -commands
); - руководство по переходу к новой версии в раздел
man(7)
документации разработчиков OpenSSL; - функция
OPENSSL_info()
и команда openssl info для получения встроенной справки; - поддержка подключаемых групп протокола
TLSv1.3;
- поддержка Kernel TLS (KTLS) - обработки данных для протокола TLS на уровне ядра;
- функции для генерации асимметричных пар ключей;
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
- новые опции для
- Все низкоуровневые хэш-функции алгоритмов MD2, MD4, MD5, MDC2, RIPEMD 160, SHA1, SHA224, SHA256, SHA384, SHA512 и Whirlpool отмечены как устаревшие.
- Все низкоуровневые функции защитного преобразования для алгоритмов AES, Blowfish, Camellia, CAST, DES, IDEA, RC2, RC4, RC5 и SEED отмечены как устаревшие.
- ;
- поддержка протокола управления сертификатами 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;Все низкоуровневые функции генерации открытого ключа для алгоритмов DH, DSA, ECDH, ECDSA и RSA отмечены как устаревшие. Протоколы SSL 3, TLS 1.0, TLS 1.1 и DTLS 1.0 работают только на уровне безопасности 0, за исключением случаев, когда используется обмен ключами RSA без SHA1.
Различия версий 3.0.0 и 3.1.
00
- Добавлены:
- параметр конфигурации провайдера 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). - . Использование алгоритмов в операциях указывается опцией
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_stats_bio, ;
OPENSSL_LH_node_stats_bio ;
OPENSSL_LH_node_usage_stats_bio
OPENSSL_LH_node_usage_stats,
теперь отмечены как устаревшие начиная с версии 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()
, которые получают контекст провайдера в качестве параметра. Новаяфункцияв библиотеке - в утилите
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_lib
SSL_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()
, зависящие от значения по умолчанию;
- в стандарте PKCS#5 (RFC 8018):
- изменено значение параметра конфигурации 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, а также базовая реализация пула потоков для некоторых платформсообщение об ошибке с подробностями о производимой операции.
ssl_lib
под названиемSSL_get_handshake_rtt
которая позволяет вычислять время доставки пакетов для протокола TLS.Поддержка отечественных алгоритмов защитного преобразования ГОСТ
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 сентября 2018 | 11 сентября 2023 |
3.0.0 | частично | 7 сентября 2021 | 7 сентября 2026 |
3.1.0 | совместима | 14 марта 2023 | 14 марта 2025 |
3.2.0 | совместима | 23 ноября 2023 | 23 ноября 2025 |
...